@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
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isWrappedPromise = isWrappedPromise;
|
|
4
|
+
exports.use = use;
|
|
5
|
+
exports.useImmediately = useImmediately;
|
|
6
|
+
exports.useToPromise = useToPromise;
|
|
7
|
+
exports.wrapPromise = wrapPromise;
|
|
8
|
+
exports.getPromiseState = getPromiseState;
|
|
9
|
+
exports.isPromise = isPromise;
|
|
10
|
+
function isWrappedPromise(promise) {
|
|
2
11
|
return 'status' in promise
|
|
3
12
|
&& (promise.status === 'pending' || (promise.status === 'fulfilled' && 'value' in promise) || (promise.status === 'rejected' && 'reason' in promise));
|
|
4
13
|
}
|
|
5
|
-
|
|
14
|
+
function use(promise) {
|
|
6
15
|
switch (promise.status) {
|
|
7
16
|
case "pending":
|
|
8
17
|
throw promise;
|
|
@@ -14,7 +23,7 @@ export function use(promise) {
|
|
|
14
23
|
return use(actuallyWrapPromise(promise));
|
|
15
24
|
}
|
|
16
25
|
}
|
|
17
|
-
|
|
26
|
+
function useImmediately(promise) {
|
|
18
27
|
switch (promise.status) {
|
|
19
28
|
case "pending":
|
|
20
29
|
return undefined;
|
|
@@ -26,7 +35,7 @@ export function useImmediately(promise) {
|
|
|
26
35
|
return useImmediately(actuallyWrapPromise(promise));
|
|
27
36
|
}
|
|
28
37
|
}
|
|
29
|
-
|
|
38
|
+
function useToPromise(promise) {
|
|
30
39
|
switch (promise.status) {
|
|
31
40
|
case "pending":
|
|
32
41
|
throw promise;
|
|
@@ -38,7 +47,7 @@ export function useToPromise(promise) {
|
|
|
38
47
|
return useToPromise(actuallyWrapPromise(promise));
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
|
-
|
|
50
|
+
function wrapPromise(promise) {
|
|
42
51
|
return isWrappedPromise(promise) ? promise : actuallyWrapPromise(promise);
|
|
43
52
|
}
|
|
44
53
|
function actuallyWrapPromise(promise) {
|
|
@@ -52,10 +61,10 @@ function actuallyWrapPromise(promise) {
|
|
|
52
61
|
});
|
|
53
62
|
return promise;
|
|
54
63
|
}
|
|
55
|
-
|
|
64
|
+
function getPromiseState(promise) {
|
|
56
65
|
return wrapPromise(promise).status;
|
|
57
66
|
}
|
|
58
|
-
|
|
67
|
+
function isPromise(value) {
|
|
59
68
|
return typeof value === 'object' && !!value && ('then' in value) && typeof value['then'] === 'function';
|
|
60
69
|
}
|
|
61
70
|
//# 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,4CAGC;AAED,kBAWC;AAED,wCAWC;AAED,oCAWC;AAED,kCAEC;AAgBD,0CAEC;AAED,8BAEC;AApED,SAAgB,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,SAAgB,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,SAAgB,cAAc,CAAI,OAAmC;IACpE,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,OAAO,CAAC,KAAK,CAAC;QACtB,KAAK,UAAU;YACd,MAAM,OAAO,CAAC,MAAM,CAAC;QACtB;YACC,OAAO,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;AACF,CAAC;AAED,SAAgB,YAAY,CAAI,OAAmC;IAClE,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,SAAS;YACb,MAAM,OAAO,CAAC;QACf,KAAK,WAAW;YACf,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,UAAU;YACd,MAAM,OAAO,CAAC,MAAM,CAAC;QACtB;YACC,OAAO,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;AACF,CAAC;AAED,SAAgB,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,SAAgB,eAAe,CAAC,OAAqC;IACpE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AAED,SAAgB,SAAS,CAAI,KAAU;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;AACzG,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./suspense/promise-handlers";
|
|
2
|
-
import
|
|
2
|
+
import { type ReactNode, type SuspenseProps } from "react";
|
|
3
3
|
type OptionallySuspensefulProps = Omit<SuspenseProps, 'children'> & {
|
|
4
4
|
children: ReactNode | (() => ReactNode);
|
|
5
5
|
hasSuspensefulOptions: (() => boolean) | boolean;
|
|
6
6
|
};
|
|
7
|
-
export declare function OptionallySuspenseful({ children: Children, hasSuspensefulOptions, ...props }: OptionallySuspensefulProps): string | number | boolean | Iterable<
|
|
7
|
+
export declare function OptionallySuspenseful({ children: Children, hasSuspensefulOptions, ...props }: OptionallySuspensefulProps): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.OptionallySuspenseful = OptionallySuspenseful;
|
|
18
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
|
+
const components_1 = require("@wordpress/components");
|
|
20
|
+
const controls_1 = require("../controls");
|
|
21
|
+
__exportStar(require("./suspense/promise-handlers"), exports);
|
|
22
|
+
const react_1 = require("react");
|
|
23
|
+
function OptionallySuspenseful({ children: Children, hasSuspensefulOptions, ...props }) {
|
|
24
|
+
if (typeof hasSuspensefulOptions === 'function' ? hasSuspensefulOptions() : hasSuspensefulOptions) {
|
|
25
|
+
return (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsxs)(controls_1.InspectorPanel, { opened: true, initialOpen: true, children: [(0, jsx_runtime_1.jsx)(components_1.Spinner, {}), " Loading options"] }), ...props, children: typeof Children === 'function' ? (0, jsx_runtime_1.jsx)(Children, {}) : Children });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return typeof Children === 'function' ? (0, jsx_runtime_1.jsx)(Children, {}) : Children;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=suspense.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspense.js","sourceRoot":"","sources":["../../src/lib/suspense.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,sDAQC;;AAjBD,sDAA8C;AAE9C,0CAA2C;AAE3C,8DAA4C;AAE5C,iCAAmE;AAGnE,SAAgB,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,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,wBAAC,yBAAc,IAAC,MAAM,QAAC,WAAW,mBAAC,uBAAC,oBAAO,KAAE,wBAAiC,KAAM,KAAK,YACnH,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAC,QAAQ,KAAE,CAAC,CAAC,CAAC,QAAQ,GAC5C,CAAC;IACd,CAAC;SAAM,CAAC;QACP,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAC,QAAQ,KAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,CAAC;AACF,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Block, BlockSupports } from "@wordpress/blocks";
|
|
2
2
|
import { dispatch, select, StoreDescriptor } from "@wordpress/data";
|
|
3
|
-
import
|
|
3
|
+
import { FormTokenField } from '@wordpress/components';
|
|
4
|
+
import type * as MetaActions from "@wordpress/data/redux-store/metadata/actions";
|
|
5
|
+
import type { ComponentProps } from "react";
|
|
4
6
|
import type { PropertiesParameter } from "../blocks";
|
|
7
|
+
export type TokenItem = Exclude<NonNullable<ComponentProps<typeof FormTokenField>['value']>[number], string>;
|
|
5
8
|
export type NormalizedReduxActionExtractor<V> = V extends {
|
|
6
9
|
[key in string]: (...args: any[]) => infer R;
|
|
7
10
|
} ? NormalizedReduxActionExtractor<R> : V extends {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBlockJsonNativePropsConfig = isBlockJsonNativePropsConfig;
|
|
4
|
+
exports.arrayIsNotEmpty = arrayIsNotEmpty;
|
|
5
|
+
function isBlockJsonNativePropsConfig(thing) {
|
|
6
|
+
return typeof thing === 'object' && thing !== null && 'type' in thing && thing.type === "native";
|
|
7
|
+
}
|
|
8
|
+
function arrayIsNotEmpty(arr) {
|
|
9
|
+
return !!arr && arr.length > 0;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=useful-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useful-types.js","sourceRoot":"","sources":["../../src/lib/useful-types.ts"],"names":[],"mappings":";;AAuCA,oEAEC;AAGD,0CAEC;AAPD,SAAgB,4BAA4B,CAAC,KAAc;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClG,CAAC;AAGD,SAAgB,eAAe,CAAI,GAAuB;IACzD,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,47 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plaudit/gutenberg-api-extensions",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.80.1",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
5
5
|
"files": [
|
|
6
|
-
"./
|
|
7
|
-
"./styles"
|
|
6
|
+
"./dist",
|
|
7
|
+
"./styles",
|
|
8
|
+
"./src"
|
|
8
9
|
],
|
|
9
10
|
"sideEffects": false,
|
|
10
11
|
"exports": {
|
|
11
|
-
".":
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"./
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"./blocks": {
|
|
18
|
-
"default": "./build/blocks/index.js"
|
|
19
|
-
},
|
|
20
|
-
"./blocks/snp-api": {
|
|
21
|
-
"default": "./build/blocks/snp-api.js"
|
|
22
|
-
},
|
|
23
|
-
"./controls": {
|
|
24
|
-
"default": "./build/controls/index.js"
|
|
25
|
-
}
|
|
12
|
+
".": "./dist/index.js",
|
|
13
|
+
"./lib/plaudit-icons": "./dist/lib/plaudit-icons.js",
|
|
14
|
+
"./blocks": "./dist/blocks/index.js",
|
|
15
|
+
"./blocks/csnp-api": "./dist/blocks/csnp-api.js",
|
|
16
|
+
"./blocks/snp-api": "./dist/blocks/snp-api.js",
|
|
17
|
+
"./controls": "./dist/controls/index.js"
|
|
26
18
|
},
|
|
27
19
|
"dependencies": {
|
|
28
20
|
"@reduxjs/toolkit": "^1.9.7",
|
|
29
|
-
"@types/react": "^18.3.
|
|
21
|
+
"@types/react": "^18.3.27",
|
|
30
22
|
"@types/wordpress__block-editor": "^14.21.2",
|
|
31
23
|
"@types/wordpress__blocks": "^12.5.18",
|
|
32
|
-
"@wordpress/block-editor": "^
|
|
33
|
-
"@wordpress/blocks": "^
|
|
34
|
-
"@wordpress/components": "^
|
|
35
|
-
"@wordpress/compose": "^7.
|
|
36
|
-
"@wordpress/core-data": "^7.
|
|
37
|
-
"@wordpress/data": "^10.
|
|
38
|
-
"@wordpress/editor": "^14.
|
|
39
|
-
"@wordpress/element": "^6.
|
|
40
|
-
"@wordpress/hooks": "^4.
|
|
41
|
-
"@wordpress/i18n": "^
|
|
42
|
-
"@wordpress/icons": "^
|
|
24
|
+
"@wordpress/block-editor": "^15.9.0",
|
|
25
|
+
"@wordpress/blocks": "^15.9.0",
|
|
26
|
+
"@wordpress/components": "^30.9.0",
|
|
27
|
+
"@wordpress/compose": "^7.36.0",
|
|
28
|
+
"@wordpress/core-data": "^7.36.0",
|
|
29
|
+
"@wordpress/data": "^10.36.0",
|
|
30
|
+
"@wordpress/editor": "^14.36.0",
|
|
31
|
+
"@wordpress/element": "^6.36.0",
|
|
32
|
+
"@wordpress/hooks": "^4.36.0",
|
|
33
|
+
"@wordpress/i18n": "^6.9.0",
|
|
34
|
+
"@wordpress/icons": "^11.3.0",
|
|
43
35
|
"framer-motion": "^12.23.24",
|
|
44
|
-
"html-react-parser": "^5.2.
|
|
36
|
+
"html-react-parser": "^5.2.10",
|
|
45
37
|
"immer": "^9.0.21",
|
|
46
38
|
"react": "^18.3.1",
|
|
47
39
|
"react-dom": "^18.3.1",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type {RawPath} from "./simple-native-property-api";
|
|
2
|
+
|
|
3
|
+
export class MoveError extends Error {
|
|
4
|
+
constructor(message: string, path: RawPath, {from, to}: {from: number, to: number}|{from: string, to: string}) {
|
|
5
|
+
super(`${message}: ${path.join(".")}.{${from} => ${to}}`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type {RawPath} from "./simple-native-property-api";
|
|
2
|
+
|
|
3
|
+
export enum PathErrorType {
|
|
4
|
+
UNKNOWN,
|
|
5
|
+
UNEXPECTED_LEAF,
|
|
6
|
+
INSUFFICIENT_LENGTH
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class PathError extends Error {
|
|
10
|
+
constructor(
|
|
11
|
+
message: string,
|
|
12
|
+
public readonly path: RawPath,
|
|
13
|
+
public readonly errorIndex: number = path.length - 1,
|
|
14
|
+
public readonly errorType = PathErrorType.UNKNOWN
|
|
15
|
+
) {
|
|
16
|
+
super(`${message} Full Path: ${path.join('.')}; Error Path: ${path.slice(0, errorIndex + 1).join('.')}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {useCallback} from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
import type {FlexibleItemsListPropertyConfig} from "./csnp-api";
|
|
4
|
+
import {type FlexibleItem, SortableFlexibleItemsControl} from "../controls";
|
|
5
|
+
import {LaidOutPropertyRow} from "./layout/LaidOutPropertyRow";
|
|
6
|
+
import {NodeContextWrapper, useNodeContext} from "./layout/NodeContext";
|
|
7
|
+
import type {NonEmptyArray} from "../lib/useful-types";
|
|
8
|
+
import type {CSNPControlComponentProps} from "./shared-internal-types";
|
|
9
|
+
import type {HydratedSimpleNativeProperty, SNPControlSlots} from "./simple-native-property-api";
|
|
10
|
+
|
|
11
|
+
export type SNPFlexibleItemsListComponent<T extends string> = CSNPControlComponentProps<FlexibleItemsListPropertyConfig<T>, FlexibleItem<T>[], {
|
|
12
|
+
availableTypes: NonEmptyArray<{value: T, label: string}>, emptyValues: {[key in T]?: FlexibleItem<T>}
|
|
13
|
+
hydratedProperties: {[key in T]: (HydratedSimpleNativeProperty|HydratedSimpleNativeProperty[])[]}
|
|
14
|
+
}>&SNPControlSlots;
|
|
15
|
+
export function SNPFlexibleItemsListComponent(
|
|
16
|
+
{config, availableTypes, emptyValues, hydratedProperties, value, Label, Messages}: SNPFlexibleItemsListComponent<string>
|
|
17
|
+
) {
|
|
18
|
+
const context = useNodeContext("build a SNP List");
|
|
19
|
+
const onReorder = useCallback((oldIndex: number, newIndex: number) => context.moveNode({from: oldIndex, to: newIndex}), [context]);
|
|
20
|
+
const emptyValueBuilder = useCallback((type: string) => ({...emptyValues[type], type}), [emptyValues]);
|
|
21
|
+
const childRenderer = useCallback((datum: FlexibleItem, onDatumChange: (datum: FlexibleItem) => void, index: number) => {
|
|
22
|
+
return <NodeContextWrapper nodeName={index} children={hydratedProperties[datum.type]?.map(property => <LaidOutPropertyRow property={property} />)} />
|
|
23
|
+
}, [hydratedProperties]);
|
|
24
|
+
|
|
25
|
+
return <SortableFlexibleItemsControl
|
|
26
|
+
availableTypes={availableTypes} emptyValueBuilder={emptyValueBuilder}
|
|
27
|
+
value={value} min={config.min} max={config.max} Label={Label} Messages={Messages} help={config.help}
|
|
28
|
+
{...config.component} onAdd={context.addNode} onRemove={context.removeNode} onReorder={onReorder} children={childRenderer}
|
|
29
|
+
/>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {__experimentalToolsPanel as ToolsPanel} from "@wordpress/components";
|
|
2
|
+
import {useCallback} from "@wordpress/element";
|
|
3
|
+
|
|
4
|
+
import type {GroupPropertyCSNPConfig} from "./csnp-api";
|
|
5
|
+
import type {Dict} from "../controls";
|
|
6
|
+
import {LaidOutPropertyRow} from "./layout/LaidOutPropertyRow";
|
|
7
|
+
import {useNodeContext} from "./layout/NodeContext";
|
|
8
|
+
import type {CSNPControlComponentProps} from "./shared-internal-types";
|
|
9
|
+
import type {SNPControlSlots} from "./simple-native-property-api";
|
|
10
|
+
import type {HydratedLaidOutProperties} from "./simple-native-property-internal-shared";
|
|
11
|
+
|
|
12
|
+
export type SNPGroupComponentProps = CSNPControlComponentProps<GroupPropertyCSNPConfig, Dict<any>, {hydratedProperties: HydratedLaidOutProperties}>&SNPControlSlots;
|
|
13
|
+
export function SNPGroupComponent({config, hydratedProperties, Label, Messages}: SNPGroupComponentProps) {
|
|
14
|
+
if (config.interface === 'toolsPanel') {
|
|
15
|
+
const {value, setValue} = useNodeContext("render a toolsPanel");
|
|
16
|
+
return <>
|
|
17
|
+
<ToolsPanel
|
|
18
|
+
{...config.component}
|
|
19
|
+
className={config.component?.className ? `plaudit-snp-group-component ${config.component.className}` : "plaudit-snp-group-component"}
|
|
20
|
+
label={config.label}
|
|
21
|
+
resetAll={useCallback(resetAllFilters => {
|
|
22
|
+
setValue((resetAllFilters ?? []).reduce((q: any, filter: (t: any) => any) => filter(q), value))
|
|
23
|
+
}, [value, setValue])}
|
|
24
|
+
>
|
|
25
|
+
{...hydratedProperties.map(property => <LaidOutPropertyRow property={property} inToolsPanel={true} />)}
|
|
26
|
+
</ToolsPanel>
|
|
27
|
+
<Messages/>
|
|
28
|
+
</>;
|
|
29
|
+
} else {
|
|
30
|
+
return <fieldset {...config.component} className={config.component?.className ? `plaudit-snp-group-component ${config.component.className}` : "plaudit-snp-group-component"}>
|
|
31
|
+
<legend><Label/></legend>
|
|
32
|
+
<div className="plaudit-snp-laid-out-properties-wrapper">
|
|
33
|
+
{...hydratedProperties.map(property => <LaidOutPropertyRow property={property}/>)}
|
|
34
|
+
</div>
|
|
35
|
+
<Messages/>
|
|
36
|
+
</fieldset>;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {useCallback, useMemo} from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
import type {ObjectListPropertyConfig} from "./csnp-api";
|
|
4
|
+
import {type Dict, SortableItemsControl} from "../controls";
|
|
5
|
+
import {LaidOutPropertyRow} from "./layout/LaidOutPropertyRow";
|
|
6
|
+
import {NodeContextWrapper, useNodeContext} from "./layout/NodeContext";
|
|
7
|
+
import type {CSNPControlComponentProps} from "./shared-internal-types";
|
|
8
|
+
import type {HydratedSimpleNativeProperty, SNPControlSlots} from "./simple-native-property-api";
|
|
9
|
+
|
|
10
|
+
export type SNPListComponentProps = CSNPControlComponentProps<ObjectListPropertyConfig, Dict<any>[], {
|
|
11
|
+
hydratedProperties: (HydratedSimpleNativeProperty|HydratedSimpleNativeProperty[])[]
|
|
12
|
+
}>&SNPControlSlots;
|
|
13
|
+
export function SNPListComponent({config, hydratedProperties, value, Label, Messages}: SNPListComponentProps) {
|
|
14
|
+
const context = useNodeContext("build a SNP List");
|
|
15
|
+
const onReorder = useCallback((oldIndex: number, newIndex: number) => context.moveNode({from: oldIndex, to: newIndex}), [context]);
|
|
16
|
+
const emptyValue = useMemo(() => config.emptyValue ?? {}, [config.emptyValue]);
|
|
17
|
+
const childRenderer = useCallback((datum: Dict<any>, onDatumChange: (datum: Dict<any>) => void, index: number) => {
|
|
18
|
+
return <NodeContextWrapper nodeName={index} children={hydratedProperties.map(property => <LaidOutPropertyRow property={property} />)} />
|
|
19
|
+
}, [hydratedProperties]);
|
|
20
|
+
|
|
21
|
+
return <SortableItemsControl
|
|
22
|
+
value={value} min={config.min} max={config.max} Label={Label} Messages={Messages} help={config.help} emptyValue={emptyValue}
|
|
23
|
+
{...config.component} onAdd={context.addNode} onRemove={context.removeNode} onReorder={onReorder} onChange={context.setValue} children={childRenderer}
|
|
24
|
+
/>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {createContext, useContext} from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
import type {DataController} from "./simple-native-property-api";
|
|
4
|
+
|
|
5
|
+
export const SNPTreeContext = createContext<DataController|undefined>(undefined);
|
|
6
|
+
|
|
7
|
+
export function useSNPTreeContext(action: string) {
|
|
8
|
+
const SNPTreeContextValue = useContext(SNPTreeContext);
|
|
9
|
+
if (SNPTreeContextValue === undefined) {
|
|
10
|
+
throw new Error(`Cannot ${action} outside of a SNPTreeContext`);
|
|
11
|
+
}
|
|
12
|
+
return SNPTreeContextValue;
|
|
13
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import apiFetch from "@wordpress/api-fetch"
|
|
2
|
+
import {getBlockBindingsSources, type registerBlockBindingsSource} from "@wordpress/blocks";
|
|
3
|
+
import {InspectorAdvancedControls, useBlockBindingsUtils} from "@wordpress/block-editor";
|
|
4
|
+
import {
|
|
5
|
+
__experimentalToolsPanel as ToolsPanel,
|
|
6
|
+
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
7
|
+
SelectControl, Spinner, TextControl, Tooltip
|
|
8
|
+
} from '@wordpress/components';
|
|
9
|
+
import {createHigherOrderComponent} from "@wordpress/compose";
|
|
10
|
+
import {dispatch, select, useSuspenseSelect} from "@wordpress/data";
|
|
11
|
+
import {store as editorStore} from "@wordpress/editor";
|
|
12
|
+
import {memo, useMemo} from "@wordpress/element";
|
|
13
|
+
import {addFilter} from "@wordpress/hooks";
|
|
14
|
+
|
|
15
|
+
import {registerSimpleGutenbergApiEndpoint} from "../editor/simple-gutenberg-endpoints-api";
|
|
16
|
+
import {store as endpointsStore} from "../editor/simple-gutenberg-endpoints-impl";
|
|
17
|
+
import {store as apiExtensionsStore} from "../lib/gutenberg-api-extensions-state";
|
|
18
|
+
import type {ActualBlockEditProps, BlockName} from "../lib/useful-types";
|
|
19
|
+
|
|
20
|
+
import {type ReactElement, Suspense} from "react";
|
|
21
|
+
import {ErrorBoundary, FallbackProps} from "react-error-boundary";
|
|
22
|
+
|
|
23
|
+
const BLOCK_BINDINGS_ALLOWED_BLOCKS: {[key: BlockName]: string[]} = {
|
|
24
|
+
'core/paragraph': ['content'],
|
|
25
|
+
'core/heading': ['content'],
|
|
26
|
+
'core/image': ['id', 'url', 'title', 'alt'],
|
|
27
|
+
'core/button': ['url', 'text', 'linkTarget', 'rel']
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type DbSource = {label: string, value: string, help?: string};
|
|
31
|
+
type CBBParams = {dbSources?: DbSource[]/*, supportsContext?: boolean*/};
|
|
32
|
+
export function registerCustomBlockBindingsSource(args: Parameters<typeof registerBlockBindingsSource>[0]&CBBParams) {
|
|
33
|
+
installCustomBlockBindingsSupport();
|
|
34
|
+
dispatch('plaudit/gutenberg-api-extensions').registerCustomBlockBindingsSource(args);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function installCustomBlockBindingsSupport() {
|
|
38
|
+
if (installCustomBlockBindingsSupport.called) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
installCustomBlockBindingsSupport.called = true;
|
|
42
|
+
|
|
43
|
+
registerSimpleGutenbergApiEndpoint(
|
|
44
|
+
"plaudit-base.custom-bindings.source.options",
|
|
45
|
+
data => apiFetch<Array<{id: number, title: string, type: string}>>({data, method: 'POST', path: "/plaudit/base/v1/custom-bindings/source/options"}),
|
|
46
|
+
{maxCachedResults: 20}
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
addFilter('editor.BlockEdit', 'plaudit/gutenberg-api-extensions/basic-custom-block-bindings-support',
|
|
50
|
+
createHigherOrderComponent(BlockEdit => (blockEditProps: ActualBlockEditProps) => {
|
|
51
|
+
const availableBindingsList = BLOCK_BINDINGS_ALLOWED_BLOCKS[blockEditProps.name];
|
|
52
|
+
if (!availableBindingsList?.length) {
|
|
53
|
+
return <BlockEdit {...blockEditProps} />;
|
|
54
|
+
}
|
|
55
|
+
const {removeAllBlockBindings, updateBlockBindings} = useBlockBindingsUtils();
|
|
56
|
+
const currentPost = select(editorStore).getCurrentPost();
|
|
57
|
+
const bindingConfigs = useMemo(
|
|
58
|
+
() => {
|
|
59
|
+
return availableBindingsList.map((binding): [Parameters<typeof ToolsPanelItem>[0], BlockBindingToolProps] => {
|
|
60
|
+
return [
|
|
61
|
+
{
|
|
62
|
+
label: binding,
|
|
63
|
+
hasValue() {
|
|
64
|
+
return blockEditProps.attributes['metadata']?.['bindings']?.[binding] !== undefined;
|
|
65
|
+
},
|
|
66
|
+
onDeselect() {
|
|
67
|
+
updateBlockBindings({[binding]: undefined});
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: binding,
|
|
72
|
+
value: blockEditProps.attributes['metadata']?.['bindings']?.[binding],
|
|
73
|
+
currentPost,
|
|
74
|
+
binding
|
|
75
|
+
}
|
|
76
|
+
];
|
|
77
|
+
});
|
|
78
|
+
}, [blockEditProps.attributes, currentPost, availableBindingsList, updateBlockBindings]);
|
|
79
|
+
return <>
|
|
80
|
+
<BlockEdit {...blockEditProps} />
|
|
81
|
+
<InspectorAdvancedControls>
|
|
82
|
+
<ToolsPanel
|
|
83
|
+
label="Custom Block Bindings" resetAll={removeAllBlockBindings}
|
|
84
|
+
children={bindingConfigs.map(([bindingConfig, bbtConfig]) => (
|
|
85
|
+
<ToolsPanelItem key={bindingConfig.label} {...bindingConfig}>
|
|
86
|
+
<BlockBindingTool {...bbtConfig} />
|
|
87
|
+
</ToolsPanelItem>
|
|
88
|
+
))}
|
|
89
|
+
/>
|
|
90
|
+
</InspectorAdvancedControls>
|
|
91
|
+
</>;
|
|
92
|
+
}, 'plauditGutenbergApiExtensionsBasicBlockBindingsSupport')
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
type BlockBindingToolProps = {
|
|
96
|
+
value: { source: string, args: { [key: string]: any } } | undefined,
|
|
97
|
+
currentPost: any,
|
|
98
|
+
label: string,
|
|
99
|
+
binding: string
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
type SelectableOptions = Array<{ label: string, value: string, subfields: 'custom' | { label: string, value: string }[] }>;
|
|
103
|
+
type GetSelectableOptionsResponse = Array<{
|
|
104
|
+
label: string,
|
|
105
|
+
value: string,
|
|
106
|
+
subfields: 'custom' | { label: string, value: string }[],
|
|
107
|
+
disabled?: string | boolean,
|
|
108
|
+
binding: string
|
|
109
|
+
}>;
|
|
110
|
+
const BlockBindingTool = memo(({label, value, binding, currentPost}: BlockBindingToolProps) => {
|
|
111
|
+
const bindingSources = Object.entries(getBlockBindingsSources())
|
|
112
|
+
.filter(([key]) => key !== 'core/pattern-overrides' && key !== 'core/post-meta')
|
|
113
|
+
.map(([key, {label}]) => ({label, value: key}));
|
|
114
|
+
const {updateBlockBindings} = useBlockBindingsUtils();
|
|
115
|
+
|
|
116
|
+
return <fieldset className="custom-bindings-configuration-chain" style={{border: "revert", padding: "revert", margin: "revert"}}>
|
|
117
|
+
<legend>{label}</legend>
|
|
118
|
+
<SelectControl
|
|
119
|
+
key="source"
|
|
120
|
+
label="Source"
|
|
121
|
+
__nextHasNoMarginBottom={true}
|
|
122
|
+
onChange={source => updateBlockBindings({[binding]: {source, args: {}}})}
|
|
123
|
+
options={[
|
|
124
|
+
{
|
|
125
|
+
disabled: true,
|
|
126
|
+
label: "Select a Binding Source",
|
|
127
|
+
value: ''
|
|
128
|
+
},
|
|
129
|
+
...bindingSources
|
|
130
|
+
]}
|
|
131
|
+
value={value?.source ?? ''}
|
|
132
|
+
/>
|
|
133
|
+
<ErrorBoundary FallbackComponent={Fallback} onError={console.error}>
|
|
134
|
+
<Suspense fallback={<p><Spinner/> Loading Binding Options</p>}>
|
|
135
|
+
<SourceSubconfig value={value} currentPost={currentPost} binding={binding} />
|
|
136
|
+
</Suspense>
|
|
137
|
+
</ErrorBoundary>
|
|
138
|
+
</fieldset>
|
|
139
|
+
});
|
|
140
|
+
const SourceSubconfig = memo(({currentPost, value, binding}: Omit<BlockBindingToolProps, 'label'>) => {
|
|
141
|
+
const [selectableOptions, {dbSources/*, supportsContext*/}] = useSuspenseSelect((select): [NonNullable<Parameters<typeof SelectControl>[0]['options']>, CBBParams] => {
|
|
142
|
+
if (value?.source) {
|
|
143
|
+
const sourceQueryArgs = {current_post: currentPost, source: value.source};
|
|
144
|
+
const sourceOptions = select(endpointsStore).get("plaudit-base.custom-bindings.source.options", sourceQueryArgs) as GetSelectableOptionsResponse;
|
|
145
|
+
return [
|
|
146
|
+
sourceOptions.map(option => {
|
|
147
|
+
return typeof option.disabled === 'string'
|
|
148
|
+
? {...option, label: `${option.label} (${option.disabled})`, disabled: true}
|
|
149
|
+
: {...option, disabled: !!option.disabled};
|
|
150
|
+
}),
|
|
151
|
+
select(apiExtensionsStore).customBlockBindingsSource(value.source) ?? {}
|
|
152
|
+
];
|
|
153
|
+
} else {
|
|
154
|
+
return [[], {}];
|
|
155
|
+
}
|
|
156
|
+
}, [currentPost, value?.source]);
|
|
157
|
+
const {updateBlockBindings} = useBlockBindingsUtils();
|
|
158
|
+
|
|
159
|
+
const subfieldKeys = useMemo<SelectableOptions[number]['subfields']>(() => {
|
|
160
|
+
if (Array.isArray(selectableOptions)) {
|
|
161
|
+
const key = value?.args['key'];
|
|
162
|
+
return key ? selectableOptions.find(option => option.value === key)?.subfields ?? [] : [];
|
|
163
|
+
}
|
|
164
|
+
return [];
|
|
165
|
+
}, [selectableOptions, value?.args['key']]);
|
|
166
|
+
|
|
167
|
+
const controls: ReactElement[] = [];
|
|
168
|
+
if (selectableOptions.length) {
|
|
169
|
+
controls.push(<SelectControl
|
|
170
|
+
key="field"
|
|
171
|
+
label="Field"
|
|
172
|
+
__nextHasNoMarginBottom={true}
|
|
173
|
+
// We exclude subfield from this update because we need to reset it when the selected field changes
|
|
174
|
+
onChange={key => updateBlockBindings({[binding]: (value ? {...value, args: {key}} : undefined)})}
|
|
175
|
+
options={[
|
|
176
|
+
{
|
|
177
|
+
disabled: true,
|
|
178
|
+
label: "Select a Field",
|
|
179
|
+
value: ''
|
|
180
|
+
},
|
|
181
|
+
...selectableOptions
|
|
182
|
+
]}
|
|
183
|
+
value={value?.args['key'] ?? ''}
|
|
184
|
+
/>);
|
|
185
|
+
|
|
186
|
+
if (subfieldKeys.length) {
|
|
187
|
+
if (subfieldKeys === 'custom') {
|
|
188
|
+
controls.push(<TextControl
|
|
189
|
+
key="subfield"
|
|
190
|
+
label="Subfield"
|
|
191
|
+
__nextHasNoMarginBottom={true}
|
|
192
|
+
onChange={subfield => updateBlockBindings({[binding]: (value ? {...value, args: {...value.args, subfield}} : undefined)})}
|
|
193
|
+
value={value?.args['subfield'] ?? ''}
|
|
194
|
+
help="Please enter the name of a subfield. You may need to inspect the raw data from this binding to determine the subfield."
|
|
195
|
+
/>);
|
|
196
|
+
} else {
|
|
197
|
+
controls.push(<SelectControl
|
|
198
|
+
key="subfield"
|
|
199
|
+
label="Subfield"
|
|
200
|
+
__nextHasNoMarginBottom={true}
|
|
201
|
+
onChange={subfield => updateBlockBindings({[binding]: (value ? {...value, args: {...value.args, subfield}} : undefined)})}
|
|
202
|
+
options={[
|
|
203
|
+
{
|
|
204
|
+
disabled: true,
|
|
205
|
+
label: "Select a Subfield",
|
|
206
|
+
value: ''
|
|
207
|
+
},
|
|
208
|
+
...subfieldKeys
|
|
209
|
+
]}
|
|
210
|
+
value={value?.args['subfield'] ?? ''}
|
|
211
|
+
/>);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (value?.args['key'] && dbSources?.length) {
|
|
216
|
+
controls.push(<SelectControl
|
|
217
|
+
key="db-source"
|
|
218
|
+
label="DB Source"
|
|
219
|
+
__nextHasNoMarginBottom={true}
|
|
220
|
+
onChange={db_source => updateBlockBindings({[binding]: (value ? {...value, args: {...value.args, db_source}} : undefined)})}
|
|
221
|
+
options={dbSources}
|
|
222
|
+
value={value?.args['db_source'] ?? dbSources[0]!.value}
|
|
223
|
+
help={dbSources.find(dbs => dbs.value === value?.args['db_source'])?.help}
|
|
224
|
+
/>);
|
|
225
|
+
} else if (value?.args['db_source']) {
|
|
226
|
+
const {db_source, ...updatedArgs} = value.args;
|
|
227
|
+
updateBlockBindings({[binding]: {...value, args: updatedArgs}});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (controls.length === 0) {
|
|
231
|
+
controls.push(<p key="no-options-found-text">No Options Found</p>);
|
|
232
|
+
}
|
|
233
|
+
return controls;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
export namespace installCustomBlockBindingsSupport {
|
|
237
|
+
export let called: boolean = false;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function Fallback({error}: FallbackProps) {
|
|
241
|
+
const baseDisplay = <p style={{color: '#CC1818'}}>An error occurred while loading binding options</p>;
|
|
242
|
+
return typeof error.message === 'string' ? <Tooltip text={error.message}>{baseDisplay}</Tooltip> : baseDisplay;
|
|
243
|
+
}
|