aboutsummaryrefslogtreecommitdiff
path: root/src/fields/ScriptField.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/fields/ScriptField.ts')
-rw-r--r--src/fields/ScriptField.ts32
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();