diff options
author | bobzel <zzzman@gmail.com> | 2024-05-17 14:55:36 -0400 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2024-05-17 14:55:36 -0400 |
commit | 0b451af28e5aef6b749da61e8a9fcd0a840789ac (patch) | |
tree | bdee4e28ee4715b69299a8da1b615c70b6adc445 /src/fields/ObjectField.ts | |
parent | 8c1b420a143e4b72ec551277887c211ca6ca003b (diff) | |
parent | 38a382a03675d6a50ec7de75f05025efd093f570 (diff) |
merged with new master
Diffstat (limited to 'src/fields/ObjectField.ts')
-rw-r--r-- | src/fields/ObjectField.ts | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/fields/ObjectField.ts b/src/fields/ObjectField.ts index e1b5b036c..231086262 100644 --- a/src/fields/ObjectField.ts +++ b/src/fields/ObjectField.ts @@ -1,26 +1,36 @@ -import { RefField } from './RefField'; -import { FieldChanged, Parent, Copy, ToScriptString, ToString, ToJavascriptString } from './FieldSymbols'; import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; -import { Field } from './Doc'; +import { Copy, FieldChanged, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; +import { RefField } from './RefField'; export abstract class ObjectField { // prettier-ignore public [FieldChanged]?: (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; - items: Field[] | undefined; + // eslint-disable-next-line no-use-before-define + items: FieldType[] | undefined; length: number | undefined; hint?: any }, serverOp?: any) => void; + // eslint-disable-next-line no-use-before-define public [Parent]?: RefField | ObjectField; abstract [Copy](): ObjectField; abstract [ToJavascriptString](): string; abstract [ToScriptString](): string; abstract [ToString](): string; -} - -export namespace ObjectField { - export function MakeCopy<T extends ObjectField>(field: T) { + static MakeCopy<T extends ObjectField>(field: T) { return field?.[Copy](); } } +export type FieldType = number | string | boolean | ObjectField | RefField; // bcz: hack for now .. must match the type definition in Doc.ts .. put here to avoid import cycles +// eslint-disable-next-line import/no-mutable-exports +export let ObjGetRefField: (id: string, force?: boolean) => Promise<RefField | undefined>; +// eslint-disable-next-line import/no-mutable-exports +export let ObjGetRefFields: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>; + +export function SetObjGetRefField(func: (id: string, force?: boolean) => Promise<RefField | undefined>) { + ObjGetRefField = func; +} +export function SetObjGetRefFields(func: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>) { + ObjGetRefFields = func; +} ScriptingGlobals.add(ObjectField); |