@plaudit/gutenberg-api-extensions 2.43.2 → 2.44.1
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/build/blocks/MoveError.d.ts +10 -0
- package/build/blocks/MoveError.js +6 -0
- package/build/blocks/MoveError.js.map +1 -0
- package/build/blocks/PathError.d.ts +12 -0
- package/build/blocks/PathError.js +18 -0
- package/build/blocks/PathError.js.map +1 -0
- package/build/blocks/{snp-group-component.d.ts → SNPGroupComponent.d.ts} +6 -7
- package/build/blocks/SNPGroupComponent.js +6 -0
- package/build/blocks/SNPGroupComponent.js.map +1 -0
- package/build/blocks/SNPListComponent.d.ts +8 -0
- package/build/blocks/SNPListComponent.js +15 -0
- package/build/blocks/SNPListComponent.js.map +1 -0
- package/build/blocks/SNPTreeContext.d.ts +10 -0
- package/build/blocks/SNPTreeContext.js +15 -0
- package/build/blocks/SNPTreeContext.js.map +1 -0
- package/build/blocks/common-native-property-constructors.d.ts +14 -8
- package/build/blocks/common-native-property-constructors.js +128 -92
- package/build/blocks/common-native-property-constructors.js.map +1 -1
- package/build/blocks/conditions.d.ts +21 -0
- package/build/blocks/conditions.js +155 -0
- package/build/blocks/conditions.js.map +1 -0
- package/build/blocks/data-controller-manager.d.ts +8 -0
- package/build/blocks/data-controller-manager.js +38 -0
- package/build/blocks/data-controller-manager.js.map +1 -0
- package/build/blocks/data-controller.d.ts +62 -0
- package/build/blocks/data-controller.js +641 -0
- package/build/blocks/data-controller.js.map +1 -0
- package/build/blocks/full-size-toggle-control.d.ts +3 -3
- package/build/blocks/full-size-toggle-control.js +35 -32
- package/build/blocks/full-size-toggle-control.js.map +1 -1
- package/build/blocks/layered-styles-api.d.ts +3 -3
- package/build/blocks/layered-styles-api.js +2 -1
- package/build/blocks/layered-styles-api.js.map +1 -1
- package/build/blocks/layered-styles-impl.js +2 -4
- package/build/blocks/layered-styles-impl.js.map +1 -1
- package/build/blocks/layout/LaidOutProperty.d.ts +6 -0
- package/build/blocks/layout/LaidOutProperty.js +28 -0
- package/build/blocks/layout/LaidOutProperty.js.map +1 -0
- package/build/blocks/layout/LaidOutPropertyRow.d.ts +6 -0
- package/build/blocks/layout/LaidOutPropertyRow.js +12 -0
- package/build/blocks/layout/LaidOutPropertyRow.js.map +1 -0
- package/build/blocks/layout/NodeContext.d.ts +44 -0
- package/build/blocks/layout/NodeContext.js +37 -0
- package/build/blocks/layout/NodeContext.js.map +1 -0
- package/build/blocks/layout/PanelRoot.d.ts +5 -0
- package/build/blocks/layout/PanelRoot.js +23 -0
- package/build/blocks/layout/PanelRoot.js.map +1 -0
- package/build/blocks/layout/TabsRoot.d.ts +7 -0
- package/build/blocks/layout/TabsRoot.js +45 -0
- package/build/blocks/layout/TabsRoot.js.map +1 -0
- package/build/blocks/simple-block.js +6 -10
- package/build/blocks/simple-block.js.map +1 -1
- package/build/blocks/simple-native-property-api.d.ts +63 -28
- package/build/blocks/simple-native-property-api.js +9 -2
- package/build/blocks/simple-native-property-api.js.map +1 -1
- package/build/blocks/simple-native-property-impl.d.ts +0 -6
- package/build/blocks/simple-native-property-impl.js +121 -189
- package/build/blocks/simple-native-property-impl.js.map +1 -1
- package/build/blocks/simple-native-property-internal-shared.d.ts +30 -0
- package/build/blocks/simple-native-property-internal-shared.js +22 -0
- package/build/blocks/simple-native-property-internal-shared.js.map +1 -0
- package/build/blocks/snp-data-store.d.ts +8 -9
- package/build/blocks/snp-data-store.js +56 -31
- package/build/blocks/snp-data-store.js.map +1 -1
- package/build/controls/AsynchronousFormTokenField.d.ts +3 -3
- package/build/controls/AsynchronousFormTokenField.js +4 -18
- package/build/controls/AsynchronousFormTokenField.js.map +1 -1
- package/build/controls/ExtendedPostPicker.d.ts +3 -3
- package/build/controls/ExtendedPostPicker.js +4 -3
- package/build/controls/ExtendedPostPicker.js.map +1 -1
- package/build/controls/ExtendedRadioControl.d.ts +3 -3
- package/build/controls/ExtendedRadioControl.js +3 -11
- package/build/controls/ExtendedRadioControl.js.map +1 -1
- package/build/controls/ImageControl.d.ts +4 -2
- package/build/controls/ImageControl.js +16 -23
- package/build/controls/ImageControl.js.map +1 -1
- package/build/controls/InspectorPanel.d.ts +2 -2
- package/build/controls/InspectorPanel.js +4 -6
- package/build/controls/InspectorPanel.js.map +1 -1
- package/build/controls/LazySuggestionsComboboxControl.d.ts +1 -2
- package/build/controls/LazySuggestionsComboboxControl.js +3 -9
- package/build/controls/LazySuggestionsComboboxControl.js.map +1 -1
- package/build/controls/MultiSelectControl.d.ts +3 -3
- package/build/controls/MultiSelectControl.js +2 -2
- package/build/controls/MultiSelectControl.js.map +1 -1
- package/build/controls/PickOne.d.ts +5 -5
- package/build/controls/PickOne.js +7 -8
- package/build/controls/PickOne.js.map +1 -1
- package/build/controls/PromisableComponent.d.ts +1 -1
- package/build/controls/PromisableComponent.js +3 -3
- package/build/controls/PromisableComponent.js.map +1 -1
- package/build/controls/ProperLinkControl.d.ts +3 -3
- package/build/controls/ProperLinkControl.js +6 -9
- package/build/controls/ProperLinkControl.js.map +1 -1
- package/build/controls/SimpleToggle.d.ts +1 -2
- package/build/controls/SimpleToggle.js +2 -2
- package/build/controls/SimpleToggle.js.map +1 -1
- package/build/controls/SortableItemsControl.d.ts +7 -4
- package/build/controls/SortableItemsControl.js +12 -24
- package/build/controls/SortableItemsControl.js.map +1 -1
- package/build/controls/hooks/useTokenManager.js.map +1 -1
- package/build/editor/post-featured-image.js +29 -31
- package/build/editor/post-featured-image.js.map +1 -1
- package/build/lib/plaudit-icons/column-1.d.ts +1 -2
- package/build/lib/plaudit-icons/column-1.js +2 -3
- package/build/lib/plaudit-icons/column-1.js.map +1 -1
- package/build/lib/plaudit-icons/column-2.d.ts +1 -2
- package/build/lib/plaudit-icons/column-2.js +2 -3
- package/build/lib/plaudit-icons/column-2.js.map +1 -1
- package/build/lib/plaudit-icons/column-3.d.ts +1 -2
- package/build/lib/plaudit-icons/column-3.js +2 -3
- package/build/lib/plaudit-icons/column-3.js.map +1 -1
- package/build/lib/plaudit-icons/placement-center.d.ts +1 -2
- package/build/lib/plaudit-icons/placement-center.js +2 -3
- package/build/lib/plaudit-icons/placement-center.js.map +1 -1
- package/build/lib/plaudit-icons/placement-end.d.ts +1 -2
- package/build/lib/plaudit-icons/placement-end.js +2 -3
- package/build/lib/plaudit-icons/placement-end.js.map +1 -1
- package/build/lib/plaudit-icons/placement-start.d.ts +1 -2
- package/build/lib/plaudit-icons/placement-start.js +2 -3
- package/build/lib/plaudit-icons/placement-start.js.map +1 -1
- package/build/lib/plaudit-icons/placement-stretch.d.ts +1 -2
- package/build/lib/plaudit-icons/placement-stretch.js +2 -3
- package/build/lib/plaudit-icons/placement-stretch.js.map +1 -1
- package/build/lib/plaudit-icons/plaudit-icon.d.ts +1 -2
- package/build/lib/plaudit-icons/plaudit-icon.js +2 -3
- package/build/lib/plaudit-icons/plaudit-icon.js.map +1 -1
- package/build/lib/plaudit-icons/reusable-block-marker.d.ts +1 -2
- package/build/lib/plaudit-icons/reusable-block-marker.js +2 -3
- package/build/lib/plaudit-icons/reusable-block-marker.js.map +1 -1
- package/package.json +6 -2
- package/styles/editor.pcss +47 -0
- package/build/blocks/base-data-store.d.ts +0 -19
- package/build/blocks/base-data-store.js +0 -151
- package/build/blocks/base-data-store.js.map +0 -1
- package/build/blocks/data-store-list-holder.d.ts +0 -10
- package/build/blocks/data-store-list-holder.js +0 -55
- package/build/blocks/data-store-list-holder.js.map +0 -1
- package/build/blocks/object-data-store.d.ts +0 -15
- package/build/blocks/object-data-store.js +0 -41
- package/build/blocks/object-data-store.js.map +0 -1
- package/build/blocks/snp-group-component.js +0 -17
- package/build/blocks/snp-group-component.js.map +0 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { select } from "@wordpress/data";
|
|
2
|
+
export function isCombinerCondition(condition) {
|
|
3
|
+
return condition.op === "and" || condition.op === "or" || condition.op === "not" || condition.op === "nand" || condition.op === "nor";
|
|
4
|
+
}
|
|
5
|
+
export function testCondition(condition, propertyValueResolver) {
|
|
6
|
+
if (condition === undefined) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (Array.isArray(condition)) {
|
|
10
|
+
return condition.length === 0 || testConditionStruct(condition, propertyValueResolver, "or");
|
|
11
|
+
}
|
|
12
|
+
return condition(propertyValueResolver);
|
|
13
|
+
}
|
|
14
|
+
function performConditionTest(condition, propertyValueResolver) {
|
|
15
|
+
if (isCombinerCondition(condition)) {
|
|
16
|
+
return testConditionStruct(condition.conditions, propertyValueResolver, condition.op);
|
|
17
|
+
}
|
|
18
|
+
const attrValue = propertyValueResolver(condition.property.split("."));
|
|
19
|
+
if (!('value' in condition)) { // We negate this in order to ensure that unchecked values in the switch will throw a compile-time error
|
|
20
|
+
return condition.op === "empty" ? !attrValue : !!attrValue;
|
|
21
|
+
}
|
|
22
|
+
switch (condition.op) {
|
|
23
|
+
case "==":
|
|
24
|
+
return attrValue == condition.value;
|
|
25
|
+
case "!=":
|
|
26
|
+
return attrValue != condition.value;
|
|
27
|
+
case ">":
|
|
28
|
+
return attrValue > condition.value;
|
|
29
|
+
case "<":
|
|
30
|
+
return attrValue < condition.value;
|
|
31
|
+
case ">=":
|
|
32
|
+
return attrValue >= condition.value;
|
|
33
|
+
case "<=":
|
|
34
|
+
return attrValue <= condition.value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function testConditionStruct(conditions, propertyValueResolver, combiner = "and") {
|
|
38
|
+
switch (combiner) {
|
|
39
|
+
case "and":
|
|
40
|
+
for (const condition of conditions) {
|
|
41
|
+
if (!(Array.isArray(condition) ? testConditionStruct(conditions, propertyValueResolver, "and") : performConditionTest(condition, propertyValueResolver))) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
case "or":
|
|
47
|
+
for (const condition of conditions) {
|
|
48
|
+
if ((Array.isArray(condition) ? testConditionStruct(conditions, propertyValueResolver, "and") : performConditionTest(condition, propertyValueResolver))) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
case "not":
|
|
54
|
+
case "nand":
|
|
55
|
+
for (const condition of conditions) {
|
|
56
|
+
if (!(Array.isArray(condition) ? testConditionStruct(conditions, propertyValueResolver, "and") : performConditionTest(condition, propertyValueResolver))) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
case "nor":
|
|
62
|
+
for (const condition of conditions) {
|
|
63
|
+
if ((Array.isArray(condition) ? testConditionStruct(conditions, propertyValueResolver, "and") : performConditionTest(condition, propertyValueResolver))) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function resolveValueForCondition(propertyPath, contextPath, blockClientId, getDataStore) {
|
|
71
|
+
const actualPath = resolveActualPathToValueForCondition(propertyPath, contextPath);
|
|
72
|
+
if (actualPath === undefined) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const dataStore = getDataStore(actualPath[0]);
|
|
76
|
+
return walkToNodeWithLogging(dataStore ? dataStore.getValue(actualPath[0]) : select("core/block-editor").getBlockAttributes(blockClientId)?.[actualPath[0]], actualPath);
|
|
77
|
+
}
|
|
78
|
+
function resolveActualPathToValueForCondition(propertyPath, contextPath) {
|
|
79
|
+
if (propertyPath.length === 0) {
|
|
80
|
+
return undefined; //TODO: Log an error
|
|
81
|
+
}
|
|
82
|
+
let actualPath = [...contextPath];
|
|
83
|
+
let sawRoot = false;
|
|
84
|
+
let encounteredParents = 0;
|
|
85
|
+
let relativePath = [];
|
|
86
|
+
for (let i = 0, nodeName; i < propertyPath.length; i++) {
|
|
87
|
+
nodeName = propertyPath[i];
|
|
88
|
+
if (nodeName === '@root') {
|
|
89
|
+
if (i > 0) {
|
|
90
|
+
console.error("Encountered an improperly-placed '@root' name. '@root' must the first name in the path.", "It will be skipped.", `Preceding Part: ${relativePath.join(".")}`);
|
|
91
|
+
}
|
|
92
|
+
sawRoot = true;
|
|
93
|
+
actualPath = [];
|
|
94
|
+
}
|
|
95
|
+
else if (nodeName === '@parent') {
|
|
96
|
+
if (sawRoot) {
|
|
97
|
+
console.error("Encountered a '@parent' name after encountering a '@root' name.", "It will be skipped.", `Preceding Part: ${relativePath.join(".")}`);
|
|
98
|
+
}
|
|
99
|
+
else if (relativePath.length > 0) {
|
|
100
|
+
console.error("Encountered a '@parent' name after the first non-special name.", "It will be skipped.", `Preceding Part: ${relativePath.join(".")}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
if (encounteredParents === actualPath.length - 1) { // The -1 is because we already remove the last node
|
|
104
|
+
console.error("Encountered a '@parent' name that would attempt to resolve the parent of the root.", "It will be skipped.", `Preceding Part: ${relativePath.join(".")}`);
|
|
105
|
+
}
|
|
106
|
+
encounteredParents++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (nodeName !== undefined) {
|
|
110
|
+
relativePath.push(nodeName);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (encounteredParents >= actualPath.length - 1) {
|
|
114
|
+
actualPath = [];
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
actualPath = actualPath.slice(0, actualPath.length - encounteredParents - 1);
|
|
118
|
+
}
|
|
119
|
+
actualPath.push(...relativePath);
|
|
120
|
+
if (actualPath.length === 0 || typeof actualPath[0] !== 'string') {
|
|
121
|
+
console.error("Encountered an invalid path-resolution pair (context:", contextPath.join("."), ", property: ", propertyPath.join("."), ")");
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
return actualPath;
|
|
125
|
+
}
|
|
126
|
+
function walkToNodeWithLogging(value, propertyPath) {
|
|
127
|
+
for (let i = 1; i < propertyPath.length; i++) {
|
|
128
|
+
if (value === null || value === undefined) {
|
|
129
|
+
console.warn(`Encountered a ${value === null ? 'null' : 'undefined'} value while attempting to resolve a child value.`, `The property value will be treated as ${value === null ? 'null' : 'undefined'}`, `Property: ${propertyPath.join(".")}`, `Remainder: ${propertyPath.slice(i).join(".")}`);
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
else if (typeof value !== 'object') {
|
|
133
|
+
console.error("Encountered a scalar value while attempting to resolve a child value.", "The scalar value will be used as the property value", `Property: ${propertyPath.join(".")}`, `Remainder: ${propertyPath.slice(i).join(".")}`);
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const name = propertyPath[i];
|
|
138
|
+
if (Array.isArray(value)) {
|
|
139
|
+
if (typeof name !== 'number') {
|
|
140
|
+
console.error("Encountered an array while attempting to resolve a named value.", "The array will be used as the property value", `Property: ${propertyPath.join(".")}`, `Remainder: ${propertyPath.slice(i).join(".")}`);
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
if (typeof name !== 'string') {
|
|
146
|
+
console.error("Encountered an object while attempting to resolve an index value.", "The object will be used as the property value", `Property: ${propertyPath.join(".")}`, `Remainder: ${propertyPath.slice(i).join(".")}`);
|
|
147
|
+
return value;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
value = value[name];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=conditions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/blocks/conditions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DataController } from "./simple-native-property-api";
|
|
2
|
+
export type DataControllerManager = {
|
|
3
|
+
addDataController(blockClientId: string, dataController: DataController): void;
|
|
4
|
+
getDataController(blockClientId: string): DataController;
|
|
5
|
+
removeDataController(blockClientId: string): void;
|
|
6
|
+
notifyOfValidationErrorStatusChange(blockClientId: string, hasValidationError: boolean): void;
|
|
7
|
+
};
|
|
8
|
+
export declare function useDataControllerManager(): DataControllerManager;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export function useDataControllerManager() {
|
|
2
|
+
// The add and remove methods for dataControllers don't sync up the style information. This is done deliberately to cut down on the number of CSS updates that we create.
|
|
3
|
+
return {
|
|
4
|
+
dataControllers: {},
|
|
5
|
+
addDataController(blockClientId, dataController) {
|
|
6
|
+
this.dataControllers[blockClientId] = { dataController, hasValidationError: false };
|
|
7
|
+
},
|
|
8
|
+
getDataController(blockClientId) {
|
|
9
|
+
return this.dataControllers[blockClientId]?.dataController;
|
|
10
|
+
},
|
|
11
|
+
removeDataController(blockClientId) {
|
|
12
|
+
delete this.dataControllers[blockClientId];
|
|
13
|
+
},
|
|
14
|
+
notifyOfValidationErrorStatusChange(blockClientId, hasValidationError) {
|
|
15
|
+
if (this.dataControllers[blockClientId] && this.dataControllers[blockClientId].hasValidationError !== hasValidationError) {
|
|
16
|
+
this.dataControllers[blockClientId].hasValidationError = hasValidationError;
|
|
17
|
+
this.writeStyleInformation();
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
async writeStyleInformation() {
|
|
21
|
+
if (this.styleSheetQueue === undefined) {
|
|
22
|
+
this.styleSheetQueue = new Promise(resolve => {
|
|
23
|
+
const styleSheet = new CSSStyleSheet();
|
|
24
|
+
document.adoptedStyleSheets.push(styleSheet);
|
|
25
|
+
resolve(styleSheet);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
this.styleSheetQueue = this.styleSheetQueue.then(styleSheet => {
|
|
29
|
+
const blockMarkers = Object.entries(this.dataControllers)
|
|
30
|
+
.filter(([_, { hasValidationError }]) => hasValidationError).map(([blockClientId]) => blockClientId)
|
|
31
|
+
.map(blockClientId => `[data-block="${blockClientId}"]`)
|
|
32
|
+
.join(", ");
|
|
33
|
+
return styleSheet.replace(`.block-editor-list-view-tree tbody tr:is(${blockMarkers}) {background: var(--plaudit-gae-validation-error-bg) !important;}`);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data-controller-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-controller-manager.js","sourceRoot":"","sources":["../../src/blocks/data-controller-manager.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,wBAAwB;IACvC,yKAAyK;IACzK,OAAO;QACN,eAAe,EAAE,EAAE;QACnB,iBAAiB,CAAC,aAAa,EAAE,cAAc;YAC9C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAC,cAAc,EAAE,kBAAkB,EAAE,KAAK,EAAC,CAAC;QACnF,CAAC;QACD,iBAAiB,CAAC,aAAa;YAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC;QAC5D,CAAC;QACD,oBAAoB,CAAC,aAAa;YACjC,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC;QACD,mCAAmC,CAAC,aAAa,EAAE,kBAAkB;YACpE,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;gBAC1H,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;gBAC5E,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC9B,CAAC;QACF,CAAC;QACD,KAAK,CAAC,qBAAqB;YAC1B,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC5C,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;oBACvC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7C,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;qBACvD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,kBAAkB,EAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;qBACjG,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,aAAa,IAAI,CAAC;qBACvD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,OAAO,UAAU,CAAC,OAAO,CAAC,4CAA4C,YAAY,oEAAoE,CAAC,CAAC;YACzJ,CAAC,CAAC,CAAC;QACJ,CAAC;KACiC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type Condition } from "./conditions";
|
|
2
|
+
import type { DataController, DataStore, HydratedSimpleNativeProperty, NodePath, RawPath } from "./simple-native-property-api";
|
|
3
|
+
import type { HydratedLaidOutProperties } from "./simple-native-property-internal-shared";
|
|
4
|
+
type DescendantsWrapper = {
|
|
5
|
+
[key: string]: DCNode;
|
|
6
|
+
} | DCNode[];
|
|
7
|
+
export type DCNode = {
|
|
8
|
+
backup?: any;
|
|
9
|
+
rendered?: boolean;
|
|
10
|
+
condition?: Condition;
|
|
11
|
+
children?: DescendantsWrapper;
|
|
12
|
+
definition?: HydratedSimpleNativeProperty;
|
|
13
|
+
validationError?: string;
|
|
14
|
+
};
|
|
15
|
+
export type DCStoreState = {
|
|
16
|
+
treeRoot: DCNode & {
|
|
17
|
+
children: {
|
|
18
|
+
[key: string]: DCNode;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
dataStores: {
|
|
22
|
+
byProperty: {
|
|
23
|
+
[key: string]: DataStore;
|
|
24
|
+
};
|
|
25
|
+
list: DataStore[];
|
|
26
|
+
};
|
|
27
|
+
blockClientId: string;
|
|
28
|
+
};
|
|
29
|
+
type GlobalDCAction<T extends string, P extends {
|
|
30
|
+
[key: Exclude<string, 'type' | 'inBatch'>]: any;
|
|
31
|
+
} = {}> = {
|
|
32
|
+
type: T;
|
|
33
|
+
inBatch?: boolean;
|
|
34
|
+
} & P;
|
|
35
|
+
type DCAction<T extends string, P extends {
|
|
36
|
+
[key: Exclude<string, 'type' | 'path' | 'inBatch'>]: any;
|
|
37
|
+
} = {}> = {
|
|
38
|
+
type: T;
|
|
39
|
+
path: NodePath;
|
|
40
|
+
inBatch?: boolean;
|
|
41
|
+
} & P;
|
|
42
|
+
export type DataControllerActions = DCAction<"writeValue", {
|
|
43
|
+
value?: any;
|
|
44
|
+
}> | DCAction<"validateNode"> | GlobalDCAction<"validateNodes"> | GlobalDCAction<"checkConditions"> | DCAction<"addNode", {
|
|
45
|
+
value?: any;
|
|
46
|
+
}> | DCAction<"removeNode"> | DCAction<"moveNode", {
|
|
47
|
+
from: number;
|
|
48
|
+
to: number;
|
|
49
|
+
} | {
|
|
50
|
+
from: string;
|
|
51
|
+
to: string;
|
|
52
|
+
}> | GlobalDCAction<"addProperties", {
|
|
53
|
+
properties: HydratedLaidOutProperties;
|
|
54
|
+
dataStore: DataStore;
|
|
55
|
+
}>;
|
|
56
|
+
export declare function useDataController(blockClientId: string): DataController;
|
|
57
|
+
/**
|
|
58
|
+
* @param dsValue a value from a {@link DataStore}
|
|
59
|
+
* @param path this is expected to be the entire path (including the node that was used to get {@link dsValue}
|
|
60
|
+
*/
|
|
61
|
+
export declare function walkToNodeInValue(dsValue: any, path: RawPath): any;
|
|
62
|
+
export {};
|