@getodk/xforms-engine 0.1.1 → 0.2.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 (101) hide show
  1. package/dist/body/BodyDefinition.d.ts +24 -7
  2. package/dist/body/RepeatElementDefinition.d.ts +19 -0
  3. package/dist/body/appearance/inputAppearanceParser.d.ts +4 -0
  4. package/dist/body/appearance/selectAppearanceParser.d.ts +4 -0
  5. package/dist/body/appearance/structureElementAppearanceParser.d.ts +4 -0
  6. package/dist/body/control/ControlDefinition.d.ts +2 -0
  7. package/dist/body/control/InputDefinition.d.ts +5 -0
  8. package/dist/body/control/select/SelectDefinition.d.ts +11 -1
  9. package/dist/body/group/BaseGroupDefinition.d.ts +3 -8
  10. package/dist/body/text/LabelDefinition.d.ts +2 -0
  11. package/dist/body/text/TextElementDefinition.d.ts +3 -3
  12. package/dist/client/BaseNode.d.ts +6 -1
  13. package/dist/client/GroupNode.d.ts +5 -2
  14. package/dist/client/NodeAppearances.d.ts +15 -0
  15. package/dist/client/RepeatInstanceNode.d.ts +3 -0
  16. package/dist/client/RepeatRangeNode.d.ts +5 -2
  17. package/dist/client/RootNode.d.ts +19 -0
  18. package/dist/client/SelectNode.d.ts +3 -0
  19. package/dist/client/StringNode.d.ts +3 -0
  20. package/dist/client/SubtreeNode.d.ts +1 -0
  21. package/dist/index.js +624 -368
  22. package/dist/index.js.map +1 -1
  23. package/dist/instance/Group.d.ts +3 -3
  24. package/dist/instance/RepeatInstance.d.ts +26 -2
  25. package/dist/instance/RepeatRange.d.ts +84 -5
  26. package/dist/instance/Root.d.ts +8 -23
  27. package/dist/instance/SelectField.d.ts +2 -2
  28. package/dist/instance/StringField.d.ts +2 -2
  29. package/dist/instance/Subtree.d.ts +1 -1
  30. package/dist/instance/abstract/DescendantNode.d.ts +12 -4
  31. package/dist/instance/abstract/InstanceNode.d.ts +26 -29
  32. package/dist/instance/internal-api/EvaluationContext.d.ts +5 -4
  33. package/dist/instance/internal-api/ValueContext.d.ts +2 -2
  34. package/dist/lib/TokenListParser.d.ts +84 -0
  35. package/dist/lib/dom/query.d.ts +5 -0
  36. package/dist/lib/reactivity/materializeCurrentStateChildren.d.ts +2 -1
  37. package/dist/model/DescendentNodeDefinition.d.ts +1 -2
  38. package/dist/model/NodeDefinition.d.ts +12 -12
  39. package/dist/model/RepeatInstanceDefinition.d.ts +5 -6
  40. package/dist/model/{RepeatSequenceDefinition.d.ts → RepeatRangeDefinition.d.ts} +4 -4
  41. package/dist/model/RepeatTemplateDefinition.d.ts +6 -7
  42. package/dist/model/RootDefinition.d.ts +3 -1
  43. package/dist/model/SubtreeDefinition.d.ts +2 -2
  44. package/dist/model/ValueNodeDefinition.d.ts +2 -3
  45. package/dist/solid.js +625 -369
  46. package/dist/solid.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/XFormDOM.ts +81 -8
  49. package/src/body/BodyDefinition.ts +38 -23
  50. package/src/body/RepeatElementDefinition.ts +70 -0
  51. package/src/body/appearance/inputAppearanceParser.ts +39 -0
  52. package/src/body/appearance/selectAppearanceParser.ts +38 -0
  53. package/src/body/appearance/structureElementAppearanceParser.ts +7 -0
  54. package/src/body/control/ControlDefinition.ts +4 -0
  55. package/src/body/control/InputDefinition.ts +13 -0
  56. package/src/body/control/select/SelectDefinition.ts +14 -5
  57. package/src/body/group/BaseGroupDefinition.ts +11 -49
  58. package/src/body/text/LabelDefinition.ts +15 -1
  59. package/src/body/text/TextElementDefinition.ts +5 -5
  60. package/src/client/BaseNode.ts +9 -1
  61. package/src/client/GroupNode.ts +6 -2
  62. package/src/client/NodeAppearances.ts +22 -0
  63. package/src/client/RepeatInstanceNode.ts +4 -0
  64. package/src/client/RepeatRangeNode.ts +6 -2
  65. package/src/client/RootNode.ts +22 -0
  66. package/src/client/SelectNode.ts +4 -0
  67. package/src/client/StringNode.ts +4 -0
  68. package/src/client/SubtreeNode.ts +1 -0
  69. package/src/instance/Group.ts +14 -9
  70. package/src/instance/RepeatInstance.ts +59 -15
  71. package/src/instance/RepeatRange.ts +133 -15
  72. package/src/instance/Root.ts +20 -64
  73. package/src/instance/SelectField.ts +7 -7
  74. package/src/instance/StringField.ts +8 -7
  75. package/src/instance/Subtree.ts +10 -7
  76. package/src/instance/abstract/DescendantNode.ts +45 -43
  77. package/src/instance/abstract/InstanceNode.ts +69 -86
  78. package/src/instance/children.ts +17 -7
  79. package/src/instance/index.ts +1 -1
  80. package/src/instance/internal-api/EvaluationContext.ts +5 -6
  81. package/src/instance/internal-api/ValueContext.ts +2 -2
  82. package/src/lib/TokenListParser.ts +156 -0
  83. package/src/lib/dom/query.ts +13 -0
  84. package/src/lib/reactivity/createChildrenState.ts +51 -6
  85. package/src/lib/reactivity/createComputedExpression.ts +1 -1
  86. package/src/lib/reactivity/createSelectItems.ts +4 -6
  87. package/src/lib/reactivity/createValueState.ts +6 -6
  88. package/src/lib/reactivity/materializeCurrentStateChildren.ts +3 -1
  89. package/src/model/DescendentNodeDefinition.ts +1 -2
  90. package/src/model/ModelDefinition.ts +1 -1
  91. package/src/model/NodeDefinition.ts +12 -12
  92. package/src/model/RepeatInstanceDefinition.ts +8 -13
  93. package/src/model/{RepeatSequenceDefinition.ts → RepeatRangeDefinition.ts} +6 -6
  94. package/src/model/RepeatTemplateDefinition.ts +10 -15
  95. package/src/model/RootDefinition.ts +6 -12
  96. package/src/model/SubtreeDefinition.ts +3 -3
  97. package/src/model/ValueNodeDefinition.ts +2 -3
  98. package/dist/body/RepeatDefinition.d.ts +0 -16
  99. package/dist/body/group/RepeatGroupDefinition.d.ts +0 -13
  100. package/src/body/RepeatDefinition.ts +0 -54
  101. package/src/body/group/RepeatGroupDefinition.ts +0 -91
@@ -1,8 +1,8 @@
1
1
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
- import { RepeatDefinition } from '../body/RepeatDefinition.ts';
2
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
3
3
  import { BindDefinition } from './BindDefinition.ts';
4
4
  import { RepeatInstanceDefinition } from './RepeatInstanceDefinition.ts';
5
- import { RepeatSequenceDefinition } from './RepeatSequenceDefinition.ts';
5
+ import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
6
6
  import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
7
7
  import { RootDefinition } from './RootDefinition.ts';
8
8
  import { SubtreeDefinition } from './SubtreeDefinition.ts';
@@ -16,12 +16,12 @@ import { ValueNodeDefinition } from './ValueNodeDefinition.ts';
16
16
  */
17
17
  export type RootNodeType = 'root';
18
18
  /**
19
- * Corresponds to a sequence of model/entry DOM subtrees which in turn
19
+ * Corresponds to a range/sequence of model/entry DOM subtrees which in turn
20
20
  * corresponds to a <repeat> in the form body definition.
21
21
  */
22
- export type RepeatSequenceType = 'repeat-sequence';
22
+ export type RepeatRangeType = 'repeat-range';
23
23
  /**
24
- * Corresponds to a template definition for a repeat sequence, which either has
24
+ * Corresponds to a template definition for a repeat range, which either has
25
25
  * an explicit `jr:template=""` attribute in the form definition or is inferred
26
26
  * as a template from the form's first element matched by a <repeat nodeset>.
27
27
  */
@@ -29,7 +29,7 @@ export type RepeatTemplateType = 'repeat-template';
29
29
  /**
30
30
  * Corresponds to a single instance of a model/entry DOM subtree which
31
31
  * in turn corresponds to a <repeat> in the form body definition, and a
32
- * 'repeat-sequence' definition.
32
+ * 'repeat-range' definition.
33
33
  */
34
34
  export type RepeatInstanceType = 'repeat-instance';
35
35
  /**
@@ -45,21 +45,21 @@ export type SubtreeNodeType = 'subtree';
45
45
  * - Any attribute corresponding to a bind's `nodeset` expression
46
46
  */
47
47
  export type ValueNodeType = 'value-node';
48
- export type NodeDefinitionType = RootNodeType | RepeatSequenceType | RepeatTemplateType | RepeatInstanceType | SubtreeNodeType | ValueNodeType;
48
+ export type NodeDefinitionType = RootNodeType | RepeatRangeType | RepeatTemplateType | RepeatInstanceType | SubtreeNodeType | ValueNodeType;
49
49
  export type ParentNodeDefinition = RootDefinition | RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition;
50
- export type ChildNodeDefinition = RepeatSequenceDefinition | SubtreeDefinition | ValueNodeDefinition;
50
+ export type ChildNodeDefinition = RepeatRangeDefinition | SubtreeDefinition | ValueNodeDefinition;
51
51
  export type ChildNodeInstanceDefinition = RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition | ValueNodeDefinition;
52
52
  export type NodeChildren<Type extends NodeDefinitionType> = Type extends ParentNodeDefinition['type'] ? readonly ChildNodeDefinition[] : null;
53
- export type NodeInstances<Type extends NodeDefinitionType> = Type extends 'repeat-sequence' ? readonly RepeatInstanceDefinition[] : null;
53
+ export type NodeInstances<Type extends NodeDefinitionType> = Type extends 'repeat-range' ? readonly RepeatInstanceDefinition[] : null;
54
54
  export type NodeParent<Type extends NodeDefinitionType> = Type extends ChildNodeDefinition['type'] | ChildNodeInstanceDefinition['type'] ? ParentNodeDefinition : null;
55
- export type ModelNode<Type extends NodeDefinitionType> = Type extends 'repeat-sequence' ? null : Element;
55
+ export type ModelNode<Type extends NodeDefinitionType> = Type extends 'repeat-range' ? null : Element;
56
56
  export type NodeDefaultValue<Type extends NodeDefinitionType> = Type extends 'value-node' ? string : null;
57
57
  export interface NodeDefinition<Type extends NodeDefinitionType> {
58
58
  readonly type: Type;
59
59
  readonly bind: BindDefinition;
60
60
  readonly nodeset: string;
61
61
  readonly nodeName: string;
62
- readonly bodyElement: AnyBodyElementDefinition | RepeatDefinition | null;
62
+ readonly bodyElement: AnyBodyElementDefinition | RepeatElementDefinition | null;
63
63
  readonly isTranslated: boolean;
64
64
  readonly dependencyExpressions: ReadonlySet<string>;
65
65
  readonly root: RootDefinition;
@@ -69,7 +69,7 @@ export interface NodeDefinition<Type extends NodeDefinitionType> {
69
69
  readonly node: ModelNode<Type>;
70
70
  readonly defaultValue: NodeDefaultValue<Type>;
71
71
  }
72
- export type AnyNodeDefinition = RootDefinition | RepeatSequenceDefinition | RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition | ValueNodeDefinition;
72
+ export type AnyNodeDefinition = RootDefinition | RepeatRangeDefinition | RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition | ValueNodeDefinition;
73
73
  export type TypedNodeDefinition<Type> = Extract<AnyNodeDefinition, {
74
74
  readonly type: Type;
75
75
  }>;
@@ -1,16 +1,15 @@
1
- import { RepeatDefinition } from '../body/RepeatDefinition.ts';
1
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
2
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
3
3
  import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
4
- import { RepeatSequenceDefinition } from './RepeatSequenceDefinition.ts';
4
+ import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
5
5
 
6
- export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatDefinition> implements NodeDefinition<'repeat-instance'> {
7
- protected readonly sequence: RepeatSequenceDefinition;
6
+ export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatElementDefinition> implements NodeDefinition<'repeat-instance'> {
8
7
  readonly node: Element;
9
8
  readonly type = "repeat-instance";
10
9
  readonly nodeName: string;
11
10
  readonly children: readonly ChildNodeDefinition[];
12
11
  readonly instances: null;
13
12
  readonly defaultValue: null;
14
- constructor(sequence: RepeatSequenceDefinition, node: Element);
15
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement" | "sequence">;
13
+ constructor(range: RepeatRangeDefinition, node: Element);
14
+ toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
16
15
  }
@@ -1,20 +1,20 @@
1
- import { RepeatGroupDefinition } from '../body/group/RepeatGroupDefinition.ts';
1
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
5
5
  import { RepeatInstanceDefinition } from './RepeatInstanceDefinition.ts';
6
6
  import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
7
7
 
8
- export declare class RepeatSequenceDefinition extends DescendentNodeDefinition<'repeat-sequence', RepeatGroupDefinition> implements NodeDefinition<'repeat-sequence'> {
8
+ export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'repeat-range', RepeatElementDefinition> implements NodeDefinition<'repeat-range'> {
9
9
  static createTemplateElement(instanceElement: Element): Element;
10
10
  static createInstanceElement(templateElement: Element): Element;
11
- readonly type = "repeat-sequence";
11
+ readonly type = "repeat-range";
12
12
  readonly template: RepeatTemplateDefinition;
13
13
  readonly children: null;
14
14
  readonly instances: RepeatInstanceDefinition[];
15
15
  readonly node: null;
16
16
  readonly nodeName: string;
17
17
  readonly defaultValue: null;
18
- constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatGroupDefinition, modelNodes: readonly [Element, ...Element[]]);
18
+ constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatElementDefinition, modelNodes: readonly [Element, ...Element[]]);
19
19
  toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
20
20
  }
@@ -1,8 +1,8 @@
1
1
  import { JAVAROSA_NAMESPACE_URI } from '../../../common/src/constants/xmlns.ts';
2
- import { RepeatDefinition } from '../body/RepeatDefinition.ts';
2
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
5
- import { RepeatSequenceDefinition } from './RepeatSequenceDefinition.ts';
5
+ import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
6
6
 
7
7
  interface ExplicitRepeatTemplateElement extends Element {
8
8
  getAttributeNS(namespaceURI: typeof JAVAROSA_NAMESPACE_URI, name: 'template'): string;
@@ -14,17 +14,16 @@ interface ParsedRepeatNodes {
14
14
  readonly template: RepeatTemplateDefinition;
15
15
  readonly instanceNodes: readonly Element[];
16
16
  }
17
- export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'repeat-template', RepeatDefinition> implements NodeDefinition<'repeat-template'> {
18
- protected readonly sequence: RepeatSequenceDefinition;
17
+ export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'repeat-template', RepeatElementDefinition> implements NodeDefinition<'repeat-template'> {
19
18
  protected readonly templateNode: ExplicitRepeatTemplateElement;
20
- static parseModelNodes(sequence: RepeatSequenceDefinition, modelNodes: readonly [Element, ...Element[]]): ParsedRepeatNodes;
19
+ static parseModelNodes(range: RepeatRangeDefinition, modelNodes: readonly [Element, ...Element[]]): ParsedRepeatNodes;
21
20
  readonly type = "repeat-template";
22
21
  readonly node: Element;
23
22
  readonly nodeName: string;
24
23
  readonly children: readonly ChildNodeDefinition[];
25
24
  readonly instances: null;
26
25
  readonly defaultValue: null;
27
- protected constructor(sequence: RepeatSequenceDefinition, templateNode: ExplicitRepeatTemplateElement);
28
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement" | "sequence">;
26
+ protected constructor(range: RepeatRangeDefinition, templateNode: ExplicitRepeatTemplateElement);
27
+ toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
29
28
  }
30
29
  export {};
@@ -1,4 +1,5 @@
1
1
  import { XFormDefinition } from '../XFormDefinition.ts';
2
+ import { BodyClassList } from '../body/BodyDefinition.ts';
2
3
  import { BindDefinition } from './BindDefinition.ts';
3
4
  import { ModelDefinition } from './ModelDefinition.ts';
4
5
  import { ChildNodeDefinition, NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
@@ -6,6 +7,7 @@ import { ChildNodeDefinition, NodeDefinition, ParentNodeDefinition } from './Nod
6
7
  export declare class RootDefinition implements NodeDefinition<'root'> {
7
8
  protected readonly form: XFormDefinition;
8
9
  protected readonly model: ModelDefinition;
10
+ readonly classes: BodyClassList;
9
11
  readonly type = "root";
10
12
  readonly bind: BindDefinition;
11
13
  readonly nodeset: string;
@@ -19,7 +21,7 @@ export declare class RootDefinition implements NodeDefinition<'root'> {
19
21
  readonly defaultValue: null;
20
22
  readonly isTranslated = false;
21
23
  readonly dependencyExpressions: ReadonlySet<string>;
22
- constructor(form: XFormDefinition, model: ModelDefinition);
24
+ constructor(form: XFormDefinition, model: ModelDefinition, classes: BodyClassList);
23
25
  buildSubtree(parent: ParentNodeDefinition): readonly ChildNodeDefinition[];
24
26
  toJSON(): Omit<this, "model" | "toJSON" | "form" | "bind" | "root" | "bodyElement" | "buildSubtree">;
25
27
  }
@@ -1,9 +1,9 @@
1
- import { AnyBodyElementDefinition, NonRepeatGroupElementDefinition } from '../body/BodyDefinition.ts';
1
+ import { AnyBodyElementDefinition, AnyGroupElementDefinition } from '../body/BodyDefinition.ts';
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { ChildNodeDefinition, NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
5
5
 
6
- export declare class SubtreeDefinition extends DescendentNodeDefinition<'subtree', NonRepeatGroupElementDefinition | null> implements NodeDefinition<'subtree'> {
6
+ export declare class SubtreeDefinition extends DescendentNodeDefinition<'subtree', AnyGroupElementDefinition | null> implements NodeDefinition<'subtree'> {
7
7
  readonly node: Element;
8
8
  readonly type = "subtree";
9
9
  readonly nodeName: string;
@@ -1,10 +1,9 @@
1
- import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
- import { AnyControlDefinition } from '../body/control/ControlDefinition.ts';
1
+ import { AnyBodyElementDefinition, ControlElementDefinition } from '../body/BodyDefinition.ts';
3
2
  import { BindDefinition } from './BindDefinition.ts';
4
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
5
4
  import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
6
5
 
7
- export declare class ValueNodeDefinition extends DescendentNodeDefinition<'value-node', AnyControlDefinition | null> implements NodeDefinition<'value-node'> {
6
+ export declare class ValueNodeDefinition extends DescendentNodeDefinition<'value-node', ControlElementDefinition | null> implements NodeDefinition<'value-node'> {
8
7
  readonly node: Element;
9
8
  readonly type = "value-node";
10
9
  readonly nodeName: string;