@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.
- package/dist/client/AttributeNode.d.ts +50 -0
- package/dist/client/BaseNode.d.ts +5 -0
- package/dist/client/form/FormInstanceConfig.d.ts +15 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/node-types.d.ts +1 -1
- package/dist/client/validation.d.ts +7 -1
- package/dist/index.js +730 -294
- package/dist/index.js.map +1 -1
- package/dist/instance/Attribute.d.ts +64 -0
- package/dist/instance/Group.d.ts +2 -0
- package/dist/instance/InputControl.d.ts +2 -0
- package/dist/instance/PrimaryInstance.d.ts +2 -0
- package/dist/instance/Root.d.ts +2 -0
- package/dist/instance/UploadControl.d.ts +2 -0
- package/dist/instance/abstract/InstanceNode.d.ts +5 -2
- package/dist/instance/abstract/ValueNode.d.ts +2 -0
- package/dist/instance/attachments/buildAttributes.d.ts +7 -0
- package/dist/instance/internal-api/AttributeContext.d.ts +35 -0
- package/dist/instance/internal-api/InstanceConfig.d.ts +2 -0
- package/dist/instance/internal-api/InstanceValueContext.d.ts +6 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableAttributeNode.d.ts +15 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableParentNode.d.ts +2 -0
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.d.ts +2 -2
- package/dist/instance/internal-api/serialization/ClientReactiveSerializableValueNode.d.ts +4 -0
- package/dist/instance/repeat/BaseRepeatRange.d.ts +5 -0
- package/dist/instance/repeat/RepeatInstance.d.ts +2 -2
- package/dist/integration/xpath/adapter/XFormsXPathNode.d.ts +2 -2
- package/dist/lib/client-reactivity/instance-state/createAttributeNodeInstanceState.d.ts +3 -0
- package/dist/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.d.ts +0 -3
- package/dist/lib/codecs/items/SingleValueItemCodec.d.ts +1 -1
- package/dist/lib/names/NamespaceDeclarationMap.d.ts +1 -1
- package/dist/lib/reactivity/createAttributeState.d.ts +16 -0
- package/dist/lib/reactivity/createInstanceValueState.d.ts +4 -1
- package/dist/lib/reactivity/node-state/createSharedNodeState.d.ts +2 -2
- package/dist/lib/xml-serialization.d.ts +5 -9
- package/dist/parse/XFormDOM.d.ts +4 -1
- package/dist/parse/expression/ActionComputationExpression.d.ts +4 -0
- package/dist/parse/model/ActionDefinition.d.ts +15 -0
- package/dist/parse/model/AttributeDefinition.d.ts +24 -0
- package/dist/parse/model/{RootAttributeMap.d.ts → AttributeDefinitionMap.d.ts} +4 -10
- package/dist/parse/model/BindPreloadDefinition.d.ts +6 -10
- package/dist/parse/model/Event.d.ts +8 -0
- package/dist/parse/model/GroupDefinition.d.ts +4 -1
- package/dist/parse/model/LeafNodeDefinition.d.ts +5 -1
- package/dist/parse/model/ModelActionMap.d.ts +9 -0
- package/dist/parse/model/ModelDefinition.d.ts +8 -1
- package/dist/parse/model/NodeDefinition.d.ts +8 -3
- 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 +4 -1
- package/dist/parse/model/RootDefinition.d.ts +3 -2
- package/dist/solid.js +730 -294
- package/dist/solid.js.map +1 -1
- package/package.json +21 -17
- package/src/client/AttributeNode.ts +59 -0
- package/src/client/BaseNode.ts +6 -0
- package/src/client/form/FormInstanceConfig.ts +17 -0
- package/src/client/index.ts +1 -0
- package/src/client/node-types.ts +1 -0
- package/src/client/validation.ts +9 -1
- package/src/entrypoints/FormInstance.ts +1 -0
- package/src/instance/Attribute.ts +164 -0
- package/src/instance/Group.ts +7 -0
- package/src/instance/InputControl.ts +8 -0
- package/src/instance/ModelValue.ts +7 -0
- package/src/instance/Note.ts +6 -0
- package/src/instance/PrimaryInstance.ts +7 -0
- package/src/instance/RangeControl.ts +6 -0
- package/src/instance/RankControl.ts +7 -0
- package/src/instance/Root.ts +7 -0
- package/src/instance/SelectControl.ts +6 -0
- package/src/instance/TriggerControl.ts +6 -0
- package/src/instance/UploadControl.ts +5 -0
- package/src/instance/abstract/DescendantNode.ts +0 -1
- package/src/instance/abstract/InstanceNode.ts +4 -1
- package/src/instance/abstract/ValueNode.ts +2 -0
- package/src/instance/attachments/buildAttributes.ts +15 -0
- package/src/instance/children/normalizeChildInitOptions.ts +1 -1
- package/src/instance/internal-api/AttributeContext.ts +40 -0
- package/src/instance/internal-api/InstanceConfig.ts +6 -1
- package/src/instance/internal-api/InstanceValueContext.ts +6 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableAttributeNode.ts +18 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableParentNode.ts +2 -0
- package/src/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts +2 -3
- package/src/instance/internal-api/serialization/ClientReactiveSerializableValueNode.ts +4 -0
- package/src/instance/repeat/BaseRepeatRange.ts +14 -0
- package/src/instance/repeat/RepeatInstance.ts +5 -5
- package/src/integration/xpath/adapter/XFormsXPathNode.ts +3 -1
- package/src/lib/client-reactivity/instance-state/createAttributeNodeInstanceState.ts +16 -0
- package/src/lib/client-reactivity/instance-state/createParentNodeInstanceState.ts +5 -5
- package/src/lib/client-reactivity/instance-state/createRootInstanceState.ts +6 -9
- package/src/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.ts +5 -15
- package/src/lib/client-reactivity/instance-state/createValueNodeInstanceState.ts +2 -1
- package/src/lib/client-reactivity/instance-state/prepareInstancePayload.ts +1 -0
- package/src/lib/codecs/NoteCodec.ts +1 -1
- package/src/lib/codecs/items/SingleValueItemCodec.ts +1 -3
- package/src/lib/names/NamespaceDeclarationMap.ts +1 -1
- package/src/lib/reactivity/createAttributeState.ts +51 -0
- package/src/lib/reactivity/createInstanceValueState.ts +152 -53
- package/src/lib/reactivity/node-state/createSharedNodeState.ts +2 -2
- package/src/lib/xml-serialization.ts +38 -34
- package/src/parse/XFormDOM.ts +9 -0
- package/src/parse/body/GroupElementDefinition.ts +1 -1
- package/src/parse/body/control/InputControlDefinition.ts +1 -1
- package/src/parse/expression/ActionComputationExpression.ts +12 -0
- package/src/parse/model/ActionDefinition.ts +70 -0
- package/src/parse/model/AttributeDefinition.ts +59 -0
- package/src/parse/model/{RootAttributeMap.ts → AttributeDefinitionMap.ts} +7 -13
- package/src/parse/model/BindDefinition.ts +1 -6
- package/src/parse/model/BindPreloadDefinition.ts +44 -12
- package/src/parse/model/Event.ts +9 -0
- package/src/parse/model/GroupDefinition.ts +6 -0
- package/src/parse/model/LeafNodeDefinition.ts +5 -0
- package/src/parse/model/ModelActionMap.ts +37 -0
- package/src/parse/model/ModelDefinition.ts +18 -3
- package/src/parse/model/NodeDefinition.ts +11 -3
- package/src/parse/model/NoteNodeDefinition.ts +5 -2
- package/src/parse/model/RangeNodeDefinition.ts +5 -2
- package/src/parse/model/RepeatDefinition.ts +8 -1
- package/src/parse/model/RootDefinition.ts +27 -9
- package/src/parse/model/nodeDefinitionMap.ts +1 -1
- package/dist/error/TemplatedNodeAttributeSerializationError.d.ts +0 -22
- package/dist/parse/model/RootAttributeDefinition.d.ts +0 -21
- package/src/error/TemplatedNodeAttributeSerializationError.ts +0 -24
- package/src/parse/model/RootAttributeDefinition.ts +0 -44
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { XPathNodeKindKey } from '@getodk/xpath';
|
|
2
|
+
import { Accessor } from 'solid-js';
|
|
3
|
+
import { AttributeNode } from '../client/AttributeNode.ts';
|
|
4
|
+
import { ActiveLanguage, InstanceState, NullValidationState } from '../client/index.ts';
|
|
5
|
+
import { XFormsXPathAttribute } from '../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
6
|
+
import { EngineXPathEvaluator } from '../integration/xpath/EngineXPathEvaluator.ts';
|
|
7
|
+
import { StaticAttribute } from '../integration/xpath/static-dom/StaticAttribute.ts';
|
|
8
|
+
import { RuntimeInputValue, RuntimeValue } from '../lib/codecs/getSharedValueCodec.ts';
|
|
9
|
+
import { RuntimeValueSetter, RuntimeValueState } from '../lib/codecs/ValueCodec.ts';
|
|
10
|
+
import { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts';
|
|
11
|
+
import { EngineState } from '../lib/reactivity/node-state/createEngineState.ts';
|
|
12
|
+
import { SharedNodeState } from '../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
13
|
+
import { ReactiveScope } from '../lib/reactivity/scope.ts';
|
|
14
|
+
import { SimpleAtomicState } from '../lib/reactivity/types.ts';
|
|
15
|
+
import { AttributeDefinition } from '../parse/model/AttributeDefinition.ts';
|
|
16
|
+
import { AnyChildNode, AnyNode } from './hierarchy.ts';
|
|
17
|
+
import { AttributeContext } from './internal-api/AttributeContext.ts';
|
|
18
|
+
import { InstanceConfig } from './internal-api/InstanceConfig.ts';
|
|
19
|
+
import { DecodeInstanceValue } from './internal-api/InstanceValueContext.ts';
|
|
20
|
+
import { ClientReactiveSerializableAttributeNode } from './internal-api/serialization/ClientReactiveSerializableAttributeNode.ts';
|
|
21
|
+
import { PrimaryInstance } from './PrimaryInstance.ts';
|
|
22
|
+
import { Root } from './Root.ts';
|
|
23
|
+
export interface AttributeStateSpec {
|
|
24
|
+
readonly value: SimpleAtomicState<string>;
|
|
25
|
+
readonly instanceValue: Accessor<string>;
|
|
26
|
+
readonly relevant: Accessor<boolean>;
|
|
27
|
+
}
|
|
28
|
+
export declare class Attribute implements AttributeNode, ClientReactiveSerializableAttributeNode, AttributeContext, XFormsXPathAttribute {
|
|
29
|
+
readonly owner: AnyNode;
|
|
30
|
+
readonly definition: AttributeDefinition;
|
|
31
|
+
readonly instanceNode: StaticAttribute;
|
|
32
|
+
readonly [XPathNodeKindKey] = "attribute";
|
|
33
|
+
protected readonly state: SharedNodeState<AttributeStateSpec>;
|
|
34
|
+
protected readonly engineState: EngineState<AttributeStateSpec>;
|
|
35
|
+
readonly validationState: NullValidationState;
|
|
36
|
+
readonly nodeType = "attribute";
|
|
37
|
+
readonly currentState: CurrentState<AttributeStateSpec>;
|
|
38
|
+
readonly instanceState: InstanceState;
|
|
39
|
+
readonly appearances: null;
|
|
40
|
+
readonly nodeOptions: null;
|
|
41
|
+
readonly valueType: string;
|
|
42
|
+
readonly decodeInstanceValue: DecodeInstanceValue;
|
|
43
|
+
protected readonly getInstanceValue: Accessor<string>;
|
|
44
|
+
protected readonly valueState: RuntimeValueState<RuntimeValue<'string'>>;
|
|
45
|
+
protected readonly setValueState: RuntimeValueSetter<RuntimeInputValue<'string'>>;
|
|
46
|
+
readonly evaluator: EngineXPathEvaluator;
|
|
47
|
+
readonly getActiveLanguage: Accessor<ActiveLanguage>;
|
|
48
|
+
readonly contextNode: AnyNode;
|
|
49
|
+
readonly scope: ReactiveScope;
|
|
50
|
+
readonly rootDocument: PrimaryInstance;
|
|
51
|
+
readonly instanceConfig: InstanceConfig;
|
|
52
|
+
readonly root: Root;
|
|
53
|
+
readonly isRelevant: Accessor<boolean>;
|
|
54
|
+
readonly isAttached: Accessor<boolean>;
|
|
55
|
+
readonly isReadonly: Accessor<boolean>;
|
|
56
|
+
readonly hasReadonlyAncestor: Accessor<boolean>;
|
|
57
|
+
readonly hasNonRelevantAncestor: Accessor<boolean>;
|
|
58
|
+
readonly contextReference: () => string;
|
|
59
|
+
constructor(owner: AnyNode, definition: AttributeDefinition, instanceNode: StaticAttribute);
|
|
60
|
+
setValue(value: string): Root;
|
|
61
|
+
getChildren(): readonly [];
|
|
62
|
+
getXPathChildNodes(): readonly AnyChildNode[];
|
|
63
|
+
getXPathValue(): string;
|
|
64
|
+
}
|
package/dist/instance/Group.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts
|
|
|
12
12
|
import { EngineState } from '../lib/reactivity/node-state/createEngineState.ts';
|
|
13
13
|
import { SharedNodeState } from '../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
14
14
|
import { DescendantNodeSharedStateSpec, DescendantNode } from './abstract/DescendantNode.ts';
|
|
15
|
+
import { Attribute } from './Attribute.ts';
|
|
15
16
|
import { GeneralChildNode, GeneralParentNode } from './hierarchy.ts';
|
|
16
17
|
import { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
17
18
|
import { ClientReactiveSerializableParentNode } from './internal-api/serialization/ClientReactiveSerializableParentNode.ts';
|
|
@@ -19,6 +20,7 @@ interface GroupStateSpec extends DescendantNodeSharedStateSpec {
|
|
|
19
20
|
readonly label: Accessor<TextRange<'label'> | null>;
|
|
20
21
|
readonly hint: null;
|
|
21
22
|
readonly children: Accessor<readonly FormNodeID[]>;
|
|
23
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
22
24
|
readonly valueOptions: null;
|
|
23
25
|
readonly value: null;
|
|
24
26
|
}
|
|
@@ -10,6 +10,7 @@ import { CurrentState } from '../lib/reactivity/node-state/createCurrentState.ts
|
|
|
10
10
|
import { EngineState } from '../lib/reactivity/node-state/createEngineState.ts';
|
|
11
11
|
import { SharedNodeState } from '../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
12
12
|
import { ValueNode, ValueNodeStateSpec } from './abstract/ValueNode.ts';
|
|
13
|
+
import { Attribute } from './Attribute.ts';
|
|
13
14
|
import { GeneralParentNode } from './hierarchy.ts';
|
|
14
15
|
import { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
15
16
|
import { ClientReactiveSerializableValueNode } from './internal-api/serialization/ClientReactiveSerializableValueNode.ts';
|
|
@@ -21,6 +22,7 @@ export type AnyInputDefinition = {
|
|
|
21
22
|
interface InputControlStateSpec<V extends ValueType> extends ValueNodeStateSpec<RuntimeValue<V>> {
|
|
22
23
|
readonly label: Accessor<TextRange<'label'> | null>;
|
|
23
24
|
readonly hint: Accessor<TextRange<'hint'> | null>;
|
|
25
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
24
26
|
readonly valueOptions: null;
|
|
25
27
|
}
|
|
26
28
|
export declare class InputControl<V extends ValueType = ValueType> extends ValueNode<V, InputDefinition<V>, RuntimeValue<V>, RuntimeInputValue<V>> implements InputNode<V>, XFormsXPathElement, EvaluationContext, ValidationContext, ClientReactiveSerializableValueNode {
|
|
@@ -21,6 +21,7 @@ import { RootDefinition } from '../parse/model/RootDefinition.ts';
|
|
|
21
21
|
import { SecondaryInstancesDefinition } from '../parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts';
|
|
22
22
|
import { InstanceNode } from './abstract/InstanceNode.ts';
|
|
23
23
|
import { InstanceAttachmentsState } from './attachments/InstanceAttachmentsState.ts';
|
|
24
|
+
import { Attribute } from './Attribute.ts';
|
|
24
25
|
import { InitialInstanceState } from './input/InitialInstanceState.ts';
|
|
25
26
|
import { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
26
27
|
import { InstanceConfig } from './internal-api/InstanceConfig.ts';
|
|
@@ -36,6 +37,7 @@ interface PrimaryInstanceStateSpec {
|
|
|
36
37
|
readonly label: null;
|
|
37
38
|
readonly hint: null;
|
|
38
39
|
readonly children: Accessor<readonly FormNodeID[]>;
|
|
40
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
39
41
|
readonly valueOptions: null;
|
|
40
42
|
readonly value: null;
|
|
41
43
|
readonly activeLanguage: Accessor<ActiveLanguage>;
|
package/dist/instance/Root.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ import { SharedNodeState } from '../lib/reactivity/node-state/createSharedNodeSt
|
|
|
15
15
|
import { BodyClassList } from '../parse/body/BodyDefinition.ts';
|
|
16
16
|
import { RootDefinition } from '../parse/model/RootDefinition.ts';
|
|
17
17
|
import { DescendantNode } from './abstract/DescendantNode.ts';
|
|
18
|
+
import { Attribute } from './Attribute.ts';
|
|
18
19
|
import { GeneralChildNode } from './hierarchy.ts';
|
|
19
20
|
import { EvaluationContext } from './internal-api/EvaluationContext.ts';
|
|
20
21
|
import { ClientReactiveSerializableParentNode } from './internal-api/serialization/ClientReactiveSerializableParentNode.ts';
|
|
@@ -28,6 +29,7 @@ interface RootStateSpec {
|
|
|
28
29
|
readonly label: null;
|
|
29
30
|
readonly hint: null;
|
|
30
31
|
readonly children: Accessor<readonly FormNodeID[]>;
|
|
32
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
31
33
|
readonly valueOptions: null;
|
|
32
34
|
readonly value: null;
|
|
33
35
|
readonly activeLanguage: Accessor<ActiveLanguage>;
|
|
@@ -12,6 +12,7 @@ import { EngineState } from '../lib/reactivity/node-state/createEngineState.ts';
|
|
|
12
12
|
import { SharedNodeState } from '../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
13
13
|
import { SimpleAtomicState } from '../lib/reactivity/types.ts';
|
|
14
14
|
import { UnknownAppearanceDefinition } from '../parse/body/appearance/unknownAppearanceParser.ts';
|
|
15
|
+
import { Attribute } from './Attribute.ts';
|
|
15
16
|
import { Root } from './Root.ts';
|
|
16
17
|
import { DescendantNodeStateSpec, DescendantNode } from './abstract/DescendantNode.ts';
|
|
17
18
|
import { InstanceAttachmentRuntimeValue } from './attachments/InstanceAttachment.ts';
|
|
@@ -28,6 +29,7 @@ interface UploadControlStateSpec extends DescendantNodeStateSpec<InstanceAttachm
|
|
|
28
29
|
readonly label: Accessor<TextRange<'label'> | null>;
|
|
29
30
|
readonly hint: Accessor<TextRange<'hint'> | null>;
|
|
30
31
|
readonly children: null;
|
|
32
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
31
33
|
readonly valueOptions: null;
|
|
32
34
|
readonly value: SimpleAtomicState<InstanceAttachmentRuntimeValue>;
|
|
33
35
|
readonly instanceValue: Accessor<InstanceAttachmentFileName>;
|
|
@@ -10,6 +10,7 @@ import { ActiveLanguage, TextRange } from '../../index.ts';
|
|
|
10
10
|
import { EngineXPathEvaluator } from '../../integration/xpath/EngineXPathEvaluator.ts';
|
|
11
11
|
import { XFormsXPathPrimaryInstanceNode, XFormsXPathPrimaryInstanceNodeKind } from '../../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
12
12
|
import { PrimaryInstanceXPathNode } from '../../integration/xpath/adapter/kind.ts';
|
|
13
|
+
import { StaticAttribute } from '../../integration/xpath/static-dom/StaticAttribute.ts';
|
|
13
14
|
import { StaticDocument } from '../../integration/xpath/static-dom/StaticDocument.ts';
|
|
14
15
|
import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
|
|
15
16
|
import { CurrentState } from '../../lib/reactivity/node-state/createCurrentState.ts';
|
|
@@ -18,6 +19,7 @@ import { SharedNodeState } from '../../lib/reactivity/node-state/createSharedNod
|
|
|
18
19
|
import { ReactiveScope } from '../../lib/reactivity/scope.ts';
|
|
19
20
|
import { SimpleAtomicState } from '../../lib/reactivity/types.ts';
|
|
20
21
|
import { AnyNodeDefinition } from '../../parse/model/NodeDefinition.ts';
|
|
22
|
+
import { Attribute } from '../Attribute.ts';
|
|
21
23
|
import { PrimaryInstance } from '../PrimaryInstance.ts';
|
|
22
24
|
import { Root } from '../Root.ts';
|
|
23
25
|
import { AnyChildNode, AnyParentNode } from '../hierarchy.ts';
|
|
@@ -36,6 +38,7 @@ export interface InstanceNodeStateSpec<Value = never> {
|
|
|
36
38
|
readonly label: Accessor<TextRange<'label'> | null> | null;
|
|
37
39
|
readonly hint: Accessor<TextRange<'hint'> | null> | null;
|
|
38
40
|
readonly children: Accessor<readonly FormNodeID[]> | null;
|
|
41
|
+
readonly attributes: Accessor<readonly Attribute[]> | null;
|
|
39
42
|
readonly valueOptions: InstanceNodeValueOptionsStateSpec;
|
|
40
43
|
readonly value: Signal<Value> | SimpleAtomicState<Value> | null;
|
|
41
44
|
}
|
|
@@ -59,7 +62,7 @@ export interface InstanceNodeOptions {
|
|
|
59
62
|
export declare abstract class InstanceNode<Definition extends AnyNodeDefinition, Spec extends InstanceNodeStateSpec<any>, Parent extends AnyParentNode | null, Child extends AnyChildNode | null = null> implements BaseEngineNode, XFormsXPathPrimaryInstanceNode, EvaluationContext {
|
|
60
63
|
readonly instanceConfig: InstanceConfig;
|
|
61
64
|
readonly parent: Parent;
|
|
62
|
-
readonly instanceNode: StaticDocument | StaticElement | null;
|
|
65
|
+
readonly instanceNode: StaticAttribute | StaticDocument | StaticElement | null;
|
|
63
66
|
readonly definition: Definition;
|
|
64
67
|
protected abstract readonly state: SharedNodeState<Spec>;
|
|
65
68
|
protected abstract readonly engineState: EngineState<Spec>;
|
|
@@ -106,7 +109,7 @@ export declare abstract class InstanceNode<Definition extends AnyNodeDefinition,
|
|
|
106
109
|
* constrain) their more specific `this` type.
|
|
107
110
|
*/
|
|
108
111
|
readonly contextNode: PrimaryInstanceXPathNode;
|
|
109
|
-
constructor(instanceConfig: InstanceConfig, parent: Parent, instanceNode: StaticDocument | StaticElement | null, definition: Definition, options?: InstanceNodeOptions);
|
|
112
|
+
constructor(instanceConfig: InstanceConfig, parent: Parent, instanceNode: StaticAttribute | StaticDocument | StaticElement | null, definition: Definition, options?: InstanceNodeOptions);
|
|
110
113
|
/** @package */
|
|
111
114
|
isPrimaryInstance(): this is PrimaryInstance;
|
|
112
115
|
/** @package */
|
|
@@ -14,6 +14,7 @@ import { SharedNodeState } from '../../lib/reactivity/node-state/createSharedNod
|
|
|
14
14
|
import { SimpleAtomicState } from '../../lib/reactivity/types.ts';
|
|
15
15
|
import { SharedValidationState } from '../../lib/reactivity/validation/createValidation.ts';
|
|
16
16
|
import { LeafNodeDefinition } from '../../parse/model/LeafNodeDefinition.ts';
|
|
17
|
+
import { Attribute } from '../Attribute.ts';
|
|
17
18
|
import { GeneralParentNode } from '../hierarchy.ts';
|
|
18
19
|
import { EvaluationContext } from '../internal-api/EvaluationContext.ts';
|
|
19
20
|
import { DecodeInstanceValue, InstanceValueContext } from '../internal-api/InstanceValueContext.ts';
|
|
@@ -23,6 +24,7 @@ import { DescendantNodeStateSpec, DescendantNode } from './DescendantNode.ts';
|
|
|
23
24
|
export type ValueNodeDefinition<V extends ValueType> = LeafNodeDefinition<V>;
|
|
24
25
|
export interface ValueNodeStateSpec<RuntimeValue> extends DescendantNodeStateSpec<RuntimeValue> {
|
|
25
26
|
readonly children: null;
|
|
27
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
26
28
|
readonly value: SimpleAtomicState<RuntimeValue>;
|
|
27
29
|
readonly instanceValue: Accessor<string>;
|
|
28
30
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Attribute } from '../Attribute';
|
|
2
|
+
import { AnyNode } from '../hierarchy.ts';
|
|
3
|
+
import { InputControl } from '../InputControl.ts';
|
|
4
|
+
import { ModelValue } from '../ModelValue.ts';
|
|
5
|
+
import { Note } from '../Note.ts';
|
|
6
|
+
import { RangeControl } from '../RangeControl.ts';
|
|
7
|
+
export declare function buildAttributes(owner: AnyNode | InputControl<any> | ModelValue<any> | Note<any> | RangeControl<any>): Attribute[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { FormInstanceInitializationMode } from '../../client/index.ts';
|
|
3
|
+
import { StaticAttribute } from '../../integration/xpath/static-dom/StaticAttribute.ts';
|
|
4
|
+
import { ReactiveScope } from '../../lib/reactivity/scope.ts';
|
|
5
|
+
import { BindComputationExpression } from '../../parse/expression/BindComputationExpression.ts';
|
|
6
|
+
import { AnyBindPreloadDefinition } from '../../parse/model/BindPreloadDefinition.ts';
|
|
7
|
+
import { ModelDefinition } from '../../parse/model/ModelDefinition.ts';
|
|
8
|
+
import { EvaluationContext } from './EvaluationContext.ts';
|
|
9
|
+
import { InstanceConfig } from './InstanceConfig.ts';
|
|
10
|
+
export interface InstanceAttributeContextDocument {
|
|
11
|
+
readonly initializationMode: FormInstanceInitializationMode;
|
|
12
|
+
readonly isAttached: Accessor<boolean>;
|
|
13
|
+
}
|
|
14
|
+
export type DecodeInstanceValue = (value: string) => string;
|
|
15
|
+
interface InstanceAttributeContextDefinitionBind {
|
|
16
|
+
readonly preload: AnyBindPreloadDefinition | null;
|
|
17
|
+
readonly calculate: BindComputationExpression<'calculate'> | null;
|
|
18
|
+
readonly readonly: BindComputationExpression<'readonly'>;
|
|
19
|
+
}
|
|
20
|
+
export interface InstanceAttributeContextDefinition {
|
|
21
|
+
readonly bind: InstanceAttributeContextDefinitionBind;
|
|
22
|
+
readonly template: StaticAttribute;
|
|
23
|
+
readonly model: ModelDefinition;
|
|
24
|
+
}
|
|
25
|
+
export interface AttributeContext extends EvaluationContext {
|
|
26
|
+
readonly scope: ReactiveScope;
|
|
27
|
+
readonly rootDocument: InstanceAttributeContextDocument;
|
|
28
|
+
readonly definition: InstanceAttributeContextDefinition;
|
|
29
|
+
readonly instanceNode: StaticAttribute;
|
|
30
|
+
readonly instanceConfig: InstanceConfig;
|
|
31
|
+
readonly decodeInstanceValue: DecodeInstanceValue;
|
|
32
|
+
isReadonly(): boolean;
|
|
33
|
+
isRelevant(): boolean;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InstanceAttachmentFileNameFactory } from '../../client/attachments/InstanceAttachmentsConfig.ts';
|
|
2
|
+
import { PreloadProperties } from '../../client/form/FormInstanceConfig.ts';
|
|
2
3
|
import { OpaqueReactiveObjectFactory } from '../../client/OpaqueReactiveObjectFactory.ts';
|
|
3
4
|
export interface InstanceConfig {
|
|
4
5
|
/**
|
|
@@ -6,4 +7,5 @@ export interface InstanceConfig {
|
|
|
6
7
|
*/
|
|
7
8
|
readonly clientStateFactory: OpaqueReactiveObjectFactory;
|
|
8
9
|
readonly computeAttachmentName: InstanceAttachmentFileNameFactory;
|
|
10
|
+
readonly preloadProperties: PreloadProperties;
|
|
9
11
|
}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
1
2
|
import { FormInstanceInitializationMode } from '../../client/index.ts';
|
|
2
3
|
import { StaticLeafElement } from '../../integration/xpath/static-dom/StaticElement.ts';
|
|
3
4
|
import { ReactiveScope } from '../../lib/reactivity/scope.ts';
|
|
4
5
|
import { BindComputationExpression } from '../../parse/expression/BindComputationExpression.ts';
|
|
5
6
|
import { AnyBindPreloadDefinition } from '../../parse/model/BindPreloadDefinition.ts';
|
|
7
|
+
import { ModelDefinition } from '../../parse/model/ModelDefinition.ts';
|
|
6
8
|
import { EvaluationContext } from './EvaluationContext.ts';
|
|
9
|
+
import { InstanceConfig } from './InstanceConfig.ts';
|
|
7
10
|
export interface InstanceValueContextDocument {
|
|
8
11
|
readonly initializationMode: FormInstanceInitializationMode;
|
|
12
|
+
readonly isAttached: Accessor<boolean>;
|
|
9
13
|
}
|
|
10
14
|
export type DecodeInstanceValue = (value: string) => string;
|
|
11
15
|
interface InstanceValueContextDefinitionBind {
|
|
@@ -16,12 +20,14 @@ interface InstanceValueContextDefinitionBind {
|
|
|
16
20
|
export interface InstanceValueContextDefinition {
|
|
17
21
|
readonly bind: InstanceValueContextDefinitionBind;
|
|
18
22
|
readonly template: StaticLeafElement;
|
|
23
|
+
readonly model: ModelDefinition;
|
|
19
24
|
}
|
|
20
25
|
export interface InstanceValueContext extends EvaluationContext {
|
|
21
26
|
readonly scope: ReactiveScope;
|
|
22
27
|
readonly rootDocument: InstanceValueContextDocument;
|
|
23
28
|
readonly definition: InstanceValueContextDefinition;
|
|
24
29
|
readonly instanceNode: StaticLeafElement | null;
|
|
30
|
+
readonly instanceConfig: InstanceConfig;
|
|
25
31
|
readonly decodeInstanceValue: DecodeInstanceValue;
|
|
26
32
|
isReadonly(): boolean;
|
|
27
33
|
isRelevant(): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InstanceState } from '../../../client/serialization/InstanceState.ts';
|
|
2
|
+
import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
|
|
3
|
+
export type SerializedInstanceValue = string;
|
|
4
|
+
interface ClientReactiveSerializableAttributeNodeCurrentState {
|
|
5
|
+
get instanceValue(): SerializedInstanceValue;
|
|
6
|
+
}
|
|
7
|
+
interface ClientReactiveSerializableAttributeNodeDefinition {
|
|
8
|
+
readonly qualifiedName: QualifiedName;
|
|
9
|
+
}
|
|
10
|
+
export interface ClientReactiveSerializableAttributeNode {
|
|
11
|
+
readonly definition: ClientReactiveSerializableAttributeNodeDefinition;
|
|
12
|
+
readonly currentState: ClientReactiveSerializableAttributeNodeCurrentState;
|
|
13
|
+
readonly instanceState: InstanceState;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { InstanceState } from '../../../client/serialization/InstanceState.ts';
|
|
2
2
|
import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
|
|
3
|
+
import { Attribute } from '../../Attribute.ts';
|
|
3
4
|
export interface ClientReactiveSerializableChildNode {
|
|
4
5
|
readonly instanceState: InstanceState;
|
|
5
6
|
}
|
|
6
7
|
export interface ClientReactiveSerializableParentNodeCurrentState<Child extends ClientReactiveSerializableChildNode> {
|
|
7
8
|
get relevant(): boolean;
|
|
8
9
|
get children(): readonly Child[];
|
|
10
|
+
get attributes(): readonly Attribute[];
|
|
9
11
|
}
|
|
10
12
|
export interface ClientReactiveSerializableParentNodeDefinition {
|
|
11
13
|
readonly qualifiedName: QualifiedName;
|
package/dist/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { StaticElement } from '../../../integration/xpath/static-dom/StaticElement.ts';
|
|
2
|
+
import { Attribute } from '../../Attribute.ts';
|
|
2
3
|
import { GeneralChildNode } from '../../hierarchy.ts';
|
|
3
4
|
import { ClientReactiveSerializableParentNode, ClientReactiveSerializableParentNodeCurrentState, ClientReactiveSerializableParentNodeDefinition } from './ClientReactiveSerializableParentNode.ts';
|
|
4
5
|
export interface ClientReactiveSerializableTemplatedNodeCurrentState extends ClientReactiveSerializableParentNodeCurrentState<GeneralChildNode> {
|
|
5
|
-
|
|
6
|
-
get attributes(): unknown;
|
|
6
|
+
get attributes(): readonly Attribute[];
|
|
7
7
|
}
|
|
8
8
|
export interface ClientReactiveSerializableTemplatedNodeDefinition extends ClientReactiveSerializableParentNodeDefinition {
|
|
9
9
|
readonly template: StaticElement;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { InstanceState } from '../../../client/serialization/InstanceState.ts';
|
|
2
2
|
import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
|
|
3
|
+
import { BindDefinition } from '../../../parse/model/BindDefinition.ts';
|
|
4
|
+
import { Attribute } from '../../Attribute.ts';
|
|
3
5
|
import { ClientReactiveSerializableChildNode, ClientReactiveSerializableParentNode } from './ClientReactiveSerializableParentNode.ts';
|
|
4
6
|
export type SerializedInstanceValue = string;
|
|
5
7
|
interface ClientReactiveSerializableValueNodeCurrentState {
|
|
@@ -8,9 +10,11 @@ interface ClientReactiveSerializableValueNodeCurrentState {
|
|
|
8
10
|
* @todo Consider moving into {@link InstanceState}
|
|
9
11
|
*/
|
|
10
12
|
get instanceValue(): SerializedInstanceValue;
|
|
13
|
+
get attributes(): readonly Attribute[];
|
|
11
14
|
}
|
|
12
15
|
interface ClientReactiveSerializableValueNodeDefinition {
|
|
13
16
|
readonly qualifiedName: QualifiedName;
|
|
17
|
+
readonly bind: BindDefinition;
|
|
14
18
|
}
|
|
15
19
|
export interface ClientReactiveSerializableValueNode {
|
|
16
20
|
readonly definition: ClientReactiveSerializableValueNodeDefinition;
|
|
@@ -9,6 +9,7 @@ import { TextRange } from '../../client/TextRange.ts';
|
|
|
9
9
|
import { AncestorNodeValidationState } from '../../client/validation.ts';
|
|
10
10
|
import { XFormsXPathNodeRange, XFormsXPathNodeRangeKind } from '../../integration/xpath/adapter/XFormsXPathNode.ts';
|
|
11
11
|
import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
|
|
12
|
+
import { AttributeState } from '../../lib/reactivity/createAttributeState.ts';
|
|
12
13
|
import { ChildrenState } from '../../lib/reactivity/createChildrenState.ts';
|
|
13
14
|
import { MaterializedChildren } from '../../lib/reactivity/materializeCurrentStateChildren.ts';
|
|
14
15
|
import { CurrentState } from '../../lib/reactivity/node-state/createCurrentState.ts';
|
|
@@ -16,6 +17,7 @@ import { EngineState } from '../../lib/reactivity/node-state/createEngineState.t
|
|
|
16
17
|
import { SharedNodeState } from '../../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
17
18
|
import { ControlledRepeatDefinition } from '../../parse/model/RepeatDefinition.ts';
|
|
18
19
|
import { DescendantNodeSharedStateSpec, DescendantNode } from '../abstract/DescendantNode.ts';
|
|
20
|
+
import { Attribute } from '../Attribute.ts';
|
|
19
21
|
import { GeneralParentNode } from '../hierarchy.ts';
|
|
20
22
|
import { EvaluationContext } from '../internal-api/EvaluationContext.ts';
|
|
21
23
|
import { ClientReactiveSerializableParentNode } from '../internal-api/serialization/ClientReactiveSerializableParentNode.ts';
|
|
@@ -24,12 +26,14 @@ interface RepeatRangeStateSpec extends DescendantNodeSharedStateSpec {
|
|
|
24
26
|
readonly hint: null;
|
|
25
27
|
readonly label: Accessor<TextRange<'label'> | null>;
|
|
26
28
|
readonly children: Accessor<readonly FormNodeID[]>;
|
|
29
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
27
30
|
readonly valueOptions: null;
|
|
28
31
|
readonly value: null;
|
|
29
32
|
}
|
|
30
33
|
type BaseRepeatRangeNodeType<Definition extends AnyRepeatDefinition> = Definition extends ControlledRepeatDefinition ? 'repeat-range:controlled' : 'repeat-range:uncontrolled';
|
|
31
34
|
export declare abstract class BaseRepeatRange<Definition extends AnyRepeatDefinition> extends DescendantNode<Definition, RepeatRangeStateSpec, GeneralParentNode, RepeatInstance> implements BaseRepeatRangeNode, XFormsXPathNodeRange, EvaluationContext, ClientReactiveSerializableParentNode<RepeatInstance> {
|
|
32
35
|
protected readonly childrenState: ChildrenState<RepeatInstance>;
|
|
36
|
+
protected readonly attributeState: AttributeState;
|
|
33
37
|
/**
|
|
34
38
|
* A repeat range doesn't have a corresponding primary instance element of its
|
|
35
39
|
* own. It is represented in the following ways:
|
|
@@ -114,5 +118,6 @@ export declare abstract class BaseRepeatRange<Definition extends AnyRepeatDefini
|
|
|
114
118
|
protected addChildren(afterIndex: number, instanceNodes: readonly StaticElement[]): readonly RepeatInstance[];
|
|
115
119
|
protected removeChildren(startIndex: number, count: number): readonly RepeatInstance[];
|
|
116
120
|
getChildren(): readonly RepeatInstance[];
|
|
121
|
+
getAttributes(): readonly Attribute[];
|
|
117
122
|
}
|
|
118
123
|
export {};
|
|
@@ -12,14 +12,14 @@ import { CurrentState } from '../../lib/reactivity/node-state/createCurrentState
|
|
|
12
12
|
import { EngineState } from '../../lib/reactivity/node-state/createEngineState.ts';
|
|
13
13
|
import { SharedNodeState } from '../../lib/reactivity/node-state/createSharedNodeState.ts';
|
|
14
14
|
import { DescendantNodeSharedStateSpec, DescendantNode } from '../abstract/DescendantNode.ts';
|
|
15
|
+
import { Attribute } from '../Attribute.ts';
|
|
15
16
|
import { GeneralChildNode, RepeatRange } from '../hierarchy.ts';
|
|
16
17
|
import { EvaluationContext } from '../internal-api/EvaluationContext.ts';
|
|
17
18
|
import { ClientReactiveSerializableTemplatedNode } from '../internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts';
|
|
18
19
|
interface RepeatInstanceStateSpec extends DescendantNodeSharedStateSpec {
|
|
19
20
|
readonly label: Accessor<TextRange<'label'> | null>;
|
|
20
21
|
readonly hint: null;
|
|
21
|
-
|
|
22
|
-
readonly attributes: null;
|
|
22
|
+
readonly attributes: Accessor<readonly Attribute[]>;
|
|
23
23
|
readonly children: Accessor<readonly FormNodeID[]>;
|
|
24
24
|
readonly valueOptions: null;
|
|
25
25
|
readonly value: null;
|
|
@@ -56,11 +56,11 @@ export type XPathNamedNodeKind = XPathElementKind | XPathAttributeKind;
|
|
|
56
56
|
export interface XFormsXPathNamedNode extends XFormsXPathNode {
|
|
57
57
|
readonly [XPathNodeKindKey]: XPathNamedNodeKind;
|
|
58
58
|
}
|
|
59
|
-
export type XFormsXPathDescendantNodeKind = XFormsXPathNodeRangeKind | XPathElementKind | XPathTextKind | XPathCommentKind;
|
|
59
|
+
export type XFormsXPathDescendantNodeKind = XFormsXPathNodeRangeKind | XPathElementKind | XPathTextKind | XPathCommentKind | XPathAttributeKind;
|
|
60
60
|
export interface XFormsXPathDescendantNode extends XFormsXPathNode {
|
|
61
61
|
readonly [XPathNodeKindKey]: XFormsXPathDescendantNodeKind;
|
|
62
62
|
}
|
|
63
|
-
export type XFormsXPathPrimaryInstanceNodeKind = XPathDocumentKind | XFormsXPathNodeRangeKind | XPathElementKind | XPathTextKind;
|
|
63
|
+
export type XFormsXPathPrimaryInstanceNodeKind = XPathDocumentKind | XFormsXPathNodeRangeKind | XPathElementKind | XPathAttributeKind | XPathTextKind;
|
|
64
64
|
export interface XFormsXPathPrimaryInstanceNode extends XFormsXPathNode {
|
|
65
65
|
readonly [XPathNodeKindKey]: XFormsXPathPrimaryInstanceNodeKind;
|
|
66
66
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InstanceState } from '../../../client/serialization/InstanceState.ts';
|
|
2
|
+
import { ClientReactiveSerializableAttributeNode } from '../../../instance/internal-api/serialization/ClientReactiveSerializableAttributeNode.ts';
|
|
3
|
+
export declare const createAttributeNodeInstanceState: (node: ClientReactiveSerializableAttributeNode) => InstanceState;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import { InstanceState } from '../../../client/serialization/InstanceState.ts';
|
|
2
2
|
import { ClientReactiveSerializableTemplatedNode } from '../../../instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts';
|
|
3
|
-
/**
|
|
4
|
-
* @see {@link TemplatedNodeAttributeSerializationError}
|
|
5
|
-
*/
|
|
6
3
|
export declare const createTemplatedNodeInstanceState: (node: ClientReactiveSerializableTemplatedNode) => InstanceState;
|
|
@@ -4,7 +4,7 @@ export type SingleValueSelectRuntimeValues = readonly [] | readonly [string];
|
|
|
4
4
|
/**
|
|
5
5
|
* @see {@link encodeValueFactory}
|
|
6
6
|
*/
|
|
7
|
-
type SingleValueSelectCodecValues =
|
|
7
|
+
type SingleValueSelectCodecValues = readonly string[];
|
|
8
8
|
/**
|
|
9
9
|
* Value codec implementation for `<select1>` controls.
|
|
10
10
|
*
|
|
@@ -7,7 +7,7 @@ type NamedNodeDefinitionMap = ReadonlyMap<QualifiedName, NamedNodeDefinition>;
|
|
|
7
7
|
export interface NamedSubtreeDefinition extends NamedNodeDefinition {
|
|
8
8
|
readonly namespaceDeclarations: NamespaceDeclarationMap;
|
|
9
9
|
readonly parent: NamedSubtreeDefinition | null;
|
|
10
|
-
readonly attributes
|
|
10
|
+
readonly attributes: NamedNodeDefinitionMap | null;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* @todo This is a bit of a code style experiment! Responsive to
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Accessor, Setter, Signal } from 'solid-js';
|
|
2
|
+
import { Attribute } from '../../instance/Attribute.ts';
|
|
3
|
+
import { ReactiveScope } from './scope.ts';
|
|
4
|
+
export interface AttributeState {
|
|
5
|
+
readonly attributes: Signal<readonly Attribute[]>;
|
|
6
|
+
readonly getAttributes: Accessor<readonly Attribute[]>;
|
|
7
|
+
readonly setAttributes: Setter<readonly Attribute[]>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates attributes state suitable for all node types
|
|
11
|
+
*
|
|
12
|
+
* The produced {@link AttributeState.attributes} (and its get/set convenience
|
|
13
|
+
* methods) signal is intended to be used to store the engine's attribute state,
|
|
14
|
+
* and update that state when appropriate.
|
|
15
|
+
*/
|
|
16
|
+
export declare const createAttributeState: (scope: ReactiveScope) => AttributeState;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { AttributeContext } from '../../instance/internal-api/AttributeContext.ts';
|
|
1
2
|
import { InstanceValueContext } from '../../instance/internal-api/InstanceValueContext.ts';
|
|
2
3
|
import { SimpleAtomicState } from './types.ts';
|
|
4
|
+
type ValueContext = AttributeContext | InstanceValueContext;
|
|
3
5
|
export type InstanceValueState = SimpleAtomicState<string>;
|
|
4
6
|
/**
|
|
5
7
|
* Provides a consistent interface for value nodes of any type which:
|
|
@@ -12,4 +14,5 @@ export type InstanceValueState = SimpleAtomicState<string>;
|
|
|
12
14
|
* nodes defined with one
|
|
13
15
|
* - prevents downstream writes to nodes in a readonly state
|
|
14
16
|
*/
|
|
15
|
-
export declare const createInstanceValueState: (context:
|
|
17
|
+
export declare const createInstanceValueState: (context: ValueContext) => InstanceValueState;
|
|
18
|
+
export {};
|
|
@@ -5,8 +5,8 @@ import { CurrentState } from './createCurrentState.ts';
|
|
|
5
5
|
import { EngineState } from './createEngineState.ts';
|
|
6
6
|
import { MutablePropertySpec, SpecifiedState, StateSpec } from './createSpecifiedState.ts';
|
|
7
7
|
type MutableKeyOf<Spec extends StateSpec> = {
|
|
8
|
-
[K in
|
|
9
|
-
}[
|
|
8
|
+
[K in Extract<keyof Spec, string>]: Spec[K] extends MutablePropertySpec<any> ? K : never;
|
|
9
|
+
}[Extract<keyof Spec, string>];
|
|
10
10
|
type SetEnginePropertyState<Spec extends StateSpec> = <K extends MutableKeyOf<Spec>>(key: K, newValue: SpecifiedState<Spec>[K]) => SpecifiedState<Spec>[K];
|
|
11
11
|
export interface SharedNodeState<Spec extends StateSpec> {
|
|
12
12
|
readonly spec: Spec;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { GeneralChildNode } from '../client/hierarchy.ts';
|
|
2
|
+
import { Attribute } from '../instance/Attribute.ts';
|
|
1
3
|
import { NamespaceDeclarationMap } from './names/NamespaceDeclarationMap.ts';
|
|
2
4
|
import { QualifiedName } from './names/QualifiedName.ts';
|
|
3
5
|
declare const ESCAPED_XML_TEXT_BRAND: unique symbol;
|
|
@@ -38,13 +40,7 @@ export type EscapedXMLText = string & {
|
|
|
38
40
|
* reconsider this assumption.
|
|
39
41
|
*/
|
|
40
42
|
export declare const escapeXMLText: <Text extends string>(text: Exclude<Text, EscapedXMLText>, attr?: boolean) => EscapedXMLText;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
interface ElementXMLSerializationOptions {
|
|
45
|
-
readonly namespaceDeclarations?: NamespaceDeclarationMap;
|
|
46
|
-
readonly attributes?: readonly SerializableElementAttribute[];
|
|
47
|
-
}
|
|
48
|
-
export declare const serializeParentElementXML: (qualifiedName: QualifiedName, serializedChildren: readonly string[], options?: ElementXMLSerializationOptions) => string;
|
|
49
|
-
export declare const serializeLeafElementXML: (qualifiedName: QualifiedName, xmlValue: EscapedXMLText, options?: ElementXMLSerializationOptions) => string;
|
|
43
|
+
export declare const serializeAttributeXML: (qualifiedName: QualifiedName, xmlValue: EscapedXMLText) => string;
|
|
44
|
+
export declare const serializeParentElementXML: (qualifiedName: QualifiedName, children: readonly GeneralChildNode[], attributes: readonly Attribute[], namespaceDeclarations?: NamespaceDeclarationMap) => string;
|
|
45
|
+
export declare const serializeLeafElementXML: (qualifiedName: QualifiedName, xmlValue: EscapedXMLText, attributes: readonly Attribute[], namespaceDeclarations?: NamespaceDeclarationMap) => string;
|
|
50
46
|
export {};
|
package/dist/parse/XFormDOM.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { KnownAttributeLocalNamedElement } from '../../../common/types/dom.ts';
|
|
2
2
|
interface DOMBindElement extends KnownAttributeLocalNamedElement<'bind', 'nodeset'> {
|
|
3
3
|
}
|
|
4
|
+
interface DOMSetValueElement extends KnownAttributeLocalNamedElement<'setvalue', 'event'> {
|
|
5
|
+
}
|
|
4
6
|
export interface DOMItextTranslationElement extends KnownAttributeLocalNamedElement<'translation', 'lang'> {
|
|
5
7
|
}
|
|
6
8
|
export interface DOMSecondaryInstanceElement extends KnownAttributeLocalNamedElement<'instance', 'id'> {
|
|
@@ -23,13 +25,14 @@ export declare class XFormDOM {
|
|
|
23
25
|
readonly title: Element;
|
|
24
26
|
readonly model: Element;
|
|
25
27
|
readonly binds: readonly DOMBindElement[];
|
|
28
|
+
readonly setValues: readonly DOMSetValueElement[];
|
|
26
29
|
readonly primaryInstance: Element;
|
|
27
30
|
readonly primaryInstanceRoot: Element;
|
|
28
31
|
readonly itextTranslationElements: readonly DOMItextTranslationElement[];
|
|
29
32
|
readonly secondaryInstanceElements: readonly DOMSecondaryInstanceElement[];
|
|
30
33
|
readonly body: Element;
|
|
31
34
|
protected constructor(sourceXML: string, options: XFormDOMOptions);
|
|
32
|
-
toJSON(): Omit<this, "head" | "html" | "title" | "toJSON" | "
|
|
35
|
+
toJSON(): Omit<this, "head" | "html" | "title" | "toJSON" | "primaryInstance" | "model" | "primaryInstanceRoot" | "xformDocument"> & {
|
|
33
36
|
xformDocument: string;
|
|
34
37
|
html: string;
|
|
35
38
|
head: string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DependentExpression, DependentExpressionResultType } from './abstract/DependentExpression.ts';
|
|
2
|
+
export declare class ActionComputationExpression<Type extends DependentExpressionResultType> extends DependentExpression<Type> {
|
|
3
|
+
constructor(resultType: Type, expression: string);
|
|
4
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ActionComputationExpression } from '../expression/ActionComputationExpression.ts';
|
|
2
|
+
import { XFormEvent } from './Event.ts';
|
|
3
|
+
import { ModelDefinition } from './ModelDefinition.ts';
|
|
4
|
+
export declare class ActionDefinition {
|
|
5
|
+
readonly element: Element;
|
|
6
|
+
static getRef(model: ModelDefinition, setValueElement: Element): string | null;
|
|
7
|
+
static getValue(element: Element): string;
|
|
8
|
+
static isKnownEvent: (event: XFormEvent) => event is XFormEvent;
|
|
9
|
+
static getEvents(element: Element): XFormEvent[];
|
|
10
|
+
readonly ref: string;
|
|
11
|
+
readonly events: XFormEvent[];
|
|
12
|
+
readonly computation: ActionComputationExpression<'string'>;
|
|
13
|
+
readonly source: string | undefined;
|
|
14
|
+
constructor(model: ModelDefinition, element: Element, source?: string);
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StaticAttribute } from '../../integration/xpath/static-dom/StaticAttribute.ts';
|
|
2
|
+
import { NamespaceDeclarationMap, NamedNodeDefinition } from '../../lib/names/NamespaceDeclarationMap.ts';
|
|
3
|
+
import { QualifiedName } from '../../lib/names/QualifiedName.ts';
|
|
4
|
+
import { BindDefinition } from './BindDefinition.ts';
|
|
5
|
+
import { ModelDefinition } from './ModelDefinition.ts';
|
|
6
|
+
import { NodeDefinition } from './NodeDefinition.ts';
|
|
7
|
+
import { RootDefinition } from './RootDefinition.ts';
|
|
8
|
+
export declare class AttributeDefinition extends NodeDefinition<'attribute'> implements NamedNodeDefinition {
|
|
9
|
+
readonly model: ModelDefinition;
|
|
10
|
+
readonly template: StaticAttribute;
|
|
11
|
+
private readonly serializedXML;
|
|
12
|
+
readonly value: string;
|
|
13
|
+
readonly type = "attribute";
|
|
14
|
+
readonly namespaceDeclarations: NamespaceDeclarationMap;
|
|
15
|
+
readonly bodyElement: null;
|
|
16
|
+
readonly root: RootDefinition;
|
|
17
|
+
readonly isTranslated: boolean;
|
|
18
|
+
readonly parent: null;
|
|
19
|
+
readonly children: null;
|
|
20
|
+
readonly attributes: null;
|
|
21
|
+
readonly qualifiedName: QualifiedName;
|
|
22
|
+
constructor(model: ModelDefinition, bind: BindDefinition, template: StaticAttribute);
|
|
23
|
+
serializeAttributeXML(): string;
|
|
24
|
+
}
|