diff --git a/src/public/app/widgets/type_widgets/web_view.js b/src/public/app/widgets/type_widgets/web_view.ts
similarity index 75%
rename from src/public/app/widgets/type_widgets/web_view.js
rename to src/public/app/widgets/type_widgets/web_view.ts
index 5bfa74f05..57f2fc11a 100644
--- a/src/public/app/widgets/type_widgets/web_view.js
+++ b/src/public/app/widgets/type_widgets/web_view.ts
@@ -1,18 +1,20 @@
import { t } from "../../services/i18n.js";
import TypeWidget from "./type_widget.js";
import attributeService from "../../services/attributes.js";
+import type FNote from "../../entities/fnote.js";
+import type { EventData } from "../../components/app_context.js";
const TPL = `
${t("web_view.web_view")}
-
+
${t("web_view.embed_websites")}
${t("web_view.create_label")}
${t("web_view.disclaimer")}
-
+
${t("web_view.experimental_note")}
@@ -20,6 +22,10 @@ const TPL = `
`;
export default class WebViewTypeWidget extends TypeWidget {
+
+ private $noteDetailWebViewHelp!: JQuery;
+ private $noteDetailWebViewContent!: JQuery;
+
static getType() {
return "webView";
}
@@ -34,11 +40,15 @@ export default class WebViewTypeWidget extends TypeWidget {
super.doRender();
}
- async doRefresh(note) {
+ async doRefresh(note: FNote) {
this.$widget.show();
this.$noteDetailWebViewHelp.hide();
this.$noteDetailWebViewContent.hide();
+ if (!this.note) {
+ return;
+ }
+
const webViewSrc = this.note.getLabelValue("webViewSrc");
if (webViewSrc) {
@@ -54,17 +64,19 @@ export default class WebViewTypeWidget extends TypeWidget {
}
cleanup() {
- this.$noteDetailWebViewContent.removeAttribute("src");
+ this.$noteDetailWebViewContent.removeAttr("src");
}
setDimensions() {
const $parent = this.$widget;
- this.$noteDetailWebViewContent.height($parent.height()).width($parent.width());
+ this.$noteDetailWebViewContent
+ .height($parent.height() ?? 0)
+ .width($parent.width() ?? 0);
}
- entitiesReloadedEvent({ loadResults }) {
- if (loadResults.getAttributeRows().find((attr) => attr.name === "webViewSrc" && attributeService.isAffecting(attr, this.noteContext.note))) {
+ entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
+ if (loadResults.getAttributeRows().find((attr) => attr.name === "webViewSrc" && attributeService.isAffecting(attr, this.noteContext?.note))) {
this.refresh();
}
}