From a6d904bcd18a2c9962abfd9b5b325340f6b18b0d Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 9 Feb 2022 08:59:32 -0500 Subject: speeding up rendering using bitmaps for webpages and other heavyweight docs. --- src/fields/ScriptField.ts | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'src/fields/ScriptField.ts') diff --git a/src/fields/ScriptField.ts b/src/fields/ScriptField.ts index bd93bf5fb..c84eb7d88 100644 --- a/src/fields/ScriptField.ts +++ b/src/fields/ScriptField.ts @@ -40,11 +40,21 @@ const scriptSchema = createSimpleSchema({ }); async function deserializeScript(script: ScriptField) { + //console.log("Scripting = " + script.script.originalScript) if (script.script.originalScript === 'copyDragFactory(this.dragFactory)') { return (script as any).script = (ScriptField.GetCopyOfDragFactory ?? (ScriptField.GetCopyOfDragFactory = ScriptField.MakeFunction('copyDragFactory(this.dragFactory)')))?.script; } + if (script.script.originalScript.startsWith("renameAlias")) { // === 'renameAlias(this)') { + return (script as any).script = (ScriptField.RenameAlias as Opt)?.script; + } + if (script.script.originalScript.startsWith("copyField") && script.script.originalScript.endsWith("annotations\"")) { + return (script as any).script = ScriptField.GetAnnoCopyField(script.script.originalScript.replace(/.*\["([^"]*)/, "$1"))?.script; + } + if (script.script.originalScript.startsWith("copyField") && script.script.originalScript.endsWith("sidebar\"")) { + return (script as any).script = ScriptField.GetSidebarCopyField(script.script.originalScript.replace(/.*\["([^"]*)/, "$1"))?.script; + } if (script.script.originalScript === 'links(self)') { - return (script as any).script = (ScriptField.LinksSelf ?? (ScriptField.LinksSelf = ComputedField.MakeFunction('links(self)')))?.script; + return (script as any).script = (ScriptField.LinksSelf as Opt)?.script; } if (script.script.originalScript === 'openOnRight(copyDragFactory(this.dragFactory))') { return (script as any).script = (ScriptField.OpenOnRight ?? (ScriptField.OpenOnRight = ComputedField.MakeFunction('openOnRight(copyDragFactory(this.dragFactory))')))?.script; @@ -56,7 +66,7 @@ async function deserializeScript(script: ScriptField) { return (script as any).script = (ScriptField.ConvertToButtons ?? (ScriptField.ConvertToButtons = ComputedField.MakeFunction('convertToButtons(dragData)', { dragData: "DocumentDragData" })))?.script; } if (script.script.originalScript === 'IsNoviceMode()') { - return (script as any).script = (ScriptField.NoviceMode ?? (ScriptField.NoviceMode = ComputedField.MakeFunction('IsNoviceMode()')))?.script; + return (script as any).script = (ScriptField.NoviceMode as Opt)?.script; } if (script.script.originalScript === `selectMainMenu(self)`) { return (script as any).script = (ScriptField.SelectMenu ?? (ScriptField.SelectMenu = ComputedField.MakeFunction('selectMainMenu(self)')))?.script; @@ -96,11 +106,25 @@ export class ScriptField extends ObjectField { private captures?: ProxyField; public static GetCopyOfDragFactory: Opt; - public static LinksSelf: Opt; + public static _annoCopyField: Map> = new Map(); + public static GetAnnoCopyField(field: string) { + if (!this._annoCopyField.get(field)) this._annoCopyField.set(field, ComputedField.MakeFunction(`copyField(this["${field}-"+urlHash(this["${field}"]?.url?.toString())+"-annotations"`)) + return this._annoCopyField.get(field)?.[Copy]; + } + public static _sidebarCopyField: Map> = new Map(); + public static GetSidebarCopyField(field: string) { + if (!this._sidebarCopyField.get(field)) this._sidebarCopyField.set(field, ComputedField.MakeFunction(`copyField(this["${field}-"+urlHash(this["${field}"]?.url?.toString())+"-sidebar"`)) + return this._sidebarCopyField.get(field)?.[Copy]; + } + public static _renameAlias: Opt; + public static get RenameAlias() { return (this._renameAlias ?? (this._renameAlias = ComputedField.MakeFunction('renameAlias(this)'))); } + public static _linksSelf: Opt; + public static get LinksSelf() { return (this._linksSelf ?? (this._linksSelf = ComputedField.MakeFunction('links(self)'))); } public static OpenOnRight: Opt; public static DeiconifyView: Opt; public static ConvertToButtons: Opt; - public static NoviceMode: Opt; + public static _noviceMode: Opt; + public static get NoviceMode() { return (this._noviceMode ?? (this._noviceMode = ComputedField.MakeFunction("IsNoviceMode()"))); } public static SelectMenu: Opt; constructor(script: CompiledScript, setterscript?: CompiledScript) { super(); -- cgit v1.2.3-70-g09d2