@getodk/xforms-engine 0.6.0 → 0.8.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.
- package/dist/client/BaseNode.d.ts +4 -4
- package/dist/client/BaseValueNode.d.ts +7 -3
- package/dist/client/RootNode.d.ts +20 -16
- package/dist/client/UploadNode.d.ts +53 -0
- package/dist/client/attachments/InstanceAttachmentMeta.d.ts +8 -0
- package/dist/client/attachments/InstanceAttachmentsConfig.d.ts +8 -0
- package/dist/client/constants.d.ts +11 -12
- package/dist/client/form/CreateFormInstance.d.ts +14 -0
- package/dist/client/form/EditFormInstance.d.ts +62 -0
- package/dist/client/form/FormInstance.d.ts +104 -0
- package/dist/client/form/FormInstanceConfig.d.ts +19 -0
- package/dist/client/form/FormResource.d.ts +1 -0
- package/dist/client/form/LoadForm.d.ts +79 -0
- package/dist/client/form/LoadFormResult.d.ts +67 -0
- package/dist/client/form/RestoreFormInstance.d.ts +8 -0
- package/dist/client/hierarchy.d.ts +4 -5
- package/dist/client/index.d.ts +40 -11
- package/dist/client/node-types.d.ts +2 -3
- package/dist/client/repeat/BaseRepeatRangeNode.d.ts +3 -4
- package/dist/client/repeat/RepeatInstanceNode.d.ts +4 -5
- package/dist/client/repeat/RepeatRangeControlledNode.d.ts +2 -2
- package/dist/client/repeat/RepeatRangeUncontrolledNode.d.ts +2 -2
- package/dist/client/resources.d.ts +1 -1
- package/dist/client/serialization/InstanceData.d.ts +14 -0
- package/dist/client/serialization/InstanceFile.d.ts +6 -0
- package/dist/client/serialization/InstancePayload.d.ts +93 -0
- package/dist/client/serialization/InstancePayloadOptions.d.ts +24 -0
- package/dist/client/serialization/InstanceState.d.ts +12 -0
- package/dist/client/submission/{SubmissionDefinition.d.ts → SubmissionMeta.d.ts} +1 -1
- package/dist/entrypoints/FormInstance.d.ts +20 -0
- package/dist/entrypoints/FormResult/BaseFormResult.d.ts +22 -0
- package/dist/entrypoints/FormResult/BaseInstantiableFormResult.d.ts +25 -0
- package/dist/entrypoints/FormResult/FormFailureResult.d.ts +17 -0
- package/dist/entrypoints/FormResult/FormSuccessResult.d.ts +15 -0
- package/dist/entrypoints/FormResult/FormWarningResult.d.ts +15 -0
- package/dist/entrypoints/createInstance.d.ts +9 -0
- package/dist/entrypoints/editInstance.d.ts +9 -0
- package/dist/entrypoints/index.d.ts +4 -0
- package/dist/entrypoints/loadForm.d.ts +4 -0
- package/dist/entrypoints/restoreInstance.d.ts +9 -0
- package/dist/error/LoadFormFailureError.d.ts +9 -0
- package/dist/error/MalformedInstanceDataError.d.ts +3 -0
- package/dist/error/TemplatedNodeAttributeSerializationError.d.ts +22 -0
- package/dist/error/UploadValueTypeError.d.ts +8 -0
- package/dist/index.d.ts +2 -33
- package/dist/index.js +8280 -6779
- package/dist/index.js.map +1 -1
- package/dist/instance/Group.d.ts +6 -5
- package/dist/instance/InputControl.d.ts +5 -4
- package/dist/instance/ModelValue.d.ts +5 -4
- package/dist/instance/Note.d.ts +4 -3
- package/dist/instance/PrimaryInstance.d.ts +34 -8
- package/dist/instance/RangeControl.d.ts +5 -4
- package/dist/instance/RankControl.d.ts +6 -5
- package/dist/instance/Root.d.ts +7 -9
- package/dist/instance/SelectControl.d.ts +4 -3
- package/dist/instance/Subtree.d.ts +6 -5
- package/dist/instance/TriggerControl.d.ts +4 -3
- package/dist/instance/UploadControl.d.ts +58 -0
- package/dist/instance/abstract/DescendantNode.d.ts +10 -1
- package/dist/instance/abstract/InstanceNode.d.ts +7 -4
- package/dist/instance/abstract/ValueNode.d.ts +7 -5
- package/dist/instance/attachments/InstanceAttachment.d.ts +42 -0
- package/dist/instance/attachments/InstanceAttachmentsState.d.ts +9 -0
- package/dist/instance/children/DescendantNodeInitOptions.d.ts +32 -0
- package/dist/instance/{children.d.ts → children/buildChildren.d.ts} +1 -1
- package/dist/instance/children/childrenInitOptions.d.ts +9 -0
- package/dist/instance/children/normalizeChildInitOptions.d.ts +2 -0
- package/dist/instance/hierarchy.d.ts +6 -7
- package/dist/instance/input/InitialInstanceState.d.ts +13 -0
- package/dist/instance/input/InstanceAttachmentMap.d.ts +19 -0
- package/dist/instance/internal-api/InstanceAttachmentContext.d.ts +19 -0
- package/dist/instance/internal-api/InstanceConfig.d.ts +4 -9
- package/dist/instance/internal-api/InstanceValueContext.d.ts +8 -1
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableInstance.d.ts +16 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableLeafNode.d.ts +32 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableParentNode.d.ts +18 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.d.ts +13 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableValueNode.d.ts +21 -0
- package/dist/instance/repeat/BaseRepeatRange.d.ts +10 -8
- package/dist/instance/repeat/RepeatInstance.d.ts +10 -7
- package/dist/instance/repeat/RepeatRangeControlled.d.ts +27 -3
- package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +4 -3
- package/dist/instance/resource.d.ts +5 -1
- package/dist/integration/xpath/EngineXPathEvaluator.d.ts +2 -2
- package/dist/integration/xpath/adapter/kind.d.ts +4 -10
- package/dist/integration/xpath/static-dom/StaticAttribute.d.ts +4 -5
- package/dist/integration/xpath/static-dom/StaticDocument.d.ts +13 -10
- package/dist/integration/xpath/static-dom/StaticElement.d.ts +21 -22
- package/dist/integration/xpath/static-dom/StaticNode.d.ts +1 -1
- package/dist/integration/xpath/static-dom/StaticParentNode.d.ts +13 -0
- package/dist/integration/xpath/static-dom/staticNodeName.d.ts +3 -0
- package/dist/lib/client-reactivity/instance-state/createNodeRangeInstanceState.d.ts +4 -0
- package/dist/lib/client-reactivity/instance-state/createParentNodeInstanceState.d.ts +4 -0
- package/dist/lib/client-reactivity/instance-state/createPrimaryInstanceState.d.ts +3 -0
- package/dist/lib/client-reactivity/instance-state/createRootInstanceState.d.ts +3 -0
- package/dist/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.d.ts +6 -0
- package/dist/lib/client-reactivity/instance-state/createValueNodeInstanceState.d.ts +3 -0
- package/dist/lib/client-reactivity/instance-state/prepareInstancePayload.d.ts +8 -0
- package/dist/lib/names/UnprefixedXFormsName.d.ts +4 -0
- package/dist/lib/reactivity/createInstanceAttachment.d.ts +8 -0
- package/dist/lib/reactivity/createInstanceValueState.d.ts +2 -27
- package/dist/lib/resource-helpers.d.ts +2 -0
- package/dist/parse/XFormDOM.d.ts +1 -1
- package/dist/parse/body/BodyDefinition.d.ts +2 -1
- package/dist/parse/body/control/UploadControlDefinition.d.ts +2 -0
- package/dist/parse/model/BindDefinition.d.ts +1 -1
- package/dist/parse/model/BindTypeDefinition.d.ts +2 -7
- package/dist/parse/model/ItextTranslationsDefinition.d.ts +18 -0
- package/dist/parse/model/LeafNodeDefinition.d.ts +4 -5
- package/dist/parse/model/ModelBindMap.d.ts +1 -1
- package/dist/parse/model/ModelDefinition.d.ts +9 -2
- package/dist/parse/model/NodeDefinition.d.ts +18 -30
- package/dist/parse/model/NoteNodeDefinition.d.ts +3 -2
- package/dist/parse/model/RangeNodeDefinition.d.ts +2 -1
- package/dist/parse/model/RepeatDefinition.d.ts +62 -0
- package/dist/parse/model/RootAttributeDefinition.d.ts +1 -4
- package/dist/parse/model/RootAttributeMap.d.ts +2 -1
- package/dist/parse/model/RootDefinition.d.ts +7 -8
- package/dist/parse/model/SecondaryInstance/SecondaryInstancesDefinition.d.ts +15 -2
- package/dist/parse/model/SecondaryInstance/assertSecondaryInstanceDefinition.d.ts +5 -0
- package/dist/parse/model/SecondaryInstance/defineSecondaryInstance.d.ts +5 -0
- package/dist/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.d.ts +1 -7
- package/dist/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.d.ts +1 -1
- package/dist/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.d.ts +1 -1
- package/dist/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.d.ts +1 -1
- package/dist/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.d.ts +1 -1
- package/dist/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.d.ts +1 -1
- package/dist/parse/model/{FormSubmissionDefinition.d.ts → SubmissionDefinition.d.ts} +2 -2
- package/dist/parse/model/SubtreeDefinition.d.ts +4 -5
- package/dist/parse/model/nodeDefinitionMap.d.ts +5 -0
- package/dist/parse/shared/parseInstanceXML.d.ts +21 -0
- package/dist/parse/shared/parseStaticDocumentFromDOMSubtree.d.ts +4 -21
- package/dist/solid.js +8251 -6751
- package/dist/solid.js.map +1 -1
- package/package.json +15 -14
- package/src/client/BaseNode.ts +4 -4
- package/src/client/BaseValueNode.ts +7 -3
- package/src/client/RootNode.ts +32 -19
- package/src/client/UploadNode.ts +78 -0
- package/src/client/attachments/InstanceAttachmentMeta.ts +10 -0
- package/src/client/attachments/InstanceAttachmentsConfig.ts +13 -0
- package/src/client/constants.ts +12 -14
- package/src/client/form/CreateFormInstance.ts +19 -0
- package/src/client/form/EditFormInstance.ts +93 -0
- package/src/client/form/FormInstance.ts +114 -0
- package/src/client/form/FormInstanceConfig.ts +21 -0
- package/src/client/form/FormResource.ts +1 -0
- package/src/client/form/LoadForm.ts +92 -0
- package/src/client/form/LoadFormResult.ts +103 -0
- package/src/client/form/RestoreFormInstance.ts +14 -0
- package/src/client/hierarchy.ts +5 -8
- package/src/client/index.ts +49 -29
- package/src/client/node-types.ts +3 -8
- package/src/client/repeat/BaseRepeatRangeNode.ts +3 -4
- package/src/client/repeat/RepeatInstanceNode.ts +4 -8
- package/src/client/repeat/RepeatRangeControlledNode.ts +2 -2
- package/src/client/repeat/RepeatRangeUncontrolledNode.ts +2 -2
- package/src/client/resources.ts +2 -2
- package/src/client/serialization/InstanceData.ts +24 -0
- package/src/client/serialization/InstanceFile.ts +9 -0
- package/src/client/serialization/InstancePayload.ts +126 -0
- package/src/client/serialization/InstancePayloadOptions.ts +29 -0
- package/src/client/serialization/InstanceState.ts +14 -0
- package/src/client/submission/{SubmissionDefinition.ts → SubmissionMeta.ts} +1 -1
- package/src/entrypoints/FormInstance.ts +56 -0
- package/src/entrypoints/FormResult/BaseFormResult.ts +40 -0
- package/src/entrypoints/FormResult/BaseInstantiableFormResult.ts +109 -0
- package/src/entrypoints/FormResult/FormFailureResult.ts +44 -0
- package/src/entrypoints/FormResult/FormSuccessResult.ts +25 -0
- package/src/entrypoints/FormResult/FormWarningResult.ts +25 -0
- package/src/entrypoints/createInstance.ts +23 -0
- package/src/entrypoints/editInstance.ts +24 -0
- package/src/entrypoints/index.ts +4 -0
- package/src/entrypoints/loadForm.ts +154 -0
- package/src/entrypoints/restoreInstance.ts +27 -0
- package/src/error/LoadFormFailureError.ts +114 -0
- package/src/error/MalformedInstanceDataError.ts +3 -0
- package/src/error/TemplatedNodeAttributeSerializationError.ts +24 -0
- package/src/error/UploadValueTypeError.ts +13 -0
- package/src/index.ts +2 -46
- package/src/instance/Group.ts +16 -15
- package/src/instance/InputControl.ts +17 -11
- package/src/instance/ModelValue.ts +17 -11
- package/src/instance/Note.ts +10 -9
- package/src/instance/PrimaryInstance.ts +68 -31
- package/src/instance/RangeControl.ts +17 -11
- package/src/instance/RankControl.ts +28 -19
- package/src/instance/Root.ts +20 -31
- package/src/instance/SelectControl.ts +21 -12
- package/src/instance/Subtree.ts +16 -15
- package/src/instance/TriggerControl.ts +21 -12
- package/src/instance/UploadControl.ts +184 -0
- package/src/instance/abstract/DescendantNode.ts +12 -2
- package/src/instance/abstract/InstanceNode.ts +9 -5
- package/src/instance/abstract/ValueNode.ts +11 -13
- package/src/instance/attachments/InstanceAttachment.ts +69 -0
- package/src/instance/attachments/InstanceAttachmentsState.ts +18 -0
- package/src/instance/children/DescendantNodeInitOptions.ts +35 -0
- package/src/instance/{children.ts → children/buildChildren.ts} +57 -53
- package/src/instance/children/childrenInitOptions.ts +117 -0
- package/src/instance/children/normalizeChildInitOptions.ts +332 -0
- package/src/instance/hierarchy.ts +6 -9
- package/src/instance/input/InitialInstanceState.ts +108 -0
- package/src/instance/input/InstanceAttachmentMap.ts +154 -0
- package/src/instance/internal-api/InstanceAttachmentContext.ts +20 -0
- package/src/instance/internal-api/InstanceConfig.ts +6 -10
- package/src/instance/internal-api/InstanceValueContext.ts +9 -1
- package/src/instance/internal-api/serialization/ClientReactiveSerializableInstance.ts +22 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableLeafNode.ts +43 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableParentNode.ts +26 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts +24 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableValueNode.ts +28 -0
- package/src/instance/repeat/BaseRepeatRange.ts +19 -24
- package/src/instance/repeat/RepeatInstance.ts +26 -19
- package/src/instance/repeat/RepeatRangeControlled.ts +90 -17
- package/src/instance/repeat/RepeatRangeUncontrolled.ts +10 -9
- package/src/instance/resource.ts +14 -1
- package/src/integration/xpath/EngineXPathEvaluator.ts +2 -2
- package/src/integration/xpath/adapter/kind.ts +1 -28
- package/src/integration/xpath/adapter/traversal.ts +2 -2
- package/src/integration/xpath/static-dom/StaticAttribute.ts +6 -5
- package/src/integration/xpath/static-dom/StaticDocument.ts +17 -16
- package/src/integration/xpath/static-dom/StaticElement.ts +196 -50
- package/src/integration/xpath/static-dom/StaticNode.ts +1 -1
- package/src/integration/xpath/static-dom/StaticParentNode.ts +22 -0
- package/src/integration/xpath/static-dom/staticNodeName.ts +20 -0
- package/src/lib/client-reactivity/instance-state/createNodeRangeInstanceState.ts +17 -0
- package/src/lib/client-reactivity/instance-state/createParentNodeInstanceState.ts +22 -0
- package/src/lib/client-reactivity/instance-state/createPrimaryInstanceState.ts +12 -0
- package/src/lib/client-reactivity/{submission/createRootSubmissionState.ts → instance-state/createRootInstanceState.ts} +4 -4
- package/src/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.ts +31 -0
- package/src/lib/client-reactivity/instance-state/createValueNodeInstanceState.ts +21 -0
- package/src/lib/client-reactivity/instance-state/prepareInstancePayload.ts +237 -0
- package/src/lib/names/UnprefixedXFormsName.ts +12 -0
- package/src/lib/reactivity/createInstanceAttachment.ts +212 -0
- package/src/lib/reactivity/createInstanceValueState.ts +27 -51
- package/src/lib/resource-helpers.ts +33 -0
- package/src/parse/XFormDOM.ts +1 -3
- package/src/parse/body/BodyDefinition.ts +4 -0
- package/src/parse/body/control/UploadControlDefinition.ts +42 -0
- package/src/parse/model/BindDefinition.ts +1 -1
- package/src/parse/model/BindTypeDefinition.ts +68 -26
- package/src/parse/model/ItextTranslationsDefinition.ts +79 -0
- package/src/parse/model/LeafNodeDefinition.ts +3 -5
- package/src/parse/model/ModelBindMap.ts +0 -5
- package/src/parse/model/ModelDefinition.ts +36 -3
- package/src/parse/model/NodeDefinition.ts +19 -45
- package/src/parse/model/NoteNodeDefinition.ts +4 -3
- package/src/parse/model/RangeNodeDefinition.ts +3 -2
- package/src/parse/model/RepeatDefinition.ts +382 -0
- package/src/parse/model/RootAttributeDefinition.ts +6 -7
- package/src/parse/model/RootAttributeMap.ts +15 -10
- package/src/parse/model/RootDefinition.ts +17 -19
- package/src/parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts +23 -2
- package/src/parse/model/SecondaryInstance/assertSecondaryInstanceDefinition.ts +14 -0
- package/src/parse/model/SecondaryInstance/defineSecondaryInstance.ts +32 -0
- package/src/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.ts +3 -24
- package/src/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.ts +33 -86
- package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.ts +1 -30
- package/src/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.ts +64 -137
- package/src/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.ts +9 -7
- package/src/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.ts +1 -1
- package/src/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.ts +7 -7
- package/src/parse/model/{FormSubmissionDefinition.ts → SubmissionDefinition.ts} +2 -2
- package/src/parse/model/SubtreeDefinition.ts +4 -5
- package/src/parse/model/nodeDefinitionMap.ts +34 -0
- package/src/parse/shared/parseInstanceXML.ts +79 -0
- package/src/parse/shared/parseStaticDocumentFromDOMSubtree.ts +45 -130
- package/dist/client/EngineConfig.d.ts +0 -79
- package/dist/client/submission/SubmissionData.d.ts +0 -7
- package/dist/client/submission/SubmissionInstanceFile.d.ts +0 -6
- package/dist/client/submission/SubmissionOptions.d.ts +0 -23
- package/dist/client/submission/SubmissionResult.d.ts +0 -91
- package/dist/client/submission/SubmissionState.d.ts +0 -12
- package/dist/client/unsupported/UnsupportedControlNode.d.ts +0 -30
- package/dist/client/unsupported/UploadNode.d.ts +0 -9
- package/dist/instance/abstract/UnsupportedControl.d.ts +0 -54
- package/dist/instance/index.d.ts +0 -8
- package/dist/instance/internal-api/ValueContext.d.ts +0 -23
- package/dist/instance/internal-api/submission/ClientReactiveSubmittableInstance.d.ts +0 -14
- package/dist/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.d.ts +0 -32
- package/dist/instance/internal-api/submission/ClientReactiveSubmittableParentNode.d.ts +0 -19
- package/dist/instance/internal-api/submission/ClientReactiveSubmittableValueNode.d.ts +0 -18
- package/dist/instance/unsupported/UploadControl.d.ts +0 -6
- package/dist/lib/client-reactivity/submission/createInstanceSubmissionState.d.ts +0 -3
- package/dist/lib/client-reactivity/submission/createLeafNodeSubmissionState.d.ts +0 -3
- package/dist/lib/client-reactivity/submission/createNodeRangeSubmissionState.d.ts +0 -4
- package/dist/lib/client-reactivity/submission/createParentNodeSubmissionState.d.ts +0 -4
- package/dist/lib/client-reactivity/submission/createRootSubmissionState.d.ts +0 -3
- package/dist/lib/client-reactivity/submission/createValueNodeSubmissionState.d.ts +0 -3
- package/dist/lib/client-reactivity/submission/prepareSubmission.d.ts +0 -8
- package/dist/lib/reactivity/createValueState.d.ts +0 -40
- package/dist/parse/model/ItextTranslation/ItextTranslationDefinition.d.ts +0 -4
- package/dist/parse/model/ItextTranslation/ItextTranslationRootDefinition.d.ts +0 -9
- package/dist/parse/model/ItextTranslation/ItextTranslationsDefinition.d.ts +0 -8
- package/dist/parse/model/RepeatInstanceDefinition.d.ts +0 -17
- package/dist/parse/model/RepeatRangeDefinition.d.ts +0 -32
- package/dist/parse/model/RepeatTemplateDefinition.d.ts +0 -31
- package/dist/parse/model/SecondaryInstance/SecondaryInstanceDefinition.d.ts +0 -4
- package/dist/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.d.ts +0 -7
- package/src/client/EngineConfig.ts +0 -84
- package/src/client/submission/SubmissionData.ts +0 -12
- package/src/client/submission/SubmissionInstanceFile.ts +0 -9
- package/src/client/submission/SubmissionOptions.ts +0 -28
- package/src/client/submission/SubmissionResult.ts +0 -124
- package/src/client/submission/SubmissionState.ts +0 -14
- package/src/client/unsupported/UnsupportedControlNode.ts +0 -36
- package/src/client/unsupported/UploadNode.ts +0 -14
- package/src/instance/abstract/UnsupportedControl.ts +0 -175
- package/src/instance/index.ts +0 -55
- package/src/instance/internal-api/ValueContext.ts +0 -28
- package/src/instance/internal-api/submission/ClientReactiveSubmittableInstance.ts +0 -20
- package/src/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts +0 -43
- package/src/instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts +0 -26
- package/src/instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts +0 -24
- package/src/instance/unsupported/UploadControl.ts +0 -9
- package/src/lib/client-reactivity/submission/createInstanceSubmissionState.ts +0 -12
- package/src/lib/client-reactivity/submission/createLeafNodeSubmissionState.ts +0 -20
- package/src/lib/client-reactivity/submission/createNodeRangeSubmissionState.ts +0 -17
- package/src/lib/client-reactivity/submission/createParentNodeSubmissionState.ts +0 -22
- package/src/lib/client-reactivity/submission/createValueNodeSubmissionState.ts +0 -21
- package/src/lib/client-reactivity/submission/prepareSubmission.ts +0 -172
- package/src/lib/reactivity/createValueState.ts +0 -200
- package/src/parse/model/ItextTranslation/ItextTranslationDefinition.ts +0 -4
- package/src/parse/model/ItextTranslation/ItextTranslationRootDefinition.ts +0 -42
- package/src/parse/model/ItextTranslation/ItextTranslationsDefinition.ts +0 -31
- package/src/parse/model/RepeatInstanceDefinition.ts +0 -38
- package/src/parse/model/RepeatRangeDefinition.ts +0 -98
- package/src/parse/model/RepeatTemplateDefinition.ts +0 -149
- package/src/parse/model/SecondaryInstance/SecondaryInstanceDefinition.ts +0 -4
- package/src/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.ts +0 -12
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This error class is intended as a common point of reference for all of the
|
|
3
|
+
* related interfaces and implementation where we've deferred two concerns:
|
|
4
|
+
*
|
|
5
|
+
* 1. Support for attributes on instance nodes (which may be bound in a form's
|
|
6
|
+
* model and/or may be expected to preserve model-defined defaults)
|
|
7
|
+
* 2. Present lack of logic to treat a `jr:template` attribute as a special
|
|
8
|
+
* case: whereas in the general case we would expect to pass through a
|
|
9
|
+
* form/model-defined attribute, we expect to specifically **omit**
|
|
10
|
+
* `jr:template` from repeat instances derived from any of form's
|
|
11
|
+
* explicitly-defined repeat templates
|
|
12
|
+
*
|
|
13
|
+
* Addressing #1 is (now) a prerequisite to addressing #2, and it is also a
|
|
14
|
+
* prerequisite for #2's unaddressed status to _become meaningfully observable
|
|
15
|
+
* and problematic_.
|
|
16
|
+
*
|
|
17
|
+
* By introducing this error at a point where a change in #1's status is likely
|
|
18
|
+
* to be implicated, we're also likely to be reminded to address #2 in tandem.
|
|
19
|
+
*/
|
|
20
|
+
export class TemplatedNodeAttributeSerializationError extends Error {
|
|
21
|
+
constructor() {
|
|
22
|
+
super('Template attribute omission not implemented');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { UploadDefinition } from '../client/UploadNode.ts';
|
|
2
|
+
import type { ValueType } from '../client/ValueType.ts';
|
|
3
|
+
import { XFormsSpecViolationError } from './XFormsSpecViolationError.ts';
|
|
4
|
+
|
|
5
|
+
type UnsupportedUploadValueType = Exclude<ValueType, 'binary'>;
|
|
6
|
+
|
|
7
|
+
export class UploadValueTypeError extends XFormsSpecViolationError {
|
|
8
|
+
constructor(definition: UploadDefinition<UnsupportedUploadValueType>) {
|
|
9
|
+
const { valueType } = definition;
|
|
10
|
+
|
|
11
|
+
super(`Expected upload control to have 'binary' value type, got: ${valueType}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,46 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export const initializeForm: InitializeForm = engine__initializeForm;
|
|
5
|
-
|
|
6
|
-
export type * from './client/constants.ts';
|
|
7
|
-
export * as constants from './client/constants.ts';
|
|
8
|
-
export type * from './client/EngineConfig.ts';
|
|
9
|
-
export type * from './client/FormLanguage.ts';
|
|
10
|
-
export type * from './client/GroupNode.ts';
|
|
11
|
-
export type {
|
|
12
|
-
AnyChildNode,
|
|
13
|
-
AnyControlNode,
|
|
14
|
-
AnyLeafNode,
|
|
15
|
-
AnyNode,
|
|
16
|
-
AnyParentNode,
|
|
17
|
-
AnyUnsupportedControlNode,
|
|
18
|
-
GeneralChildNode,
|
|
19
|
-
GeneralParentNode,
|
|
20
|
-
RepeatRangeNode,
|
|
21
|
-
} from './client/hierarchy.ts';
|
|
22
|
-
export type * from './client/index.ts';
|
|
23
|
-
export type * from './client/InputNode.ts';
|
|
24
|
-
export type * from './client/ModelValueNode.ts';
|
|
25
|
-
export type * from './client/NoteNode.ts';
|
|
26
|
-
export type * from './client/OpaqueReactiveObjectFactory.ts';
|
|
27
|
-
export type * from './client/RangeNode.ts';
|
|
28
|
-
export type * from './client/repeat/RepeatInstanceNode.ts';
|
|
29
|
-
export type * from './client/repeat/RepeatRangeControlledNode.ts';
|
|
30
|
-
export type * from './client/repeat/RepeatRangeUncontrolledNode.ts';
|
|
31
|
-
export type * from './client/resources.ts';
|
|
32
|
-
export type * from './client/RootNode.ts';
|
|
33
|
-
export type * from './client/SelectNode.ts';
|
|
34
|
-
export type * from './client/submission/SubmissionData.ts';
|
|
35
|
-
export type * from './client/submission/SubmissionDefinition.ts';
|
|
36
|
-
export type * from './client/submission/SubmissionInstanceFile.ts';
|
|
37
|
-
export type * from './client/submission/SubmissionOptions.ts';
|
|
38
|
-
export type * from './client/submission/SubmissionResult.ts';
|
|
39
|
-
export type * from './client/submission/SubmissionState.ts';
|
|
40
|
-
export type * from './client/SubtreeNode.ts';
|
|
41
|
-
export type * from './client/TextRange.ts';
|
|
42
|
-
export type * from './client/TriggerNode.ts';
|
|
43
|
-
export type * from './client/RankNode.ts';
|
|
44
|
-
export type * from './client/unsupported/UploadNode.ts';
|
|
45
|
-
export type * from './client/validation.ts';
|
|
46
|
-
export type * from './client/ValueType.ts';
|
|
1
|
+
export * from './client/index.ts';
|
|
2
|
+
export * from './entrypoints/index.ts';
|
package/src/instance/Group.ts
CHANGED
|
@@ -2,11 +2,12 @@ import { XPathNodeKindKey } from '@getodk/xpath';
|
|
|
2
2
|
import type { Accessor } from 'solid-js';
|
|
3
3
|
import type { GroupDefinition, GroupNode, GroupNodeAppearances } from '../client/GroupNode.ts';
|
|
4
4
|
import type { FormNodeID } from '../client/identity.ts';
|
|
5
|
-
import type {
|
|
5
|
+
import type { InstanceState } from '../client/serialization/InstanceState.ts';
|
|
6
6
|
import type { TextRange } from '../client/TextRange.ts';
|
|
7
7
|
import type { AncestorNodeValidationState } from '../client/validation.ts';
|
|
8
8
|
import type { XFormsXPathElement } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
9
|
-
import {
|
|
9
|
+
import type { StaticElement } from '../integration/xpath/static-dom/StaticElement.ts';
|
|
10
|
+
import { createParentNodeInstanceState } from '../lib/client-reactivity/instance-state/createParentNodeInstanceState.ts';
|
|
10
11
|
import type { ChildrenState } from '../lib/reactivity/createChildrenState.ts';
|
|
11
12
|
import { createChildrenState } from '../lib/reactivity/createChildrenState.ts';
|
|
12
13
|
import type { MaterializedChildren } from '../lib/reactivity/materializeCurrentStateChildren.ts';
|
|
@@ -19,10 +20,10 @@ import { createNodeLabel } from '../lib/reactivity/text/createNodeLabel.ts';
|
|
|
19
20
|
import { createAggregatedViolations } from '../lib/reactivity/validation/createAggregatedViolations.ts';
|
|
20
21
|
import type { DescendantNodeSharedStateSpec } from './abstract/DescendantNode.ts';
|
|
21
22
|
import { DescendantNode } from './abstract/DescendantNode.ts';
|
|
22
|
-
import { buildChildren } from './children.ts';
|
|
23
|
+
import { buildChildren } from './children/buildChildren.ts';
|
|
23
24
|
import type { GeneralChildNode, GeneralParentNode } from './hierarchy.ts';
|
|
24
25
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
25
|
-
import type {
|
|
26
|
+
import type { ClientReactiveSerializableParentNode } from './internal-api/serialization/ClientReactiveSerializableParentNode.ts';
|
|
26
27
|
|
|
27
28
|
// prettier-ignore
|
|
28
29
|
interface GroupStateSpec extends DescendantNodeSharedStateSpec {
|
|
@@ -39,7 +40,7 @@ export class Group
|
|
|
39
40
|
GroupNode,
|
|
40
41
|
XFormsXPathElement,
|
|
41
42
|
EvaluationContext,
|
|
42
|
-
|
|
43
|
+
ClientReactiveSerializableParentNode<GeneralChildNode>
|
|
43
44
|
{
|
|
44
45
|
private readonly childrenState: ChildrenState<GeneralChildNode>;
|
|
45
46
|
|
|
@@ -55,10 +56,14 @@ export class Group
|
|
|
55
56
|
readonly nodeOptions = null;
|
|
56
57
|
readonly currentState: MaterializedChildren<CurrentState<GroupStateSpec>, GeneralChildNode>;
|
|
57
58
|
readonly validationState: AncestorNodeValidationState;
|
|
58
|
-
readonly
|
|
59
|
+
readonly instanceState: InstanceState;
|
|
59
60
|
|
|
60
|
-
constructor(
|
|
61
|
-
|
|
61
|
+
constructor(
|
|
62
|
+
parent: GeneralParentNode,
|
|
63
|
+
instanceNode: StaticElement | null,
|
|
64
|
+
definition: GroupDefinition
|
|
65
|
+
) {
|
|
66
|
+
super(parent, instanceNode, definition);
|
|
62
67
|
|
|
63
68
|
this.appearances = definition.bodyElement.appearances;
|
|
64
69
|
|
|
@@ -66,10 +71,6 @@ export class Group
|
|
|
66
71
|
|
|
67
72
|
this.childrenState = childrenState;
|
|
68
73
|
|
|
69
|
-
const sharedStateOptions = {
|
|
70
|
-
clientStateFactory: this.engineConfig.stateFactory,
|
|
71
|
-
};
|
|
72
|
-
|
|
73
74
|
const state = createSharedNodeState(
|
|
74
75
|
this.scope,
|
|
75
76
|
{
|
|
@@ -84,7 +85,7 @@ export class Group
|
|
|
84
85
|
valueOptions: null,
|
|
85
86
|
value: null,
|
|
86
87
|
},
|
|
87
|
-
|
|
88
|
+
this.instanceConfig
|
|
88
89
|
);
|
|
89
90
|
|
|
90
91
|
this.state = state;
|
|
@@ -96,8 +97,8 @@ export class Group
|
|
|
96
97
|
);
|
|
97
98
|
|
|
98
99
|
childrenState.setChildren(buildChildren(this));
|
|
99
|
-
this.validationState = createAggregatedViolations(this,
|
|
100
|
-
this.
|
|
100
|
+
this.validationState = createAggregatedViolations(this, this.instanceConfig);
|
|
101
|
+
this.instanceState = createParentNodeInstanceState(this);
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
getChildren(): readonly GeneralChildNode[] {
|
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
import type { TextRange } from '../client/TextRange.ts';
|
|
11
11
|
import type { ValueType } from '../client/ValueType.ts';
|
|
12
12
|
import type { XFormsXPathElement } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
13
|
+
import type { StaticLeafElement } from '../integration/xpath/static-dom/StaticElement.ts';
|
|
13
14
|
import type { RuntimeInputValue, RuntimeValue } from '../lib/codecs/getSharedValueCodec.ts';
|
|
14
15
|
import { getSharedValueCodec } from '../lib/codecs/getSharedValueCodec.ts';
|
|
15
16
|
import type { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts';
|
|
@@ -22,7 +23,7 @@ import type { InputControlDefinition } from '../parse/body/control/InputControlD
|
|
|
22
23
|
import { ValueNode, type ValueNodeStateSpec } from './abstract/ValueNode.ts';
|
|
23
24
|
import type { GeneralParentNode } from './hierarchy.ts';
|
|
24
25
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
25
|
-
import type {
|
|
26
|
+
import type { ClientReactiveSerializableValueNode } from './internal-api/serialization/ClientReactiveSerializableValueNode.ts';
|
|
26
27
|
import type { ValidationContext } from './internal-api/ValidationContext.ts';
|
|
27
28
|
import type { Root } from './Root.ts';
|
|
28
29
|
|
|
@@ -78,14 +79,19 @@ export class InputControl<V extends ValueType = ValueType>
|
|
|
78
79
|
XFormsXPathElement,
|
|
79
80
|
EvaluationContext,
|
|
80
81
|
ValidationContext,
|
|
81
|
-
|
|
82
|
+
ClientReactiveSerializableValueNode
|
|
82
83
|
{
|
|
83
|
-
static from(
|
|
84
|
+
static from(
|
|
85
|
+
parent: GeneralParentNode,
|
|
86
|
+
instanceNode: StaticLeafElement | null,
|
|
87
|
+
definition: InputDefinition
|
|
88
|
+
): AnyInputControl;
|
|
84
89
|
static from<V extends ValueType>(
|
|
85
90
|
parent: GeneralParentNode,
|
|
91
|
+
instanceNode: StaticLeafElement | null,
|
|
86
92
|
definition: InputDefinition<V>
|
|
87
93
|
): InputControl<V> {
|
|
88
|
-
return new this(parent, definition);
|
|
94
|
+
return new this(parent, instanceNode, definition);
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
// XFormsXPathElement
|
|
@@ -101,18 +107,18 @@ export class InputControl<V extends ValueType = ValueType>
|
|
|
101
107
|
readonly nodeOptions: InputNodeOptions<V>;
|
|
102
108
|
readonly currentState: CurrentState<InputControlStateSpec<V>>;
|
|
103
109
|
|
|
104
|
-
constructor(
|
|
110
|
+
constructor(
|
|
111
|
+
parent: GeneralParentNode,
|
|
112
|
+
instanceNode: StaticLeafElement | null,
|
|
113
|
+
definition: InputDefinition<V>
|
|
114
|
+
) {
|
|
105
115
|
const codec = getSharedValueCodec(definition.valueType);
|
|
106
116
|
|
|
107
|
-
super(parent, definition, codec);
|
|
117
|
+
super(parent, instanceNode, definition, codec);
|
|
108
118
|
|
|
109
119
|
this.appearances = definition.bodyElement.appearances;
|
|
110
120
|
this.nodeOptions = nodeOptionsFactoryByType[definition.valueType](definition.bodyElement);
|
|
111
121
|
|
|
112
|
-
const sharedStateOptions = {
|
|
113
|
-
clientStateFactory: this.engineConfig.stateFactory,
|
|
114
|
-
};
|
|
115
|
-
|
|
116
122
|
const state = createSharedNodeState(
|
|
117
123
|
this.scope,
|
|
118
124
|
{
|
|
@@ -128,7 +134,7 @@ export class InputControl<V extends ValueType = ValueType>
|
|
|
128
134
|
value: this.valueState,
|
|
129
135
|
instanceValue: this.getInstanceValue,
|
|
130
136
|
},
|
|
131
|
-
|
|
137
|
+
this.instanceConfig
|
|
132
138
|
);
|
|
133
139
|
|
|
134
140
|
this.state = state;
|
|
@@ -2,6 +2,7 @@ import { XPathNodeKindKey } from '@getodk/xpath';
|
|
|
2
2
|
import type { ModelValueDefinition, ModelValueNode } from '../client/ModelValueNode.ts';
|
|
3
3
|
import type { ValueType } from '../client/ValueType.ts';
|
|
4
4
|
import type { XFormsXPathElement } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
5
|
+
import type { StaticLeafElement } from '../integration/xpath/static-dom/StaticElement.ts';
|
|
5
6
|
import type { RuntimeInputValue, RuntimeValue } from '../lib/codecs/getSharedValueCodec.ts';
|
|
6
7
|
import { getSharedValueCodec } from '../lib/codecs/getSharedValueCodec.ts';
|
|
7
8
|
import type { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts';
|
|
@@ -12,7 +13,7 @@ import { ValueNode, type ValueNodeStateSpec } from './abstract/ValueNode.ts';
|
|
|
12
13
|
import type { GeneralParentNode } from './hierarchy.ts';
|
|
13
14
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
14
15
|
import type { ValidationContext } from './internal-api/ValidationContext.ts';
|
|
15
|
-
import type {
|
|
16
|
+
import type { ClientReactiveSerializableValueNode } from './internal-api/serialization/ClientReactiveSerializableValueNode.ts';
|
|
16
17
|
|
|
17
18
|
interface ModelValueStateSpec<V extends ValueType> extends ValueNodeStateSpec<RuntimeValue<V>> {
|
|
18
19
|
readonly label: null;
|
|
@@ -27,14 +28,19 @@ export class ModelValue<V extends ValueType = ValueType>
|
|
|
27
28
|
XFormsXPathElement,
|
|
28
29
|
EvaluationContext,
|
|
29
30
|
ValidationContext,
|
|
30
|
-
|
|
31
|
+
ClientReactiveSerializableValueNode
|
|
31
32
|
{
|
|
32
|
-
static from(
|
|
33
|
+
static from(
|
|
34
|
+
parent: GeneralParentNode,
|
|
35
|
+
instanceNode: StaticLeafElement | null,
|
|
36
|
+
definition: ModelValueDefinition
|
|
37
|
+
): AnyModelValue;
|
|
33
38
|
static from<V extends ValueType>(
|
|
34
39
|
parent: GeneralParentNode,
|
|
40
|
+
instanceNode: StaticLeafElement | null,
|
|
35
41
|
definition: ModelValueDefinition<V>
|
|
36
42
|
): ModelValue<V> {
|
|
37
|
-
return new this(parent, definition);
|
|
43
|
+
return new this(parent, instanceNode, definition);
|
|
38
44
|
}
|
|
39
45
|
|
|
40
46
|
// XFormsXPathElement
|
|
@@ -50,14 +56,14 @@ export class ModelValue<V extends ValueType = ValueType>
|
|
|
50
56
|
readonly nodeOptions = null;
|
|
51
57
|
readonly currentState: CurrentState<ModelValueStateSpec<V>>;
|
|
52
58
|
|
|
53
|
-
constructor(
|
|
59
|
+
constructor(
|
|
60
|
+
parent: GeneralParentNode,
|
|
61
|
+
instanceNode: StaticLeafElement | null,
|
|
62
|
+
definition: ModelValueDefinition<V>
|
|
63
|
+
) {
|
|
54
64
|
const codec = getSharedValueCodec(definition.valueType);
|
|
55
65
|
|
|
56
|
-
super(parent, definition, codec);
|
|
57
|
-
|
|
58
|
-
const sharedStateOptions = {
|
|
59
|
-
clientStateFactory: this.engineConfig.stateFactory,
|
|
60
|
-
};
|
|
66
|
+
super(parent, instanceNode, definition, codec);
|
|
61
67
|
|
|
62
68
|
const state = createSharedNodeState(
|
|
63
69
|
this.scope,
|
|
@@ -74,7 +80,7 @@ export class ModelValue<V extends ValueType = ValueType>
|
|
|
74
80
|
value: this.valueState,
|
|
75
81
|
instanceValue: this.getInstanceValue,
|
|
76
82
|
},
|
|
77
|
-
|
|
83
|
+
this.instanceConfig
|
|
78
84
|
);
|
|
79
85
|
|
|
80
86
|
this.state = state;
|
package/src/instance/Note.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { NoteNode, NoteNodeAppearances, NoteValue } from '../client/NoteNod
|
|
|
5
5
|
import type { TextRange } from '../client/TextRange.ts';
|
|
6
6
|
import type { ValueType } from '../client/ValueType.ts';
|
|
7
7
|
import type { XFormsXPathElement } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
8
|
+
import type { StaticLeafElement } from '../integration/xpath/static-dom/StaticElement.ts';
|
|
8
9
|
import { getNoteCodec } from '../lib/codecs/getNoteCodec.ts';
|
|
9
10
|
import type { NoteInputValue, NoteRuntimeValue } from '../lib/codecs/NoteCodec.ts';
|
|
10
11
|
import { createNoteReadonlyThunk } from '../lib/reactivity/createNoteReadonlyThunk.ts';
|
|
@@ -19,7 +20,7 @@ import type { NoteNodeDefinition } from '../parse/model/NoteNodeDefinition.ts';
|
|
|
19
20
|
import { ValueNode, type ValueNodeStateSpec } from './abstract/ValueNode.ts';
|
|
20
21
|
import type { GeneralParentNode } from './hierarchy.ts';
|
|
21
22
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
22
|
-
import type {
|
|
23
|
+
import type { ClientReactiveSerializableValueNode } from './internal-api/serialization/ClientReactiveSerializableValueNode.ts';
|
|
23
24
|
import type { ValidationContext } from './internal-api/ValidationContext.ts';
|
|
24
25
|
|
|
25
26
|
interface NoteStateSpec<V extends ValueType> extends ValueNodeStateSpec<NoteValue<V>> {
|
|
@@ -37,7 +38,7 @@ export class Note<V extends ValueType = ValueType>
|
|
|
37
38
|
XFormsXPathElement,
|
|
38
39
|
EvaluationContext,
|
|
39
40
|
ValidationContext,
|
|
40
|
-
|
|
41
|
+
ClientReactiveSerializableValueNode
|
|
41
42
|
{
|
|
42
43
|
// XFormsXPathElement
|
|
43
44
|
override readonly [XPathNodeKindKey] = 'element';
|
|
@@ -52,17 +53,17 @@ export class Note<V extends ValueType = ValueType>
|
|
|
52
53
|
readonly nodeOptions = null;
|
|
53
54
|
readonly currentState: CurrentState<NoteStateSpec<V>>;
|
|
54
55
|
|
|
55
|
-
constructor(
|
|
56
|
+
constructor(
|
|
57
|
+
parent: GeneralParentNode,
|
|
58
|
+
instanceNode: StaticLeafElement | null,
|
|
59
|
+
definition: NoteNodeDefinition<V>
|
|
60
|
+
) {
|
|
56
61
|
const codec = getNoteCodec(definition.valueType);
|
|
57
62
|
|
|
58
|
-
super(parent, definition, codec);
|
|
63
|
+
super(parent, instanceNode, definition, codec);
|
|
59
64
|
|
|
60
65
|
this.appearances = definition.bodyElement.appearances;
|
|
61
66
|
|
|
62
|
-
const sharedStateOptions = {
|
|
63
|
-
clientStateFactory: this.engineConfig.stateFactory,
|
|
64
|
-
};
|
|
65
|
-
|
|
66
67
|
const isReadonly = createNoteReadonlyThunk(this, definition);
|
|
67
68
|
const noteTextComputation = createNoteText(this, definition.noteTextDefinition);
|
|
68
69
|
|
|
@@ -108,7 +109,7 @@ export class Note<V extends ValueType = ValueType>
|
|
|
108
109
|
value: this.valueState,
|
|
109
110
|
instanceValue: this.getInstanceValue,
|
|
110
111
|
},
|
|
111
|
-
|
|
112
|
+
this.instanceConfig
|
|
112
113
|
);
|
|
113
114
|
|
|
114
115
|
this.state = state;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { XPathNodeKindKey } from '@getodk/xpath';
|
|
2
2
|
import type { Accessor } from 'solid-js';
|
|
3
3
|
import { createSignal } from 'solid-js';
|
|
4
|
+
import type { FormInstanceInitializationMode } from '../client/form/FormInstance.ts';
|
|
4
5
|
import type { ActiveLanguage, FormLanguage, FormLanguages } from '../client/FormLanguage.ts';
|
|
5
6
|
import type { FormNodeID } from '../client/identity.ts';
|
|
6
7
|
import type { RootNode } from '../client/RootNode.ts';
|
|
8
|
+
import type { InstancePayload } from '../client/serialization/InstancePayload.ts';
|
|
7
9
|
import type {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from '../client/
|
|
11
|
-
import type {
|
|
12
|
-
import type { SubmissionState } from '../client/submission/SubmissionState.ts';
|
|
10
|
+
InstancePayloadOptions,
|
|
11
|
+
InstancePayloadType,
|
|
12
|
+
} from '../client/serialization/InstancePayloadOptions.ts';
|
|
13
|
+
import type { InstanceState } from '../client/serialization/InstanceState.ts';
|
|
13
14
|
import type { AncestorNodeValidationState } from '../client/validation.ts';
|
|
14
15
|
import type { XFormsXPathDocument } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
15
16
|
import { EngineXPathEvaluator } from '../integration/xpath/EngineXPathEvaluator.ts';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
17
|
+
import type { StaticDocument } from '../integration/xpath/static-dom/StaticDocument.ts';
|
|
18
|
+
import { createPrimaryInstanceState } from '../lib/client-reactivity/instance-state/createPrimaryInstanceState.ts';
|
|
19
|
+
import { prepareInstancePayload } from '../lib/client-reactivity/instance-state/prepareInstancePayload.ts';
|
|
18
20
|
import { createChildrenState } from '../lib/reactivity/createChildrenState.ts';
|
|
19
21
|
import { createTranslationState } from '../lib/reactivity/createTranslationState.ts';
|
|
20
22
|
import type { MaterializedChildren } from '../lib/reactivity/materializeCurrentStateChildren.ts';
|
|
@@ -30,10 +32,12 @@ import type { ModelDefinition } from '../parse/model/ModelDefinition.ts';
|
|
|
30
32
|
import type { RootDefinition } from '../parse/model/RootDefinition.ts';
|
|
31
33
|
import type { SecondaryInstancesDefinition } from '../parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts';
|
|
32
34
|
import { InstanceNode } from './abstract/InstanceNode.ts';
|
|
35
|
+
import { InstanceAttachmentsState } from './attachments/InstanceAttachmentsState.ts';
|
|
36
|
+
import type { InitialInstanceState } from './input/InitialInstanceState.ts';
|
|
33
37
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
34
38
|
import type { InstanceConfig } from './internal-api/InstanceConfig.ts';
|
|
35
39
|
import type { PrimaryInstanceDocument } from './internal-api/PrimaryInstanceDocument.ts';
|
|
36
|
-
import type {
|
|
40
|
+
import type { ClientReactiveSerializableInstance } from './internal-api/serialization/ClientReactiveSerializableInstance.ts';
|
|
37
41
|
import type { TranslationContext } from './internal-api/TranslationContext.ts';
|
|
38
42
|
import { Root } from './Root.ts';
|
|
39
43
|
|
|
@@ -74,20 +78,52 @@ interface PrimaryInstanceStateSpec {
|
|
|
74
78
|
readonly activeLanguage: Accessor<ActiveLanguage>;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
|
|
81
|
+
interface PrimaryInstanceStateInputByMode {
|
|
82
|
+
readonly create: null;
|
|
83
|
+
readonly edit: InitialInstanceState;
|
|
84
|
+
readonly restore: InitialInstanceState;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export type PrimaryInstanceInitialState<Mode extends FormInstanceInitializationMode> =
|
|
88
|
+
PrimaryInstanceStateInputByMode[Mode];
|
|
89
|
+
|
|
90
|
+
export interface BasePrimaryInstanceOptions {
|
|
91
|
+
readonly scope: ReactiveScope;
|
|
92
|
+
readonly model: ModelDefinition;
|
|
93
|
+
readonly secondaryInstances: SecondaryInstancesDefinition;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface ModelessPrimaryInstanceOptions extends BasePrimaryInstanceOptions {
|
|
97
|
+
readonly config: InstanceConfig;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface PrimaryInstanceOptions<Mode extends FormInstanceInitializationMode>
|
|
101
|
+
extends ModelessPrimaryInstanceOptions {
|
|
102
|
+
readonly mode: Mode;
|
|
103
|
+
readonly initialState: PrimaryInstanceInitialState<Mode>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export class PrimaryInstance<
|
|
107
|
+
Mode extends FormInstanceInitializationMode = FormInstanceInitializationMode,
|
|
108
|
+
>
|
|
78
109
|
extends InstanceNode<RootDefinition, PrimaryInstanceStateSpec, null, Root>
|
|
79
110
|
implements
|
|
80
111
|
PrimaryInstanceDocument,
|
|
81
112
|
XFormsXPathDocument,
|
|
82
113
|
TranslationContext,
|
|
83
114
|
EvaluationContext,
|
|
84
|
-
|
|
115
|
+
ClientReactiveSerializableInstance
|
|
85
116
|
{
|
|
117
|
+
readonly initializationMode: FormInstanceInitializationMode;
|
|
118
|
+
readonly model: ModelDefinition;
|
|
119
|
+
readonly attachments: InstanceAttachmentsState;
|
|
120
|
+
|
|
86
121
|
// InstanceNode
|
|
87
122
|
protected readonly state: SharedNodeState<PrimaryInstanceStateSpec>;
|
|
88
123
|
protected readonly engineState: EngineState<PrimaryInstanceStateSpec>;
|
|
89
|
-
readonly getChildren: Accessor<readonly Root[]>;
|
|
90
124
|
|
|
125
|
+
override readonly instanceNode: StaticDocument;
|
|
126
|
+
readonly getChildren: Accessor<readonly Root[]>;
|
|
91
127
|
readonly hasReadonlyAncestor = () => false;
|
|
92
128
|
readonly isReadonly = () => false;
|
|
93
129
|
readonly hasNonRelevantAncestor = () => false;
|
|
@@ -99,7 +135,7 @@ export class PrimaryInstance
|
|
|
99
135
|
// XFormsXPathDocument
|
|
100
136
|
readonly [XPathNodeKindKey] = 'document';
|
|
101
137
|
|
|
102
|
-
// PrimaryInstanceDocument,
|
|
138
|
+
// PrimaryInstanceDocument, ClientReactiveSerializableInstance
|
|
103
139
|
readonly nodeType = 'primary-instance';
|
|
104
140
|
readonly appearances = null;
|
|
105
141
|
readonly nodeOptions = null;
|
|
@@ -107,7 +143,7 @@ export class PrimaryInstance
|
|
|
107
143
|
readonly root: Root;
|
|
108
144
|
readonly currentState: MaterializedChildren<CurrentState<PrimaryInstanceStateSpec>, Root>;
|
|
109
145
|
readonly validationState: AncestorNodeValidationState;
|
|
110
|
-
readonly
|
|
146
|
+
readonly instanceState: InstanceState;
|
|
111
147
|
readonly languages: FormLanguages;
|
|
112
148
|
|
|
113
149
|
// TranslationContext (+ EvaluationContext)
|
|
@@ -118,19 +154,22 @@ export class PrimaryInstance
|
|
|
118
154
|
readonly evaluator: EngineXPathEvaluator;
|
|
119
155
|
override readonly contextNode = this;
|
|
120
156
|
|
|
121
|
-
constructor(
|
|
122
|
-
scope
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
) {
|
|
127
|
-
const { root: definition } = model;
|
|
157
|
+
constructor(options: PrimaryInstanceOptions<Mode>) {
|
|
158
|
+
const { mode, initialState, scope, model, secondaryInstances, config } = options;
|
|
159
|
+
const { instance: modelInstance } = model;
|
|
160
|
+
const activeInstance = initialState?.document ?? modelInstance;
|
|
161
|
+
const definition = model.getRootDefinition(activeInstance);
|
|
128
162
|
|
|
129
|
-
super(
|
|
163
|
+
super(config, null, activeInstance, definition, {
|
|
130
164
|
scope,
|
|
131
165
|
computeReference: () => PRIMARY_INSTANCE_REFERENCE,
|
|
132
166
|
});
|
|
133
167
|
|
|
168
|
+
this.initializationMode = mode;
|
|
169
|
+
this.model = model;
|
|
170
|
+
this.attachments = new InstanceAttachmentsState(initialState?.attachments);
|
|
171
|
+
this.instanceNode = activeInstance;
|
|
172
|
+
|
|
134
173
|
const [isAttached, setIsAttached] = createSignal(false);
|
|
135
174
|
|
|
136
175
|
this.isAttached = isAttached;
|
|
@@ -170,9 +209,7 @@ export class PrimaryInstance
|
|
|
170
209
|
children: childrenState.childIds,
|
|
171
210
|
};
|
|
172
211
|
|
|
173
|
-
const state = createSharedNodeState(scope, stateSpec,
|
|
174
|
-
clientStateFactory: engineConfig.stateFactory,
|
|
175
|
-
});
|
|
212
|
+
const state = createSharedNodeState(scope, stateSpec, config);
|
|
176
213
|
|
|
177
214
|
this.state = state;
|
|
178
215
|
this.engineState = state.engineState;
|
|
@@ -187,7 +224,7 @@ export class PrimaryInstance
|
|
|
187
224
|
return root.validationState.violations;
|
|
188
225
|
},
|
|
189
226
|
};
|
|
190
|
-
this.
|
|
227
|
+
this.instanceState = createPrimaryInstanceState(this);
|
|
191
228
|
|
|
192
229
|
childrenState.setChildren([root]);
|
|
193
230
|
setIsAttached(true);
|
|
@@ -231,12 +268,12 @@ export class PrimaryInstance
|
|
|
231
268
|
return this.setActiveLanguage(availableFormLanguage);
|
|
232
269
|
}
|
|
233
270
|
|
|
234
|
-
// PrimaryInstanceDocument
|
|
235
|
-
|
|
236
|
-
options?:
|
|
237
|
-
): Promise<
|
|
238
|
-
const result =
|
|
239
|
-
|
|
271
|
+
// PrimaryInstanceDocument
|
|
272
|
+
prepareInstancePayload<PayloadType extends InstancePayloadType = 'monolithic'>(
|
|
273
|
+
options?: InstancePayloadOptions<PayloadType>
|
|
274
|
+
): Promise<InstancePayload<PayloadType>> {
|
|
275
|
+
const result = prepareInstancePayload(this, {
|
|
276
|
+
payloadType: (options?.payloadType ?? 'monolithic') as PayloadType,
|
|
240
277
|
maxSize: options?.maxSize ?? Infinity,
|
|
241
278
|
});
|
|
242
279
|
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
} from '../client/RangeNode.ts';
|
|
9
9
|
import type { TextRange } from '../client/TextRange.ts';
|
|
10
10
|
import type { XFormsXPathElement } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
11
|
+
import type { StaticLeafElement } from '../integration/xpath/static-dom/StaticElement.ts';
|
|
11
12
|
import { RangeCodec } from '../lib/codecs/RangeCodec.ts';
|
|
12
13
|
import { getSharedValueCodec } from '../lib/codecs/getSharedValueCodec.ts';
|
|
13
14
|
import type { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts';
|
|
@@ -26,7 +27,7 @@ import { ValueNode, type ValueNodeStateSpec } from './abstract/ValueNode.ts';
|
|
|
26
27
|
import type { GeneralParentNode } from './hierarchy.ts';
|
|
27
28
|
import type { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
28
29
|
import type { ValidationContext } from './internal-api/ValidationContext.ts';
|
|
29
|
-
import type {
|
|
30
|
+
import type { ClientReactiveSerializableValueNode } from './internal-api/serialization/ClientReactiveSerializableValueNode.ts';
|
|
30
31
|
|
|
31
32
|
interface RangeControlStateSpec<V extends RangeValueType>
|
|
32
33
|
extends ValueNodeStateSpec<RangeValue<V>> {
|
|
@@ -42,14 +43,19 @@ export class RangeControl<V extends RangeValueType = RangeValueType>
|
|
|
42
43
|
XFormsXPathElement,
|
|
43
44
|
EvaluationContext,
|
|
44
45
|
ValidationContext,
|
|
45
|
-
|
|
46
|
+
ClientReactiveSerializableValueNode
|
|
46
47
|
{
|
|
47
|
-
static from(
|
|
48
|
+
static from(
|
|
49
|
+
parent: GeneralParentNode,
|
|
50
|
+
instanceNode: StaticLeafElement | null,
|
|
51
|
+
definition: AnyRangeNodeDefinition
|
|
52
|
+
): AnyRangeControl;
|
|
48
53
|
static from<V extends RangeValueType>(
|
|
49
54
|
parent: GeneralParentNode,
|
|
55
|
+
instanceNode: StaticLeafElement | null,
|
|
50
56
|
definition: RangeNodeDefinition<V>
|
|
51
57
|
): RangeControl<V> {
|
|
52
|
-
return new this<V>(parent, definition);
|
|
58
|
+
return new this<V>(parent, instanceNode, definition);
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
// XFormsXPathElement
|
|
@@ -65,18 +71,18 @@ export class RangeControl<V extends RangeValueType = RangeValueType>
|
|
|
65
71
|
readonly nodeOptions = null;
|
|
66
72
|
readonly currentState: CurrentState<RangeControlStateSpec<V>>;
|
|
67
73
|
|
|
68
|
-
constructor(
|
|
74
|
+
constructor(
|
|
75
|
+
parent: GeneralParentNode,
|
|
76
|
+
instanceNode: StaticLeafElement | null,
|
|
77
|
+
definition: RangeNodeDefinition<V>
|
|
78
|
+
) {
|
|
69
79
|
const baseCodec = getSharedValueCodec(definition.valueType);
|
|
70
80
|
const codec = new RangeCodec(baseCodec, definition);
|
|
71
81
|
|
|
72
|
-
super(parent, definition, codec);
|
|
82
|
+
super(parent, instanceNode, definition, codec);
|
|
73
83
|
|
|
74
84
|
this.appearances = definition.bodyElement.appearances;
|
|
75
85
|
|
|
76
|
-
const sharedStateOptions = {
|
|
77
|
-
clientStateFactory: this.engineConfig.stateFactory,
|
|
78
|
-
};
|
|
79
|
-
|
|
80
86
|
const state = createSharedNodeState(
|
|
81
87
|
this.scope,
|
|
82
88
|
{
|
|
@@ -92,7 +98,7 @@ export class RangeControl<V extends RangeValueType = RangeValueType>
|
|
|
92
98
|
value: this.valueState,
|
|
93
99
|
instanceValue: this.getInstanceValue,
|
|
94
100
|
},
|
|
95
|
-
|
|
101
|
+
this.instanceConfig
|
|
96
102
|
);
|
|
97
103
|
|
|
98
104
|
this.state = state;
|