@plaudit/gutenberg-api-extensions 2.79.0 → 2.80.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/dist/blocks/MoveError.js +10 -0
- package/dist/blocks/MoveError.js.map +1 -0
- package/{build → dist}/blocks/PathError.js +7 -3
- package/dist/blocks/PathError.js.map +1 -0
- package/{build → dist}/blocks/SNPFlexibleItemsListComponent.d.ts +1 -1
- package/dist/blocks/SNPFlexibleItemsListComponent.js +18 -0
- package/dist/blocks/SNPFlexibleItemsListComponent.js.map +1 -0
- package/{build → dist}/blocks/SNPGroupComponent.d.ts +2 -2
- package/dist/blocks/SNPGroupComponent.js +20 -0
- package/dist/blocks/SNPGroupComponent.js.map +1 -0
- package/{build → dist}/blocks/SNPListComponent.d.ts +1 -1
- package/dist/blocks/SNPListComponent.js +18 -0
- package/dist/blocks/SNPListComponent.js.map +1 -0
- package/dist/blocks/SNPTreeContext.js +14 -0
- package/dist/blocks/SNPTreeContext.js.map +1 -0
- package/dist/blocks/basic-custom-block-bindings-support.js +157 -0
- package/dist/blocks/basic-custom-block-bindings-support.js.map +1 -0
- package/dist/blocks/common-native-property-constructors.d.ts +13 -0
- package/{build → dist}/blocks/common-native-property-constructors.js +105 -151
- package/dist/blocks/common-native-property-constructors.js.map +1 -0
- package/{build → dist}/blocks/conditions.js +12 -7
- package/dist/blocks/conditions.js.map +1 -0
- package/dist/blocks/csnp-api.d.ts +166 -0
- package/dist/blocks/csnp-api.js +74 -0
- package/dist/blocks/csnp-api.js.map +1 -0
- package/{build → dist}/blocks/data-controller-manager.js +4 -1
- package/dist/blocks/data-controller-manager.js.map +1 -0
- package/{build → dist}/blocks/data-controller.js +74 -70
- package/dist/blocks/data-controller.js.map +1 -0
- package/{build → dist}/blocks/hooks/built-in-suspendable-option-protocols/select.js +14 -11
- package/dist/blocks/hooks/built-in-suspendable-option-protocols/select.js.map +1 -0
- package/{build → dist}/blocks/hooks/built-in-suspendable-option-protocols/settings.js +9 -6
- package/dist/blocks/hooks/built-in-suspendable-option-protocols/settings.js.map +1 -0
- package/{build → dist}/blocks/hooks/useSuspendableOptions.d.ts +1 -1
- package/{build → dist}/blocks/hooks/useSuspendableOptions.js +30 -23
- package/dist/blocks/hooks/useSuspendableOptions.js.map +1 -0
- package/dist/blocks/index.js +35 -0
- package/dist/blocks/index.js.map +1 -0
- package/{build → dist}/blocks/layered-styles-api.d.ts +2 -2
- package/{build → dist}/blocks/layered-styles-api.js +10 -6
- package/dist/blocks/layered-styles-api.js.map +1 -0
- package/{build → dist}/blocks/layered-styles-impl.js +14 -9
- package/dist/blocks/layered-styles-impl.js.map +1 -0
- package/{build → dist}/blocks/layout/LaidOutProperty.d.ts +1 -2
- package/dist/blocks/layout/LaidOutProperty.js +47 -0
- package/dist/blocks/layout/LaidOutProperty.js.map +1 -0
- package/dist/blocks/layout/LaidOutPropertyRow.js +15 -0
- package/dist/blocks/layout/LaidOutPropertyRow.js.map +1 -0
- package/{build → dist}/blocks/layout/NodeContext.d.ts +2 -2
- package/dist/blocks/layout/NodeContext.js +44 -0
- package/dist/blocks/layout/NodeContext.js.map +1 -0
- package/dist/blocks/layout/PanelRoot.js +29 -0
- package/dist/blocks/layout/PanelRoot.js.map +1 -0
- package/{build → dist}/blocks/layout/TabsRoot.js +16 -13
- package/dist/blocks/layout/TabsRoot.js.map +1 -0
- package/dist/blocks/layout/ToolsPanelContext.js +23 -0
- package/dist/blocks/layout/ToolsPanelContext.js.map +1 -0
- package/dist/blocks/shared-exportable-types.js +3 -0
- package/dist/blocks/shared-internal-types.js +3 -0
- package/{build → dist}/blocks/simple-block.d.ts +1 -1
- package/dist/blocks/simple-block.js +45 -0
- package/dist/blocks/simple-block.js.map +1 -0
- package/{build → dist}/blocks/simple-native-property-api.d.ts +1 -1
- package/{build → dist}/blocks/simple-native-property-api.js +16 -10
- package/dist/blocks/simple-native-property-api.js.map +1 -0
- package/{build → dist}/blocks/simple-native-property-impl.js +60 -55
- package/dist/blocks/simple-native-property-impl.js.map +1 -0
- package/{build → dist}/blocks/simple-native-property-internal-shared.js +6 -2
- package/dist/blocks/simple-native-property-internal-shared.js.map +1 -0
- package/{build → dist}/blocks/snp-api.d.ts +1 -0
- package/dist/blocks/snp-api.js +7 -0
- package/dist/blocks/snp-api.js.map +1 -0
- package/{build → dist}/blocks/snp-data-store.js +8 -4
- package/dist/blocks/snp-data-store.js.map +1 -0
- package/{build → dist}/blocks/utilities.d.ts +1 -1
- package/dist/blocks/utilities.js +79 -0
- package/dist/blocks/utilities.js.map +1 -0
- package/{build → dist}/controls/AsynchronousFormTokenField.d.ts +1 -1
- package/dist/controls/AsynchronousFormTokenField.js +36 -0
- package/dist/controls/AsynchronousFormTokenField.js.map +1 -0
- package/{build → dist}/controls/BaseSortableItemsControl.d.ts +3 -3
- package/dist/controls/BaseSortableItemsControl.js +25 -0
- package/dist/controls/BaseSortableItemsControl.js.map +1 -0
- package/{build → dist}/controls/ExtendedFormTokenField.d.ts +3 -3
- package/dist/controls/ExtendedFormTokenField.js +64 -0
- package/dist/controls/ExtendedFormTokenField.js.map +1 -0
- package/dist/controls/ExtendedPostPicker.js +28 -0
- package/dist/controls/ExtendedPostPicker.js.map +1 -0
- package/dist/controls/ExtendedRadioControl.d.ts +12 -0
- package/dist/controls/ExtendedRadioControl.js +33 -0
- package/dist/controls/ExtendedRadioControl.js.map +1 -0
- package/{build → dist}/controls/ExtendedTaxonomyPicker.d.ts +1 -1
- package/dist/controls/ExtendedTaxonomyPicker.js +71 -0
- package/dist/controls/ExtendedTaxonomyPicker.js.map +1 -0
- package/{build → dist}/controls/ExtendedTermPicker.d.ts +1 -1
- package/dist/controls/ExtendedTermPicker.js +33 -0
- package/dist/controls/ExtendedTermPicker.js.map +1 -0
- package/dist/controls/ExtendedTextareaControl.d.ts +12 -0
- package/{build → dist}/controls/ExtendedTextareaControl.js +15 -12
- package/dist/controls/ExtendedTextareaControl.js.map +1 -0
- package/dist/controls/ExtendedUserPicker.js +28 -0
- package/dist/controls/ExtendedUserPicker.js.map +1 -0
- package/{build → dist}/controls/FullSizeToggleControl.d.ts +6 -4
- package/dist/controls/FullSizeToggleControl.js +110 -0
- package/dist/controls/FullSizeToggleControl.js.map +1 -0
- package/{build → dist}/controls/ImageControl.d.ts +1 -1
- package/dist/controls/ImageControl.js +81 -0
- package/dist/controls/ImageControl.js.map +1 -0
- package/{build → dist}/controls/InspectorPanel.d.ts +4 -3
- package/dist/controls/InspectorPanel.js +29 -0
- package/dist/controls/InspectorPanel.js.map +1 -0
- package/{build → dist}/controls/LazySuggestionsComboboxControl.d.ts +5 -1
- package/dist/controls/LazySuggestionsComboboxControl.js +32 -0
- package/dist/controls/LazySuggestionsComboboxControl.js.map +1 -0
- package/{build → dist}/controls/MultiSelectControl.d.ts +1 -1
- package/dist/controls/MultiSelectControl.js +33 -0
- package/dist/controls/MultiSelectControl.js.map +1 -0
- package/{build → dist}/controls/PickOne.d.ts +1 -1
- package/dist/controls/PickOne.js +54 -0
- package/dist/controls/PickOne.js.map +1 -0
- package/{build → dist}/controls/PromisableComponent.d.ts +2 -2
- package/{build → dist}/controls/PromisableComponent.js +14 -11
- package/dist/controls/PromisableComponent.js.map +1 -0
- package/{build → dist}/controls/ProperLinkControl.d.ts +1 -1
- package/dist/controls/ProperLinkControl.js +59 -0
- package/dist/controls/ProperLinkControl.js.map +1 -0
- package/dist/controls/SimpleToggle.js +11 -0
- package/dist/controls/SimpleToggle.js.map +1 -0
- package/dist/controls/SortableFlexibleItemsControl.js +18 -0
- package/dist/controls/SortableFlexibleItemsControl.js.map +1 -0
- package/dist/controls/SortableItemsControl.js +15 -0
- package/dist/controls/SortableItemsControl.js.map +1 -0
- package/{build → dist}/controls/basicNumericallyIdedItemPicker.d.ts +1 -1
- package/dist/controls/basicNumericallyIdedItemPicker.js +37 -0
- package/dist/controls/basicNumericallyIdedItemPicker.js.map +1 -0
- package/{build → dist}/controls/hooks/useImprovedTokenManager.d.ts +7 -5
- package/{build → dist}/controls/hooks/useImprovedTokenManager.js +21 -15
- package/dist/controls/hooks/useImprovedTokenManager.js.map +1 -0
- package/{build → dist}/controls/hooks/useMultiSingleConversionLayer.d.ts +1 -1
- package/dist/controls/hooks/useMultiSingleConversionLayer.js +14 -0
- package/dist/controls/hooks/useMultiSingleConversionLayer.js.map +1 -0
- package/dist/controls/hooks/useNonRenderingCounter.js +9 -0
- package/dist/controls/hooks/useNonRenderingCounter.js.map +1 -0
- package/{build → dist}/controls/hooks/useOutputMemoizingFilter.js +7 -4
- package/dist/controls/hooks/useOutputMemoizingFilter.js.map +1 -0
- package/{build → dist}/controls/hooks/useSortableItemsModel.js +14 -11
- package/dist/controls/hooks/useSortableItemsModel.js.map +1 -0
- package/{build → dist}/controls/hooks/useSuggestions.js +16 -13
- package/dist/controls/hooks/useSuggestions.js.map +1 -0
- package/{build → dist}/controls/hooks/useTokenManager.d.ts +5 -3
- package/{build → dist}/controls/hooks/useTokenManager.js +37 -34
- package/dist/controls/hooks/useTokenManager.js.map +1 -0
- package/dist/controls/index.js +41 -0
- package/dist/controls/index.js.map +1 -0
- package/{build → dist}/controls/shared.js +18 -8
- package/dist/controls/shared.js.map +1 -0
- package/dist/controls/types.js +3 -0
- package/dist/editor/post-featured-image.js +125 -0
- package/dist/editor/post-featured-image.js.map +1 -0
- package/dist/editor/simple-gutenberg-endpoints-api.js +26 -0
- package/dist/editor/simple-gutenberg-endpoints-api.js.map +1 -0
- package/{build → dist}/editor/simple-gutenberg-endpoints-impl.js +24 -17
- package/dist/editor/simple-gutenberg-endpoints-impl.js.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js +27 -0
- package/dist/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js.map +1 -0
- package/{build → dist}/lib/gutenberg-api-extensions-state/general-logic.js +12 -8
- package/dist/lib/gutenberg-api-extensions-state/general-logic.js.map +1 -0
- package/{build → dist}/lib/gutenberg-api-extensions-state/layered-block-styles-logic.js +10 -6
- package/dist/lib/gutenberg-api-extensions-state/layered-block-styles-logic.js.map +1 -0
- package/{build → dist}/lib/gutenberg-api-extensions-state/snp-logic.js +33 -26
- package/dist/lib/gutenberg-api-extensions-state/snp-logic.js.map +1 -0
- package/{build → dist}/lib/gutenberg-api-extensions-state.d.ts +2 -2
- package/dist/lib/gutenberg-api-extensions-state.js +52 -0
- package/dist/lib/gutenberg-api-extensions-state.js.map +1 -0
- package/{build → dist}/lib/helpers.d.ts +3 -4
- package/{build → dist}/lib/helpers.js +13 -6
- package/dist/lib/helpers.js.map +1 -0
- package/dist/lib/plaudit-icons/column-1.js +6 -0
- package/dist/lib/plaudit-icons/column-1.js.map +1 -0
- package/dist/lib/plaudit-icons/column-2.js +6 -0
- package/dist/lib/plaudit-icons/column-2.js.map +1 -0
- package/dist/lib/plaudit-icons/column-3.js +6 -0
- package/dist/lib/plaudit-icons/column-3.js.map +1 -0
- package/dist/lib/plaudit-icons/placement-center.js +6 -0
- package/dist/lib/plaudit-icons/placement-center.js.map +1 -0
- package/dist/lib/plaudit-icons/placement-end.js +6 -0
- package/dist/lib/plaudit-icons/placement-end.js.map +1 -0
- package/dist/lib/plaudit-icons/placement-start.js +6 -0
- package/dist/lib/plaudit-icons/placement-start.js.map +1 -0
- package/dist/lib/plaudit-icons/placement-stretch.js +6 -0
- package/dist/lib/plaudit-icons/placement-stretch.js.map +1 -0
- package/dist/lib/plaudit-icons/plaudit-icon.js +6 -0
- package/dist/lib/plaudit-icons/plaudit-icon.js.map +1 -0
- package/dist/lib/plaudit-icons/reusable-block-marker.js +6 -0
- package/{build → dist}/lib/plaudit-icons/reusable-block-marker.js.map +1 -1
- package/dist/lib/plaudit-icons.js +29 -0
- package/dist/lib/plaudit-icons.js.map +1 -0
- package/{build → dist}/lib/suspense/promise-handlers.js +16 -7
- package/dist/lib/suspense/promise-handlers.js.map +1 -0
- package/{build → dist}/lib/suspense.d.ts +2 -2
- package/dist/lib/suspense.js +31 -0
- package/dist/lib/suspense.js.map +1 -0
- package/{build → dist}/lib/useful-types.d.ts +4 -1
- package/dist/lib/useful-types.js +11 -0
- package/dist/lib/useful-types.js.map +1 -0
- package/package.json +23 -31
- package/src/blocks/MoveError.ts +7 -0
- package/src/blocks/PathError.ts +18 -0
- package/src/blocks/SNPFlexibleItemsListComponent.tsx +30 -0
- package/src/blocks/SNPGroupComponent.tsx +38 -0
- package/src/blocks/SNPListComponent.tsx +25 -0
- package/src/blocks/SNPTreeContext.tsx +13 -0
- package/src/blocks/basic-custom-block-bindings-support.tsx +243 -0
- package/src/blocks/common-native-property-constructors.tsx +877 -0
- package/src/blocks/conditions.ts +260 -0
- package/src/blocks/csnp-api.ts +214 -0
- package/src/blocks/data-controller-manager.ts +50 -0
- package/src/blocks/data-controller.ts +736 -0
- package/src/blocks/hooks/built-in-suspendable-option-protocols/select.ts +51 -0
- package/src/blocks/hooks/built-in-suspendable-option-protocols/settings.ts +70 -0
- package/src/blocks/hooks/useSuspendableOptions.ts +123 -0
- package/src/blocks/index.ts +20 -0
- package/src/blocks/layered-styles-api.ts +142 -0
- package/src/blocks/layered-styles-impl.ts +94 -0
- package/src/blocks/layout/LaidOutProperty.tsx +72 -0
- package/src/blocks/layout/LaidOutPropertyRow.tsx +22 -0
- package/src/blocks/layout/NodeContext.tsx +54 -0
- package/src/blocks/layout/PanelRoot.tsx +33 -0
- package/src/blocks/layout/TabsRoot.tsx +56 -0
- package/src/blocks/layout/ToolsPanelContext.tsx +22 -0
- package/src/blocks/shared-exportable-types.ts +6 -0
- package/src/blocks/shared-internal-types.ts +18 -0
- package/src/blocks/simple-block.tsx +74 -0
- package/src/blocks/simple-native-property-api.ts +170 -0
- package/src/blocks/simple-native-property-impl.tsx +329 -0
- package/src/blocks/simple-native-property-internal-shared.ts +46 -0
- package/src/blocks/snp-api.ts +5 -0
- package/src/blocks/snp-data-store.ts +66 -0
- package/src/blocks/utilities.ts +80 -0
- package/src/controls/AsynchronousFormTokenField.tsx +85 -0
- package/src/controls/BaseSortableItemsControl.tsx +84 -0
- package/src/controls/ExtendedFormTokenField.tsx +120 -0
- package/src/controls/ExtendedPostPicker.ts +57 -0
- package/src/controls/ExtendedRadioControl.tsx +107 -0
- package/src/controls/ExtendedTaxonomyPicker.tsx +100 -0
- package/src/controls/ExtendedTermPicker.tsx +62 -0
- package/src/controls/ExtendedTextareaControl.tsx +65 -0
- package/src/controls/ExtendedUserPicker.ts +56 -0
- package/src/controls/FullSizeToggleControl.tsx +94 -0
- package/src/controls/ImageControl.tsx +143 -0
- package/src/controls/InspectorPanel.tsx +37 -0
- package/src/controls/LazySuggestionsComboboxControl.tsx +62 -0
- package/src/controls/MultiSelectControl.tsx +59 -0
- package/src/controls/PickOne.tsx +84 -0
- package/src/controls/PromisableComponent.tsx +56 -0
- package/src/controls/ProperLinkControl.tsx +93 -0
- package/src/controls/SimpleToggle.tsx +9 -0
- package/src/controls/SortableFlexibleItemsControl.tsx +35 -0
- package/src/controls/SortableItemsControl.tsx +18 -0
- package/src/controls/basicNumericallyIdedItemPicker.tsx +76 -0
- package/src/controls/hooks/useImprovedTokenManager.ts +156 -0
- package/src/controls/hooks/useMultiSingleConversionLayer.ts +17 -0
- package/src/controls/hooks/useNonRenderingCounter.ts +6 -0
- package/src/controls/hooks/useOutputMemoizingFilter.ts +16 -0
- package/src/controls/hooks/useSortableItemsModel.ts +196 -0
- package/src/controls/hooks/useSuggestions.ts +91 -0
- package/src/controls/hooks/useTokenManager.ts +177 -0
- package/{build/controls/index.js → src/controls/index.ts} +3 -2
- package/src/controls/shared.ts +50 -0
- package/src/controls/types.ts +18 -0
- package/src/editor/post-featured-image.tsx +161 -0
- package/src/editor/simple-gutenberg-endpoints-api.ts +31 -0
- package/src/editor/simple-gutenberg-endpoints-impl.ts +119 -0
- package/src/index.ts +32 -0
- package/src/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.ts +34 -0
- package/src/lib/gutenberg-api-extensions-state/general-logic.ts +41 -0
- package/src/lib/gutenberg-api-extensions-state/layered-block-styles-logic.ts +42 -0
- package/src/lib/gutenberg-api-extensions-state/snp-logic.ts +240 -0
- package/src/lib/gutenberg-api-extensions-state.ts +69 -0
- package/src/lib/helpers.ts +113 -0
- package/src/lib/plaudit-icons/column-1.tsx +6 -0
- package/src/lib/plaudit-icons/column-2.tsx +6 -0
- package/src/lib/plaudit-icons/column-3.tsx +6 -0
- package/src/lib/plaudit-icons/placement-center.tsx +3 -0
- package/src/lib/plaudit-icons/placement-end.tsx +3 -0
- package/src/lib/plaudit-icons/placement-start.tsx +3 -0
- package/src/lib/plaudit-icons/placement-stretch.tsx +3 -0
- package/src/lib/plaudit-icons/plaudit-icon.tsx +4 -0
- package/src/lib/plaudit-icons/reusable-block-marker.tsx +3 -0
- package/{build/lib/plaudit-icons.js → src/lib/plaudit-icons.ts} +1 -1
- package/src/lib/suspense/promise-handlers.ts +72 -0
- package/src/lib/suspense.tsx +18 -0
- package/src/lib/useful-types.ts +65 -0
- package/build/blocks/MoveError.js +0 -6
- package/build/blocks/MoveError.js.map +0 -1
- package/build/blocks/PathError.js.map +0 -1
- package/build/blocks/SNPFlexibleItemsListComponent.js +0 -15
- package/build/blocks/SNPFlexibleItemsListComponent.js.map +0 -1
- package/build/blocks/SNPGroupComponent.js +0 -17
- package/build/blocks/SNPGroupComponent.js.map +0 -1
- package/build/blocks/SNPListComponent.js +0 -15
- package/build/blocks/SNPListComponent.js.map +0 -1
- package/build/blocks/SNPTreeContext.js +0 -10
- package/build/blocks/SNPTreeContext.js.map +0 -1
- package/build/blocks/basic-custom-block-bindings-support.js +0 -150
- package/build/blocks/basic-custom-block-bindings-support.js.map +0 -1
- package/build/blocks/common-native-property-constructors.d.ts +0 -208
- package/build/blocks/common-native-property-constructors.js.map +0 -1
- package/build/blocks/conditions.js.map +0 -1
- package/build/blocks/data-controller-manager.js.map +0 -1
- package/build/blocks/data-controller.js.map +0 -1
- package/build/blocks/hooks/built-in-suspendable-option-protocols/select.js.map +0 -1
- package/build/blocks/hooks/built-in-suspendable-option-protocols/settings.js.map +0 -1
- package/build/blocks/hooks/useSuspendableOptions.js.map +0 -1
- package/build/blocks/index.js +0 -15
- package/build/blocks/index.js.map +0 -1
- package/build/blocks/layered-styles-api.js.map +0 -1
- package/build/blocks/layered-styles-impl.js.map +0 -1
- package/build/blocks/layout/LaidOutProperty.js +0 -44
- package/build/blocks/layout/LaidOutProperty.js.map +0 -1
- package/build/blocks/layout/LaidOutPropertyRow.js +0 -12
- package/build/blocks/layout/LaidOutPropertyRow.js.map +0 -1
- package/build/blocks/layout/NodeContext.js +0 -37
- package/build/blocks/layout/NodeContext.js.map +0 -1
- package/build/blocks/layout/PanelRoot.js +0 -26
- package/build/blocks/layout/PanelRoot.js.map +0 -1
- package/build/blocks/layout/TabsRoot.js.map +0 -1
- package/build/blocks/layout/ToolsPanelContext.js +0 -18
- package/build/blocks/layout/ToolsPanelContext.js.map +0 -1
- package/build/blocks/shared-exportable-types.js +0 -2
- package/build/blocks/shared-internal-types.js +0 -2
- package/build/blocks/simple-block.js +0 -41
- package/build/blocks/simple-block.js.map +0 -1
- package/build/blocks/simple-native-property-api.js.map +0 -1
- package/build/blocks/simple-native-property-impl.js.map +0 -1
- package/build/blocks/simple-native-property-internal-shared.js.map +0 -1
- package/build/blocks/snp-api.js +0 -2
- package/build/blocks/snp-api.js.map +0 -1
- package/build/blocks/snp-data-store.js.map +0 -1
- package/build/blocks/utilities.js +0 -67
- package/build/blocks/utilities.js.map +0 -1
- package/build/controls/AsynchronousFormTokenField.js +0 -32
- package/build/controls/AsynchronousFormTokenField.js.map +0 -1
- package/build/controls/BaseSortableItemsControl.js +0 -22
- package/build/controls/BaseSortableItemsControl.js.map +0 -1
- package/build/controls/ExtendedFormTokenField.js +0 -58
- package/build/controls/ExtendedFormTokenField.js.map +0 -1
- package/build/controls/ExtendedPostPicker.js +0 -22
- package/build/controls/ExtendedPostPicker.js.map +0 -1
- package/build/controls/ExtendedRadioControl.d.ts +0 -10
- package/build/controls/ExtendedRadioControl.js +0 -30
- package/build/controls/ExtendedRadioControl.js.map +0 -1
- package/build/controls/ExtendedTaxonomyPicker.js +0 -68
- package/build/controls/ExtendedTaxonomyPicker.js.map +0 -1
- package/build/controls/ExtendedTermPicker.js +0 -27
- package/build/controls/ExtendedTermPicker.js.map +0 -1
- package/build/controls/ExtendedTextareaControl.d.ts +0 -14
- package/build/controls/ExtendedTextareaControl.js.map +0 -1
- package/build/controls/ExtendedUserPicker.js +0 -22
- package/build/controls/ExtendedUserPicker.js.map +0 -1
- package/build/controls/FullSizeToggleControl.js +0 -70
- package/build/controls/FullSizeToggleControl.js.map +0 -1
- package/build/controls/ImageControl.js +0 -76
- package/build/controls/ImageControl.js.map +0 -1
- package/build/controls/InspectorPanel.js +0 -26
- package/build/controls/InspectorPanel.js.map +0 -1
- package/build/controls/LazySuggestionsComboboxControl.js +0 -29
- package/build/controls/LazySuggestionsComboboxControl.js.map +0 -1
- package/build/controls/MultiSelectControl.js +0 -30
- package/build/controls/MultiSelectControl.js.map +0 -1
- package/build/controls/PickOne.js +0 -48
- package/build/controls/PickOne.js.map +0 -1
- package/build/controls/PromisableComponent.js.map +0 -1
- package/build/controls/ProperLinkControl.js +0 -56
- package/build/controls/ProperLinkControl.js.map +0 -1
- package/build/controls/SimpleToggle.js +0 -8
- package/build/controls/SimpleToggle.js.map +0 -1
- package/build/controls/SortableFlexibleItemsControl.js +0 -15
- package/build/controls/SortableFlexibleItemsControl.js.map +0 -1
- package/build/controls/SortableItemsControl.js +0 -12
- package/build/controls/SortableItemsControl.js.map +0 -1
- package/build/controls/basicNumericallyIdedItemPicker.js +0 -34
- package/build/controls/basicNumericallyIdedItemPicker.js.map +0 -1
- package/build/controls/hooks/useImprovedTokenManager.js.map +0 -1
- package/build/controls/hooks/useMultiSingleConversionLayer.js +0 -11
- package/build/controls/hooks/useMultiSingleConversionLayer.js.map +0 -1
- package/build/controls/hooks/useNonRenderingCounter.js +0 -6
- package/build/controls/hooks/useNonRenderingCounter.js.map +0 -1
- package/build/controls/hooks/useOutputMemoizingFilter.js.map +0 -1
- package/build/controls/hooks/useSortableItemsModel.js.map +0 -1
- package/build/controls/hooks/useSuggestions.js.map +0 -1
- package/build/controls/hooks/useTokenManager.js.map +0 -1
- package/build/controls/index.js.map +0 -1
- package/build/controls/shared.js.map +0 -1
- package/build/controls/types.js +0 -2
- package/build/editor/post-featured-image.js +0 -122
- package/build/editor/post-featured-image.js.map +0 -1
- package/build/editor/simple-gutenberg-endpoints-api.js +0 -22
- package/build/editor/simple-gutenberg-endpoints-api.js.map +0 -1
- package/build/editor/simple-gutenberg-endpoints-impl.js.map +0 -1
- package/build/index.js +0 -22
- package/build/index.js.map +0 -1
- package/build/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js +0 -23
- package/build/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.js.map +0 -1
- package/build/lib/gutenberg-api-extensions-state/general-logic.js.map +0 -1
- package/build/lib/gutenberg-api-extensions-state/layered-block-styles-logic.js.map +0 -1
- package/build/lib/gutenberg-api-extensions-state/snp-logic.js.map +0 -1
- package/build/lib/gutenberg-api-extensions-state.js +0 -48
- package/build/lib/gutenberg-api-extensions-state.js.map +0 -1
- package/build/lib/helpers.js.map +0 -1
- package/build/lib/plaudit-icons/column-1.js +0 -3
- package/build/lib/plaudit-icons/column-1.js.map +0 -1
- package/build/lib/plaudit-icons/column-2.js +0 -3
- package/build/lib/plaudit-icons/column-2.js.map +0 -1
- package/build/lib/plaudit-icons/column-3.js +0 -3
- package/build/lib/plaudit-icons/column-3.js.map +0 -1
- package/build/lib/plaudit-icons/placement-center.js +0 -3
- package/build/lib/plaudit-icons/placement-center.js.map +0 -1
- package/build/lib/plaudit-icons/placement-end.js +0 -3
- package/build/lib/plaudit-icons/placement-end.js.map +0 -1
- package/build/lib/plaudit-icons/placement-start.js +0 -3
- package/build/lib/plaudit-icons/placement-start.js.map +0 -1
- package/build/lib/plaudit-icons/placement-stretch.js +0 -3
- package/build/lib/plaudit-icons/placement-stretch.js.map +0 -1
- package/build/lib/plaudit-icons/plaudit-icon.js +0 -3
- package/build/lib/plaudit-icons/plaudit-icon.js.map +0 -1
- package/build/lib/plaudit-icons/reusable-block-marker.js +0 -3
- package/build/lib/plaudit-icons.js.map +0 -1
- package/build/lib/suspense/promise-handlers.js.map +0 -1
- package/build/lib/suspense.js +0 -14
- package/build/lib/suspense.js.map +0 -1
- package/build/lib/useful-types.js +0 -7
- package/build/lib/useful-types.js.map +0 -1
- /package/{build → dist}/blocks/MoveError.d.ts +0 -0
- /package/{build → dist}/blocks/PathError.d.ts +0 -0
- /package/{build → dist}/blocks/SNPTreeContext.d.ts +0 -0
- /package/{build → dist}/blocks/basic-custom-block-bindings-support.d.ts +0 -0
- /package/{build → dist}/blocks/conditions.d.ts +0 -0
- /package/{build → dist}/blocks/data-controller-manager.d.ts +0 -0
- /package/{build → dist}/blocks/data-controller.d.ts +0 -0
- /package/{build → dist}/blocks/hooks/built-in-suspendable-option-protocols/select.d.ts +0 -0
- /package/{build → dist}/blocks/hooks/built-in-suspendable-option-protocols/settings.d.ts +0 -0
- /package/{build → dist}/blocks/index.d.ts +0 -0
- /package/{build → dist}/blocks/layered-styles-impl.d.ts +0 -0
- /package/{build → dist}/blocks/layout/LaidOutPropertyRow.d.ts +0 -0
- /package/{build → dist}/blocks/layout/PanelRoot.d.ts +0 -0
- /package/{build → dist}/blocks/layout/TabsRoot.d.ts +0 -0
- /package/{build → dist}/blocks/layout/ToolsPanelContext.d.ts +0 -0
- /package/{build → dist}/blocks/shared-exportable-types.d.ts +0 -0
- /package/{build → dist}/blocks/shared-exportable-types.js.map +0 -0
- /package/{build → dist}/blocks/shared-internal-types.d.ts +0 -0
- /package/{build → dist}/blocks/shared-internal-types.js.map +0 -0
- /package/{build → dist}/blocks/simple-native-property-impl.d.ts +0 -0
- /package/{build → dist}/blocks/simple-native-property-internal-shared.d.ts +0 -0
- /package/{build → dist}/blocks/snp-data-store.d.ts +0 -0
- /package/{build → dist}/controls/ExtendedPostPicker.d.ts +0 -0
- /package/{build → dist}/controls/ExtendedUserPicker.d.ts +0 -0
- /package/{build → dist}/controls/SimpleToggle.d.ts +0 -0
- /package/{build → dist}/controls/SortableFlexibleItemsControl.d.ts +0 -0
- /package/{build → dist}/controls/SortableItemsControl.d.ts +0 -0
- /package/{build → dist}/controls/hooks/useNonRenderingCounter.d.ts +0 -0
- /package/{build → dist}/controls/hooks/useOutputMemoizingFilter.d.ts +0 -0
- /package/{build → dist}/controls/hooks/useSortableItemsModel.d.ts +0 -0
- /package/{build → dist}/controls/hooks/useSuggestions.d.ts +0 -0
- /package/{build → dist}/controls/index.d.ts +0 -0
- /package/{build → dist}/controls/shared.d.ts +0 -0
- /package/{build → dist}/controls/types.d.ts +0 -0
- /package/{build → dist}/controls/types.js.map +0 -0
- /package/{build → dist}/editor/post-featured-image.d.ts +0 -0
- /package/{build → dist}/editor/simple-gutenberg-endpoints-api.d.ts +0 -0
- /package/{build → dist}/editor/simple-gutenberg-endpoints-impl.d.ts +0 -0
- /package/{build → dist}/index.d.ts +0 -0
- /package/{build → dist}/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.d.ts +0 -0
- /package/{build → dist}/lib/gutenberg-api-extensions-state/general-logic.d.ts +0 -0
- /package/{build → dist}/lib/gutenberg-api-extensions-state/layered-block-styles-logic.d.ts +0 -0
- /package/{build → dist}/lib/gutenberg-api-extensions-state/snp-logic.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/column-1.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/column-2.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/column-3.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/placement-center.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/placement-end.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/placement-start.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/placement-stretch.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/plaudit-icon.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons/reusable-block-marker.d.ts +0 -0
- /package/{build → dist}/lib/plaudit-icons.d.ts +0 -0
- /package/{build → dist}/lib/suspense/promise-handlers.d.ts +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {InspectorControls} from "@wordpress/block-editor";
|
|
2
|
+
import {PanelBody} from "@wordpress/components";
|
|
3
|
+
import {cautionFilled} from "@wordpress/icons";
|
|
4
|
+
|
|
5
|
+
import {testCondition} from "../conditions";
|
|
6
|
+
import {LaidOutPropertyRow} from "./LaidOutPropertyRow";
|
|
7
|
+
import {HydratedSimpleNativePanel, isRootLevelPanelGroup} from "../simple-native-property-internal-shared";
|
|
8
|
+
import {useSNPTreeContext} from "../SNPTreeContext";
|
|
9
|
+
|
|
10
|
+
import type {ComponentPropsWithoutRef} from "react";
|
|
11
|
+
|
|
12
|
+
export type PanelRootProps = {panel: HydratedSimpleNativePanel};
|
|
13
|
+
export function PanelRoot({panel}: PanelRootProps) {
|
|
14
|
+
const {condition, properties, raw, ...panelBodyProps} = panel;
|
|
15
|
+
|
|
16
|
+
const dataController = useSNPTreeContext("construct a PanelRoot");
|
|
17
|
+
|
|
18
|
+
if (!dataController.hasRenderedNode(properties)
|
|
19
|
+
|| !testCondition(condition, dataController.makePropertyValueResolver([]))) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const bonusProps: Partial<ComponentPropsWithoutRef<typeof PanelBody>> = dataController.hasValidationErrors(properties)
|
|
24
|
+
? {icon: cautionFilled, buttonProps: {className: "has-validation-error components-panel__body-toggle"}} //We have to include the default button class for some insane reason
|
|
25
|
+
: {};
|
|
26
|
+
|
|
27
|
+
const panelGroup = panel.group === 'layered-styles' ? 'styles' : panel.group;
|
|
28
|
+
const children = properties.map(property => {
|
|
29
|
+
const key = Array.isArray(property) ? property.map(prop => prop.name).join('-') : property.name;
|
|
30
|
+
return <LaidOutPropertyRow key={key} property={property} dataController={dataController}/>;
|
|
31
|
+
});
|
|
32
|
+
return <InspectorControls group={panelGroup} children={(raw ?? !isRootLevelPanelGroup(panelGroup)) ? children : <PanelBody {...panelBodyProps} {...bonusProps} children={children} />} />;
|
|
33
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {InspectorControls} from "@wordpress/block-editor";
|
|
2
|
+
import {PanelBody, TabPanel} from "@wordpress/components";
|
|
3
|
+
|
|
4
|
+
import {testCondition} from "../conditions";
|
|
5
|
+
import {LaidOutPropertyRow} from "./LaidOutPropertyRow";
|
|
6
|
+
import type {DataController, InspectorPanelGroup} from "../simple-native-property-api";
|
|
7
|
+
import type {HydratedSimpleNativeTab, HydratedSimpleNativeTabItem, HydratedSimpleNativeTabGroup} from "../simple-native-property-internal-shared";
|
|
8
|
+
import {useSNPTreeContext} from "../SNPTreeContext";
|
|
9
|
+
|
|
10
|
+
import type {ComponentPropsWithoutRef, ReactNode} from "react";
|
|
11
|
+
|
|
12
|
+
type Tab = ComponentPropsWithoutRef<typeof TabPanel>['tabs'][number]&{panels: [boolean, HydratedSimpleNativeTab['items'][number], string][]};
|
|
13
|
+
|
|
14
|
+
export type TabsRootProps = {tabs: HydratedSimpleNativeTabGroup, tabGroupName: InspectorPanelGroup};
|
|
15
|
+
export function TabsRoot({tabs, tabGroupName}: TabsRootProps) {
|
|
16
|
+
//TODO: It should be possible to use immer to make this entire thing memoized
|
|
17
|
+
const dataController = useSNPTreeContext("construct a TabsRoot component");
|
|
18
|
+
const instantiatedTabs = instantiateTabsForRenderCycle(tabs, dataController);
|
|
19
|
+
if (instantiatedTabs.every(tab => tab.disabled)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return <InspectorControls group={tabGroupName}>
|
|
23
|
+
<TabPanel tabs={instantiatedTabs} children={tab => (tab as Tab).panels
|
|
24
|
+
.filter(([rendered]) => rendered)
|
|
25
|
+
.map(([_, panel, key]) => <RenderedTabPanel dataController={dataController} panel={panel} key={key} />)} />
|
|
26
|
+
</InspectorControls>;
|
|
27
|
+
}
|
|
28
|
+
//TODO: Figure out how to memoize this (will probably need some sort of panel/tab-based cache in the dataController)
|
|
29
|
+
function instantiateTabsForRenderCycle(hydratedTabs: {[name: string]: HydratedSimpleNativeTab}, dataController: DataController): Tab[] {
|
|
30
|
+
const propertyValueResolver = dataController.makePropertyValueResolver([]);
|
|
31
|
+
return Object.entries(hydratedTabs).map(([name, hydratedTab]) => {
|
|
32
|
+
const instantiatedPanels: Tab['panels'] = [];
|
|
33
|
+
let disabled = true;
|
|
34
|
+
let index = 0;
|
|
35
|
+
let hasValidationErrors = false;
|
|
36
|
+
for (const panel of hydratedTab.items) {
|
|
37
|
+
const rendered = dataController.hasRenderedNode(panel.properties) && (panel.condition === undefined || testCondition(panel.condition, propertyValueResolver));
|
|
38
|
+
if (rendered) {
|
|
39
|
+
if (!hasValidationErrors && dataController.hasValidationErrors(panel.properties)) {
|
|
40
|
+
hasValidationErrors = true;
|
|
41
|
+
}
|
|
42
|
+
disabled = false;
|
|
43
|
+
}
|
|
44
|
+
instantiatedPanels.push([rendered, panel, `rendered-tab-panel-${name}-${panel.title?.replaceAll(/\W+/gi, "-") ?? ""}-${index++}`]);
|
|
45
|
+
}
|
|
46
|
+
return {name, title: hydratedTab.title, panels: instantiatedPanels, disabled, className: hasValidationErrors ? "has-validation-error components-tab-panel__tabs-item" : undefined};
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
type RenderedTabPanelProps = {dataController: DataController, panel: HydratedSimpleNativeTabItem};
|
|
51
|
+
function RenderedTabPanel({dataController, panel}: RenderedTabPanelProps): ReactNode {
|
|
52
|
+
// We have already tested the rendered-ness of the Panel earlier, so there's no need to redo it
|
|
53
|
+
const {condition, properties, raw, ...panelBodyProps} = panel;
|
|
54
|
+
const children = properties.map(property => <LaidOutPropertyRow property={property} dataController={dataController} />);
|
|
55
|
+
return raw ? children : <PanelBody {...panelBodyProps} opened={panelBodyProps.title ? undefined : true} children={children} />;
|
|
56
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {createContext, useContext, useMemo} from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
export type ToolsPanelContextValue = {getDefaultValue(name: string): unknown, panelId: string};
|
|
4
|
+
|
|
5
|
+
export const ToolsPanelContext = createContext<ToolsPanelContextValue|undefined>(undefined);
|
|
6
|
+
|
|
7
|
+
let nextPanelId = 0;
|
|
8
|
+
export function makeToolsPanelContextValue(actualDefaultValues: {[key in string]: unknown}): ToolsPanelContextValue {
|
|
9
|
+
const panelId = useMemo(() => (nextPanelId++).toString(), []);
|
|
10
|
+
return useMemo(() => ({
|
|
11
|
+
panelId,
|
|
12
|
+
getDefaultValue: (name: string) => actualDefaultValues[name]
|
|
13
|
+
}), [panelId, actualDefaultValues]);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function useToolsPanelContext(action: string): ToolsPanelContextValue {
|
|
17
|
+
const currentContext = useContext(ToolsPanelContext);
|
|
18
|
+
if (currentContext === undefined) {
|
|
19
|
+
throw new Error(`Cannot ${action} outside of an existing ToolsPanelContext`);
|
|
20
|
+
}
|
|
21
|
+
return currentContext;
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type {PlauditIconName, WordPressIconName} from "./shared-internal-types";
|
|
2
|
+
|
|
3
|
+
import type {ReactElement} from "react";
|
|
4
|
+
|
|
5
|
+
export type IconName = WordPressIconName|`plaudit:${PlauditIconName}`|`<svg${string}`;
|
|
6
|
+
export type OptionalLabel = string|{text: string, icon?: ReactElement|IconName, tooltip?: string}|undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as icons from "@wordpress/icons";
|
|
2
|
+
|
|
3
|
+
import type * as plauditIcons from "../lib/plaudit-icons";
|
|
4
|
+
import type {OptionalLabel} from "./shared-exportable-types";
|
|
5
|
+
|
|
6
|
+
export type PlauditIconName = keyof typeof plauditIcons;
|
|
7
|
+
export type WordPressIconName = Exclude<keyof typeof icons, 'Icon'>;
|
|
8
|
+
|
|
9
|
+
export type NamedSwitchTypes = "showHide"|"yesNo";
|
|
10
|
+
export type BaseSwitch = {onLabel?: OptionalLabel, offLabel?: OptionalLabel, type?: NamedSwitchTypes};
|
|
11
|
+
export type SmallSwitch = {small: true}&BaseSwitch;
|
|
12
|
+
export type NormalSwitch = ({small?: false|undefined, narrow?: boolean}&BaseSwitch)|NamedSwitchTypes;
|
|
13
|
+
|
|
14
|
+
export type CSNPControlComponentProps<C, V, P extends {[key: Exclude<string, 'config'|'onChange'|'value'>]: any} = {}> = {
|
|
15
|
+
config: C,
|
|
16
|
+
onChange: (v: V|undefined) => void,
|
|
17
|
+
value: V|undefined
|
|
18
|
+
}&P;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {type Block, type BlockConfiguration, type BlockSaveProps, registerBlockType} from "@wordpress/blocks";
|
|
2
|
+
import {InnerBlocks, useBlockProps, useInnerBlocksProps} from "@wordpress/block-editor";
|
|
3
|
+
import type {UseBlockProps} from "@wordpress/block-editor/components/use-block-props";
|
|
4
|
+
|
|
5
|
+
import {plauditIcon} from "../lib/plaudit-icons";
|
|
6
|
+
|
|
7
|
+
import type {ComponentType, ReactNode} from "react";
|
|
8
|
+
|
|
9
|
+
export type SimpleBlockTypeConfig<TAttributes extends Record<string, any>> = {
|
|
10
|
+
icon?: BlockConfiguration<TAttributes>['icon']|undefined,
|
|
11
|
+
defaults?: Required<TAttributes>,
|
|
12
|
+
controls?: NonNullable<Block<TAttributes>['edit']>,
|
|
13
|
+
renderer: (attributes: BlockSaveProps<TAttributes>, wrapperProps: UseBlockProps|UseBlockProps['save'], InnerBlocks: () => React.ReactElement, mode: "edit"|"save") => ReactNode,
|
|
14
|
+
innerBlocksProps?: InnerBlocks.Props,
|
|
15
|
+
settings?: Partial<BlockConfiguration<TAttributes>>,
|
|
16
|
+
};
|
|
17
|
+
function applyDefaults<TAttributes extends Record<string, any>, K extends BlockSaveProps<TAttributes>>(
|
|
18
|
+
config: Omit<SimpleBlockTypeConfig<TAttributes>, 'renderer'>, props: K
|
|
19
|
+
) {
|
|
20
|
+
type attrs = { [P in keyof K['attributes']]: K['attributes'][P] };
|
|
21
|
+
const mutableProps = {...props, attributes: {...props.attributes}} as Omit<typeof props, 'attributes'>&{attributes: attrs};
|
|
22
|
+
for (const [k, v] of Object.entries(config.defaults ?? {}) as Array<[keyof typeof mutableProps.attributes, any]>) {
|
|
23
|
+
if (mutableProps.attributes[k] === undefined) {
|
|
24
|
+
mutableProps.attributes[k] = v;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return mutableProps;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function registerSimpleBlockType<TAttributes extends Record<string, any> = {}>(
|
|
31
|
+
metadata: BlockConfiguration<TAttributes>, config: SimpleBlockTypeConfig<TAttributes>
|
|
32
|
+
): Block<TAttributes>|undefined {
|
|
33
|
+
return registerBlockType<TAttributes>(metadata, {
|
|
34
|
+
...config.settings,
|
|
35
|
+
icon: config.icon ?? plauditIcon,
|
|
36
|
+
edit(props) {
|
|
37
|
+
const populatedProps = applyDefaults(config, props);
|
|
38
|
+
return <>
|
|
39
|
+
{config.controls && <config.controls {...populatedProps} />}
|
|
40
|
+
{config.renderer(populatedProps, useBlockProps, () => <InnerBlocks {...config.innerBlocksProps} />, "edit")}
|
|
41
|
+
</>;
|
|
42
|
+
},
|
|
43
|
+
save(props) {
|
|
44
|
+
return config.renderer(applyDefaults(config, props), useBlockProps.save, () => <InnerBlocks.Content />, "save");
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
type SimpleContainerTypeConfig<TAttributes extends Record<string, any>> = Omit<SimpleBlockTypeConfig<TAttributes>, 'renderer'>&{
|
|
50
|
+
tag?: ComponentType,
|
|
51
|
+
attributesFromProps?: (arg: ReturnType<typeof applyDefaults<TAttributes, BlockSaveProps<TAttributes>>>, mode: "edit"|"save") => Parameters<UseBlockProps|UseBlockProps['save']>[0]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function registerSimpleContainerBlock<TAttributes extends Record<string, any> = {}>(
|
|
55
|
+
metadata: BlockConfiguration<TAttributes>, config: SimpleContainerTypeConfig<TAttributes>
|
|
56
|
+
): Block<TAttributes>|undefined {
|
|
57
|
+
const Tag = config.tag ?? ((props: any) => <div {...props} />);
|
|
58
|
+
return registerBlockType<TAttributes>(metadata, {
|
|
59
|
+
...config.settings,
|
|
60
|
+
icon: config.icon ?? plauditIcon,
|
|
61
|
+
edit(props) {
|
|
62
|
+
const populatedProps = applyDefaults(config, props);
|
|
63
|
+
return <>
|
|
64
|
+
{config.controls && <config.controls {...populatedProps} />}
|
|
65
|
+
<Tag {...useInnerBlocksProps(useBlockProps(
|
|
66
|
+
(config.attributesFromProps ?? (() => ({} as Parameters<UseBlockProps>[0])))(populatedProps, "edit")), config.innerBlocksProps)} />
|
|
67
|
+
</>;
|
|
68
|
+
},
|
|
69
|
+
save(props) {
|
|
70
|
+
return <Tag {...useInnerBlocksProps.save(useBlockProps.save(
|
|
71
|
+
(config.attributesFromProps ?? (() => ({} as Parameters<UseBlockProps['save']>[0])))(applyDefaults(config, props), "edit")))} />;
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type {configureStore} from "@reduxjs/toolkit/src/configureStore";
|
|
2
|
+
|
|
3
|
+
import type {createSlotFill} from "@wordpress/components";
|
|
4
|
+
import {dispatch, select} from "@wordpress/data";
|
|
5
|
+
|
|
6
|
+
import type {CSNPConfig} from "./csnp-api";
|
|
7
|
+
import type {Condition} from "./conditions";
|
|
8
|
+
import type {DataControllerActions, DCNode, DCStoreState} from "./data-controller";
|
|
9
|
+
import {installGutenbergExtensions} from "../index";
|
|
10
|
+
import type {ActualBlockEditProps, BlockName} from "../lib/useful-types";
|
|
11
|
+
import type {HydratedLaidOutProperties} from "./simple-native-property-internal-shared";
|
|
12
|
+
|
|
13
|
+
import type {ReactElement, ReactNode} from "react";
|
|
14
|
+
|
|
15
|
+
export type InspectorPanelGroup = 'layered-styles'|'post'|'default'|'advanced'|'background'|'border'|'color'|'dimensions'|'effects'|'filter'|'list'|'position'|'settings'|'styles'|'typography';
|
|
16
|
+
export type {Condition, ConditionFunction, ConditionStruct} from './conditions';
|
|
17
|
+
|
|
18
|
+
export interface DataStore<B = unknown> {
|
|
19
|
+
getValue(name: string): any;
|
|
20
|
+
setValue(name: string, value: any): void;
|
|
21
|
+
|
|
22
|
+
reattach(blockEditProps: B, attributeCache: Record<string, any>): DataStore<B>;
|
|
23
|
+
|
|
24
|
+
handlesProperty(name: string): boolean;
|
|
25
|
+
|
|
26
|
+
addProperty(property: HydratedSimpleNativeProperty, writeThroughOnUndefined?: boolean): void;
|
|
27
|
+
|
|
28
|
+
blockEditProps: ActualBlockEditProps;
|
|
29
|
+
}
|
|
30
|
+
export type RawPath = (string|number)[];
|
|
31
|
+
export type NodePath = [string, ...(string|number)[]];
|
|
32
|
+
export type DataController = {
|
|
33
|
+
dispatch: ReturnType<typeof configureStore<DCStoreState, DataControllerActions, []>>['dispatch'],
|
|
34
|
+
getDataStore(property: string, required: true): DataStore,
|
|
35
|
+
getDataStore(property: string, required?: undefined|false): DataStore|undefined,
|
|
36
|
+
getDataStore(property: string, required?: boolean): DataStore|undefined,
|
|
37
|
+
getAllDataStores(): DataStore[],
|
|
38
|
+
makePropertyValueResolver(contextPath: RawPath): (propertyPath: RawPath) => any,
|
|
39
|
+
|
|
40
|
+
getValue(path: NodePath): any|undefined,
|
|
41
|
+
setValue(path: NodePath, value: any): void,
|
|
42
|
+
|
|
43
|
+
addProperties(properties: HydratedLaidOutProperties, dataStore: DataStore, inBatch?: boolean): void,
|
|
44
|
+
addNode(path: NodePath, value?: any): void,
|
|
45
|
+
removeNode(path: NodePath): void,
|
|
46
|
+
moveNode(path: NodePath, indices: {from: number, to: number}|{from: string, to: string}): void,
|
|
47
|
+
|
|
48
|
+
hasRenderedNode(properties: HydratedLaidOutProperties): boolean,
|
|
49
|
+
hasValidationErrors(properties?: HydratedLaidOutProperties): boolean,
|
|
50
|
+
getIsRendered(path: NodePath): boolean,
|
|
51
|
+
getNode(path: NodePath): DCNode,
|
|
52
|
+
getValidationError(path: NodePath): string|undefined,
|
|
53
|
+
|
|
54
|
+
getWasChangedByManagedControl(): boolean,
|
|
55
|
+
markManagedControlChangeHandled(): void,
|
|
56
|
+
blockClientId: string
|
|
57
|
+
};
|
|
58
|
+
export enum NodeMessageSeverity {
|
|
59
|
+
info,
|
|
60
|
+
warning,
|
|
61
|
+
error
|
|
62
|
+
}
|
|
63
|
+
export type NodeMessage = {
|
|
64
|
+
message: string,
|
|
65
|
+
severity: NodeMessageSeverity
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export type ProvidedSlot = ReturnType<typeof createSlotFill>['Slot'];
|
|
69
|
+
export type SimpleNativePropertyType = 'string'|'number'|'boolean'|'array'|'object';
|
|
70
|
+
export type SNPControlProps<T> = {value: T|undefined, onChange: (v: T|undefined) => void, slots: SNPControlSlots};
|
|
71
|
+
export type GenericSimpleNativeProperty<T, V extends SimpleNativePropertyType> = {
|
|
72
|
+
name: string,
|
|
73
|
+
label?: string,
|
|
74
|
+
type: V,
|
|
75
|
+
enum?: T[],
|
|
76
|
+
default?: T,
|
|
77
|
+
alwaysStore?: boolean|undefined,
|
|
78
|
+
control(props: SNPControlProps<T>): ReactElement,
|
|
79
|
+
condition?: Condition,
|
|
80
|
+
required?: boolean,
|
|
81
|
+
validator?(value: T|undefined): string|null|undefined,
|
|
82
|
+
transformer?: {
|
|
83
|
+
to(input: unknown): T|undefined,
|
|
84
|
+
from(value: T|undefined): any
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
export type SimpleNativeProperty = GenericSimpleNativeProperty<string, 'string'>&{enum?: string[], styleProperty?: string}
|
|
88
|
+
|GenericSimpleNativeProperty<number, 'number'>&{enum?: number[], styleProperty?: string}
|
|
89
|
+
|GenericSimpleNativeProperty<boolean, 'boolean'>
|
|
90
|
+
|GenericSimpleNativeProperty<any[], 'array'>
|
|
91
|
+
|GenericSimpleNativeProperty<Record<string|number, unknown>, 'object'>;
|
|
92
|
+
|
|
93
|
+
export type PDSimpleNativeProperty = SimpleNativeProperty|CSNPConfig;
|
|
94
|
+
export type PotentiallyDesiccatedSimpleNativeProperty = PDSimpleNativeProperty;
|
|
95
|
+
|
|
96
|
+
export type HydratedSimpleNativeProperty = SimpleNativeProperty
|
|
97
|
+
&{children?: {[subtype: string]: HydratedSimpleNativeProperty[]}|HydratedSimpleNativeProperty[], controlType?: string, branching?: boolean, initializing?: ReactNode|(() => ReactNode)};
|
|
98
|
+
export type SNPControlSlots = {Label: ProvidedSlot, Messages: ProvidedSlot};
|
|
99
|
+
|
|
100
|
+
export type LaidOutProperties = Array<PDSimpleNativeProperty|Array<PDSimpleNativeProperty>>;
|
|
101
|
+
export type SimpleNativePanel = {
|
|
102
|
+
title: string,
|
|
103
|
+
group?: InspectorPanelGroup,
|
|
104
|
+
initialOpen?: boolean,
|
|
105
|
+
properties: LaidOutProperties,
|
|
106
|
+
condition?: Condition,
|
|
107
|
+
position?: number,
|
|
108
|
+
raw?: boolean,
|
|
109
|
+
identifier?: any
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export type SimpleNativeTab = {
|
|
113
|
+
title: string,
|
|
114
|
+
group?: InspectorPanelGroup,
|
|
115
|
+
items: Array<Omit<SimpleNativePanel, 'group'>|LaidOutProperties[number]>,
|
|
116
|
+
identifier?: any
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export type PropertiesParameter = SimpleNativePanel|SimpleNativeTab|Array<LaidOutProperties[number]|SimpleNativePanel|SimpleNativeTab>;
|
|
120
|
+
|
|
121
|
+
export function registerSimpleNativeProperties(config: {block: BlockName|Array<BlockName>, properties: PropertiesParameter}) {
|
|
122
|
+
dispatch('plaudit/gutenberg-api-extensions').addProperties(config.block, config.properties);
|
|
123
|
+
}
|
|
124
|
+
export function getSimpleNativeProperties(block: BlockName): Array<PDSimpleNativeProperty>|undefined {
|
|
125
|
+
const panelsAndTabs = select('plaudit/gutenberg-api-extensions').desiccatedProperties(block);
|
|
126
|
+
if (panelsAndTabs === undefined) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const res: PDSimpleNativeProperty[] = [];
|
|
130
|
+
for (const panelOrTab of panelsAndTabs) {
|
|
131
|
+
if ('items' in panelOrTab) {
|
|
132
|
+
for (const item of panelOrTab.items) {
|
|
133
|
+
if ('properties' in item) {
|
|
134
|
+
res.push(...flattenLaidOutProperties(item.properties));
|
|
135
|
+
} else if (Array.isArray(item)) {
|
|
136
|
+
res.push(...flattenLaidOutProperties(item));
|
|
137
|
+
} else {
|
|
138
|
+
res.push(item);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
for (const property of panelOrTab.properties) {
|
|
143
|
+
if (Array.isArray(property)) {
|
|
144
|
+
res.push(...flattenLaidOutProperties(property));
|
|
145
|
+
} else {
|
|
146
|
+
res.push(property);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return res;
|
|
152
|
+
}
|
|
153
|
+
function flattenLaidOutProperties(properties: LaidOutProperties): PDSimpleNativeProperty[] {
|
|
154
|
+
const res: PDSimpleNativeProperty[] = [];
|
|
155
|
+
for (const property of properties) {
|
|
156
|
+
if (Array.isArray(property)) {
|
|
157
|
+
res.push(...flattenLaidOutProperties(property));
|
|
158
|
+
} else {
|
|
159
|
+
res.push(property);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return res;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @deprecated use installGutenbergExtensions() instead.
|
|
167
|
+
*/
|
|
168
|
+
export function installSimpleNativePropertiesSupport() {
|
|
169
|
+
installGutenbergExtensions();
|
|
170
|
+
}
|