@wordpress/block-editor 10.2.0 → 10.3.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 +12 -0
- package/README.md +41 -0
- package/build/components/block-draggable/draggable-chip.js +4 -2
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-inspector/index.js +4 -4
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-list-compact.native.js +1 -0
- package/build/components/block-list/block-list-compact.native.js.map +1 -1
- package/build/components/block-list/block.js +72 -14
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +79 -12
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -23
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/modal.js +9 -6
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-parent-selector/index.js +3 -3
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +5 -4
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-popover/drop-zone.js +85 -0
- package/build/components/block-popover/drop-zone.js.map +1 -0
- package/build/components/block-popover/index.js +2 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +2 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +6 -9
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-preview/live.js +3 -7
- package/build/components/block-preview/live.js.map +1 -1
- package/build/components/block-selection-clearer/index.js +9 -1
- package/build/components/block-selection-clearer/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +17 -11
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +18 -42
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +4 -4
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -1
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +50 -20
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +15 -3
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/colors-gradients/control.js +1 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +256 -0
- package/build/components/font-sizes/fluid-utils.js.map +1 -0
- package/build/components/font-sizes/index.js +8 -0
- package/build/components/font-sizes/index.js.map +1 -1
- package/build/components/index.js +0 -9
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +151 -78
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/menu.js +14 -3
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +4 -2
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/preview-options/index.js +2 -3
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +35 -5
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +98 -57
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +12 -12
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-on-block-drop/types.js +6 -0
- package/build/components/use-on-block-drop/types.js.map +1 -0
- package/build/hooks/align.js +1 -3
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +1 -7
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/font-size.js +60 -0
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/margin.js +6 -5
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +2 -1
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +126 -4
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-typography-props.js +17 -3
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/hooks/utils.js +1 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/store/actions.js +59 -45
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +3 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +31 -15
- package/build/store/reducer.js.map +1 -1
- package/build/utils/math.js +14 -0
- package/build/utils/math.js.map +1 -1
- package/build/utils/pre-parse-patterns.js +19 -2
- package/build/utils/pre-parse-patterns.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +7 -3
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-inspector/index.js +4 -4
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-list-compact.native.js +1 -0
- package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
- package/build-module/components/block-list/block.js +72 -14
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +80 -13
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +8 -24
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/modal.js +10 -8
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +3 -3
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +5 -4
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-popover/drop-zone.js +70 -0
- package/build-module/components/block-popover/drop-zone.js.map +1 -0
- package/build-module/components/block-popover/index.js +2 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +6 -9
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-preview/live.js +3 -6
- package/build-module/components/block-preview/live.js.map +1 -1
- package/build-module/components/block-selection-clearer/index.js +9 -1
- package/build-module/components/block-selection-clearer/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +18 -12
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +19 -44
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +4 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +2 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +48 -20
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +15 -3
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +2 -2
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +245 -0
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
- package/build-module/components/font-sizes/index.js +1 -0
- package/build-module/components/font-sizes/index.js.map +1 -1
- package/build-module/components/index.js +0 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +148 -81
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +10 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +4 -2
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/preview-options/index.js +2 -3
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +34 -5
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +98 -58
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +12 -12
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/types.js +2 -0
- package/build-module/components/use-on-block-drop/types.js.map +1 -0
- package/build-module/hooks/align.js +1 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +1 -6
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/font-size.js +59 -1
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/margin.js +6 -5
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +2 -1
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +124 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +17 -4
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/hooks/utils.js +2 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/store/actions.js +55 -42
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +3 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +32 -16
- package/build-module/store/reducer.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/pre-parse-patterns.js +19 -2
- package/build-module/utils/pre-parse-patterns.js.map +1 -1
- package/build-style/style-rtl.css +243 -144
- package/build-style/style.css +243 -144
- package/package.json +28 -28
- package/src/components/block-breadcrumb/test/index.js +1 -1
- package/src/components/block-draggable/draggable-chip.js +4 -2
- package/src/components/block-inspector/index.js +8 -7
- package/src/components/block-list/block-list-compact.native.js +1 -0
- package/src/components/block-list/block.js +111 -7
- package/src/components/block-list/block.native.js +123 -9
- package/src/components/block-list/style.scss +93 -126
- package/src/components/block-list/use-in-between-inserter.js +8 -19
- package/src/components/block-lock/modal.js +12 -7
- package/src/components/block-mover/style.scss +0 -1
- package/src/components/block-parent-selector/index.js +3 -3
- package/src/components/block-patterns-list/index.js +9 -5
- package/src/components/block-patterns-list/style.scss +7 -3
- package/src/components/block-popover/README.md +8 -0
- package/src/components/block-popover/drop-zone.js +63 -0
- package/src/components/block-popover/index.js +2 -1
- package/src/components/block-popover/style.scss +17 -1
- package/src/components/block-preview/auto.js +1 -1
- package/src/components/block-preview/index.js +7 -8
- package/src/components/block-preview/live.js +2 -7
- package/src/components/block-preview/test/index.js +1 -7
- package/src/components/block-selection-clearer/index.js +7 -2
- package/src/components/block-selection-clearer/test/index.js +118 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +25 -11
- package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
- package/src/components/block-styles/index.js +26 -49
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-toolbar/index.js +4 -6
- package/src/components/block-toolbar/style.scss +38 -14
- package/src/components/block-tools/back-compat.js +1 -0
- package/src/components/block-tools/insertion-point.js +42 -17
- package/src/components/block-tools/selected-block-popover.js +14 -1
- package/src/components/button-block-appender/style.scss +4 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +32 -52
- package/src/components/color-palette/test/control.js +11 -15
- package/src/components/colors-gradients/control.js +2 -2
- package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
- package/src/components/colors-gradients/test/control.js +49 -77
- package/src/components/font-sizes/fluid-utils.js +296 -0
- package/src/components/font-sizes/index.js +1 -0
- package/src/components/font-sizes/test/fluid-utils.js +168 -0
- package/src/components/image-size-control/test/index.js +47 -60
- package/src/components/index.js +0 -1
- package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/src/components/inserter/block-patterns-tab.js +232 -98
- package/src/components/inserter/menu.js +15 -2
- package/src/components/inserter/style.scss +94 -9
- package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
- package/src/components/inserter-draggable-blocks/index.js +12 -2
- package/src/components/inserter-list-item/style.scss +20 -1
- package/src/components/link-control/test/index.js +1 -1
- package/src/components/list-view/use-list-view-drop-zone.js +4 -18
- package/src/components/panel-color-settings/test/index.js +4 -4
- package/src/components/preview-options/index.js +2 -2
- package/src/components/preview-options/style.scss +1 -1
- package/src/components/provider/test/use-block-sync.js +131 -165
- package/src/components/responsive-block-control/test/index.js +4 -4
- package/src/components/spacing-sizes-control/spacing-input-control.js +16 -2
- package/src/components/spacing-sizes-control/style.scss +26 -19
- package/src/components/use-block-drop-zone/index.js +136 -79
- package/src/components/use-block-drop-zone/test/index.js +333 -81
- package/src/components/use-on-block-drop/index.js +11 -12
- package/src/components/use-on-block-drop/types.ts +1 -0
- package/src/hooks/align.js +3 -2
- package/src/hooks/align.native.js +5 -8
- package/src/hooks/font-size.js +75 -0
- package/src/hooks/margin.js +5 -4
- package/src/hooks/padding.js +1 -0
- package/src/hooks/style.js +122 -3
- package/src/hooks/test/style.js +206 -1
- package/src/hooks/test/use-typography-props.js +22 -0
- package/src/hooks/use-typography-props.js +18 -3
- package/src/hooks/utils.js +6 -2
- package/src/store/actions.js +20 -12
- package/src/store/defaults.js +3 -0
- package/src/store/reducer.js +31 -24
- package/src/store/test/actions.js +0 -9
- package/src/utils/math.js +17 -0
- package/src/utils/pre-parse-patterns.js +12 -7
- package/build/components/inserter/pattern-panel.js +0 -87
- package/build/components/inserter/pattern-panel.js.map +0 -1
- package/build-module/components/inserter/pattern-panel.js +0 -74
- package/build-module/components/inserter/pattern-panel.js.map +0 -1
- package/src/components/inserter/pattern-panel.js +0 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inner-blocks/use-inner-block-template-sync.js"],"names":["useInnerBlockTemplateSync","clientId","template","templateLock","templateInsertUpdatesSelection","getSelectedBlocksInitialCaretPosition","blockEditorStore","replaceInnerBlocks","innerBlocks","select","getBlocks","existingTemplate","window","queueMicrotask","currentInnerBlocks","shouldApplyTemplate","length","hasTemplateChanged","current","nextBlocks"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAKA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,QADc,EAEdC,QAFc,EAGdC,YAHc,EAIdC,8BAJc,EAKb;AACD,QAAM;AAAEC,IAAAA;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inner-blocks/use-inner-block-template-sync.js"],"names":["useInnerBlockTemplateSync","clientId","template","templateLock","templateInsertUpdatesSelection","getSelectedBlocksInitialCaretPosition","isBlockSelected","blockEditorStore","replaceInnerBlocks","innerBlocks","select","getBlocks","existingTemplate","window","queueMicrotask","currentInnerBlocks","shouldApplyTemplate","length","hasTemplateChanged","current","nextBlocks"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAKA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,QADc,EAEdC,QAFc,EAGdC,YAHc,EAIdC,8BAJc,EAKb;AACD,QAAM;AAAEC,IAAAA,qCAAF;AAAyCC,IAAAA;AAAzC,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAyB,uBAAaD,YAAb,CAA/B;AACA,QAAME,WAAW,GAAG,qBACjBC,MAAF,IAAcA,MAAM,CAAEH,YAAF,CAAN,CAA2BI,SAA3B,CAAsCV,QAAtC,CADK,EAEnB,CAAEA,QAAF,CAFmB,CAApB;AAIA,QAAM;AAAEU,IAAAA;AAAF,MAAgB,qBAAWJ,YAAX,CAAtB,CARC,CAUD;;AACA,QAAMK,gBAAgB,GAAG,qBAAQ,IAAR,CAAzB;AACA,gCAAiB,MAAM;AACtB;AACA;AACA;AACA;AACAC,IAAAA,MAAM,CAACC,cAAP,CAAuB,MAAM;AAC5B;AACA;AACA,YAAMC,kBAAkB,GAAGJ,SAAS,CAAEV,QAAF,CAApC;AACA,YAAMe,mBAAmB,GACxBD,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACAd,YAAY,KAAK,KADjB,IAEAA,YAAY,KAAK,aAHlB;AAKA,YAAMe,kBAAkB,GAAG,CAAE,qBAC5BhB,QAD4B,EAE5BU,gBAAgB,CAACO,OAFW,CAA7B;;AAKA,UAAK,CAAEH,mBAAF,IAAyB,CAAEE,kBAAhC,EAAqD;AACpD;AACA;;AAEDN,MAAAA,gBAAgB,CAACO,OAAjB,GAA2BjB,QAA3B;AACA,YAAMkB,UAAU,GAAG,2CAClBL,kBADkB,EAElBb,QAFkB,CAAnB;;AAKA,UAAK,CAAE,qBAASkB,UAAT,EAAqBL,kBAArB,CAAP,EAAmD;AAClDP,QAAAA,kBAAkB,CACjBP,QADiB,EAEjBmB,UAFiB,EAGjBL,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACCb,8BADD,IAECgB,UAAU,CAACH,MAAX,KAAsB,CAFvB,IAGCX,eAAe,CAAEL,QAAF,CANC,EAOjB;AACA;AACA;AACA;AACAI,QAAAA,qCAAqC,EAXpB,CAAlB;AAaA;AACD,KAvCD;AAwCA,GA7CD,EA6CG,CAAEI,WAAF,EAAeP,QAAf,EAAyBC,YAAzB,EAAuCF,QAAvC,CA7CH;AA8CA","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useLayoutEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { synchronizeBlocksWithTemplate } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * This hook makes sure that a block's inner blocks stay in sync with the given\n * block \"template\". The template is a block hierarchy to which inner blocks must\n * conform. If the blocks get \"out of sync\" with the template and the template\n * is meant to be locked (e.g. templateLock = \"all\" or templateLock = \"contentOnly\"),\n * then we replace the inner blocks with the correct value after synchronizing it with the template.\n *\n * @param {string} clientId The block client ID.\n * @param {Object} template The template to match.\n * @param {string} templateLock The template lock state for the inner blocks. For\n * example, if the template lock is set to \"all\",\n * then the inner blocks will stay in sync with the\n * template. If not defined or set to false, then\n * the inner blocks will not be synchronized with\n * the given template.\n * @param {boolean} templateInsertUpdatesSelection Whether or not to update the\n * block-editor selection state when inner blocks\n * are replaced after template synchronization.\n */\nexport default function useInnerBlockTemplateSync(\n\tclientId,\n\ttemplate,\n\ttemplateLock,\n\ttemplateInsertUpdatesSelection\n) {\n\tconst { getSelectedBlocksInitialCaretPosition, isBlockSelected } =\n\t\tuseSelect( blockEditorStore );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst innerBlocks = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlocks( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { getBlocks } = useSelect( blockEditorStore );\n\n\t// Maintain a reference to the previous value so we can do a deep equality check.\n\tconst existingTemplate = useRef( null );\n\tuseLayoutEffect( () => {\n\t\t// There's an implicit dependency between useInnerBlockTemplateSync and useNestedSettingsUpdate\n\t\t// The former needs to happen after the latter and since the latter is using microtasks to batch updates (performance optimization),\n\t\t// we need to schedule this one in a microtask as well.\n\t\t// Exemple: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.\n\t\twindow.queueMicrotask( () => {\n\t\t\t// Only synchronize innerBlocks with template if innerBlocks are empty\n\t\t\t// or a locking \"all\" or \"contentOnly\" exists directly on the block.\n\t\t\tconst currentInnerBlocks = getBlocks( clientId );\n\t\t\tconst shouldApplyTemplate =\n\t\t\t\tcurrentInnerBlocks.length === 0 ||\n\t\t\t\ttemplateLock === 'all' ||\n\t\t\t\ttemplateLock === 'contentOnly';\n\n\t\t\tconst hasTemplateChanged = ! isEqual(\n\t\t\t\ttemplate,\n\t\t\t\texistingTemplate.current\n\t\t\t);\n\n\t\t\tif ( ! shouldApplyTemplate || ! hasTemplateChanged ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\texistingTemplate.current = template;\n\t\t\tconst nextBlocks = synchronizeBlocksWithTemplate(\n\t\t\t\tcurrentInnerBlocks,\n\t\t\t\ttemplate\n\t\t\t);\n\n\t\t\tif ( ! isEqual( nextBlocks, currentInnerBlocks ) ) {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tclientId,\n\t\t\t\t\tnextBlocks,\n\t\t\t\t\tcurrentInnerBlocks.length === 0 &&\n\t\t\t\t\t\ttemplateInsertUpdatesSelection &&\n\t\t\t\t\t\tnextBlocks.length !== 0 &&\n\t\t\t\t\t\tisBlockSelected( clientId ),\n\t\t\t\t\t// This ensures the \"initialPosition\" doesn't change when applying the template\n\t\t\t\t\t// If we're supposed to focus the block, we'll focus the first inner block\n\t\t\t\t\t// otherwise, we won't apply any auto-focus.\n\t\t\t\t\t// This ensures for instance that the focus stays in the inserter when inserting the \"buttons\" block.\n\t\t\t\t\tgetSelectedBlocksInitialCaretPosition()\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t}, [ innerBlocks, template, templateLock, clientId ] );\n}\n"]}
|
|
@@ -5,6 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.BlockPatternsCategoryDialog = BlockPatternsCategoryDialog;
|
|
9
|
+
exports.BlockPatternsCategoryPanel = BlockPatternsCategoryPanel;
|
|
8
10
|
exports.default = void 0;
|
|
9
11
|
|
|
10
12
|
var _element = require("@wordpress/element");
|
|
@@ -13,7 +15,11 @@ var _i18n = require("@wordpress/i18n");
|
|
|
13
15
|
|
|
14
16
|
var _compose = require("@wordpress/compose");
|
|
15
17
|
|
|
16
|
-
var
|
|
18
|
+
var _components = require("@wordpress/components");
|
|
19
|
+
|
|
20
|
+
var _icons = require("@wordpress/icons");
|
|
21
|
+
|
|
22
|
+
var _dom = require("@wordpress/dom");
|
|
17
23
|
|
|
18
24
|
var _usePatternsState = _interopRequireDefault(require("./hooks/use-patterns-state"));
|
|
19
25
|
|
|
@@ -28,67 +34,7 @@ var _explorer = _interopRequireDefault(require("./block-patterns-explorer/explor
|
|
|
28
34
|
/**
|
|
29
35
|
* Internal dependencies
|
|
30
36
|
*/
|
|
31
|
-
function
|
|
32
|
-
let {
|
|
33
|
-
rootClientId,
|
|
34
|
-
onInsert,
|
|
35
|
-
selectedCategory,
|
|
36
|
-
populatedCategories
|
|
37
|
-
} = _ref;
|
|
38
|
-
const [allPatterns,, onClick] = (0, _usePatternsState.default)(onInsert, rootClientId);
|
|
39
|
-
const getPatternIndex = (0, _element.useCallback)(pattern => {
|
|
40
|
-
var _pattern$categories;
|
|
41
|
-
|
|
42
|
-
if (!((_pattern$categories = pattern.categories) !== null && _pattern$categories !== void 0 && _pattern$categories.length)) {
|
|
43
|
-
return Infinity;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const indexedCategories = populatedCategories.reduce((accumulator, _ref2, index) => {
|
|
47
|
-
let {
|
|
48
|
-
name
|
|
49
|
-
} = _ref2;
|
|
50
|
-
accumulator[name] = index;
|
|
51
|
-
return accumulator;
|
|
52
|
-
}, {});
|
|
53
|
-
return Math.min(...pattern.categories.map(cat => indexedCategories[cat] !== undefined ? indexedCategories[cat] : Infinity));
|
|
54
|
-
}, [populatedCategories]);
|
|
55
|
-
const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
|
|
56
|
-
var _pattern$categories2;
|
|
57
|
-
|
|
58
|
-
return selectedCategory.name === 'uncategorized' ? getPatternIndex(pattern) === Infinity : (_pattern$categories2 = pattern.categories) === null || _pattern$categories2 === void 0 ? void 0 : _pattern$categories2.includes(selectedCategory.name);
|
|
59
|
-
}), [allPatterns, selectedCategory]); // Ordering the patterns is important for the async rendering.
|
|
60
|
-
|
|
61
|
-
const orderedPatterns = (0, _element.useMemo)(() => {
|
|
62
|
-
return currentCategoryPatterns.sort((a, b) => {
|
|
63
|
-
return getPatternIndex(a) - getPatternIndex(b);
|
|
64
|
-
});
|
|
65
|
-
}, [currentCategoryPatterns, getPatternIndex]);
|
|
66
|
-
const currentShownPatterns = (0, _compose.useAsyncList)(orderedPatterns);
|
|
67
|
-
|
|
68
|
-
if (!currentCategoryPatterns.length) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return (0, _element.createElement)("div", {
|
|
73
|
-
className: "block-editor-inserter__panel-content"
|
|
74
|
-
}, (0, _element.createElement)(_blockPatternsList.default, {
|
|
75
|
-
shownPatterns: currentShownPatterns,
|
|
76
|
-
blockPatterns: currentCategoryPatterns,
|
|
77
|
-
onClickPattern: onClick,
|
|
78
|
-
label: selectedCategory.label,
|
|
79
|
-
orientation: "vertical",
|
|
80
|
-
isDraggable: true
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function BlockPatternsTabs(_ref3) {
|
|
85
|
-
let {
|
|
86
|
-
rootClientId,
|
|
87
|
-
onInsert,
|
|
88
|
-
onClickCategory,
|
|
89
|
-
selectedCategory
|
|
90
|
-
} = _ref3;
|
|
91
|
-
const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
|
|
37
|
+
function usePatternsCategories() {
|
|
92
38
|
const [allPatterns, allCategories] = (0, _usePatternsState.default)();
|
|
93
39
|
const hasRegisteredCategory = (0, _element.useCallback)(pattern => {
|
|
94
40
|
if (!pattern.categories || !pattern.categories.length) {
|
|
@@ -100,16 +46,16 @@ function BlockPatternsTabs(_ref3) {
|
|
|
100
46
|
|
|
101
47
|
const populatedCategories = (0, _element.useMemo)(() => {
|
|
102
48
|
const categories = allCategories.filter(category => allPatterns.some(pattern => {
|
|
103
|
-
var _pattern$
|
|
49
|
+
var _pattern$categories;
|
|
104
50
|
|
|
105
|
-
return (_pattern$
|
|
106
|
-
})).sort((
|
|
51
|
+
return (_pattern$categories = pattern.categories) === null || _pattern$categories === void 0 ? void 0 : _pattern$categories.includes(category.name);
|
|
52
|
+
})).sort((_ref, _ref2) => {
|
|
107
53
|
let {
|
|
108
54
|
name: currentName
|
|
109
|
-
} =
|
|
55
|
+
} = _ref;
|
|
110
56
|
let {
|
|
111
57
|
name: nextName
|
|
112
|
-
} =
|
|
58
|
+
} = _ref2;
|
|
113
59
|
|
|
114
60
|
if (![currentName, nextName].includes('featured')) {
|
|
115
61
|
return 0;
|
|
@@ -127,24 +73,151 @@ function BlockPatternsTabs(_ref3) {
|
|
|
127
73
|
|
|
128
74
|
return categories;
|
|
129
75
|
}, [allPatterns, allCategories]);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
76
|
+
return populatedCategories;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function BlockPatternsCategoryDialog(_ref3) {
|
|
80
|
+
let {
|
|
81
|
+
rootClientId,
|
|
82
|
+
onInsert,
|
|
83
|
+
category
|
|
84
|
+
} = _ref3;
|
|
85
|
+
const container = (0, _element.useRef)();
|
|
86
|
+
(0, _element.useEffect)(() => {
|
|
87
|
+
const timeout = setTimeout(() => {
|
|
88
|
+
const [firstTabbable] = _dom.focus.tabbable.find(container.current);
|
|
89
|
+
|
|
90
|
+
firstTabbable === null || firstTabbable === void 0 ? void 0 : firstTabbable.focus();
|
|
91
|
+
});
|
|
92
|
+
return () => clearTimeout(timeout);
|
|
93
|
+
}, [category]);
|
|
94
|
+
return (0, _element.createElement)("div", {
|
|
95
|
+
ref: container,
|
|
96
|
+
className: "block-editor-inserter__patterns-category-panel"
|
|
97
|
+
}, (0, _element.createElement)(BlockPatternsCategoryPanel, {
|
|
137
98
|
rootClientId: rootClientId,
|
|
138
99
|
onInsert: onInsert,
|
|
139
|
-
|
|
140
|
-
|
|
100
|
+
category: category
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function BlockPatternsCategoryPanel(_ref4) {
|
|
105
|
+
let {
|
|
106
|
+
rootClientId,
|
|
107
|
+
onInsert,
|
|
108
|
+
category
|
|
109
|
+
} = _ref4;
|
|
110
|
+
const [allPatterns,, onClick] = (0, _usePatternsState.default)(onInsert, rootClientId);
|
|
111
|
+
const availableCategories = usePatternsCategories();
|
|
112
|
+
const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
|
|
113
|
+
var _pattern$categories$f, _pattern$categories3;
|
|
114
|
+
|
|
115
|
+
if (category.name !== 'uncategorized') {
|
|
116
|
+
var _pattern$categories2;
|
|
117
|
+
|
|
118
|
+
return (_pattern$categories2 = pattern.categories) === null || _pattern$categories2 === void 0 ? void 0 : _pattern$categories2.includes(category.name);
|
|
119
|
+
} // The uncategorized category should show all the patterns without any category
|
|
120
|
+
// or with no available category.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
const availablePatternCategories = (_pattern$categories$f = (_pattern$categories3 = pattern.categories) === null || _pattern$categories3 === void 0 ? void 0 : _pattern$categories3.filter(cat => availableCategories.find(availableCategory => availableCategory.name === cat))) !== null && _pattern$categories$f !== void 0 ? _pattern$categories$f : [];
|
|
124
|
+
return availablePatternCategories.length === 0;
|
|
125
|
+
}), [allPatterns, category]);
|
|
126
|
+
const currentShownPatterns = (0, _compose.useAsyncList)(currentCategoryPatterns);
|
|
127
|
+
|
|
128
|
+
if (!currentCategoryPatterns.length) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return (0, _element.createElement)("div", null, (0, _element.createElement)("div", {
|
|
133
|
+
className: "block-editor-inserter__patterns-category-panel-title"
|
|
134
|
+
}, category.label), (0, _element.createElement)("p", null, category.description), (0, _element.createElement)(_blockPatternsList.default, {
|
|
135
|
+
shownPatterns: currentShownPatterns,
|
|
136
|
+
blockPatterns: currentCategoryPatterns,
|
|
137
|
+
onClickPattern: onClick,
|
|
138
|
+
label: category.label,
|
|
139
|
+
orientation: "vertical",
|
|
140
|
+
category: category.label,
|
|
141
|
+
isDraggable: true
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function BlockPatternsTabs(_ref5) {
|
|
146
|
+
let {
|
|
147
|
+
onSelectCategory,
|
|
148
|
+
selectedCategory,
|
|
149
|
+
onInsert,
|
|
150
|
+
rootClientId
|
|
151
|
+
} = _ref5;
|
|
152
|
+
const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
|
|
153
|
+
const categories = usePatternsCategories();
|
|
154
|
+
const isMobile = (0, _compose.useViewportMatch)('medium', '<');
|
|
155
|
+
return (0, _element.createElement)(_element.Fragment, null, !isMobile && (0, _element.createElement)("div", {
|
|
156
|
+
className: "block-editor-inserter__block-patterns-tabs-container"
|
|
157
|
+
}, (0, _element.createElement)("nav", {
|
|
158
|
+
"aria-label": (0, _i18n.__)('Block pattern categories')
|
|
159
|
+
}, (0, _element.createElement)(_components.__experimentalItemGroup, {
|
|
160
|
+
role: "list",
|
|
161
|
+
className: "block-editor-inserter__block-patterns-tabs"
|
|
162
|
+
}, categories.map(category => (0, _element.createElement)(_components.__experimentalItem, {
|
|
163
|
+
role: "listitem",
|
|
164
|
+
key: category.name,
|
|
165
|
+
onClick: () => onSelectCategory(category),
|
|
166
|
+
className: category === selectedCategory ? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category' : 'block-editor-inserter__patterns-category',
|
|
167
|
+
"aria-label": category.label,
|
|
168
|
+
"aria-current": category === selectedCategory ? 'true' : undefined
|
|
169
|
+
}, (0, _element.createElement)(_components.__experimentalHStack, null, (0, _element.createElement)(_components.FlexBlock, null, category.label), (0, _element.createElement)(_icons.Icon, {
|
|
170
|
+
icon: _icons.chevronRight
|
|
171
|
+
})))), (0, _element.createElement)("div", {
|
|
172
|
+
role: "presentation",
|
|
173
|
+
className: "block-editor-inserter__patterns-fill-space"
|
|
174
|
+
}), (0, _element.createElement)("div", {
|
|
175
|
+
role: "listitem"
|
|
176
|
+
}, (0, _element.createElement)(_components.Button, {
|
|
177
|
+
className: "block-editor-inserter__patterns-explore-button",
|
|
178
|
+
onClick: () => setShowPatternsExplorer(true),
|
|
179
|
+
variant: "secondary"
|
|
180
|
+
}, (0, _i18n.__)('Explore all patterns')))))), isMobile && (0, _element.createElement)(BlockPatternsTabNavigation, {
|
|
181
|
+
onInsert: onInsert,
|
|
182
|
+
rootClientId: rootClientId
|
|
141
183
|
}), showPatternsExplorer && (0, _element.createElement)(_explorer.default, {
|
|
142
|
-
initialCategory:
|
|
143
|
-
patternCategories:
|
|
184
|
+
initialCategory: selectedCategory,
|
|
185
|
+
patternCategories: categories,
|
|
144
186
|
onModalClose: () => setShowPatternsExplorer(false)
|
|
145
187
|
}));
|
|
146
188
|
}
|
|
147
189
|
|
|
190
|
+
function BlockPatternsTabNavigation(_ref6) {
|
|
191
|
+
let {
|
|
192
|
+
onInsert,
|
|
193
|
+
rootClientId
|
|
194
|
+
} = _ref6;
|
|
195
|
+
const categories = usePatternsCategories();
|
|
196
|
+
return (0, _element.createElement)(_components.__experimentalNavigatorProvider, {
|
|
197
|
+
initialPath: "/"
|
|
198
|
+
}, (0, _element.createElement)(_components.__experimentalNavigatorScreen, {
|
|
199
|
+
path: "/"
|
|
200
|
+
}, (0, _element.createElement)(_components.__experimentalItemGroup, null, categories.map(category => (0, _element.createElement)(_components.__experimentalNavigatorButton, {
|
|
201
|
+
key: category.name,
|
|
202
|
+
path: `/category/${category.name}`,
|
|
203
|
+
as: _components.__experimentalItem,
|
|
204
|
+
isAction: true
|
|
205
|
+
}, (0, _element.createElement)(_components.__experimentalHStack, null, (0, _element.createElement)(_components.FlexBlock, null, category.label), (0, _element.createElement)(_icons.Icon, {
|
|
206
|
+
icon: (0, _i18n.isRTL)() ? _icons.chevronLeft : _icons.chevronRight
|
|
207
|
+
})))))), categories.map(category => (0, _element.createElement)(_components.__experimentalNavigatorScreen, {
|
|
208
|
+
key: category.name,
|
|
209
|
+
path: `/category/${category.name}`
|
|
210
|
+
}, (0, _element.createElement)(_components.__experimentalNavigatorBackButton, {
|
|
211
|
+
icon: (0, _i18n.isRTL)() ? _icons.chevronRight : _icons.chevronLeft,
|
|
212
|
+
isSmall: true,
|
|
213
|
+
"aria-label": (0, _i18n.__)('Navigate to the categories list')
|
|
214
|
+
}, (0, _i18n.__)('Back')), (0, _element.createElement)(BlockPatternsCategoryPanel, {
|
|
215
|
+
category: category,
|
|
216
|
+
rootClientId: rootClientId,
|
|
217
|
+
onInsert: onInsert
|
|
218
|
+
}))));
|
|
219
|
+
}
|
|
220
|
+
|
|
148
221
|
var _default = BlockPatternsTabs;
|
|
149
222
|
exports.default = _default;
|
|
150
223
|
//# sourceMappingURL=block-patterns-tab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["BlockPatternsCategory","rootClientId","onInsert","selectedCategory","populatedCategories","allPatterns","onClick","getPatternIndex","pattern","categories","length","Infinity","indexedCategories","reduce","accumulator","index","name","Math","min","map","cat","undefined","currentCategoryPatterns","filter","includes","orderedPatterns","sort","a","b","currentShownPatterns","label","BlockPatternsTabs","onClickCategory","showPatternsExplorer","setShowPatternsExplorer","allCategories","hasRegisteredCategory","some","category","currentName","nextName","find","push","patternCategory"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState, useCallback } from '@wordpress/element';\nimport { _x } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PatternInserterPanel from './pattern-panel';\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\n\nfunction BlockPatternsCategory( {\n\trootClientId,\n\tonInsert,\n\tselectedCategory,\n\tpopulatedCategories,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst getPatternIndex = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories?.length ) {\n\t\t\t\treturn Infinity;\n\t\t\t}\n\t\t\tconst indexedCategories = populatedCategories.reduce(\n\t\t\t\t( accumulator, { name }, index ) => {\n\t\t\t\t\taccumulator[ name ] = index;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t\treturn Math.min(\n\t\t\t\t...pattern.categories.map( ( cat ) =>\n\t\t\t\t\tindexedCategories[ cat ] !== undefined\n\t\t\t\t\t\t? indexedCategories[ cat ]\n\t\t\t\t\t\t: Infinity\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\t[ populatedCategories ]\n\t);\n\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) =>\n\t\t\t\tselectedCategory.name === 'uncategorized'\n\t\t\t\t\t? getPatternIndex( pattern ) === Infinity\n\t\t\t\t\t: pattern.categories?.includes( selectedCategory.name )\n\t\t\t),\n\t\t[ allPatterns, selectedCategory ]\n\t);\n\n\t// Ordering the patterns is important for the async rendering.\n\tconst orderedPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.sort( ( a, b ) => {\n\t\t\treturn getPatternIndex( a ) - getPatternIndex( b );\n\t\t} );\n\t}, [ currentCategoryPatterns, getPatternIndex ] );\n\n\tconst currentShownPatterns = useAsyncList( orderedPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__panel-content\">\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ selectedCategory.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tisDraggable\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\trootClientId,\n\tonInsert,\n\tonClickCategory,\n\tselectedCategory,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst [ allPatterns, allCategories ] = usePatternsState();\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif ( ! [ currentName, nextName ].includes( 'featured' ) ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn currentName === 'featured' ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\tconst patternCategory = selectedCategory\n\t\t? selectedCategory\n\t\t: populatedCategories[ 0 ];\n\n\treturn (\n\t\t<>\n\t\t\t<PatternInserterPanel\n\t\t\t\tselectedCategory={ patternCategory }\n\t\t\t\tpatternCategories={ populatedCategories }\n\t\t\t\tonClickCategory={ onClickCategory }\n\t\t\t\topenPatternExplorer={ () => setShowPatternsExplorer( true ) }\n\t\t\t/>\n\t\t\t{ ! showPatternsExplorer && (\n\t\t\t\t<BlockPatternsCategory\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tselectedCategory={ patternCategory }\n\t\t\t\t\tpopulatedCategories={ populatedCategories }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ patternCategory }\n\t\t\t\t\tpatternCategories={ populatedCategories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["usePatternsCategories","allPatterns","allCategories","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","find","push","label","BlockPatternsCategoryDialog","rootClientId","onInsert","container","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","isMobile","map","undefined","chevronRight","BlockPatternsTabNavigation","Item","chevronLeft"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, isRTL } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorButton as NavigatorButton,\n\t__experimentalNavigatorBackButton as NavigatorBackButton,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\n\nfunction usePatternsCategories() {\n\tconst [ allPatterns, allCategories ] = usePatternsState();\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif ( ! [ currentName, nextName ].includes( 'featured' ) ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn currentName === 'featured' ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-panel\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-fill-space\"\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<BlockPatternsTabNavigation\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction BlockPatternsTabNavigation( { onInsert, rootClientId } ) {\n\tconst categories = usePatternsCategories();\n\n\treturn (\n\t\t<NavigatorProvider initialPath=\"/\">\n\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t<NavigatorButton\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t\t\t\tas={ Item }\n\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t<FlexBlock>{ category.label }</FlexBlock>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronLeft : chevronRight\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</NavigatorButton>\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</NavigatorScreen>\n\n\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t<NavigatorScreen\n\t\t\t\t\tkey={ category.name }\n\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t>\n\t\t\t\t\t<NavigatorBackButton\n\t\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\t\tisSmall\n\t\t\t\t\t\taria-label={ __( 'Navigate to the categories list' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</NavigatorBackButton>\n\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t/>\n\t\t\t\t</NavigatorScreen>\n\t\t\t) ) }\n\t\t</NavigatorProvider>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
|
|
@@ -23,7 +23,7 @@ var _previewPanel = _interopRequireDefault(require("./preview-panel"));
|
|
|
23
23
|
|
|
24
24
|
var _blockTypesTab = _interopRequireDefault(require("./block-types-tab"));
|
|
25
25
|
|
|
26
|
-
var _blockPatternsTab =
|
|
26
|
+
var _blockPatternsTab = _interopRequireWildcard(require("./block-patterns-tab"));
|
|
27
27
|
|
|
28
28
|
var _reusableBlocksTab = _interopRequireDefault(require("./reusable-blocks-tab"));
|
|
29
29
|
|
|
@@ -35,6 +35,10 @@ var _tabs = _interopRequireDefault(require("./tabs"));
|
|
|
35
35
|
|
|
36
36
|
var _store = require("../../store");
|
|
37
37
|
|
|
38
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
|
+
|
|
40
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
|
+
|
|
38
42
|
/**
|
|
39
43
|
* External dependencies
|
|
40
44
|
*/
|
|
@@ -62,6 +66,7 @@ function InserterMenu(_ref, ref) {
|
|
|
62
66
|
const [filterValue, setFilterValue] = (0, _element.useState)(__experimentalFilterValue);
|
|
63
67
|
const [hoveredItem, setHoveredItem] = (0, _element.useState)(null);
|
|
64
68
|
const [selectedPatternCategory, setSelectedPatternCategory] = (0, _element.useState)(null);
|
|
69
|
+
const [selectedTab, setSelectedTab] = (0, _element.useState)(null);
|
|
65
70
|
const [destinationRootClientId, onInsertBlocks, onToggleInsertionPoint] = (0, _useInsertionPoint.default)({
|
|
66
71
|
rootClientId,
|
|
67
72
|
clientId,
|
|
@@ -116,7 +121,7 @@ function InserterMenu(_ref, ref) {
|
|
|
116
121
|
const patternsTab = (0, _element.useMemo)(() => (0, _element.createElement)(_blockPatternsTab.default, {
|
|
117
122
|
rootClientId: destinationRootClientId,
|
|
118
123
|
onInsert: onInsertPattern,
|
|
119
|
-
|
|
124
|
+
onSelectCategory: onClickPatternCategory,
|
|
120
125
|
selectedCategory: selectedPatternCategory
|
|
121
126
|
}), [destinationRootClientId, onInsertPattern, onClickPatternCategory, selectedPatternCategory]);
|
|
122
127
|
const reusableBlocksTab = (0, _element.useMemo)(() => (0, _element.createElement)(_reusableBlocksTab.default, {
|
|
@@ -139,6 +144,7 @@ function InserterMenu(_ref, ref) {
|
|
|
139
144
|
searchRef.current.focus();
|
|
140
145
|
}
|
|
141
146
|
}));
|
|
147
|
+
const showPatternPanel = selectedTab === 'patterns' && !filterValue && selectedPatternCategory;
|
|
142
148
|
const showAsTabs = !filterValue && (showPatterns || hasReusableBlocks);
|
|
143
149
|
return (0, _element.createElement)("div", {
|
|
144
150
|
className: "block-editor-inserter__menu"
|
|
@@ -171,11 +177,16 @@ function InserterMenu(_ref, ref) {
|
|
|
171
177
|
})), showAsTabs && (0, _element.createElement)(_tabs.default, {
|
|
172
178
|
showPatterns: showPatterns,
|
|
173
179
|
showReusableBlocks: hasReusableBlocks,
|
|
174
|
-
prioritizePatterns: prioritizePatterns
|
|
180
|
+
prioritizePatterns: prioritizePatterns,
|
|
181
|
+
onSelect: setSelectedTab
|
|
175
182
|
}, getCurrentTab), !filterValue && !showAsTabs && (0, _element.createElement)("div", {
|
|
176
183
|
className: "block-editor-inserter__no-tab-container"
|
|
177
184
|
}, blocksTab)), showInserterHelpPanel && hoveredItem && (0, _element.createElement)(_previewPanel.default, {
|
|
178
185
|
item: hoveredItem
|
|
186
|
+
}), showPatternPanel && (0, _element.createElement)(_blockPatternsTab.BlockPatternsCategoryDialog, {
|
|
187
|
+
rootClientId: destinationRootClientId,
|
|
188
|
+
onInsert: onInsertPattern,
|
|
189
|
+
category: selectedPatternCategory
|
|
179
190
|
}));
|
|
180
191
|
}
|
|
181
192
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","hasReusableBlocks","select","__experimentalGetAllowedPatterns","getSettings","blockEditorStore","length","__experimentalReusableBlocks","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showAsTabs","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTabs from './block-patterns-tab';\nimport ReusableBlocksTab from './reusable-blocks-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue ] = useState(\n\t\t__experimentalFilterValue\n\t);\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst { showPatterns, hasReusableBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\thasReusableBlocks:\n\t\t\t\t\t!! getSettings().__experimentalReusableBlocks?.length,\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tfilterValue,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTabs\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonClickCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t}\n\t\t\treturn reusableBlocksTab;\n\t\t},\n\t\t[ blocksTab, patternsTab, reusableBlocksTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showAsTabs = ! filterValue && ( showPatterns || hasReusableBlocks );\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<SearchControl\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) setHoveredItem( null );\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! filterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! filterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","hasReusableBlocks","select","__experimentalGetAllowedPatterns","getSettings","blockEditorStore","length","__experimentalReusableBlocks","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTabs, {\n\tBlockPatternsCategoryDialog,\n} from './block-patterns-tab';\nimport ReusableBlocksTab from './reusable-blocks-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue ] = useState(\n\t\t__experimentalFilterValue\n\t);\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\tconst [ selectedTab, setSelectedTab ] = useState( null );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst { showPatterns, hasReusableBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\thasReusableBlocks:\n\t\t\t\t\t!! getSettings().__experimentalReusableBlocks?.length,\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tfilterValue,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTabs\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t}\n\t\t\treturn reusableBlocksTab;\n\t\t},\n\t\t[ blocksTab, patternsTab, reusableBlocksTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' && ! filterValue && selectedPatternCategory;\n\tconst showAsTabs = ! filterValue && ( showPatterns || hasReusableBlocks );\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<SearchControl\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) setHoveredItem( null );\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! filterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ setSelectedTab }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! filterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t\t{ showPatternPanel && (\n\t\t\t\t<BlockPatternsCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"]}
|
|
@@ -25,7 +25,8 @@ const InserterDraggableBlocks = _ref => {
|
|
|
25
25
|
isEnabled,
|
|
26
26
|
blocks,
|
|
27
27
|
icon,
|
|
28
|
-
children
|
|
28
|
+
children,
|
|
29
|
+
isPattern
|
|
29
30
|
} = _ref;
|
|
30
31
|
const transferData = {
|
|
31
32
|
type: 'inserter',
|
|
@@ -36,7 +37,8 @@ const InserterDraggableBlocks = _ref => {
|
|
|
36
37
|
transferData: transferData,
|
|
37
38
|
__experimentalDragComponent: (0, _element.createElement)(_draggableChip.default, {
|
|
38
39
|
count: blocks.length,
|
|
39
|
-
icon: icon
|
|
40
|
+
icon: icon,
|
|
41
|
+
isPattern: isPattern
|
|
40
42
|
})
|
|
41
43
|
}, _ref2 => {
|
|
42
44
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter-draggable-blocks/index.js"],"names":["InserterDraggableBlocks","isEnabled","blocks","icon","children","transferData","type","length","onDraggableStart","onDraggableEnd","draggable","onDragStart","undefined","onDragEnd"],"mappings":";;;;;;;;;;;AAGA;;AAIA;;AAPA;AACA;AACA;;AAEA;AACA;AACA;AAGA,MAAMA,uBAAuB,GAAG,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter-draggable-blocks/index.js"],"names":["InserterDraggableBlocks","isEnabled","blocks","icon","children","isPattern","transferData","type","length","onDraggableStart","onDraggableEnd","draggable","onDragStart","undefined","onDragEnd"],"mappings":";;;;;;;;;;;AAGA;;AAIA;;AAPA;AACA;AACA;;AAEA;AACA;AACA;AAGA,MAAMA,uBAAuB,GAAG,QAMzB;AAAA,MAN2B;AACjCC,IAAAA,SADiC;AAEjCC,IAAAA,MAFiC;AAGjCC,IAAAA,IAHiC;AAIjCC,IAAAA,QAJiC;AAKjCC,IAAAA;AALiC,GAM3B;AACN,QAAMC,YAAY,GAAG;AACpBC,IAAAA,IAAI,EAAE,UADc;AAEpBL,IAAAA;AAFoB,GAArB;AAKA,SACC,4BAAC,qBAAD;AACC,IAAA,8BAA8B,EAAC,WADhC;AAEC,IAAA,YAAY,EAAGI,YAFhB;AAGC,IAAA,2BAA2B,EAC1B,4BAAC,sBAAD;AACC,MAAA,KAAK,EAAGJ,MAAM,CAACM,MADhB;AAEC,MAAA,IAAI,EAAGL,IAFR;AAGC,MAAA,SAAS,EAAGE;AAHb;AAJF,KAWG,SAA4C;AAAA,QAA1C;AAAEI,MAAAA,gBAAF;AAAoBC,MAAAA;AAApB,KAA0C;AAC7C,WAAON,QAAQ,CAAE;AAChBO,MAAAA,SAAS,EAAEV,SADK;AAEhBW,MAAAA,WAAW,EAAEX,SAAS,GAAGQ,gBAAH,GAAsBI,SAF5B;AAGhBC,MAAAA,SAAS,EAAEb,SAAS,GAAGS,cAAH,GAAoBG;AAHxB,KAAF,CAAf;AAKA,GAjBF,CADD;AAqBA,CAjCD;;eAmCeb,uB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Draggable } from '@wordpress/components';\n/**\n * Internal dependencies\n */\nimport BlockDraggableChip from '../block-draggable/draggable-chip';\n\nconst InserterDraggableBlocks = ( {\n\tisEnabled,\n\tblocks,\n\ticon,\n\tchildren,\n\tisPattern,\n} ) => {\n\tconst transferData = {\n\t\ttype: 'inserter',\n\t\tblocks,\n\t};\n\n\treturn (\n\t\t<Draggable\n\t\t\t__experimentalTransferDataType=\"wp-blocks\"\n\t\t\ttransferData={ transferData }\n\t\t\t__experimentalDragComponent={\n\t\t\t\t<BlockDraggableChip\n\t\t\t\t\tcount={ blocks.length }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tisPattern={ isPattern }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t{ ( { onDraggableStart, onDraggableEnd } ) => {\n\t\t\t\treturn children( {\n\t\t\t\t\tdraggable: isEnabled,\n\t\t\t\t\tonDragStart: isEnabled ? onDraggableStart : undefined,\n\t\t\t\t\tonDragEnd: isEnabled ? onDraggableEnd : undefined,\n\t\t\t\t} );\n\t\t\t} }\n\t\t</Draggable>\n\t);\n};\n\nexport default InserterDraggableBlocks;\n"]}
|
|
@@ -60,17 +60,6 @@ var _store = require("../../store");
|
|
|
60
60
|
* 'inside' refers to nesting as an inner block.
|
|
61
61
|
*/
|
|
62
62
|
|
|
63
|
-
/**
|
|
64
|
-
* Is the point contained by the rectangle.
|
|
65
|
-
*
|
|
66
|
-
* @param {WPPoint} point The point.
|
|
67
|
-
* @param {DOMRect} rect The rectangle.
|
|
68
|
-
*
|
|
69
|
-
* @return {boolean} True if the point is contained by the rectangle, false otherwise.
|
|
70
|
-
*/
|
|
71
|
-
function isPointContainedByRect(point, rect) {
|
|
72
|
-
return rect.left <= point.x && rect.right >= point.x && rect.top <= point.y && rect.bottom >= point.y;
|
|
73
|
-
}
|
|
74
63
|
/**
|
|
75
64
|
* Determines whether the user positioning the dragged block to nest as an
|
|
76
65
|
* inner block.
|
|
@@ -81,8 +70,6 @@ function isPointContainedByRect(point, rect) {
|
|
|
81
70
|
* @param {WPPoint} point The point representing the cursor position when dragging.
|
|
82
71
|
* @param {DOMRect} rect The rectangle.
|
|
83
72
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
73
|
function isNestingGesture(point, rect) {
|
|
87
74
|
const blockCenterX = rect.left + rect.width / 2;
|
|
88
75
|
return point.x > blockCenterX;
|
|
@@ -113,7 +100,7 @@ function getListViewDropTarget(blocksData, position) {
|
|
|
113
100
|
|
|
114
101
|
const rect = blockData.element.getBoundingClientRect();
|
|
115
102
|
const [distance, edge] = (0, _math.getDistanceToNearestEdge)(position, rect, ALLOWED_DROP_EDGES);
|
|
116
|
-
const isCursorWithinBlock = isPointContainedByRect(position, rect);
|
|
103
|
+
const isCursorWithinBlock = (0, _math.isPointContainedByRect)(position, rect);
|
|
117
104
|
|
|
118
105
|
if (candidateDistance === undefined || distance < candidateDistance || isCursorWithinBlock) {
|
|
119
106
|
candidateDistance = distance;
|