diff --git a/panel/models/customselect.ts b/panel/models/customselect.ts
index ae24fd1d1c..bd8749b037 100644
--- a/panel/models/customselect.ts
+++ b/panel/models/customselect.ts
@@ -11,8 +11,10 @@ export class CustomSelectView extends SelectView {
protected override options_el(): HTMLOptionElement[] | HTMLOptGroupElement[] {
const opts = super.options_el()
+ const {disabled_options} = this.model
opts.forEach((element) => {
- if (this.model.disabled_options.includes(element.value)) {
+ // XXX: what about HTMLOptGroupElement?
+ if (element instanceof HTMLOptionElement && disabled_options.includes(element.value)) {
element.setAttribute("disabled", "true")
}
})
diff --git a/panel/models/event-to-object.ts b/panel/models/event-to-object.ts
index 037b0129a6..237f600f4b 100644
--- a/panel/models/event-to-object.ts
+++ b/panel/models/event-to-object.ts
@@ -64,10 +64,10 @@ const elementTransformCategories: any = {
hasCurrentTime: (element: any) => ({
currentTime: element.currentTime,
}),
- hasFiles: (element: any) => {
+ hasFiles: (element: HTMLInputElement) => {
if (element?.type === "file") {
return {
- files: Array.from(element.files).map((file: File) => ({
+ files: [...element.files ?? []].map((file) => ({
lastModified: file.lastModified,
name: file.name,
size: file.size,
diff --git a/panel/models/json.ts b/panel/models/json.ts
index 13e052e118..dc14ae031a 100644
--- a/panel/models/json.ts
+++ b/panel/models/json.ts
@@ -19,8 +19,8 @@ export class JSONView extends PanelMarkupView {
let json
try {
json = window.JSON.parse(text)
- } catch (err) {
- this.container.innerHTML = `Invalid JSON: ${err.toString()}`
+ } catch (err: unknown) {
+ this.container.innerHTML = `Invalid JSON: ${err}`
return
}
const config = {hoverPreviewEnabled: this.model.hover_preview, theme: this.model.theme}
diff --git a/panel/models/quill.ts b/panel/models/quill.ts
index b996b65020..8cdc15c42f 100644
--- a/panel/models/quill.ts
+++ b/panel/models/quill.ts
@@ -115,7 +115,7 @@ export class QuillInputView extends HTMLBoxView {
* Original implementation relies on Selection.addRange to programmatically set the range, which does not work
* in Webkit with Native Shadow. Selection.addRange works fine in Chromium and Gecko.
**/
- this.quill.selection.setNativeRange = (startNode: any, startOffset: any) => {
+ this.quill.selection.setNativeRange = (startNode: Element, startOffset: number) => {
let endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode
let endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset
const force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false
@@ -133,11 +133,11 @@ export class QuillInputView extends HTMLBoxView {
const native = (this.quill.selection.getNativeRange() || {}).native
if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {
if (startNode.tagName == "BR") {
- startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode)
- startNode = startNode.parentNode
+ startOffset = Array.prototype.indexOf.call(startNode.parentNode?.childNodes ?? [], startNode)
+ startNode = startNode.parentNode as any
}
if (endNode.tagName == "BR") {
- endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode)
+ endOffset = Array.prototype.indexOf(endNode.parentNode?.childNodes ?? [], endNode)
endNode = endNode.parentNode
}
selection.setBaseAndExtent(startNode, startOffset, endNode, endOffset)