diff options
author | bobzel <zzzman@gmail.com> | 2022-02-09 08:59:32 -0500 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2022-02-09 08:59:32 -0500 |
commit | a6d904bcd18a2c9962abfd9b5b325340f6b18b0d (patch) | |
tree | 32ab8f94e8f742d9303ec06029247931f1ab3895 /src/fields/ScriptField.ts | |
parent | 66fb0e4bbf88a5e9bcb5869dd7c8b8a7714de024 (diff) |
speeding up rendering using bitmaps for webpages and other heavyweight docs.
Diffstat (limited to 'src/fields/ScriptField.ts')
-rw-r--r-- | src/fields/ScriptField.ts | 32 |
1 files changed, 28 insertions, 4 deletions
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<ScriptField>)?.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<ScriptField>)?.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<ScriptField>)?.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<Doc>; public static GetCopyOfDragFactory: Opt<ScriptField>; - public static LinksSelf: Opt<ScriptField>; + public static _annoCopyField: Map<string, Opt<ScriptField>> = 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<string, Opt<ScriptField>> = 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<ScriptField>; + public static get RenameAlias() { return (this._renameAlias ?? (this._renameAlias = ComputedField.MakeFunction('renameAlias(this)'))); } + public static _linksSelf: Opt<ScriptField>; + public static get LinksSelf() { return (this._linksSelf ?? (this._linksSelf = ComputedField.MakeFunction('links(self)'))); } public static OpenOnRight: Opt<ScriptField>; public static DeiconifyView: Opt<ScriptField>; public static ConvertToButtons: Opt<ScriptField>; - public static NoviceMode: Opt<ScriptField>; + public static _noviceMode: Opt<ScriptField>; + public static get NoviceMode() { return (this._noviceMode ?? (this._noviceMode = ComputedField.MakeFunction("IsNoviceMode()"))); } public static SelectMenu: Opt<ScriptField>; constructor(script: CompiledScript, setterscript?: CompiledScript) { super(); |