@plaudit/gutenberg-api-extensions 2.62.0 → 2.64.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/build/blocks/SNPGroupComponent.js +13 -2
- package/build/blocks/SNPGroupComponent.js.map +1 -1
- package/build/blocks/basic-custom-block-bindings-support.d.ts +1 -10
- package/build/blocks/basic-custom-block-bindings-support.js +8 -12
- package/build/blocks/basic-custom-block-bindings-support.js.map +1 -1
- package/build/blocks/common-native-property-constructors.d.ts +17 -6
- package/build/blocks/common-native-property-constructors.js +128 -29
- package/build/blocks/common-native-property-constructors.js.map +1 -1
- package/build/blocks/data-controller.d.ts +1 -1
- package/build/blocks/data-controller.js +4 -1
- package/build/blocks/data-controller.js.map +1 -1
- package/build/blocks/layered-styles-impl.js +6 -5
- package/build/blocks/layered-styles-impl.js.map +1 -1
- package/build/blocks/layout/LaidOutProperty.d.ts +1 -0
- package/build/blocks/layout/LaidOutProperty.js +16 -5
- package/build/blocks/layout/LaidOutProperty.js.map +1 -1
- package/build/blocks/layout/LaidOutPropertyRow.d.ts +2 -1
- package/build/blocks/layout/LaidOutPropertyRow.js +3 -3
- package/build/blocks/layout/LaidOutPropertyRow.js.map +1 -1
- package/build/blocks/layout/ToolsPanelContext.d.ts +9 -0
- package/build/blocks/layout/ToolsPanelContext.js +18 -0
- package/build/blocks/layout/ToolsPanelContext.js.map +1 -0
- package/build/blocks/simple-native-property-api.js +4 -40
- package/build/blocks/simple-native-property-api.js.map +1 -1
- package/build/blocks/simple-native-property-impl.js +33 -133
- package/build/blocks/simple-native-property-impl.js.map +1 -1
- package/build/blocks/simple-native-property-internal-shared.d.ts +12 -17
- package/build/blocks/simple-native-property-internal-shared.js +0 -18
- package/build/blocks/simple-native-property-internal-shared.js.map +1 -1
- package/build/controls/PromisableComponent.d.ts +3 -6
- package/build/controls/PromisableComponent.js +17 -39
- package/build/controls/PromisableComponent.js.map +1 -1
- package/build/controls/hooks/useSortableItemsModel.js +59 -56
- package/build/controls/hooks/useSortableItemsModel.js.map +1 -1
- package/build/editor/post-featured-image.js +3 -2
- package/build/editor/post-featured-image.js.map +1 -1
- package/build/editor/simple-gutenberg-endpoints-api.d.ts +6 -0
- package/build/editor/simple-gutenberg-endpoints-api.js +15 -0
- package/build/editor/simple-gutenberg-endpoints-api.js.map +1 -0
- package/build/editor/simple-gutenberg-endpoints-impl.d.ts +23 -0
- package/build/editor/simple-gutenberg-endpoints-impl.js +47 -0
- package/build/editor/simple-gutenberg-endpoints-impl.js.map +1 -0
- package/build/index.d.ts +3 -11
- package/build/index.js +10 -4
- package/build/index.js.map +1 -1
- package/build/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.d.ts +26 -0
- package/build/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js +14 -0
- package/build/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js.map +1 -0
- package/build/lib/gutenberg-api-extensions-state/layered-block-styles-logic.d.ts +22 -0
- package/build/lib/gutenberg-api-extensions-state/layered-block-styles-logic.js +14 -0
- package/build/lib/gutenberg-api-extensions-state/layered-block-styles-logic.js.map +1 -0
- package/build/lib/gutenberg-api-extensions-state/snp-logic.d.ts +44 -0
- package/build/lib/gutenberg-api-extensions-state/snp-logic.js +177 -0
- package/build/lib/gutenberg-api-extensions-state/snp-logic.js.map +1 -0
- package/build/lib/gutenberg-api-extensions-state.d.ts +106 -0
- package/build/lib/gutenberg-api-extensions-state.js +107 -0
- package/build/lib/gutenberg-api-extensions-state.js.map +1 -0
- package/build/lib/helpers.d.ts +1 -0
- package/build/lib/helpers.js +10 -0
- package/build/lib/helpers.js.map +1 -0
- package/build/lib/suspense/promise-handlers.d.ts +18 -0
- package/build/lib/suspense/promise-handlers.js +34 -0
- package/build/lib/suspense/promise-handlers.js.map +1 -0
- package/build/lib/suspense.d.ts +7 -0
- package/build/lib/suspense.js +14 -0
- package/build/lib/suspense.js.map +1 -0
- package/build/lib/useful-types.d.ts +9 -0
- package/build/lib/useful-types.js +2 -0
- package/build/lib/useful-types.js.map +1 -0
- package/package.json +1 -1
- package/styles/editor.pcss +4 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { getBlockType } from "@wordpress/blocks";
|
|
2
|
+
import { dispatch } from "@wordpress/data";
|
|
3
|
+
import { hydrateSimpleNativeProperty } from "../../blocks/common-native-property-constructors";
|
|
4
|
+
import { isBlockJsonNativePropsConfig } from "../../blocks/snp-api";
|
|
5
|
+
import { store } from "../gutenberg-api-extensions-state";
|
|
6
|
+
export const snpLogicActions = {
|
|
7
|
+
addProperties(blockName, properties) {
|
|
8
|
+
return { type: 'ADD_PROPERTIES', blockName, properties };
|
|
9
|
+
},
|
|
10
|
+
addOrUpdateExtraPropTransform(blockName, propPath, extraPropTransform) {
|
|
11
|
+
return { type: 'ADD_OR_UPDATE_EXTRA_PROP_TRANSFORM', blockName, propPath, extraPropTransform };
|
|
12
|
+
},
|
|
13
|
+
setComputedExtraPropTransforms(blockName, computedExtraPropTransforms) {
|
|
14
|
+
return { type: 'SET_COMPUTED_EXTRA_PROP_TRANSFORMS', blockName, computedExtraPropTransforms };
|
|
15
|
+
},
|
|
16
|
+
setPreppedProperties(blockName, properties) {
|
|
17
|
+
return { type: 'SET_PREPPED_PROPERTIES', blockName, properties };
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const snpLogicSelectors = {
|
|
21
|
+
desiccatedProperties(state, blockName) {
|
|
22
|
+
return state.desiccatedProperties[blockName];
|
|
23
|
+
},
|
|
24
|
+
preppedProperties(state, blockName) {
|
|
25
|
+
let res = state.preppedProperties[blockName];
|
|
26
|
+
if (res === undefined) {
|
|
27
|
+
res = prepSimpleNativePanelsAndTabs(blockName, state.desiccatedProperties[blockName]);
|
|
28
|
+
dispatch(store).setPreppedProperties(blockName, res);
|
|
29
|
+
}
|
|
30
|
+
return res;
|
|
31
|
+
},
|
|
32
|
+
extraPropTransforms(state, blockName) {
|
|
33
|
+
return state.extraPropTransforms[blockName];
|
|
34
|
+
},
|
|
35
|
+
computedExtraPropTransforms(state, blockName) {
|
|
36
|
+
let res = state.computedExtraPropTransforms[blockName];
|
|
37
|
+
if (res === undefined) {
|
|
38
|
+
res = computeExtraPropTransforms(getBlockType(blockName), state.extraPropTransforms[blockName]);
|
|
39
|
+
dispatch(store).setComputedExtraPropTransforms(blockName, res);
|
|
40
|
+
}
|
|
41
|
+
return res;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
export const snpLogicResolvers = {
|
|
45
|
+
preppedProperties: (blockName) => ({ select, dispatch }) => {
|
|
46
|
+
const desiccatedProperties = select.desiccatedProperties(blockName);
|
|
47
|
+
dispatch({ type: 'SET_EXTRA_PROP_TRANSFORMS', blockName, extraPropTransforms: {} });
|
|
48
|
+
dispatch({ type: 'SET_LAYERED_BLOCK_STYLES', blockName, properties: {} });
|
|
49
|
+
dispatch({ type: 'SET_PREPPED_PROPERTIES', blockName, properties: prepSimpleNativePanelsAndTabs(blockName, desiccatedProperties) });
|
|
50
|
+
dispatch({ type: 'SET_COMPUTED_EXTRA_PROP_TRANSFORMS', blockName, computedExtraPropTransforms: undefined });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
export function addProperties(block, properties, simpleNativePanelsAndTabs) {
|
|
54
|
+
const panels = (simpleNativePanelsAndTabs[block] ?? (simpleNativePanelsAndTabs[block] = []));
|
|
55
|
+
if ('title' in properties) {
|
|
56
|
+
panels.push(properties);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
let rawProperties = [];
|
|
60
|
+
for (const prop of properties) {
|
|
61
|
+
if ('title' in prop) {
|
|
62
|
+
if (rawProperties.length) {
|
|
63
|
+
panels.push({
|
|
64
|
+
title: "",
|
|
65
|
+
properties: rawProperties
|
|
66
|
+
});
|
|
67
|
+
rawProperties = [];
|
|
68
|
+
}
|
|
69
|
+
panels.push(prop);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
rawProperties.push(prop);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (rawProperties.length) {
|
|
76
|
+
panels.push({
|
|
77
|
+
title: "",
|
|
78
|
+
properties: rawProperties
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function normalizeTabItems(items, outsideHydrationInfo) {
|
|
83
|
+
let bareProperties = [];
|
|
84
|
+
const normalizedItems = [];
|
|
85
|
+
for (const item of items) {
|
|
86
|
+
if (Array.isArray(item)) {
|
|
87
|
+
bareProperties.push(item.map(prp => hydrateSimpleNativeProperty(prp, "", outsideHydrationInfo, [])));
|
|
88
|
+
}
|
|
89
|
+
else if ('title' in item && 'properties' in item) {
|
|
90
|
+
if (bareProperties.length) {
|
|
91
|
+
normalizedItems.push({ title: "", properties: bareProperties, initialOpen: true });
|
|
92
|
+
bareProperties = [];
|
|
93
|
+
}
|
|
94
|
+
normalizedItems.push(hydrateSimpleNativePanel(item, outsideHydrationInfo));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
bareProperties.push(hydrateSimpleNativeProperty(item, "", outsideHydrationInfo, []));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (bareProperties.length) {
|
|
101
|
+
normalizedItems.push({ title: "", properties: bareProperties, initialOpen: true });
|
|
102
|
+
}
|
|
103
|
+
return normalizedItems;
|
|
104
|
+
}
|
|
105
|
+
function hydrateSimpleNativePanel(panel, outsideHydrationInfo) {
|
|
106
|
+
return {
|
|
107
|
+
...panel, properties: panel.properties.map(prop => Array.isArray(prop)
|
|
108
|
+
? prop.map(prp => hydrateSimpleNativeProperty(prp, "", outsideHydrationInfo, []))
|
|
109
|
+
: hydrateSimpleNativeProperty(prop, "", outsideHydrationInfo, []))
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* This performs the one-time prep for rendering the registered SNP panels and tabs for a Block.
|
|
114
|
+
*
|
|
115
|
+
* @param block the name of the block to prep
|
|
116
|
+
* @param items the properties sourced from the datastore
|
|
117
|
+
* @returns either false or an object with at least one declared panel or tab.
|
|
118
|
+
* This guarantee is made in order to avoid having to perform more convoluted checks in the render methods
|
|
119
|
+
*/
|
|
120
|
+
export function prepSimpleNativePanelsAndTabs(block, items) {
|
|
121
|
+
if (items === undefined) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
const ungroupedTabs = [];
|
|
125
|
+
const panels = [];
|
|
126
|
+
for (const item of items) {
|
|
127
|
+
const isTab = 'items' in item;
|
|
128
|
+
if (item.group === 'layered-styles') {
|
|
129
|
+
const props = (isTab
|
|
130
|
+
? item.items.flatMap(propsOrPanel => 'title' in propsOrPanel ? propsOrPanel.properties : propsOrPanel)
|
|
131
|
+
: item.properties).flat();
|
|
132
|
+
dispatch(store).addLayeredBlockStyles(block, props);
|
|
133
|
+
}
|
|
134
|
+
if (isTab) {
|
|
135
|
+
ungroupedTabs.push(item);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
panels.push(item);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (!panels.length && !ungroupedTabs.length) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const groupedTabs = {};
|
|
145
|
+
for (const tab of ungroupedTabs) {
|
|
146
|
+
const tabGroupName = tab.group ?? 'default';
|
|
147
|
+
const groupedTabsForName = groupedTabs[tabGroupName] ?? (groupedTabs[tabGroupName] = {});
|
|
148
|
+
// If a tab with that title already exists, we append its properties to the existing ones
|
|
149
|
+
const existingGroupedTabsForName = groupedTabsForName[tab.title];
|
|
150
|
+
groupedTabsForName[tab.title] = {
|
|
151
|
+
title: tab.title, group: tabGroupName,
|
|
152
|
+
items: existingGroupedTabsForName
|
|
153
|
+
? [...existingGroupedTabsForName.items, ...normalizeTabItems(tab.items, { forLayeredStyles: tab.group === "layered-styles", blockName: block })]
|
|
154
|
+
: normalizeTabItems(tab.items, { forLayeredStyles: tab.group === "layered-styles", blockName: block })
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
// Because JavaScript's Array sorting methods are stable, we can just sort once at the end
|
|
159
|
+
panels: panels.map(panel => hydrateSimpleNativePanel(panel, { forLayeredStyles: panel.group === "layered-styles", blockName: block }))
|
|
160
|
+
.sort(({ position: aPosition = 10 }, { position: bPosition = 10 }) => aPosition - bPosition),
|
|
161
|
+
// We sort tab groups by name in order to force SNP styles to be added after layered-styles
|
|
162
|
+
// We don't need to check for equality in the group comparator because Object-keys are guaranteed to be distinct
|
|
163
|
+
tabs: Object.fromEntries(Object.entries(groupedTabs)
|
|
164
|
+
.sort(([aName], [bName]) => aName > bName ? 1 : -1))
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
export function computeExtraPropTransforms(blockType, extraPropTransforms) {
|
|
168
|
+
if (extraPropTransforms === undefined) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
const rawTransforms = Object.entries(extraPropTransforms);
|
|
172
|
+
const transforms = rawTransforms.length
|
|
173
|
+
? rawTransforms.map(transform => [transform[0].split("."), transform[1]])
|
|
174
|
+
: false;
|
|
175
|
+
return transforms ? { transforms, appliesInEditor: !isBlockJsonNativePropsConfig(blockType.plaudit) } : false;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=snp-logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snp-logic.js","sourceRoot":"","sources":["../../../src/lib/gutenberg-api-extensions-state/snp-logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { dispatch, select, StoreDescriptor } from "@wordpress/data";
|
|
2
|
+
import type { BlockName, DbSource, LaidOutProperties, PDSimpleNativeProperty, SimpleNativePanel, SimpleNativeTab } from "../blocks";
|
|
3
|
+
import type { ExtraPropTransformsConfig, PerBlockExtraPropTransforms, PreppedSimpleNativePanelsAndTabs } from "../blocks/simple-native-property-internal-shared";
|
|
4
|
+
import type { RegisterBlockAttrs } from "../blocks/snp-api";
|
|
5
|
+
import { LayeredBlockStylesLogicActions } from "./gutenberg-api-extensions-state/layered-block-styles-logic";
|
|
6
|
+
import { SNPLogicActions } from "./gutenberg-api-extensions-state/snp-logic";
|
|
7
|
+
import { CustomBlockBindingsSupportLogicActions } from "./gutenberg-api-extensions-state/custom-block-bindings-support-logic";
|
|
8
|
+
import type { WordPressMetaActions } from "./useful-types";
|
|
9
|
+
export type State = {
|
|
10
|
+
customBlockBindingsSupport: {
|
|
11
|
+
[name in string]?: {
|
|
12
|
+
dbSources?: DbSource[];
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
layeredBlockStyles: {
|
|
16
|
+
[blockName in BlockName]?: {
|
|
17
|
+
[name in string]: PDSimpleNativeProperty;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
desiccatedProperties: {
|
|
21
|
+
[blockName in BlockName]?: Array<SimpleNativePanel | SimpleNativeTab>;
|
|
22
|
+
};
|
|
23
|
+
preppedProperties: {
|
|
24
|
+
[blockName in BlockName]?: PreppedSimpleNativePanelsAndTabs | false;
|
|
25
|
+
};
|
|
26
|
+
extraPropTransforms: {
|
|
27
|
+
[blockName in BlockName]?: ExtraPropTransformsConfig;
|
|
28
|
+
};
|
|
29
|
+
computedExtraPropTransforms: {
|
|
30
|
+
[blockName in BlockName]?: PerBlockExtraPropTransforms | false;
|
|
31
|
+
};
|
|
32
|
+
baselineBlockAttrs: {
|
|
33
|
+
[blockName in BlockName]?: RegisterBlockAttrs<Record<string, any>>;
|
|
34
|
+
};
|
|
35
|
+
features: {
|
|
36
|
+
[name in string]?: {
|
|
37
|
+
[prop in string]: any;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export type BareProperties = SimpleNativePanel | SimpleNativeTab | Array<LaidOutProperties[number] | SimpleNativePanel | SimpleNativeTab>;
|
|
42
|
+
export type NamedBlockAction<A extends string, P = {}> = {
|
|
43
|
+
type: A;
|
|
44
|
+
blockName: BlockName;
|
|
45
|
+
} & P;
|
|
46
|
+
export type MinThunkParams = {
|
|
47
|
+
dispatch(action: ReducerActions | WordPressMetaActions): Promise<unknown>;
|
|
48
|
+
};
|
|
49
|
+
export type ThunkParams<T extends StoreDescriptor> = {
|
|
50
|
+
select: ReturnType<typeof select<T>>;
|
|
51
|
+
dispatch: ReturnType<typeof dispatch<T>> & {
|
|
52
|
+
(action: ReducerActions | WordPressMetaActions): Promise<unknown>;
|
|
53
|
+
};
|
|
54
|
+
resolveSelect: PromisifyFunctionReturns<ReturnType<typeof select<T>>>;
|
|
55
|
+
};
|
|
56
|
+
export type PromisifyFunctionReturns<T extends {
|
|
57
|
+
[K in string]: (...args: any[]) => any;
|
|
58
|
+
}> = {
|
|
59
|
+
[K in keyof T]: (...args: Parameters<T[K]>) => Promise<ReturnType<T[K]>>;
|
|
60
|
+
};
|
|
61
|
+
type ReducerActions = CustomBlockBindingsSupportLogicActions | LayeredBlockStylesLogicActions | SNPLogicActions | {
|
|
62
|
+
type: 'RECORD_BASELINE_BLOCK_ATTRS';
|
|
63
|
+
attrs: RegisterBlockAttrs<Record<string, any>>;
|
|
64
|
+
} | {
|
|
65
|
+
type: "SET_FEATURE_PROP";
|
|
66
|
+
feature: string;
|
|
67
|
+
prop: string;
|
|
68
|
+
value: any;
|
|
69
|
+
};
|
|
70
|
+
export declare const store: import("@wordpress/data/build-types/types").StoreDescriptor<import("@wordpress/data/build-types/types").ReduxStoreConfig<State, {
|
|
71
|
+
recordBaselineBlockAttrs(attrs: RegisterBlockAttrs<Record<string, any>>): ReducerActions;
|
|
72
|
+
setFeatureProp(feature: string, prop: string, value: any): ReducerActions;
|
|
73
|
+
addProperties(blockName: BlockName | BlockName[], properties: BareProperties): SNPLogicActions;
|
|
74
|
+
addOrUpdateExtraPropTransform(blockName: BlockName, propPath: string, extraPropTransform: ExtraPropTransformsConfig[string]): SNPLogicActions;
|
|
75
|
+
setComputedExtraPropTransforms(blockName: BlockName, computedExtraPropTransforms: PerBlockExtraPropTransforms | false): SNPLogicActions;
|
|
76
|
+
setPreppedProperties(blockName: BlockName, properties: PreppedSimpleNativePanelsAndTabs | false): SNPLogicActions;
|
|
77
|
+
addLayeredBlockStyles(blockName: BlockName, properties: PDSimpleNativeProperty[]): {
|
|
78
|
+
type: string;
|
|
79
|
+
blockName: `${string}/${string}`;
|
|
80
|
+
properties: PDSimpleNativeProperty[];
|
|
81
|
+
};
|
|
82
|
+
registerCustomBlockBindingsSource(args: Parameters<typeof import("@wordpress/blocks").registerBlockBindingsSource>[0] & {
|
|
83
|
+
dbSources?: DbSource[];
|
|
84
|
+
}): {
|
|
85
|
+
type: string;
|
|
86
|
+
name: string;
|
|
87
|
+
value: {
|
|
88
|
+
dbSources: (DBSource[] & DbSource[]) | undefined;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
}, {
|
|
92
|
+
baselineBlockAttrs(state: State, blockName: BlockName): RegisterBlockAttrs<Record<string, any>> | undefined;
|
|
93
|
+
featureProp(state: State, feature: string, prop: string): any;
|
|
94
|
+
desiccatedProperties(state: State, blockName: BlockName): (SimpleNativePanel | SimpleNativeTab)[] | undefined;
|
|
95
|
+
preppedProperties(state: State, blockName: BlockName): false | PreppedSimpleNativePanelsAndTabs;
|
|
96
|
+
extraPropTransforms(state: State, blockName: BlockName): ExtraPropTransformsConfig | undefined;
|
|
97
|
+
computedExtraPropTransforms(state: State, blockName: BlockName): false | PerBlockExtraPropTransforms;
|
|
98
|
+
blockStylesLayer(state: State, blockName: BlockName, layerName: string): PDSimpleNativeProperty | undefined;
|
|
99
|
+
blockStylesLayers(state: State, blockName: BlockName): {
|
|
100
|
+
[x: string]: PDSimpleNativeProperty;
|
|
101
|
+
} | undefined;
|
|
102
|
+
customBlockBindingsSource(state: State, name: string): {
|
|
103
|
+
dbSources?: DbSource[];
|
|
104
|
+
} | undefined;
|
|
105
|
+
}>>;
|
|
106
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createReduxStore, register } from "@wordpress/data";
|
|
2
|
+
import { produce } from "immer";
|
|
3
|
+
import { layeredBlockStylesLogicActions, layeredBlockStylesLogicSelectors } from "./gutenberg-api-extensions-state/layered-block-styles-logic";
|
|
4
|
+
import { addProperties, snpLogicActions, snpLogicResolvers, snpLogicSelectors } from "./gutenberg-api-extensions-state/snp-logic";
|
|
5
|
+
import { customBlockBindingsSupportLogicActions, customBlockBindingsSupportLogicSelectors } from "./gutenberg-api-extensions-state/custom-block-bindings-support-logic";
|
|
6
|
+
import { clone } from "./helpers";
|
|
7
|
+
const DEFAULT_STATE = {
|
|
8
|
+
customBlockBindingsSupport: {}, layeredBlockStyles: {}, desiccatedProperties: {}, preppedProperties: {}, extraPropTransforms: {},
|
|
9
|
+
computedExtraPropTransforms: {}, baselineBlockAttrs: {}, features: {}
|
|
10
|
+
};
|
|
11
|
+
export const store = createReduxStore('gutenberg-api-extensions-state', {
|
|
12
|
+
initialState: DEFAULT_STATE,
|
|
13
|
+
reducer(state, action) {
|
|
14
|
+
switch (action.type) {
|
|
15
|
+
case "ADD_CUSTOM_BLOCK_BINDINGS_SOURCE":
|
|
16
|
+
return produce(state, (result) => {
|
|
17
|
+
result.customBlockBindingsSupport[action.name] = action.value;
|
|
18
|
+
});
|
|
19
|
+
case "ADD_LAYERED_BLOCK_STYLES":
|
|
20
|
+
return produce(state, (result) => {
|
|
21
|
+
const blockLayeredStyles = result.layeredBlockStyles[action.blockName] ?? (result.layeredBlockStyles[action.blockName] = {});
|
|
22
|
+
for (const layer of action.properties) {
|
|
23
|
+
blockLayeredStyles[layer.name] = layer;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
case "SET_LAYERED_BLOCK_STYLES":
|
|
27
|
+
return produce(state, (result) => {
|
|
28
|
+
result.layeredBlockStyles[action.blockName] = action.properties;
|
|
29
|
+
});
|
|
30
|
+
case "ADD_PROPERTIES":
|
|
31
|
+
return produce(state, (result) => {
|
|
32
|
+
if (Array.isArray(action.blockName)) {
|
|
33
|
+
for (const bn of action.blockName) {
|
|
34
|
+
addProperties(bn, action.properties, result.desiccatedProperties);
|
|
35
|
+
result.preppedProperties[bn] = undefined;
|
|
36
|
+
result.extraPropTransforms[bn] = undefined;
|
|
37
|
+
result.computedExtraPropTransforms[bn] = undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
addProperties(action.blockName, action.properties, result.desiccatedProperties);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
case "ADD_OR_UPDATE_EXTRA_PROP_TRANSFORM":
|
|
45
|
+
return produce(state, (result) => {
|
|
46
|
+
const blockTransforms = result.extraPropTransforms[action.blockName] ?? (result.extraPropTransforms[action.blockName] = {});
|
|
47
|
+
if (blockTransforms[action.propPath]) {
|
|
48
|
+
blockTransforms[action.propPath].styleProperty = action.extraPropTransform.styleProperty;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
blockTransforms[action.propPath] = action.extraPropTransform;
|
|
52
|
+
}
|
|
53
|
+
result.computedExtraPropTransforms[action.blockName] = undefined;
|
|
54
|
+
});
|
|
55
|
+
case "SET_PREPPED_PROPERTIES":
|
|
56
|
+
return produce(state, (result) => {
|
|
57
|
+
result.preppedProperties[action.blockName] = action.properties;
|
|
58
|
+
});
|
|
59
|
+
case "SET_EXTRA_PROP_TRANSFORMS":
|
|
60
|
+
return produce(state, (result) => {
|
|
61
|
+
result.extraPropTransforms[action.blockName] = action.extraPropTransforms;
|
|
62
|
+
});
|
|
63
|
+
case "SET_COMPUTED_EXTRA_PROP_TRANSFORMS":
|
|
64
|
+
return produce(state, (result) => {
|
|
65
|
+
result.computedExtraPropTransforms[action.blockName] = action.computedExtraPropTransforms;
|
|
66
|
+
});
|
|
67
|
+
case "RECORD_BASELINE_BLOCK_ATTRS":
|
|
68
|
+
return produce(state, (result) => {
|
|
69
|
+
if (!(action.attrs.name in result.baselineBlockAttrs)) {
|
|
70
|
+
result.baselineBlockAttrs[action.attrs.name] = clone(action.attrs);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
case "SET_FEATURE_PROP":
|
|
74
|
+
return produce(state, (result) => {
|
|
75
|
+
(result.features[action.feature] ?? (result.features[action.feature] = {}))[action.prop] = action.value;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return state;
|
|
79
|
+
},
|
|
80
|
+
actions: {
|
|
81
|
+
...customBlockBindingsSupportLogicActions,
|
|
82
|
+
...layeredBlockStylesLogicActions,
|
|
83
|
+
...snpLogicActions,
|
|
84
|
+
recordBaselineBlockAttrs(attrs) {
|
|
85
|
+
return { type: "RECORD_BASELINE_BLOCK_ATTRS", attrs };
|
|
86
|
+
},
|
|
87
|
+
setFeatureProp(feature, prop, value) {
|
|
88
|
+
return { type: "SET_FEATURE_PROP", feature, prop, value };
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
selectors: {
|
|
92
|
+
...customBlockBindingsSupportLogicSelectors,
|
|
93
|
+
...layeredBlockStylesLogicSelectors,
|
|
94
|
+
...snpLogicSelectors,
|
|
95
|
+
baselineBlockAttrs(state, blockName) {
|
|
96
|
+
return state.baselineBlockAttrs[blockName];
|
|
97
|
+
},
|
|
98
|
+
featureProp(state, feature, prop) {
|
|
99
|
+
return state.features[feature]?.[prop];
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
resolvers: {
|
|
103
|
+
...snpLogicResolvers
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
register(store);
|
|
107
|
+
//# sourceMappingURL=gutenberg-api-extensions-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gutenberg-api-extensions-state.js","sourceRoot":"","sources":["../../src/lib/gutenberg-api-extensions-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function clone(value: any): any;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function clone(value) {
|
|
2
|
+
if (value === null || value === undefined) {
|
|
3
|
+
return value;
|
|
4
|
+
}
|
|
5
|
+
else if (Array.isArray(value)) {
|
|
6
|
+
return value.map(v => clone(v));
|
|
7
|
+
}
|
|
8
|
+
return typeof value === 'object' ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, clone(v)])) : value;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,KAAU;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type WrappedPromiseEnhancements<T> = {
|
|
2
|
+
value: T;
|
|
3
|
+
status: 'fulfilled';
|
|
4
|
+
} | {
|
|
5
|
+
reason: unknown;
|
|
6
|
+
status: 'rejected';
|
|
7
|
+
};
|
|
8
|
+
export type WrappedPromise<T> = Promise<T> & ({
|
|
9
|
+
status: 'pending';
|
|
10
|
+
} | WrappedPromiseEnhancements<T>);
|
|
11
|
+
export type PartiallyWrappedPromise<T> = Promise<T> & ({
|
|
12
|
+
status?: 'pending';
|
|
13
|
+
} | WrappedPromiseEnhancements<T>);
|
|
14
|
+
export declare function isWrappedPromise<T>(promise: Promise<T>): promise is WrappedPromise<T>;
|
|
15
|
+
export declare function use<T>(promise: PartiallyWrappedPromise<T>): T;
|
|
16
|
+
export declare function wrapPromise<T>(promise: PartiallyWrappedPromise<T>): WrappedPromise<T>;
|
|
17
|
+
export declare function getPromiseState(promise: PartiallyWrappedPromise<any>): "pending" | "fulfilled" | "rejected";
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export function isWrappedPromise(promise) {
|
|
2
|
+
return 'status' in promise
|
|
3
|
+
&& (promise.status === 'pending' || (promise.status === 'fulfilled' && 'value' in promise) || (promise.status === 'rejected' && 'reason' in promise));
|
|
4
|
+
}
|
|
5
|
+
export function use(promise) {
|
|
6
|
+
switch (promise.status) {
|
|
7
|
+
case "pending":
|
|
8
|
+
throw promise;
|
|
9
|
+
case "fulfilled":
|
|
10
|
+
return promise.value;
|
|
11
|
+
case "rejected":
|
|
12
|
+
throw promise.reason;
|
|
13
|
+
default:
|
|
14
|
+
return use(actuallyWrapPromise(promise));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function wrapPromise(promise) {
|
|
18
|
+
return isWrappedPromise(promise) ? promise : actuallyWrapPromise(promise);
|
|
19
|
+
}
|
|
20
|
+
function actuallyWrapPromise(promise) {
|
|
21
|
+
promise.status = 'pending';
|
|
22
|
+
promise.then(value => {
|
|
23
|
+
promise.status = 'fulfilled';
|
|
24
|
+
promise.value = value;
|
|
25
|
+
}, reason => {
|
|
26
|
+
promise.status = 'rejected';
|
|
27
|
+
promise.reason = reason;
|
|
28
|
+
});
|
|
29
|
+
return promise;
|
|
30
|
+
}
|
|
31
|
+
export function getPromiseState(promise) {
|
|
32
|
+
return wrapPromise(promise).status;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=promise-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise-handlers.js","sourceRoot":"","sources":["../../../src/lib/suspense/promise-handlers.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAI,OAAmB;IACtD,OAAO,QAAQ,IAAI,OAAO;WACtB,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,OAAmC;IACzD,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,SAAS;YACb,MAAM,OAAO,CAAC;QACf,KAAK,WAAW;YACf,OAAO,OAAO,CAAC,KAAK,CAAC;QACtB,KAAK,UAAU;YACd,MAAM,OAAO,CAAC,MAAM,CAAC;QACtB;YACC,OAAO,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,OAAmC;IACjE,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,mBAAmB,CAAI,OAAmC;IAClE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,IAAI,CACX,KAAK,CAAC,EAAE;QACN,OAAsC,CAAC,MAAM,GAAG,WAAW,CAAC;QAC5D,OAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAChC,CAAC,EACD,MAAM,CAAC,EAAE;QACP,OAAsC,CAAC,MAAM,GAAG,UAAU,CAAC;QAC3D,OAAe,CAAC,MAAM,GAAG,MAAM,CAAC;IAClC,CAAC,CACD,CAAC;IACF,OAAO,OAA4B,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAqC;IACpE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./suspense/promise-handlers";
|
|
2
|
+
import React, { type ReactNode, type SuspenseProps } from "react";
|
|
3
|
+
type OptionallySuspensefulProps = Omit<SuspenseProps, 'children'> & {
|
|
4
|
+
children: ReactNode | (() => ReactNode);
|
|
5
|
+
hasSuspensefulOptions: (() => boolean) | boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function OptionallySuspenseful({ children: Children, hasSuspensefulOptions, ...props }: OptionallySuspensefulProps): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | null | undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Spinner } from "@wordpress/components";
|
|
3
|
+
import { InspectorPanel } from "../controls";
|
|
4
|
+
export * from "./suspense/promise-handlers";
|
|
5
|
+
import { Suspense } from "react";
|
|
6
|
+
export function OptionallySuspenseful({ children: Children, hasSuspensefulOptions, ...props }) {
|
|
7
|
+
if (typeof hasSuspensefulOptions === 'function' ? hasSuspensefulOptions() : hasSuspensefulOptions) {
|
|
8
|
+
return _jsx(Suspense, { fallback: _jsxs(InspectorPanel, { opened: true, initialOpen: true, children: [_jsx(Spinner, {}), " Loading options"] }), ...props, children: typeof Children === 'function' ? _jsx(Children, {}) : Children });
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return typeof Children === 'function' ? _jsx(Children, {}) : Children;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=suspense.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspense.js","sourceRoot":"","sources":["../../src/lib/suspense.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAE3C,cAAc,6BAA6B,CAAC;AAE5C,OAAc,EAAiB,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAG1E,MAAM,UAAU,qBAAqB,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAA6B;IACtH,IAAI,OAAO,qBAAqB,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;QACnG,OAAO,KAAC,QAAQ,IAAC,QAAQ,EAAE,MAAC,cAAc,IAAC,MAAM,QAAC,WAAW,mBAAC,KAAC,OAAO,KAAE,wBAAiC,KAAM,KAAK,YACnH,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAE,CAAC,CAAC,CAAC,QAAQ,GAC5C,CAAC;IACd,CAAC;SAAM,CAAC;QACP,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as MetaActions from '@wordpress/data/build-types/redux-store/metadata/actions';
|
|
2
|
+
export type NormalizedReduxActionExtractor<V> = V extends {
|
|
3
|
+
[key in string]: (...args: any[]) => unknown;
|
|
4
|
+
} ? NormalizedReduxActionExtractor<ReturnType<V[keyof V]>> : V extends {
|
|
5
|
+
type: string;
|
|
6
|
+
} ? V : (V extends (...args: any[]) => {
|
|
7
|
+
type: string;
|
|
8
|
+
} ? ReturnType<V> : never);
|
|
9
|
+
export type WordPressMetaActions = NormalizedReduxActionExtractor<typeof MetaActions>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useful-types.js","sourceRoot":"","sources":["../../src/lib/useful-types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/styles/editor.pcss
CHANGED
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
:has(.has-validation-error) {
|
|
30
30
|
border-color: var(--plaudit-gae-validation-error-text)
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
.block-editor-block-inspector > * > .plaudit-snp-laid-out-property:has(> &.components-tools-panel) {
|
|
34
|
+
margin-block-end: 0;
|
|
35
|
+
}
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
/* This accounts for WordPress' version of Gutenberg being maddeningly out of date */
|