@wordpress/block-editor 12.17.0 → 12.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +32 -0
- package/build/components/block-draggable/index.js +11 -3
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-edit/context.js +3 -1
- package/build/components/block-edit/context.js.map +1 -1
- package/build/components/block-edit/index.js +4 -2
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-editing-mode/index.js +6 -3
- package/build/components/block-editing-mode/index.js.map +1 -1
- package/build/components/block-inspector/index.js +5 -2
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +4 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +9 -5
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.js +30 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/private-block-context.js +1 -1
- package/build/components/block-list/private-block-context.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +1 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/toolbar.js +8 -2
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-popover/inbetween.js +15 -3
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-preview/auto.js +1 -1
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +3 -2
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +2 -4
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +12 -1
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/index.js +119 -90
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +10 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +7 -1
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/global-styles/border-panel.js +5 -14
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/effects-panel.js +7 -1
- package/build/components/global-styles/effects-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +3 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +31 -14
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/iframe/get-compatibility-styles.js +99 -0
- package/build/components/iframe/get-compatibility-styles.js.map +1 -0
- package/build/components/iframe/index.js +2 -3
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +16 -2
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +16 -2
- package/build/components/index.native.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build/components/link-control/link-preview.js +30 -26
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -9
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-contents.js +3 -1
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block.js +10 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +29 -8
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +100 -32
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js +52 -4
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -2
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-list-view-block-indexes.js +30 -0
- package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
- package/build/components/list-view/use-list-view-drop-zone.js +56 -5
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/list-view/utils.js +92 -0
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/provider/index.js +1 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/recursion-provider/index.js +21 -0
- package/build/components/recursion-provider/index.js.map +1 -1
- package/build/components/rich-text/index.js +30 -6
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +9 -9
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +30 -7
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +50 -8
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/hooks/block-hooks.js +5 -14
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/content-lock-ui.js +17 -42
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/effects.js +66 -0
- package/build/hooks/effects.js.map +1 -0
- package/build/hooks/index.js +15 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +13 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/style.js +6 -2
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/supports.js +2 -1
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.native.js +2 -2
- package/build/hooks/typography.native.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +115 -0
- package/build/hooks/use-bindings-attributes.js.map +1 -0
- package/build/hooks/use-shadow-props.js +46 -0
- package/build/hooks/use-shadow-props.js.map +1 -0
- package/build/hooks/utils.js +11 -7
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +14 -0
- package/build/index.js.map +1 -1
- package/build/store/actions.js +10 -6
- package/build/store/actions.js.map +1 -1
- package/build/store/index.js +2 -0
- package/build/store/index.js.map +1 -1
- package/build/store/private-actions.js +37 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +60 -9
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +44 -3
- package/build/store/reducer.js.map +1 -1
- package/build/store/resolvers.js +27 -0
- package/build/store/resolvers.js.map +1 -0
- package/build/store/selectors.js +94 -56
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +5 -26
- package/build/store/utils.js.map +1 -1
- package/build/utils/index.js +0 -16
- package/build/utils/index.js.map +1 -1
- package/build/utils/math.js +13 -0
- package/build/utils/math.js.map +1 -1
- package/build/utils/object.js +17 -0
- package/build/utils/object.js.map +1 -1
- package/build/utils/transform-styles/index.js +37 -27
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +11 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-edit/context.js +1 -0
- package/build-module/components/block-edit/context.js.map +1 -1
- package/build-module/components/block-edit/index.js +5 -3
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-editing-mode/index.js +7 -4
- package/build-module/components/block-editing-mode/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +5 -2
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +6 -5
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +11 -7
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.js +31 -5
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/private-block-context.js +1 -1
- package/build-module/components/block-list/private-block-context.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +8 -2
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +15 -3
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-preview/auto.js +3 -3
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +3 -2
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/index.js +116 -86
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +10 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +7 -1
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +5 -14
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/effects-panel.js +7 -1
- package/build-module/components/global-styles/effects-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +32 -15
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/iframe/get-compatibility-styles.js +93 -0
- package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
- package/build-module/components/iframe/index.js +2 -3
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +32 -28
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -8
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +3 -1
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block.js +10 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +30 -9
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +99 -32
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js +54 -6
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -2
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
- package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
- package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/list-view/utils.js +91 -0
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/provider/index.js +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/recursion-provider/index.js +17 -0
- package/build-module/components/recursion-provider/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +30 -6
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +9 -9
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +31 -8
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +51 -9
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/hooks/block-hooks.js +5 -14
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +19 -43
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/effects.js +51 -0
- package/build-module/hooks/effects.js.map +1 -0
- package/build-module/hooks/index.js +3 -2
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +1 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/style.js +6 -2
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/supports.js +2 -1
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.native.js +2 -2
- package/build-module/hooks/typography.native.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +112 -0
- package/build-module/hooks/use-bindings-attributes.js.map +1 -0
- package/build-module/hooks/use-shadow-props.js +39 -0
- package/build-module/hooks/use-shadow-props.js.map +1 -0
- package/build-module/hooks/utils.js +13 -9
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +10 -6
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/index.js +2 -0
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/private-actions.js +35 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +53 -8
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +43 -3
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/resolvers.js +20 -0
- package/build-module/store/resolvers.js.map +1 -0
- package/build-module/store/selectors.js +89 -52
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +3 -23
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/index.js +0 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/math.js +12 -0
- package/build-module/utils/math.js.map +1 -1
- package/build-module/utils/object.js +16 -0
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +36 -27
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +33 -16
- package/build-style/content.css +33 -16
- package/build-style/default-editor-styles-rtl.css +1 -1
- package/build-style/default-editor-styles.css +1 -1
- package/build-style/style-rtl.css +169 -114
- package/build-style/style.css +169 -114
- package/package.json +31 -31
- package/src/components/block-canvas/style.scss +8 -1
- package/src/components/block-draggable/index.js +16 -5
- package/src/components/block-edit/context.js +1 -0
- package/src/components/block-edit/index.js +4 -0
- package/src/components/block-editing-mode/index.js +12 -7
- package/src/components/block-inspector/index.js +5 -2
- package/src/components/block-list/block.js +5 -4
- package/src/components/block-list/block.native.js +13 -3
- package/src/components/block-list/content.scss +34 -5
- package/src/components/block-list/index.js +52 -16
- package/src/components/block-list/private-block-context.js +1 -1
- package/src/components/block-list/use-in-between-inserter.js +1 -2
- package/src/components/block-lock/toolbar.js +10 -2
- package/src/components/block-popover/inbetween.js +22 -2
- package/src/components/block-preview/auto.js +3 -3
- package/src/components/block-removal-warning-modal/index.js +3 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
- package/src/components/block-switcher/block-transformations-menu.js +18 -1
- package/src/components/block-switcher/index.js +133 -111
- package/src/components/block-switcher/style.scss +6 -4
- package/src/components/block-switcher/test/index.js +113 -230
- package/src/components/block-toolbar/style.scss +22 -18
- package/src/components/block-tools/insertion-point.js +15 -2
- package/src/components/block-tools/style.scss +8 -7
- package/src/components/font-sizes/fluid-utils.js +8 -2
- package/src/components/font-sizes/test/fluid-utils.js +9 -0
- package/src/components/global-styles/border-panel.js +7 -17
- package/src/components/global-styles/effects-panel.js +16 -1
- package/src/components/global-styles/hooks.js +2 -0
- package/src/components/global-styles/typography-panel.js +45 -13
- package/src/components/iframe/get-compatibility-styles.js +120 -0
- package/src/components/iframe/index.js +2 -3
- package/src/components/index.js +4 -2
- package/src/components/index.native.js +4 -2
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
- package/src/components/link-control/link-preview.js +31 -55
- package/src/components/link-control/search-input.js +1 -9
- package/src/components/link-control/style.scss +31 -85
- package/src/components/link-control/test/index.js +2 -1
- package/src/components/list-view/block-contents.js +5 -1
- package/src/components/list-view/block.js +9 -0
- package/src/components/list-view/branch.js +30 -10
- package/src/components/list-view/drop-indicator.js +139 -46
- package/src/components/list-view/index.js +74 -3
- package/src/components/list-view/leaf.js +2 -2
- package/src/components/list-view/style.scss +102 -13
- package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
- package/src/components/list-view/test/utils.js +218 -1
- package/src/components/list-view/use-list-view-block-indexes.js +29 -0
- package/src/components/list-view/use-list-view-drop-zone.js +78 -6
- package/src/components/list-view/utils.js +116 -0
- package/src/components/provider/index.js +3 -1
- package/src/components/recursion-provider/README.md +2 -2
- package/src/components/recursion-provider/index.js +17 -0
- package/src/components/rich-text/index.js +48 -10
- package/src/components/rich-text/native/index.native.js +10 -10
- package/src/components/use-block-drop-zone/index.js +60 -19
- package/src/components/use-block-drop-zone/test/index.js +32 -61
- package/src/components/use-on-block-drop/index.js +92 -11
- package/src/hooks/block-hooks.js +5 -17
- package/src/hooks/content-lock-ui.js +15 -55
- package/src/hooks/effects.js +57 -0
- package/src/hooks/index.js +2 -2
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/style.js +8 -0
- package/src/hooks/supports.js +2 -0
- package/src/hooks/test/effects.js +39 -0
- package/src/hooks/typography.native.js +2 -2
- package/src/hooks/use-bindings-attributes.js +148 -0
- package/src/hooks/use-shadow-props.js +37 -0
- package/src/hooks/utils.js +26 -10
- package/src/index.js +2 -0
- package/src/store/actions.js +9 -4
- package/src/store/index.js +2 -0
- package/src/store/private-actions.js +32 -0
- package/src/store/private-selectors.js +78 -21
- package/src/store/reducer.js +49 -2
- package/src/store/resolvers.js +17 -0
- package/src/store/selectors.js +169 -161
- package/src/store/test/registry-selectors.js +431 -0
- package/src/store/test/selectors.js +14 -400
- package/src/store/utils.js +10 -33
- package/src/style.scss +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/math.js +12 -0
- package/src/utils/object.js +16 -0
- package/src/utils/transform-styles/index.js +52 -37
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/iframe/use-compatibility-styles.js +0 -100
- package/build/components/iframe/use-compatibility-styles.js.map +0 -1
- package/build/hooks/custom-fields.js +0 -106
- package/build/hooks/custom-fields.js.map +0 -1
- package/build/utils/block-variation-transforms.js +0 -42
- package/build/utils/block-variation-transforms.js.map +0 -1
- package/build-module/components/iframe/use-compatibility-styles.js +0 -94
- package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
- package/build-module/hooks/custom-fields.js +0 -99
- package/build-module/hooks/custom-fields.js.map +0 -1
- package/build-module/utils/block-variation-transforms.js +0 -35
- package/build-module/utils/block-variation-transforms.js.map +0 -1
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
- package/src/components/contrast-checker/style.scss +0 -3
- package/src/components/iframe/use-compatibility-styles.js +0 -122
- package/src/hooks/custom-fields.js +0 -115
- package/src/utils/block-variation-transforms.js +0 -38
- package/src/utils/test/block-variation-transforms.js +0 -94
|
@@ -65,14 +65,10 @@ const {
|
|
|
65
65
|
__experimentalGetLastBlockAttributeChanges,
|
|
66
66
|
getLowestCommonAncestorWithSelectedBlock,
|
|
67
67
|
__experimentalGetActiveBlockIdByBlockNames: getActiveBlockIdByBlockNames,
|
|
68
|
-
__experimentalGetAllowedPatterns,
|
|
69
|
-
__experimentalGetParsedPattern,
|
|
70
|
-
getPatternsByBlockTypes,
|
|
71
68
|
__unstableGetClientIdWithClientIdsTree,
|
|
72
69
|
__unstableGetClientIdsTree,
|
|
73
|
-
__experimentalGetPatternTransformItems,
|
|
74
70
|
wasBlockJustInserted,
|
|
75
|
-
|
|
71
|
+
getBlocksByName,
|
|
76
72
|
getBlockEditingMode,
|
|
77
73
|
} = selectors;
|
|
78
74
|
|
|
@@ -975,7 +971,7 @@ describe( 'selectors', () => {
|
|
|
975
971
|
} );
|
|
976
972
|
} );
|
|
977
973
|
|
|
978
|
-
describe( '
|
|
974
|
+
describe( 'getBlocksByName', () => {
|
|
979
975
|
const state = {
|
|
980
976
|
blocks: {
|
|
981
977
|
byClientId: new Map(
|
|
@@ -1017,31 +1013,25 @@ describe( 'selectors', () => {
|
|
|
1017
1013
|
};
|
|
1018
1014
|
|
|
1019
1015
|
it( 'should return the clientIds of blocks of a given type', () => {
|
|
1020
|
-
expect(
|
|
1021
|
-
|
|
1022
|
-
|
|
1016
|
+
expect( getBlocksByName( state, 'core/heading' ) ).toStrictEqual( [
|
|
1017
|
+
'123',
|
|
1018
|
+
] );
|
|
1023
1019
|
} );
|
|
1024
1020
|
|
|
1025
1021
|
it( 'should return the clientIds of blocks of a given type even if blocks are nested', () => {
|
|
1026
|
-
expect(
|
|
1027
|
-
|
|
1028
|
-
)
|
|
1022
|
+
expect( getBlocksByName( state, 'core/paragraph' ) ).toStrictEqual(
|
|
1023
|
+
[ '456', '1415', '1213' ]
|
|
1024
|
+
);
|
|
1029
1025
|
} );
|
|
1030
1026
|
|
|
1031
1027
|
it( 'Should return empty array if no blocks match. The empty array should be the same reference', () => {
|
|
1032
|
-
const result =
|
|
1033
|
-
|
|
1034
|
-
|
|
1028
|
+
const result = getBlocksByName( state, 'test/missing' );
|
|
1029
|
+
expect( getBlocksByName( state, 'test/missing' ) ).toStrictEqual(
|
|
1030
|
+
[]
|
|
1031
|
+
);
|
|
1032
|
+
expect( getBlocksByName( state, 'test/missing2' ) === result ).toBe(
|
|
1033
|
+
true
|
|
1035
1034
|
);
|
|
1036
|
-
expect(
|
|
1037
|
-
__experimentalGetGlobalBlocksByName( state, 'test/missing' )
|
|
1038
|
-
).toStrictEqual( [] );
|
|
1039
|
-
expect(
|
|
1040
|
-
__experimentalGetGlobalBlocksByName(
|
|
1041
|
-
state,
|
|
1042
|
-
'test/missing2'
|
|
1043
|
-
) === result
|
|
1044
|
-
).toBe( true );
|
|
1045
1035
|
} );
|
|
1046
1036
|
} );
|
|
1047
1037
|
|
|
@@ -4205,382 +4195,6 @@ describe( 'selectors', () => {
|
|
|
4205
4195
|
} );
|
|
4206
4196
|
} );
|
|
4207
4197
|
|
|
4208
|
-
describe( '__experimentalGetAllowedPatterns', () => {
|
|
4209
|
-
const state = {
|
|
4210
|
-
blocks: {
|
|
4211
|
-
byClientId: new Map(
|
|
4212
|
-
Object.entries( {
|
|
4213
|
-
block1: { name: 'core/test-block-a' },
|
|
4214
|
-
block2: { name: 'core/test-block-b' },
|
|
4215
|
-
} )
|
|
4216
|
-
),
|
|
4217
|
-
attributes: new Map(
|
|
4218
|
-
Object.entries( {
|
|
4219
|
-
block1: {},
|
|
4220
|
-
block2: {},
|
|
4221
|
-
} )
|
|
4222
|
-
),
|
|
4223
|
-
parents: new Map(
|
|
4224
|
-
Object.entries( {
|
|
4225
|
-
block1: '',
|
|
4226
|
-
block2: '',
|
|
4227
|
-
} )
|
|
4228
|
-
),
|
|
4229
|
-
},
|
|
4230
|
-
blockListSettings: {
|
|
4231
|
-
block1: {
|
|
4232
|
-
allowedBlocks: [ 'core/test-block-b' ],
|
|
4233
|
-
},
|
|
4234
|
-
block2: {
|
|
4235
|
-
allowedBlocks: [],
|
|
4236
|
-
},
|
|
4237
|
-
},
|
|
4238
|
-
settings: {
|
|
4239
|
-
__experimentalBlockPatterns: [
|
|
4240
|
-
{
|
|
4241
|
-
name: 'pattern-a',
|
|
4242
|
-
title: 'pattern with a',
|
|
4243
|
-
content: `<!-- wp:test-block-a --><!-- /wp:test-block-a -->`,
|
|
4244
|
-
},
|
|
4245
|
-
{
|
|
4246
|
-
name: 'pattern-b',
|
|
4247
|
-
title: 'pattern with b',
|
|
4248
|
-
content:
|
|
4249
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4250
|
-
},
|
|
4251
|
-
{
|
|
4252
|
-
name: 'pattern-c',
|
|
4253
|
-
title: 'pattern hidden from UI',
|
|
4254
|
-
inserter: false,
|
|
4255
|
-
content:
|
|
4256
|
-
'<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
|
|
4257
|
-
},
|
|
4258
|
-
],
|
|
4259
|
-
},
|
|
4260
|
-
blockEditingModes: new Map(),
|
|
4261
|
-
};
|
|
4262
|
-
|
|
4263
|
-
it( 'should return all patterns for root level', () => {
|
|
4264
|
-
expect(
|
|
4265
|
-
__experimentalGetAllowedPatterns( state, null )
|
|
4266
|
-
).toHaveLength( 2 );
|
|
4267
|
-
} );
|
|
4268
|
-
|
|
4269
|
-
it( 'should return patterns that consists of blocks allowed for the specified client ID', () => {
|
|
4270
|
-
expect(
|
|
4271
|
-
__experimentalGetAllowedPatterns( state, 'block1' )
|
|
4272
|
-
).toHaveLength( 1 );
|
|
4273
|
-
|
|
4274
|
-
expect(
|
|
4275
|
-
__experimentalGetAllowedPatterns( state, 'block2' )
|
|
4276
|
-
).toHaveLength( 0 );
|
|
4277
|
-
} );
|
|
4278
|
-
it( 'should return empty array if only patterns hidden from UI exist', () => {
|
|
4279
|
-
expect(
|
|
4280
|
-
__experimentalGetAllowedPatterns( {
|
|
4281
|
-
blocks: { byClientId: new Map() },
|
|
4282
|
-
blockListSettings: {},
|
|
4283
|
-
settings: {
|
|
4284
|
-
__experimentalBlockPatterns: [
|
|
4285
|
-
{
|
|
4286
|
-
name: 'pattern-c',
|
|
4287
|
-
title: 'pattern hidden from UI',
|
|
4288
|
-
inserter: false,
|
|
4289
|
-
content:
|
|
4290
|
-
'<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
|
|
4291
|
-
},
|
|
4292
|
-
],
|
|
4293
|
-
},
|
|
4294
|
-
} )
|
|
4295
|
-
).toHaveLength( 0 );
|
|
4296
|
-
} );
|
|
4297
|
-
} );
|
|
4298
|
-
describe( '__experimentalGetParsedPattern', () => {
|
|
4299
|
-
const state = {
|
|
4300
|
-
settings: {
|
|
4301
|
-
__experimentalBlockPatterns: [
|
|
4302
|
-
{
|
|
4303
|
-
name: 'pattern-a',
|
|
4304
|
-
title: 'pattern with a',
|
|
4305
|
-
content: `<!-- wp:test-block-a --><!-- /wp:test-block-a -->`,
|
|
4306
|
-
},
|
|
4307
|
-
{
|
|
4308
|
-
name: 'pattern-hidden-from-ui',
|
|
4309
|
-
title: 'pattern hidden from UI',
|
|
4310
|
-
inserter: false,
|
|
4311
|
-
content:
|
|
4312
|
-
'<!-- wp:test-block-a --><!-- /wp:test-block-a --><!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4313
|
-
},
|
|
4314
|
-
],
|
|
4315
|
-
},
|
|
4316
|
-
};
|
|
4317
|
-
it( 'should return proper results when pattern does not exist', () => {
|
|
4318
|
-
expect(
|
|
4319
|
-
__experimentalGetParsedPattern( state, 'not there' )
|
|
4320
|
-
).toBeNull();
|
|
4321
|
-
} );
|
|
4322
|
-
it( 'should return existing pattern properly parsed', () => {
|
|
4323
|
-
const { name, blocks } = __experimentalGetParsedPattern(
|
|
4324
|
-
state,
|
|
4325
|
-
'pattern-a'
|
|
4326
|
-
);
|
|
4327
|
-
expect( name ).toEqual( 'pattern-a' );
|
|
4328
|
-
expect( blocks ).toHaveLength( 1 );
|
|
4329
|
-
expect( blocks[ 0 ] ).toEqual(
|
|
4330
|
-
expect.objectContaining( {
|
|
4331
|
-
name: 'core/test-block-a',
|
|
4332
|
-
} )
|
|
4333
|
-
);
|
|
4334
|
-
} );
|
|
4335
|
-
it( 'should return hidden from UI pattern when requested', () => {
|
|
4336
|
-
const { name, blocks, inserter } = __experimentalGetParsedPattern(
|
|
4337
|
-
state,
|
|
4338
|
-
'pattern-hidden-from-ui'
|
|
4339
|
-
);
|
|
4340
|
-
expect( name ).toEqual( 'pattern-hidden-from-ui' );
|
|
4341
|
-
expect( inserter ).toBeFalsy();
|
|
4342
|
-
expect( blocks ).toHaveLength( 2 );
|
|
4343
|
-
expect( blocks[ 0 ] ).toEqual(
|
|
4344
|
-
expect.objectContaining( {
|
|
4345
|
-
name: 'core/test-block-a',
|
|
4346
|
-
} )
|
|
4347
|
-
);
|
|
4348
|
-
} );
|
|
4349
|
-
} );
|
|
4350
|
-
describe( 'getPatternsByBlockTypes', () => {
|
|
4351
|
-
const state = {
|
|
4352
|
-
blocks: {
|
|
4353
|
-
byClientId: new Map(
|
|
4354
|
-
Object.entries( {
|
|
4355
|
-
block1: { name: 'core/test-block-a' },
|
|
4356
|
-
} )
|
|
4357
|
-
),
|
|
4358
|
-
parents: new Map(),
|
|
4359
|
-
},
|
|
4360
|
-
blockListSettings: {
|
|
4361
|
-
block1: {
|
|
4362
|
-
allowedBlocks: [ 'core/test-block-b' ],
|
|
4363
|
-
},
|
|
4364
|
-
},
|
|
4365
|
-
settings: {
|
|
4366
|
-
__experimentalBlockPatterns: [
|
|
4367
|
-
{
|
|
4368
|
-
name: 'pattern-a',
|
|
4369
|
-
blockTypes: [ 'test/block-a' ],
|
|
4370
|
-
title: 'pattern a',
|
|
4371
|
-
content:
|
|
4372
|
-
'<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
|
|
4373
|
-
},
|
|
4374
|
-
{
|
|
4375
|
-
name: 'pattern-b',
|
|
4376
|
-
blockTypes: [ 'test/block-b' ],
|
|
4377
|
-
title: 'pattern b',
|
|
4378
|
-
content:
|
|
4379
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4380
|
-
},
|
|
4381
|
-
{
|
|
4382
|
-
title: 'pattern c',
|
|
4383
|
-
blockTypes: [ 'test/block-a' ],
|
|
4384
|
-
content:
|
|
4385
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4386
|
-
},
|
|
4387
|
-
],
|
|
4388
|
-
},
|
|
4389
|
-
blockEditingModes: new Map(),
|
|
4390
|
-
};
|
|
4391
|
-
it( 'should return empty array if no block name is provided', () => {
|
|
4392
|
-
expect( getPatternsByBlockTypes( state ) ).toEqual( [] );
|
|
4393
|
-
} );
|
|
4394
|
-
it( 'should return empty array if no match is found', () => {
|
|
4395
|
-
const patterns = getPatternsByBlockTypes(
|
|
4396
|
-
state,
|
|
4397
|
-
'test/block-not-exists'
|
|
4398
|
-
);
|
|
4399
|
-
expect( patterns ).toEqual( [] );
|
|
4400
|
-
} );
|
|
4401
|
-
it( 'should return the same empty array in both empty array cases', () => {
|
|
4402
|
-
const patterns1 = getPatternsByBlockTypes( state );
|
|
4403
|
-
const patterns2 = getPatternsByBlockTypes(
|
|
4404
|
-
state,
|
|
4405
|
-
'test/block-not-exists'
|
|
4406
|
-
);
|
|
4407
|
-
expect( patterns1 ).toBe( patterns2 );
|
|
4408
|
-
} );
|
|
4409
|
-
it( 'should return proper results when there are matched block patterns', () => {
|
|
4410
|
-
const patterns = getPatternsByBlockTypes( state, 'test/block-a' );
|
|
4411
|
-
expect( patterns ).toHaveLength( 2 );
|
|
4412
|
-
expect( patterns ).toEqual(
|
|
4413
|
-
expect.arrayContaining( [
|
|
4414
|
-
expect.objectContaining( { title: 'pattern a' } ),
|
|
4415
|
-
expect.objectContaining( { title: 'pattern c' } ),
|
|
4416
|
-
] )
|
|
4417
|
-
);
|
|
4418
|
-
} );
|
|
4419
|
-
it( 'should return proper result with matched patterns and allowed blocks from rootClientId', () => {
|
|
4420
|
-
const patterns = getPatternsByBlockTypes(
|
|
4421
|
-
state,
|
|
4422
|
-
'test/block-a',
|
|
4423
|
-
'block1'
|
|
4424
|
-
);
|
|
4425
|
-
expect( patterns ).toHaveLength( 1 );
|
|
4426
|
-
expect( patterns[ 0 ] ).toEqual(
|
|
4427
|
-
expect.objectContaining( { title: 'pattern c' } )
|
|
4428
|
-
);
|
|
4429
|
-
} );
|
|
4430
|
-
} );
|
|
4431
|
-
describe( '__experimentalGetPatternTransformItems', () => {
|
|
4432
|
-
const state = {
|
|
4433
|
-
blocks: {
|
|
4434
|
-
byClientId: new Map(
|
|
4435
|
-
Object.entries( {
|
|
4436
|
-
block1: { name: 'core/test-block-a' },
|
|
4437
|
-
block2: { name: 'core/test-block-b' },
|
|
4438
|
-
} )
|
|
4439
|
-
),
|
|
4440
|
-
parents: new Map(),
|
|
4441
|
-
controlledInnerBlocks: { 'block2-clientId': true },
|
|
4442
|
-
},
|
|
4443
|
-
blockListSettings: {
|
|
4444
|
-
block1: {
|
|
4445
|
-
allowedBlocks: [ 'core/test-block-b' ],
|
|
4446
|
-
},
|
|
4447
|
-
},
|
|
4448
|
-
settings: {
|
|
4449
|
-
__experimentalBlockPatterns: [
|
|
4450
|
-
{
|
|
4451
|
-
name: 'pattern-a',
|
|
4452
|
-
blockTypes: [ 'test/block-a' ],
|
|
4453
|
-
title: 'pattern a',
|
|
4454
|
-
content:
|
|
4455
|
-
'<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
|
|
4456
|
-
},
|
|
4457
|
-
{
|
|
4458
|
-
name: 'pattern-b',
|
|
4459
|
-
blockTypes: [ 'test/block-b' ],
|
|
4460
|
-
title: 'pattern b',
|
|
4461
|
-
content:
|
|
4462
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4463
|
-
},
|
|
4464
|
-
{
|
|
4465
|
-
name: 'pattern-c',
|
|
4466
|
-
title: 'pattern c',
|
|
4467
|
-
blockTypes: [ 'test/block-a' ],
|
|
4468
|
-
content:
|
|
4469
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4470
|
-
},
|
|
4471
|
-
{
|
|
4472
|
-
name: 'pattern-mix',
|
|
4473
|
-
title: 'pattern mix',
|
|
4474
|
-
blockTypes: [
|
|
4475
|
-
'core/test-block-a',
|
|
4476
|
-
'core/test-block-b',
|
|
4477
|
-
],
|
|
4478
|
-
content:
|
|
4479
|
-
'<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
|
|
4480
|
-
},
|
|
4481
|
-
],
|
|
4482
|
-
},
|
|
4483
|
-
blockEditingModes: new Map(),
|
|
4484
|
-
};
|
|
4485
|
-
describe( 'should return empty array', () => {
|
|
4486
|
-
it( 'when no blocks are selected', () => {
|
|
4487
|
-
expect(
|
|
4488
|
-
__experimentalGetPatternTransformItems( state )
|
|
4489
|
-
).toEqual( [] );
|
|
4490
|
-
} );
|
|
4491
|
-
it( 'when a selected block has inner blocks', () => {
|
|
4492
|
-
const blocks = [
|
|
4493
|
-
{ name: 'core/test-block-a', innerBlocks: [] },
|
|
4494
|
-
{
|
|
4495
|
-
name: 'core/test-block-b',
|
|
4496
|
-
innerBlocks: [ { name: 'some inner block' } ],
|
|
4497
|
-
},
|
|
4498
|
-
];
|
|
4499
|
-
expect(
|
|
4500
|
-
__experimentalGetPatternTransformItems( state, blocks )
|
|
4501
|
-
).toEqual( [] );
|
|
4502
|
-
} );
|
|
4503
|
-
it( 'when a selected block has controlled inner blocks', () => {
|
|
4504
|
-
const blocks = [
|
|
4505
|
-
{ name: 'core/test-block-a', innerBlocks: [] },
|
|
4506
|
-
{
|
|
4507
|
-
name: 'core/test-block-b',
|
|
4508
|
-
clientId: 'block2-clientId',
|
|
4509
|
-
innerBlocks: [],
|
|
4510
|
-
},
|
|
4511
|
-
];
|
|
4512
|
-
expect(
|
|
4513
|
-
__experimentalGetPatternTransformItems( state, blocks )
|
|
4514
|
-
).toEqual( [] );
|
|
4515
|
-
} );
|
|
4516
|
-
it( 'when no patterns are available based on the selected blocks', () => {
|
|
4517
|
-
const blocks = [
|
|
4518
|
-
{ name: 'block-with-no-patterns', innerBlocks: [] },
|
|
4519
|
-
];
|
|
4520
|
-
expect(
|
|
4521
|
-
__experimentalGetPatternTransformItems( state, blocks )
|
|
4522
|
-
).toEqual( [] );
|
|
4523
|
-
} );
|
|
4524
|
-
} );
|
|
4525
|
-
describe( 'should return proper results', () => {
|
|
4526
|
-
it( 'when a single block is selected', () => {
|
|
4527
|
-
const blocks = [
|
|
4528
|
-
{ name: 'core/test-block-b', innerBlocks: [] },
|
|
4529
|
-
];
|
|
4530
|
-
const patterns = __experimentalGetPatternTransformItems(
|
|
4531
|
-
state,
|
|
4532
|
-
blocks
|
|
4533
|
-
);
|
|
4534
|
-
expect( patterns ).toHaveLength( 1 );
|
|
4535
|
-
expect( patterns[ 0 ] ).toEqual(
|
|
4536
|
-
expect.objectContaining( {
|
|
4537
|
-
name: 'pattern-mix',
|
|
4538
|
-
} )
|
|
4539
|
-
);
|
|
4540
|
-
} );
|
|
4541
|
-
it( 'when different multiple blocks are selected', () => {
|
|
4542
|
-
const blocks = [
|
|
4543
|
-
{ name: 'core/test-block-b', innerBlocks: [] },
|
|
4544
|
-
{ name: 'test/block-b', innerBlocks: [] },
|
|
4545
|
-
{ name: 'some other block', innerBlocks: [] },
|
|
4546
|
-
];
|
|
4547
|
-
const patterns = __experimentalGetPatternTransformItems(
|
|
4548
|
-
state,
|
|
4549
|
-
blocks
|
|
4550
|
-
);
|
|
4551
|
-
expect( patterns ).toHaveLength( 2 );
|
|
4552
|
-
expect( patterns ).toEqual(
|
|
4553
|
-
expect.arrayContaining( [
|
|
4554
|
-
expect.objectContaining( {
|
|
4555
|
-
name: 'pattern-mix',
|
|
4556
|
-
} ),
|
|
4557
|
-
expect.objectContaining( {
|
|
4558
|
-
name: 'pattern-b',
|
|
4559
|
-
} ),
|
|
4560
|
-
] )
|
|
4561
|
-
);
|
|
4562
|
-
} );
|
|
4563
|
-
it( 'when multiple blocks are selected containing multiple times the same block', () => {
|
|
4564
|
-
const blocks = [
|
|
4565
|
-
{ name: 'core/test-block-b', innerBlocks: [] },
|
|
4566
|
-
{ name: 'some other block', innerBlocks: [] },
|
|
4567
|
-
{ name: 'core/test-block-a', innerBlocks: [] },
|
|
4568
|
-
{ name: 'core/test-block-b', innerBlocks: [] },
|
|
4569
|
-
];
|
|
4570
|
-
const patterns = __experimentalGetPatternTransformItems(
|
|
4571
|
-
state,
|
|
4572
|
-
blocks
|
|
4573
|
-
);
|
|
4574
|
-
expect( patterns ).toHaveLength( 1 );
|
|
4575
|
-
expect( patterns[ 0 ] ).toEqual(
|
|
4576
|
-
expect.objectContaining( {
|
|
4577
|
-
name: 'pattern-mix',
|
|
4578
|
-
} )
|
|
4579
|
-
);
|
|
4580
|
-
} );
|
|
4581
|
-
} );
|
|
4582
|
-
} );
|
|
4583
|
-
|
|
4584
4198
|
describe( 'wasBlockJustInserted', () => {
|
|
4585
4199
|
it( 'should return true if the client id passed to wasBlockJustInserted is found within the state', () => {
|
|
4586
4200
|
const expectedClientId = '62bfef6e-d5e9-43ba-b7f9-c77cf354141f';
|
package/src/store/utils.js
CHANGED
|
@@ -1,36 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
|
|
5
|
-
|
|
6
|
-
const EMPTY_ARRAY = [];
|
|
7
|
-
|
|
8
|
-
export function getUserPatterns( state ) {
|
|
9
|
-
const userPatterns =
|
|
10
|
-
state?.settings?.__experimentalReusableBlocks ?? EMPTY_ARRAY;
|
|
11
|
-
const userPatternCategories =
|
|
12
|
-
state?.settings?.__experimentalUserPatternCategories ?? [];
|
|
13
|
-
const categories = new Map();
|
|
14
|
-
userPatternCategories.forEach( ( userCategory ) =>
|
|
15
|
-
categories.set( userCategory.id, userCategory )
|
|
16
|
-
);
|
|
17
|
-
return userPatterns.map( ( userPattern ) => {
|
|
18
|
-
return {
|
|
19
|
-
name: `core/block/${ userPattern.id }`,
|
|
20
|
-
id: userPattern.id,
|
|
21
|
-
type: INSERTER_PATTERN_TYPES.user,
|
|
22
|
-
title: userPattern.title.raw,
|
|
23
|
-
categories: userPattern.wp_pattern_category.map( ( catId ) =>
|
|
24
|
-
categories && categories.get( catId )
|
|
25
|
-
? categories.get( catId ).slug
|
|
26
|
-
: catId
|
|
27
|
-
),
|
|
28
|
-
content: userPattern.content.raw,
|
|
29
|
-
syncStatus: userPattern.wp_pattern_sync_status,
|
|
30
|
-
};
|
|
31
|
-
} );
|
|
32
|
-
}
|
|
33
|
-
|
|
34
1
|
export const checkAllowList = ( list, item, defaultResult = null ) => {
|
|
35
2
|
if ( typeof list === 'boolean' ) {
|
|
36
3
|
return list;
|
|
@@ -72,3 +39,13 @@ export const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {
|
|
|
72
39
|
|
|
73
40
|
return true;
|
|
74
41
|
};
|
|
42
|
+
|
|
43
|
+
export const getAllPatternsDependants = ( state ) => {
|
|
44
|
+
return [
|
|
45
|
+
state.settings.__experimentalBlockPatterns,
|
|
46
|
+
state.settings.__experimentalUserPatternCategories,
|
|
47
|
+
state.settings.__experimentalReusableBlocks,
|
|
48
|
+
state.settings.__experimentalFetchBlockPatterns,
|
|
49
|
+
state.blockPatterns,
|
|
50
|
+
];
|
|
51
|
+
};
|
package/src/style.scss
CHANGED
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
@import "./components/block-variation-transforms/style.scss";
|
|
25
25
|
@import "./components/border-radius-control/style.scss";
|
|
26
26
|
@import "./components/colors-gradients/style.scss";
|
|
27
|
-
@import "./components/contrast-checker/style.scss";
|
|
28
27
|
@import "./components/date-format-picker/style.scss";
|
|
29
28
|
@import "./components/duotone-control/style.scss";
|
|
30
29
|
@import "./components/font-appearance-control/style.scss";
|
package/src/utils/index.js
CHANGED
package/src/utils/math.js
CHANGED
|
@@ -106,3 +106,15 @@ export function isPointContainedByRect( point, rect ) {
|
|
|
106
106
|
rect.bottom >= point.y
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Is the point within the top and bottom boundaries of the rectangle.
|
|
112
|
+
*
|
|
113
|
+
* @param {WPPoint} point The point.
|
|
114
|
+
* @param {DOMRect} rect The rectangle.
|
|
115
|
+
*
|
|
116
|
+
* @return {boolean} True if the point is within top and bottom of rectangle, false otherwise.
|
|
117
|
+
*/
|
|
118
|
+
export function isPointWithinTopAndBottomBoundariesOfRect( point, rect ) {
|
|
119
|
+
return rect.top <= point.y && rect.bottom >= point.y;
|
|
120
|
+
}
|
package/src/utils/object.js
CHANGED
|
@@ -49,3 +49,19 @@ export const getValueFromObjectPath = ( object, path, defaultValue ) => {
|
|
|
49
49
|
} );
|
|
50
50
|
return value ?? defaultValue;
|
|
51
51
|
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Helper util to filter out objects with duplicate values for a given property.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object[]} array Array of objects to filter.
|
|
57
|
+
* @param {string} property Property to filter unique values by.
|
|
58
|
+
*
|
|
59
|
+
* @return {Object[]} Array of objects with unique values for the specified property.
|
|
60
|
+
*/
|
|
61
|
+
export function uniqByProperty( array, property ) {
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
return array.filter( ( item ) => {
|
|
64
|
+
const value = item[ property ];
|
|
65
|
+
return seen.has( value ) ? false : seen.add( value );
|
|
66
|
+
} );
|
|
67
|
+
}
|
|
@@ -5,6 +5,52 @@ import postcss, { CssSyntaxError } from 'postcss';
|
|
|
5
5
|
import wrap from 'postcss-prefixwrap';
|
|
6
6
|
import rebaseUrl from 'postcss-urlrebase';
|
|
7
7
|
|
|
8
|
+
const transformStylesCache = new WeakMap();
|
|
9
|
+
|
|
10
|
+
function transformStyle(
|
|
11
|
+
{ css, ignoredSelectors = [], baseURL },
|
|
12
|
+
wrapperSelector = ''
|
|
13
|
+
) {
|
|
14
|
+
// When there is no wrapper selector or base URL, there is no need
|
|
15
|
+
// to transform the CSS. This is most cases because in the default
|
|
16
|
+
// iframed editor, no wrapping is needed, and not many styles
|
|
17
|
+
// provide a base URL.
|
|
18
|
+
if ( ! wrapperSelector && ! baseURL ) {
|
|
19
|
+
return css;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
return postcss(
|
|
24
|
+
[
|
|
25
|
+
wrapperSelector &&
|
|
26
|
+
wrap( wrapperSelector, {
|
|
27
|
+
ignoredSelectors: [
|
|
28
|
+
...ignoredSelectors,
|
|
29
|
+
wrapperSelector,
|
|
30
|
+
],
|
|
31
|
+
} ),
|
|
32
|
+
baseURL && rebaseUrl( { rootUrl: baseURL } ),
|
|
33
|
+
].filter( Boolean )
|
|
34
|
+
).process( css, {} ).css; // use sync PostCSS API
|
|
35
|
+
} catch ( error ) {
|
|
36
|
+
if ( error instanceof CssSyntaxError ) {
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.warn(
|
|
39
|
+
'wp.blockEditor.transformStyles Failed to transform CSS.',
|
|
40
|
+
error.message + '\n' + error.showSourceCode( false )
|
|
41
|
+
);
|
|
42
|
+
} else {
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.warn(
|
|
45
|
+
'wp.blockEditor.transformStyles Failed to transform CSS.',
|
|
46
|
+
error
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
8
54
|
/**
|
|
9
55
|
* Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
|
|
10
56
|
*
|
|
@@ -18,45 +64,14 @@ import rebaseUrl from 'postcss-urlrebase';
|
|
|
18
64
|
* @return {Array} converted rules.
|
|
19
65
|
*/
|
|
20
66
|
const transformStyles = ( styles, wrapperSelector = '' ) => {
|
|
21
|
-
return styles.map( (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// iframed editor, no wrapping is needed, and not many styles
|
|
25
|
-
// provide a base URL.
|
|
26
|
-
if ( ! wrapperSelector && ! baseURL ) {
|
|
27
|
-
return css;
|
|
67
|
+
return styles.map( ( style ) => {
|
|
68
|
+
if ( transformStylesCache.has( style ) ) {
|
|
69
|
+
return transformStylesCache.get( style );
|
|
28
70
|
}
|
|
29
71
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
wrapperSelector &&
|
|
34
|
-
wrap( wrapperSelector, {
|
|
35
|
-
ignoredSelectors: [
|
|
36
|
-
...ignoredSelectors,
|
|
37
|
-
wrapperSelector,
|
|
38
|
-
],
|
|
39
|
-
} ),
|
|
40
|
-
baseURL && rebaseUrl( { rootUrl: baseURL } ),
|
|
41
|
-
].filter( Boolean )
|
|
42
|
-
).process( css, {} ).css; // use sync PostCSS API
|
|
43
|
-
} catch ( error ) {
|
|
44
|
-
if ( error instanceof CssSyntaxError ) {
|
|
45
|
-
// eslint-disable-next-line no-console
|
|
46
|
-
console.warn(
|
|
47
|
-
'wp.blockEditor.transformStyles Failed to transform CSS.',
|
|
48
|
-
error.message + '\n' + error.showSourceCode( false )
|
|
49
|
-
);
|
|
50
|
-
} else {
|
|
51
|
-
// eslint-disable-next-line no-console
|
|
52
|
-
console.warn(
|
|
53
|
-
'wp.blockEditor.transformStyles Failed to transform CSS.',
|
|
54
|
-
error
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
72
|
+
const transformedStyle = transformStyle( style, wrapperSelector );
|
|
73
|
+
transformStylesCache.set( style, transformedStyle );
|
|
74
|
+
return transformedStyle;
|
|
60
75
|
} );
|
|
61
76
|
};
|
|
62
77
|
|