@getodk/xforms-engine 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/client/AttributeNode.d.ts +50 -0
  2. package/dist/client/BaseNode.d.ts +5 -0
  3. package/dist/client/form/FormInstanceConfig.d.ts +15 -0
  4. package/dist/client/index.d.ts +1 -0
  5. package/dist/client/node-types.d.ts +1 -1
  6. package/dist/client/validation.d.ts +7 -1
  7. package/dist/index.js +730 -294
  8. package/dist/index.js.map +1 -1
  9. package/dist/instance/Attribute.d.ts +64 -0
  10. package/dist/instance/Group.d.ts +2 -0
  11. package/dist/instance/InputControl.d.ts +2 -0
  12. package/dist/instance/PrimaryInstance.d.ts +2 -0
  13. package/dist/instance/Root.d.ts +2 -0
  14. package/dist/instance/UploadControl.d.ts +2 -0
  15. package/dist/instance/abstract/InstanceNode.d.ts +5 -2
  16. package/dist/instance/abstract/ValueNode.d.ts +2 -0
  17. package/dist/instance/attachments/buildAttributes.d.ts +7 -0
  18. package/dist/instance/internal-api/AttributeContext.d.ts +35 -0
  19. package/dist/instance/internal-api/InstanceConfig.d.ts +2 -0
  20. package/dist/instance/internal-api/InstanceValueContext.d.ts +6 -0
  21. package/dist/instance/internal-api/serialization/ClientReactiveSerializableAttributeNode.d.ts +15 -0
  22. package/dist/instance/internal-api/serialization/ClientReactiveSerializableParentNode.d.ts +2 -0
  23. package/dist/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.d.ts +2 -2
  24. package/dist/instance/internal-api/serialization/ClientReactiveSerializableValueNode.d.ts +4 -0
  25. package/dist/instance/repeat/BaseRepeatRange.d.ts +5 -0
  26. package/dist/instance/repeat/RepeatInstance.d.ts +2 -2
  27. package/dist/integration/xpath/adapter/XFormsXPathNode.d.ts +2 -2
  28. package/dist/lib/client-reactivity/instance-state/createAttributeNodeInstanceState.d.ts +3 -0
  29. package/dist/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.d.ts +0 -3
  30. package/dist/lib/codecs/items/SingleValueItemCodec.d.ts +1 -1
  31. package/dist/lib/names/NamespaceDeclarationMap.d.ts +1 -1
  32. package/dist/lib/reactivity/createAttributeState.d.ts +16 -0
  33. package/dist/lib/reactivity/createInstanceValueState.d.ts +4 -1
  34. package/dist/lib/reactivity/node-state/createSharedNodeState.d.ts +2 -2
  35. package/dist/lib/xml-serialization.d.ts +5 -9
  36. package/dist/parse/XFormDOM.d.ts +4 -1
  37. package/dist/parse/expression/ActionComputationExpression.d.ts +4 -0
  38. package/dist/parse/model/ActionDefinition.d.ts +15 -0
  39. package/dist/parse/model/AttributeDefinition.d.ts +24 -0
  40. package/dist/parse/model/{RootAttributeMap.d.ts → AttributeDefinitionMap.d.ts} +4 -10
  41. package/dist/parse/model/BindPreloadDefinition.d.ts +6 -10
  42. package/dist/parse/model/Event.d.ts +8 -0
  43. package/dist/parse/model/GroupDefinition.d.ts +4 -1
  44. package/dist/parse/model/LeafNodeDefinition.d.ts +5 -1
  45. package/dist/parse/model/ModelActionMap.d.ts +9 -0
  46. package/dist/parse/model/ModelDefinition.d.ts +8 -1
  47. package/dist/parse/model/NodeDefinition.d.ts +8 -3
  48. package/dist/parse/model/NoteNodeDefinition.d.ts +3 -2
  49. package/dist/parse/model/RangeNodeDefinition.d.ts +2 -1
  50. package/dist/parse/model/RepeatDefinition.d.ts +4 -1
  51. package/dist/parse/model/RootDefinition.d.ts +3 -2
  52. package/dist/solid.js +730 -294
  53. package/dist/solid.js.map +1 -1
  54. package/package.json +21 -17
  55. package/src/client/AttributeNode.ts +59 -0
  56. package/src/client/BaseNode.ts +6 -0
  57. package/src/client/form/FormInstanceConfig.ts +17 -0
  58. package/src/client/index.ts +1 -0
  59. package/src/client/node-types.ts +1 -0
  60. package/src/client/validation.ts +9 -1
  61. package/src/entrypoints/FormInstance.ts +1 -0
  62. package/src/instance/Attribute.ts +164 -0
  63. package/src/instance/Group.ts +7 -0
  64. package/src/instance/InputControl.ts +8 -0
  65. package/src/instance/ModelValue.ts +7 -0
  66. package/src/instance/Note.ts +6 -0
  67. package/src/instance/PrimaryInstance.ts +7 -0
  68. package/src/instance/RangeControl.ts +6 -0
  69. package/src/instance/RankControl.ts +7 -0
  70. package/src/instance/Root.ts +7 -0
  71. package/src/instance/SelectControl.ts +6 -0
  72. package/src/instance/TriggerControl.ts +6 -0
  73. package/src/instance/UploadControl.ts +5 -0
  74. package/src/instance/abstract/DescendantNode.ts +0 -1
  75. package/src/instance/abstract/InstanceNode.ts +4 -1
  76. package/src/instance/abstract/ValueNode.ts +2 -0
  77. package/src/instance/attachments/buildAttributes.ts +15 -0
  78. package/src/instance/children/normalizeChildInitOptions.ts +1 -1
  79. package/src/instance/internal-api/AttributeContext.ts +40 -0
  80. package/src/instance/internal-api/InstanceConfig.ts +6 -1
  81. package/src/instance/internal-api/InstanceValueContext.ts +6 -0
  82. package/src/instance/internal-api/serialization/ClientReactiveSerializableAttributeNode.ts +18 -0
  83. package/src/instance/internal-api/serialization/ClientReactiveSerializableParentNode.ts +2 -0
  84. package/src/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts +2 -3
  85. package/src/instance/internal-api/serialization/ClientReactiveSerializableValueNode.ts +4 -0
  86. package/src/instance/repeat/BaseRepeatRange.ts +14 -0
  87. package/src/instance/repeat/RepeatInstance.ts +5 -5
  88. package/src/integration/xpath/adapter/XFormsXPathNode.ts +3 -1
  89. package/src/lib/client-reactivity/instance-state/createAttributeNodeInstanceState.ts +16 -0
  90. package/src/lib/client-reactivity/instance-state/createParentNodeInstanceState.ts +5 -5
  91. package/src/lib/client-reactivity/instance-state/createRootInstanceState.ts +6 -9
  92. package/src/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.ts +5 -15
  93. package/src/lib/client-reactivity/instance-state/createValueNodeInstanceState.ts +2 -1
  94. package/src/lib/client-reactivity/instance-state/prepareInstancePayload.ts +1 -0
  95. package/src/lib/codecs/NoteCodec.ts +1 -1
  96. package/src/lib/codecs/items/SingleValueItemCodec.ts +1 -3
  97. package/src/lib/names/NamespaceDeclarationMap.ts +1 -1
  98. package/src/lib/reactivity/createAttributeState.ts +51 -0
  99. package/src/lib/reactivity/createInstanceValueState.ts +152 -53
  100. package/src/lib/reactivity/node-state/createSharedNodeState.ts +2 -2
  101. package/src/lib/xml-serialization.ts +38 -34
  102. package/src/parse/XFormDOM.ts +9 -0
  103. package/src/parse/body/GroupElementDefinition.ts +1 -1
  104. package/src/parse/body/control/InputControlDefinition.ts +1 -1
  105. package/src/parse/expression/ActionComputationExpression.ts +12 -0
  106. package/src/parse/model/ActionDefinition.ts +70 -0
  107. package/src/parse/model/AttributeDefinition.ts +59 -0
  108. package/src/parse/model/{RootAttributeMap.ts → AttributeDefinitionMap.ts} +7 -13
  109. package/src/parse/model/BindDefinition.ts +1 -6
  110. package/src/parse/model/BindPreloadDefinition.ts +44 -12
  111. package/src/parse/model/Event.ts +9 -0
  112. package/src/parse/model/GroupDefinition.ts +6 -0
  113. package/src/parse/model/LeafNodeDefinition.ts +5 -0
  114. package/src/parse/model/ModelActionMap.ts +37 -0
  115. package/src/parse/model/ModelDefinition.ts +18 -3
  116. package/src/parse/model/NodeDefinition.ts +11 -3
  117. package/src/parse/model/NoteNodeDefinition.ts +5 -2
  118. package/src/parse/model/RangeNodeDefinition.ts +5 -2
  119. package/src/parse/model/RepeatDefinition.ts +8 -1
  120. package/src/parse/model/RootDefinition.ts +27 -9
  121. package/src/parse/model/nodeDefinitionMap.ts +1 -1
  122. package/dist/error/TemplatedNodeAttributeSerializationError.d.ts +0 -22
  123. package/dist/parse/model/RootAttributeDefinition.d.ts +0 -21
  124. package/src/error/TemplatedNodeAttributeSerializationError.ts +0 -24
  125. package/src/parse/model/RootAttributeDefinition.ts +0 -44
@@ -1,14 +1,8 @@
1
1
  import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
2
2
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
3
- import { RootAttributeDefinition } from './RootAttributeDefinition.ts';
4
- import { RootDefinition } from './RootDefinition.ts';
3
+ import { AttributeDefinition } from './AttributeDefinition.ts';
4
+ import { ModelDefinition } from './ModelDefinition.ts';
5
5
  /**
6
- * @todo This can be trivially expanded to a narrowly general case when we
7
- * prioritize work to
8
- * {@link https://github.com/getodk/web-forms/issues/285 | support attributes}
9
- * (as modeled form nodes on par with elements). It's been deferred here to
10
- * avoid expanding scope of an already fairly large yak shave.
11
- *
12
6
  * @todo There's a **much more expansive** general case just waiting for a good
13
7
  * opportuntity to prioritize it. E.g. a `NamedNodeMap<T>`, where T is any
14
8
  * generalized concept of a named node. This expansive generalization would have
@@ -18,7 +12,7 @@ import { RootDefinition } from './RootDefinition.ts';
18
12
  *
19
13
  * @see {@link QualifiedName} for more detail.
20
14
  */
21
- export declare class RootAttributeMap extends Map<QualifiedName, RootAttributeDefinition> {
22
- static from(root: RootDefinition, instanceNode: StaticElement): RootAttributeMap;
15
+ export declare class AttributeDefinitionMap extends Map<QualifiedName, AttributeDefinition> {
16
+ static from(model: ModelDefinition, instanceNode: StaticElement): AttributeDefinitionMap;
23
17
  private constructor();
24
18
  }
@@ -1,6 +1,9 @@
1
1
  import { PartiallyKnownString } from '../../../../common/types/string/PartiallyKnownString.ts';
2
+ import { AttributeContext } from '../../instance/internal-api/AttributeContext.ts';
3
+ import { InstanceValueContext } from '../../instance/internal-api/InstanceValueContext.ts';
2
4
  import { BindElement } from './BindElement.ts';
3
- type PartiallyKnownPreloadParameter<Known extends string> = PartiallyKnownString<NonNullable<Known>> | Extract<Known, null>;
5
+ import { XFormEvent } from './Event.ts';
6
+ type PartiallyKnownPreloadParameter<Known extends string> = PartiallyKnownString<NonNullable<Known>>;
4
7
  interface PreloadParametersByType {
5
8
  readonly uid: string | null;
6
9
  readonly date: PartiallyKnownPreloadParameter<'today'>;
@@ -22,20 +25,13 @@ interface PreloadInput<Type extends PreloadType> {
22
25
  *
23
26
  * - {@link type}, a `jr:preload`
24
27
  * - {@link parameter}, an associated `jr:preloadParams` value
25
- *
26
- * @todo It would probably make sense for the _definition_ to also convey:
27
- *
28
- * 1. Which {@link https://getodk.github.io/xforms-spec/#events | event} the
29
- * preload is semantically associated with (noting that the spec may be a tad
30
- * overzealous about this association).
31
- *
32
- * 2. The constant XPath expression (or other computation?) expressed by the
33
- * combined {@link type} and {@link parameter}.
34
28
  */
35
29
  export declare class BindPreloadDefinition<Type extends PreloadType> implements PreloadInput<Type> {
36
30
  static from(bindElement: BindElement): AnyBindPreloadDefinition | null;
37
31
  readonly type: Type;
38
32
  readonly parameter: PreloadParameter<Type>;
33
+ readonly event: XFormEvent;
34
+ getValue(context: AttributeContext | InstanceValueContext): string | undefined;
39
35
  private constructor();
40
36
  }
41
37
  export type AnyBindPreloadDefinition = BindPreloadDefinition<'uid'> | BindPreloadDefinition<'timestamp'> | BindPreloadDefinition<'property'> | BindPreloadDefinition<string>;
@@ -0,0 +1,8 @@
1
+ export declare const XFORM_EVENT: {
2
+ readonly odkInstanceLoad: "odk-instance-load";
3
+ readonly odkInstanceFirstLoad: "odk-instance-first-load";
4
+ readonly odkNewRepeat: "odk-new-repeat";
5
+ readonly xformsRevalidate: "xforms-revalidate";
6
+ readonly xformsValueChanged: "xforms-value-changed";
7
+ };
8
+ export type XFormEvent = (typeof XFORM_EVENT)[keyof typeof XFORM_EVENT];
@@ -3,8 +3,10 @@ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap
3
3
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
4
4
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
5
5
  import { GroupElementDefinition } from '../body/GroupElementDefinition.ts';
6
+ import { AttributeDefinitionMap } from './AttributeDefinitionMap.ts';
6
7
  import { BindDefinition } from './BindDefinition.ts';
7
8
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
9
+ import { ModelDefinition } from './ModelDefinition.ts';
8
10
  import { ChildNodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
9
11
  export declare class GroupDefinition extends DescendentNodeDefinition<'group', GroupElementDefinition | null> {
10
12
  readonly template: StaticElement;
@@ -12,6 +14,7 @@ export declare class GroupDefinition extends DescendentNodeDefinition<'group', G
12
14
  readonly namespaceDeclarations: NamespaceDeclarationMap;
13
15
  readonly qualifiedName: QualifiedName;
14
16
  readonly children: readonly ChildNodeDefinition[];
15
- constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, template: StaticElement);
17
+ readonly attributes: AttributeDefinitionMap;
18
+ constructor(model: ModelDefinition, parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, template: StaticElement);
16
19
  toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
17
20
  }
@@ -3,16 +3,20 @@ import { StaticLeafElement } from '../../integration/xpath/static-dom/StaticElem
3
3
  import { NamespaceDeclarationMap, NamedSubtreeDefinition } from '../../lib/names/NamespaceDeclarationMap.ts';
4
4
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
5
5
  import { AnyBodyElementDefinition, ControlElementDefinition } from '../body/BodyDefinition.ts';
6
+ import { AttributeDefinitionMap } from './AttributeDefinitionMap.ts';
6
7
  import { BindDefinition } from './BindDefinition.ts';
7
8
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
9
+ import { ModelDefinition } from './ModelDefinition.ts';
8
10
  import { ParentNodeDefinition } from './NodeDefinition.ts';
9
11
  export declare class LeafNodeDefinition<V extends ValueType = ValueType> extends DescendentNodeDefinition<'leaf-node', ControlElementDefinition | null> implements NamedSubtreeDefinition {
12
+ readonly model: ModelDefinition;
10
13
  readonly template: StaticLeafElement;
11
14
  readonly type = "leaf-node";
12
15
  readonly valueType: V;
13
16
  readonly namespaceDeclarations: NamespaceDeclarationMap;
14
17
  readonly qualifiedName: QualifiedName;
15
18
  readonly children: null;
16
- constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, template: StaticLeafElement);
19
+ readonly attributes: AttributeDefinitionMap;
20
+ constructor(model: ModelDefinition, parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, template: StaticLeafElement);
17
21
  toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
18
22
  }
@@ -0,0 +1,9 @@
1
+ import { ActionDefinition } from './ActionDefinition.ts';
2
+ import { ModelDefinition } from './ModelDefinition.ts';
3
+ export declare class ModelActionMap extends Map<string, ActionDefinition> {
4
+ static fromModel(model: ModelDefinition): ModelActionMap;
5
+ static getKey(ref: string): string;
6
+ protected constructor(model: ModelDefinition);
7
+ get(ref: string): ActionDefinition | undefined;
8
+ add(action: ActionDefinition): void;
9
+ }
@@ -4,21 +4,28 @@ import { TextChunkExpression } from '../expression/TextChunkExpression.ts';
4
4
  import { XFormDefinition } from '../XFormDefinition.ts';
5
5
  import { ChunkExpressionsByItextId } from './generateItextChunks.ts';
6
6
  import { ItextTranslationsDefinition } from './ItextTranslationsDefinition.ts';
7
+ import { ModelActionMap } from './ModelActionMap.ts';
7
8
  import { ModelBindMap } from './ModelBindMap.ts';
8
9
  import { AnyNodeDefinition } from './NodeDefinition.ts';
9
10
  import { NodeDefinitionMap } from './nodeDefinitionMap.ts';
10
11
  import { RootDefinition } from './RootDefinition.ts';
12
+ type XformsRevalidateListener = () => void;
11
13
  export declare class ModelDefinition {
12
14
  readonly form: XFormDefinition;
13
15
  readonly binds: ModelBindMap;
16
+ readonly actions: ModelActionMap;
14
17
  readonly root: RootDefinition;
15
18
  readonly nodes: NodeDefinitionMap;
16
19
  readonly instance: StaticDocument;
17
20
  readonly itextTranslations: ItextTranslationsDefinition;
18
21
  readonly itextChunks: Map<string, ChunkExpressionsByItextId>;
22
+ readonly xformsRevalidateListeners: Map<string, XformsRevalidateListener>;
19
23
  constructor(form: XFormDefinition);
20
24
  getNodeDefinition(nodeset: string): AnyNodeDefinition;
21
25
  getRootDefinition(instance: StaticDocument): RootDefinition;
22
- toJSON(): Omit<this, "form" | "toJSON" | "getNodeDefinition" | "getRootDefinition" | "getTranslationChunks">;
26
+ registerXformsRevalidateListener(ref: string, listener: XformsRevalidateListener): void;
27
+ triggerXformsRevalidateListeners(): void;
23
28
  getTranslationChunks(itextId: string, activeLanguage: ActiveLanguage): ReadonlyArray<TextChunkExpression<'string'>>;
29
+ toJSON(): Omit<this, "form" | "toJSON" | "getNodeDefinition" | "getRootDefinition" | "registerXformsRevalidateListener" | "triggerXformsRevalidateListeners" | "getTranslationChunks">;
24
30
  }
31
+ export {};
@@ -1,8 +1,11 @@
1
+ import { StaticAttribute } from '../../integration/xpath/static-dom/StaticAttribute.ts';
1
2
  import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
2
3
  import { NamedSubtreeDefinition, NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
3
4
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
4
5
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
5
6
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
7
+ import { AttributeDefinition } from './AttributeDefinition.ts';
8
+ import { AttributeDefinitionMap } from './AttributeDefinitionMap.ts';
6
9
  import { BindDefinition } from './BindDefinition.ts';
7
10
  import { GroupDefinition } from './GroupDefinition.ts';
8
11
  import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
@@ -37,7 +40,8 @@ export type GroupNodeType = 'group';
37
40
  * - Any attribute corresponding to a bind's `nodeset` expression
38
41
  */
39
42
  export type LeafNodeType = 'leaf-node';
40
- export type NodeDefinitionType = RootNodeType | RepeatType | GroupNodeType | LeafNodeType;
43
+ export type AttributeNodeType = 'attribute';
44
+ export type NodeDefinitionType = RootNodeType | RepeatType | GroupNodeType | LeafNodeType | AttributeNodeType;
41
45
  export type ParentNodeDefinition = RootDefinition | AnyRepeatDefinition | GroupDefinition;
42
46
  export type ChildNodeDefinition = AnyRepeatDefinition | GroupDefinition | LeafNodeDefinition;
43
47
  export declare abstract class NodeDefinition<Type extends NodeDefinitionType> implements NamedSubtreeDefinition {
@@ -49,9 +53,10 @@ export declare abstract class NodeDefinition<Type extends NodeDefinitionType> im
49
53
  abstract readonly isTranslated: boolean;
50
54
  abstract readonly root: RootDefinition;
51
55
  abstract readonly parent: ParentNodeDefinition | null;
52
- abstract readonly template: StaticElement;
56
+ abstract readonly template: StaticAttribute | StaticElement;
53
57
  abstract readonly children: readonly ChildNodeDefinition[] | null;
58
+ abstract readonly attributes: AttributeDefinitionMap | null;
54
59
  readonly nodeset: string;
55
60
  constructor(bind: BindDefinition);
56
61
  }
57
- export type AnyNodeDefinition = RootDefinition | AnyRepeatDefinition | GroupDefinition | LeafNodeDefinition;
62
+ export type AnyNodeDefinition = RootDefinition | AnyRepeatDefinition | GroupDefinition | LeafNodeDefinition | AttributeDefinition;
@@ -8,6 +8,7 @@ import { HintDefinition } from '../text/HintDefinition.ts';
8
8
  import { LabelDefinition } from '../text/LabelDefinition.ts';
9
9
  import { BindDefinition } from './BindDefinition.ts';
10
10
  import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
11
+ import { ModelDefinition } from './ModelDefinition.ts';
11
12
  import { ParentNodeDefinition } from './NodeDefinition.ts';
12
13
  export type NoteReadonlyDefinition = BindComputationExpression<'readonly'> & ConstantTruthyDependentExpression;
13
14
  export interface NoteBindDefinition<V extends ValueType> extends BindDefinition<V> {
@@ -27,6 +28,6 @@ export declare class NoteNodeDefinition<V extends ValueType = ValueType> extends
27
28
  readonly bind: NoteBindDefinition<V>;
28
29
  readonly bodyElement: InputControlDefinition;
29
30
  readonly noteTextDefinition: NoteTextDefinition;
30
- static from<V extends ValueType>(parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: AnyBodyElementDefinition | null, node: StaticLeafElement): NoteNodeDefinition<V> | null;
31
- constructor(parent: ParentNodeDefinition, bind: NoteBindDefinition<V>, bodyElement: InputControlDefinition, noteTextDefinition: NoteTextDefinition, template: StaticLeafElement);
31
+ static from<V extends ValueType>(model: ModelDefinition, parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: AnyBodyElementDefinition | null, node: StaticLeafElement): NoteNodeDefinition<V> | null;
32
+ constructor(model: ModelDefinition, parent: ParentNodeDefinition, bind: NoteBindDefinition<V>, bodyElement: InputControlDefinition, noteTextDefinition: NoteTextDefinition, template: StaticLeafElement);
32
33
  }
@@ -4,6 +4,7 @@ import { RuntimeValue } from '../../lib/codecs/getSharedValueCodec.ts';
4
4
  import { RangeControlBoundsDefinition, RangeControlDefinition } from '../body/control/RangeControlDefinition.ts';
5
5
  import { BindDefinition } from './BindDefinition.ts';
6
6
  import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
7
+ import { ModelDefinition } from './ModelDefinition.ts';
7
8
  import { ParentNodeDefinition } from './NodeDefinition.ts';
8
9
  declare const RANGE_VALUE_TYPES: readonly ["decimal", "int"];
9
10
  export type RangeValueType = (typeof RANGE_VALUE_TYPES)[number];
@@ -34,7 +35,7 @@ declare class RangeNodeBoundsDefinition<V extends RangeValueType = RangeValueTyp
34
35
  export declare class RangeNodeDefinition<V extends RangeValueType = RangeValueType> extends LeafNodeDefinition<V> implements RangeLeafNodeDefinition<V> {
35
36
  readonly bind: BindDefinition<V>;
36
37
  readonly bodyElement: RangeControlDefinition;
37
- static from<V extends ValueType>(parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: RangeControlDefinition, node: StaticLeafElement): RangeNodeDefinition<Extract<V, RangeValueType>>;
38
+ static from<V extends ValueType>(model: ModelDefinition, parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: RangeControlDefinition, node: StaticLeafElement): RangeNodeDefinition<Extract<V, RangeValueType>>;
38
39
  readonly bounds: RangeNodeBoundsDefinition<V>;
39
40
  private constructor();
40
41
  }
@@ -3,8 +3,10 @@ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap
3
3
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
4
4
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
5
5
  import { RepeatCountControlExpression } from '../expression/RepeatCountControlExpression.ts';
6
+ import { AttributeDefinitionMap } from './AttributeDefinitionMap.ts';
6
7
  import { BindDefinition } from './BindDefinition.ts';
7
8
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
9
+ import { ModelDefinition } from './ModelDefinition.ts';
8
10
  import { ChildNodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
9
11
  export type RepeatInstanceNodes = readonly [StaticElement, ...StaticElement[]];
10
12
  export interface ControlledRepeatDefinition extends RepeatDefinition {
@@ -46,13 +48,14 @@ export interface UncontrolledRepeatDefinition extends RepeatDefinition {
46
48
  * associated with a defined repeat.
47
49
  */
48
50
  export declare class RepeatDefinition extends DescendentNodeDefinition<'repeat', RepeatElementDefinition> {
49
- static from(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatElementDefinition, instanceNodes: RepeatInstanceNodes): AnyRepeatDefinition;
51
+ static from(model: ModelDefinition, parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatElementDefinition, instanceNodes: RepeatInstanceNodes): AnyRepeatDefinition;
50
52
  readonly type = "repeat";
51
53
  readonly children: readonly ChildNodeDefinition[];
52
54
  readonly count: RepeatCountControlExpression | null;
53
55
  readonly template: StaticElement;
54
56
  readonly namespaceDeclarations: NamespaceDeclarationMap;
55
57
  readonly qualifiedName: QualifiedName;
58
+ readonly attributes: AttributeDefinitionMap;
56
59
  private constructor();
57
60
  isControlled(): this is ControlledRepeatDefinition;
58
61
  isUncontrolled(): this is UncontrolledRepeatDefinition;
@@ -3,9 +3,9 @@ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap
3
3
  import { QualifiedName } from '../../lib/names/QualifiedName.ts';
4
4
  import { BodyClassList } from '../body/BodyDefinition.ts';
5
5
  import { XFormDefinition } from '../XFormDefinition.ts';
6
+ import { AttributeDefinitionMap } from './AttributeDefinitionMap.ts';
6
7
  import { ModelDefinition } from './ModelDefinition.ts';
7
8
  import { ChildNodeDefinition, ParentNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
8
- import { RootAttributeMap } from './RootAttributeMap.ts';
9
9
  import { SubmissionDefinition } from './SubmissionDefinition.ts';
10
10
  export declare class RootDefinition extends NodeDefinition<'root'> {
11
11
  protected readonly form: XFormDefinition;
@@ -19,10 +19,11 @@ export declare class RootDefinition extends NodeDefinition<'root'> {
19
19
  readonly parent: null;
20
20
  readonly template: StaticElement;
21
21
  readonly namespaceDeclarations: NamespaceDeclarationMap;
22
- readonly attributes: RootAttributeMap;
22
+ readonly attributes: AttributeDefinitionMap;
23
23
  readonly children: readonly ChildNodeDefinition[];
24
24
  readonly isTranslated = false;
25
25
  constructor(form: XFormDefinition, model: ModelDefinition, submission: SubmissionDefinition, classes: BodyClassList);
26
+ private mapActions;
26
27
  buildSubtree(parent: ParentNodeDefinition, node: StaticElement): readonly ChildNodeDefinition[];
27
28
  toJSON(): Omit<this, "form" | "toJSON" | "bind" | "model" | "root" | "bodyElement" | "buildSubtree">;
28
29
  }