@wordpress/block-editor 7.0.4 → 8.0.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 +11 -0
- package/README.md +31 -0
- package/build/components/alignment-control/ui.js +1 -2
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-icon/index.js +5 -1
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +4 -0
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/index.native.js +1 -1
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +21 -8
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +0 -1
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-patterns-list/index.js +1 -8
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-settings/container.native.js +5 -2
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +22 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/preview.native.js +2 -2
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/colors-gradients/control.js +8 -47
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +81 -6
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/duotone-control/index.js +5 -2
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +27 -15
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +20 -2
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +2 -2
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/index.js +5 -4
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +4 -3
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +74 -45
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/pattern-panel.js +19 -10
- package/build/components/inserter/pattern-panel.js.map +1 -1
- package/build/components/inspector-controls/groups.js +3 -1
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +9 -6
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/link-control/index.js +88 -35
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +19 -6
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +12 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block.js +49 -23
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +92 -73
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +39 -16
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +1 -1
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +8 -58
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/rich-text/embed-handler-picker.native.js +1 -0
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build/components/rich-text/format-edit.js +28 -2
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +2 -1
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/url-input/index.js +11 -4
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-setting/index.js +48 -9
- package/build/components/use-setting/index.js.map +1 -1
- package/build/hooks/border.js +5 -5
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +2 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/duotone.js +16 -5
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-appearance.js +49 -6
- package/build/hooks/font-appearance.js.map +1 -1
- package/build/hooks/font-family.js +37 -16
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +51 -9
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/index.js +8 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +8 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/letter-spacing.js +44 -7
- package/build/hooks/letter-spacing.js.map +1 -1
- package/build/hooks/line-height.js +45 -8
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/margin.js +1 -1
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +1 -1
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/text-decoration.js +42 -6
- package/build/hooks/text-decoration.js.map +1 -1
- package/build/hooks/text-transform.js +42 -6
- package/build/hooks/text-transform.js.map +1 -1
- package/build/hooks/typography.js +108 -8
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-cached-truthy.js +29 -0
- package/build/hooks/use-cached-truthy.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +120 -28
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +303 -265
- package/build/store/actions.js.map +1 -1
- package/build/store/index.js +1 -3
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +23 -22
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +44 -35
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +1 -2
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-icon/index.js +5 -1
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +4 -0
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +1 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -8
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +0 -1
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +1 -6
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +6 -3
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +24 -4
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js +2 -2
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +12 -53
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +82 -6
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/duotone-control/index.js +5 -2
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +23 -15
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +3 -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/inner-blocks/index.js +6 -5
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +5 -4
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +75 -46
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/pattern-panel.js +21 -13
- package/build-module/components/inserter/pattern-panel.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +3 -1
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +9 -6
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/link-control/index.js +88 -36
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +19 -7
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +11 -3
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block.js +49 -24
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +92 -73
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +41 -18
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +1 -1
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +8 -58
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/rich-text/embed-handler-picker.native.js +1 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build-module/components/rich-text/format-edit.js +28 -3
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +2 -1
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/url-input/index.js +11 -4
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-setting/index.js +48 -9
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/hooks/border.js +5 -5
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +2 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/duotone.js +16 -5
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-appearance.js +45 -6
- package/build-module/hooks/font-appearance.js.map +1 -1
- package/build-module/hooks/font-family.js +33 -16
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +47 -9
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- 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/letter-spacing.js +40 -7
- package/build-module/hooks/letter-spacing.js.map +1 -1
- package/build-module/hooks/line-height.js +41 -8
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/margin.js +1 -1
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +1 -1
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/text-decoration.js +38 -6
- package/build-module/hooks/text-decoration.js.map +1 -1
- package/build-module/hooks/text-transform.js +38 -6
- package/build-module/hooks/text-transform.js.map +1 -1
- package/build-module/hooks/typography.js +117 -17
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-cached-truthy.js +21 -0
- package/build-module/hooks/use-cached-truthy.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +124 -32
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +266 -241
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/index.js +1 -2
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +23 -22
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +42 -30
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +160 -57
- package/build-style/style.css +160 -57
- package/package.json +13 -14
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +0 -2
- package/src/components/alignment-control/ui.js +1 -4
- package/src/components/block-draggable/style.scss +19 -4
- package/src/components/block-icon/index.js +4 -1
- package/src/components/block-inspector/index.js +5 -0
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-list/use-block-props/use-multi-selection.js +27 -7
- package/src/components/block-navigation/dropdown.js +0 -1
- package/src/components/block-patterns-list/index.js +1 -8
- package/src/components/block-patterns-list/style.scss +22 -12
- package/src/components/block-settings/container.native.js +7 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +19 -7
- package/src/components/block-styles/preview.native.js +2 -2
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +88 -63
- package/src/components/colors-gradients/control.js +19 -62
- package/src/components/colors-gradients/panel-color-gradient-settings.js +76 -6
- package/src/components/colors-gradients/style.scss +3 -14
- package/src/components/colors-gradients/test/control.js +0 -16
- package/src/components/duotone-control/index.js +6 -0
- package/src/components/duotone-control/style.scss +27 -12
- package/src/components/font-appearance-control/index.js +22 -14
- package/src/components/iframe/index.js +1 -1
- package/src/components/index.js +3 -4
- package/src/components/index.native.js +1 -4
- package/src/components/inner-blocks/index.js +4 -4
- package/src/components/inner-blocks/index.native.js +7 -4
- package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
- package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
- package/src/components/inserter/block-patterns-tab.js +107 -80
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
- package/src/components/inserter/pattern-panel.js +33 -16
- package/src/components/inserter/style.scss +64 -1
- package/src/components/inserter/test/block-types-tab.native.js +1 -1
- package/src/components/inserter/test/fixtures/index.native.js +12 -0
- package/src/components/inspector-controls/groups.js +4 -0
- package/src/components/letter-spacing-control/index.js +12 -6
- package/src/components/link-control/README.md +7 -0
- package/src/components/link-control/index.js +99 -34
- package/src/components/link-control/link-preview.js +21 -9
- package/src/components/link-control/search-input.js +9 -3
- package/src/components/link-control/style.scss +32 -16
- package/src/components/link-control/test/index.js +179 -4
- package/src/components/list-view/block.js +67 -23
- package/src/components/list-view/branch.js +113 -91
- package/src/components/list-view/index.js +58 -19
- package/src/components/list-view/leaf.js +1 -1
- package/src/components/list-view/style.scss +14 -3
- package/src/components/list-view/use-list-view-client-ids.js +7 -66
- package/src/components/rich-text/embed-handler-picker.native.js +1 -0
- package/src/components/rich-text/format-edit.js +36 -2
- package/src/components/rich-text/format-toolbar/index.js +3 -0
- package/src/components/url-input/index.js +14 -4
- package/src/components/use-setting/index.js +49 -11
- package/src/hooks/border.js +8 -11
- package/src/hooks/color-panel.js +1 -0
- package/src/hooks/duotone.js +21 -7
- package/src/hooks/font-appearance.js +38 -7
- package/src/hooks/font-family.js +29 -13
- package/src/hooks/font-size.js +42 -6
- package/src/hooks/index.js +1 -0
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.scss +3 -1
- package/src/hooks/letter-spacing.js +35 -7
- package/src/hooks/line-height.js +37 -9
- package/src/hooks/margin.js +1 -1
- package/src/hooks/padding.js +1 -1
- package/src/hooks/text-decoration.js +34 -6
- package/src/hooks/text-transform.js +34 -6
- package/src/hooks/typography.js +165 -15
- package/src/hooks/typography.scss +16 -0
- package/src/hooks/use-cached-truthy.js +20 -0
- package/src/index.js +1 -0
- package/src/layouts/flex.js +137 -41
- package/src/store/actions.js +223 -391
- package/src/store/index.js +1 -2
- package/src/store/reducer.js +36 -18
- package/src/store/selectors.js +52 -47
- package/src/store/test/actions.js +395 -694
- package/src/store/test/selectors.js +79 -21
- package/src/style.scss +1 -1
- package/src/utils/test/parse-css-unit-to-px.js +127 -167
- package/build/components/text-decoration-and-transform/index.js +0 -39
- package/build/components/text-decoration-and-transform/index.js.map +0 -1
- package/build/store/controls.js +0 -44
- package/build/store/controls.js.map +0 -1
- package/build-module/components/text-decoration-and-transform/index.js +0 -30
- package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
- package/build-module/store/controls.js +0 -32
- package/build-module/store/controls.js.map +0 -1
- package/src/components/text-decoration-and-transform/index.js +0 -36
- package/src/components/text-decoration-and-transform/style.scss +0 -3
- package/src/store/controls.js +0 -39
package/src/store/index.js
CHANGED
|
@@ -9,7 +9,6 @@ import { createReduxStore, registerStore } from '@wordpress/data';
|
|
|
9
9
|
import reducer from './reducer';
|
|
10
10
|
import * as selectors from './selectors';
|
|
11
11
|
import * as actions from './actions';
|
|
12
|
-
import controls from './controls';
|
|
13
12
|
import { STORE_NAME } from './constants';
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -23,7 +22,7 @@ export const storeConfig = {
|
|
|
23
22
|
reducer,
|
|
24
23
|
selectors,
|
|
25
24
|
actions,
|
|
26
|
-
|
|
25
|
+
__experimentalUseThunks: true,
|
|
27
26
|
};
|
|
28
27
|
|
|
29
28
|
/**
|
package/src/store/reducer.js
CHANGED
|
@@ -240,32 +240,40 @@ function buildBlockTree( state, blocks ) {
|
|
|
240
240
|
return result;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
function updateParentInnerBlocksInTree(
|
|
244
|
-
|
|
243
|
+
function updateParentInnerBlocksInTree(
|
|
244
|
+
state,
|
|
245
|
+
tree,
|
|
246
|
+
updatedClientIds,
|
|
247
|
+
updateChildrenOfUpdatedClientIds = false
|
|
248
|
+
) {
|
|
249
|
+
const uncontrolledParents = new Set( [] );
|
|
245
250
|
const controlledParents = new Set();
|
|
246
251
|
for ( const clientId of updatedClientIds ) {
|
|
247
|
-
let current =
|
|
252
|
+
let current = updateChildrenOfUpdatedClientIds
|
|
253
|
+
? clientId
|
|
254
|
+
: state.parents[ clientId ];
|
|
248
255
|
do {
|
|
249
256
|
if ( state.controlledInnerBlocks[ current ] ) {
|
|
250
|
-
|
|
257
|
+
// Should stop on controlled blocks.
|
|
251
258
|
// If we reach a controlled parent, break out of the loop.
|
|
259
|
+
controlledParents.add( current );
|
|
252
260
|
break;
|
|
253
261
|
} else {
|
|
254
|
-
|
|
262
|
+
// else continue traversing up through parents.
|
|
263
|
+
uncontrolledParents.add( current );
|
|
264
|
+
current = state.parents[ current ];
|
|
255
265
|
}
|
|
256
|
-
// Should stop on controlled blocks.
|
|
257
|
-
current = state.parents[ current ];
|
|
258
266
|
} while ( current !== undefined );
|
|
259
267
|
}
|
|
260
268
|
|
|
261
269
|
// To make sure the order of assignments doesn't matter,
|
|
262
270
|
// we first create empty objects and mutates the inner blocks later.
|
|
263
|
-
for ( const clientId of
|
|
271
|
+
for ( const clientId of uncontrolledParents ) {
|
|
264
272
|
tree[ clientId ] = {
|
|
265
273
|
...tree[ clientId ],
|
|
266
274
|
};
|
|
267
275
|
}
|
|
268
|
-
for ( const clientId of
|
|
276
|
+
for ( const clientId of uncontrolledParents ) {
|
|
269
277
|
tree[ clientId ].innerBlocks = ( state.order[ clientId ] || [] ).map(
|
|
270
278
|
( subClientId ) => tree[ subClientId ]
|
|
271
279
|
);
|
|
@@ -311,7 +319,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
311
319
|
...newState.tree,
|
|
312
320
|
...subTree,
|
|
313
321
|
},
|
|
314
|
-
action.rootClientId ? [ action.rootClientId ] : [ '' ]
|
|
322
|
+
action.rootClientId ? [ action.rootClientId ] : [ '' ],
|
|
323
|
+
true
|
|
315
324
|
);
|
|
316
325
|
break;
|
|
317
326
|
}
|
|
@@ -321,11 +330,13 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
321
330
|
{
|
|
322
331
|
...newState.tree,
|
|
323
332
|
[ action.clientId ]: {
|
|
333
|
+
...newState.tree[ action.clientId ],
|
|
324
334
|
...newState.byClientId[ action.clientId ],
|
|
325
335
|
attributes: newState.attributes[ action.clientId ],
|
|
326
336
|
},
|
|
327
337
|
},
|
|
328
|
-
[ action.clientId ]
|
|
338
|
+
[ action.clientId ],
|
|
339
|
+
false
|
|
329
340
|
);
|
|
330
341
|
break;
|
|
331
342
|
case 'UPDATE_BLOCK_ATTRIBUTES': {
|
|
@@ -345,7 +356,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
345
356
|
...newState.tree,
|
|
346
357
|
...newSubTree,
|
|
347
358
|
},
|
|
348
|
-
action.clientIds
|
|
359
|
+
action.clientIds,
|
|
360
|
+
false
|
|
349
361
|
);
|
|
350
362
|
break;
|
|
351
363
|
}
|
|
@@ -364,7 +376,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
364
376
|
),
|
|
365
377
|
...subTree,
|
|
366
378
|
},
|
|
367
|
-
action.blocks.map( ( b ) => b.clientId )
|
|
379
|
+
action.blocks.map( ( b ) => b.clientId ),
|
|
380
|
+
false
|
|
368
381
|
);
|
|
369
382
|
|
|
370
383
|
// If there are no replaced blocks, it means we're removing blocks so we need to update their parent.
|
|
@@ -381,7 +394,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
381
394
|
newState.tree = updateParentInnerBlocksInTree(
|
|
382
395
|
newState,
|
|
383
396
|
newState.tree,
|
|
384
|
-
parentsOfRemovedBlocks
|
|
397
|
+
parentsOfRemovedBlocks,
|
|
398
|
+
true
|
|
385
399
|
);
|
|
386
400
|
break;
|
|
387
401
|
}
|
|
@@ -406,7 +420,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
406
420
|
)
|
|
407
421
|
)
|
|
408
422
|
),
|
|
409
|
-
parentsOfRemovedBlocks
|
|
423
|
+
parentsOfRemovedBlocks,
|
|
424
|
+
true
|
|
410
425
|
);
|
|
411
426
|
break;
|
|
412
427
|
case 'MOVE_BLOCKS_TO_POSITION': {
|
|
@@ -423,7 +438,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
423
438
|
newState.tree = updateParentInnerBlocksInTree(
|
|
424
439
|
newState,
|
|
425
440
|
newState.tree,
|
|
426
|
-
updatedBlockUids
|
|
441
|
+
updatedBlockUids,
|
|
442
|
+
true
|
|
427
443
|
);
|
|
428
444
|
break;
|
|
429
445
|
}
|
|
@@ -435,7 +451,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
435
451
|
newState.tree = updateParentInnerBlocksInTree(
|
|
436
452
|
newState,
|
|
437
453
|
newState.tree,
|
|
438
|
-
updatedBlockUids
|
|
454
|
+
updatedBlockUids,
|
|
455
|
+
true
|
|
439
456
|
);
|
|
440
457
|
break;
|
|
441
458
|
}
|
|
@@ -462,7 +479,8 @@ const withBlockTree = ( reducer ) => ( state = {}, action ) => {
|
|
|
462
479
|
return result;
|
|
463
480
|
}, {} ),
|
|
464
481
|
},
|
|
465
|
-
updatedBlockUids
|
|
482
|
+
updatedBlockUids,
|
|
483
|
+
false
|
|
466
484
|
);
|
|
467
485
|
}
|
|
468
486
|
}
|
package/src/store/selectors.js
CHANGED
|
@@ -1563,20 +1563,55 @@ export const getInserterItems = createSelector(
|
|
|
1563
1563
|
buildScope: 'inserter',
|
|
1564
1564
|
} );
|
|
1565
1565
|
|
|
1566
|
-
|
|
1567
|
-
|
|
1566
|
+
/*
|
|
1567
|
+
* Matches block comment delimiters amid serialized content.
|
|
1568
|
+
*
|
|
1569
|
+
* @see `tokenizer` in `@wordpress/block-serialization-default-parser`
|
|
1570
|
+
* package
|
|
1571
|
+
*
|
|
1572
|
+
* blockParserTokenizer differs from the original tokenizer in the
|
|
1573
|
+
* following ways:
|
|
1574
|
+
*
|
|
1575
|
+
* - removed global flag (/g)
|
|
1576
|
+
* - prepended ^\s*
|
|
1577
|
+
*
|
|
1578
|
+
*/
|
|
1579
|
+
const blockParserTokenizer = /^\s*<!--\s+(\/)?wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/;
|
|
1568
1580
|
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1581
|
+
const buildReusableBlockInserterItem = ( reusableBlock ) => {
|
|
1582
|
+
let icon = symbol;
|
|
1583
|
+
|
|
1584
|
+
/*
|
|
1585
|
+
* Instead of always displaying a generic "symbol" icon for every
|
|
1586
|
+
* reusable block, try to use an icon that represents the first
|
|
1587
|
+
* outermost block contained in the reusable block. This requires
|
|
1588
|
+
* scanning the serialized form of the reusable block to find its
|
|
1589
|
+
* first block delimiter, then looking up the corresponding block
|
|
1590
|
+
* type, if available.
|
|
1591
|
+
*/
|
|
1592
|
+
if ( Platform.OS === 'web' ) {
|
|
1593
|
+
const content =
|
|
1594
|
+
typeof reusableBlock.content.raw === 'string'
|
|
1595
|
+
? reusableBlock.content.raw
|
|
1596
|
+
: reusableBlock.content;
|
|
1597
|
+
const rawBlockMatch = content.match( blockParserTokenizer );
|
|
1598
|
+
if ( rawBlockMatch ) {
|
|
1599
|
+
const [
|
|
1600
|
+
,
|
|
1601
|
+
,
|
|
1602
|
+
namespace = 'core/',
|
|
1603
|
+
blockName,
|
|
1604
|
+
] = rawBlockMatch;
|
|
1605
|
+
const referencedBlockType = getBlockType(
|
|
1606
|
+
namespace + blockName
|
|
1607
|
+
);
|
|
1608
|
+
if ( referencedBlockType ) {
|
|
1609
|
+
icon = referencedBlockType.icon;
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1578
1612
|
}
|
|
1579
1613
|
|
|
1614
|
+
const id = `core/block/${ reusableBlock.id }`;
|
|
1580
1615
|
const { time, count = 0 } = getInsertUsage( state, id ) || {};
|
|
1581
1616
|
const frecency = calculateFrecency( time, count );
|
|
1582
1617
|
|
|
@@ -1585,10 +1620,7 @@ export const getInserterItems = createSelector(
|
|
|
1585
1620
|
name: 'core/block',
|
|
1586
1621
|
initialAttributes: { ref: reusableBlock.id },
|
|
1587
1622
|
title: reusableBlock.title.raw,
|
|
1588
|
-
icon
|
|
1589
|
-
referencedBlockType && Platform.OS === 'web'
|
|
1590
|
-
? referencedBlockType.icon
|
|
1591
|
-
: symbol,
|
|
1623
|
+
icon,
|
|
1592
1624
|
category: 'reusable',
|
|
1593
1625
|
keywords: [],
|
|
1594
1626
|
isDisabled: false,
|
|
@@ -1869,9 +1901,11 @@ const getAllAllowedPatterns = createSelector(
|
|
|
1869
1901
|
( state ) => {
|
|
1870
1902
|
const patterns = state.settings.__experimentalBlockPatterns;
|
|
1871
1903
|
const { allowedBlockTypes } = getSettings( state );
|
|
1872
|
-
const parsedPatterns = patterns
|
|
1873
|
-
|
|
1874
|
-
|
|
1904
|
+
const parsedPatterns = patterns
|
|
1905
|
+
.filter( ( { inserter = true } ) => !! inserter )
|
|
1906
|
+
.map( ( { name } ) =>
|
|
1907
|
+
__experimentalGetParsedPattern( state, name )
|
|
1908
|
+
);
|
|
1875
1909
|
const allowedPatterns = parsedPatterns.filter( ( { blocks } ) =>
|
|
1876
1910
|
checkAllowListRecursive( blocks, allowedBlockTypes )
|
|
1877
1911
|
);
|
|
@@ -2072,35 +2106,6 @@ export const __experimentalGetBlockListSettingsForBlocks = createSelector(
|
|
|
2072
2106
|
( state ) => [ state.blockListSettings ]
|
|
2073
2107
|
);
|
|
2074
2108
|
|
|
2075
|
-
/**
|
|
2076
|
-
* Returns the parsed block saved as shared block with the given ID.
|
|
2077
|
-
*
|
|
2078
|
-
* @param {Object} state Global application state.
|
|
2079
|
-
* @param {number|string} ref The shared block's ID.
|
|
2080
|
-
*
|
|
2081
|
-
* @return {Object} The parsed block.
|
|
2082
|
-
*/
|
|
2083
|
-
export const __experimentalGetParsedReusableBlock = createSelector(
|
|
2084
|
-
( state, ref ) => {
|
|
2085
|
-
const reusableBlock = find(
|
|
2086
|
-
getReusableBlocks( state ),
|
|
2087
|
-
( block ) => block.id === ref
|
|
2088
|
-
);
|
|
2089
|
-
if ( ! reusableBlock ) {
|
|
2090
|
-
return null;
|
|
2091
|
-
}
|
|
2092
|
-
|
|
2093
|
-
// Only reusableBlock.content.raw should be used here, `reusableBlock.content` is a
|
|
2094
|
-
// workaround until #22127 is fixed.
|
|
2095
|
-
return parse(
|
|
2096
|
-
typeof reusableBlock.content.raw === 'string'
|
|
2097
|
-
? reusableBlock.content.raw
|
|
2098
|
-
: reusableBlock.content
|
|
2099
|
-
);
|
|
2100
|
-
},
|
|
2101
|
-
( state ) => [ getReusableBlocks( state ) ]
|
|
2102
|
-
);
|
|
2103
|
-
|
|
2104
2109
|
/**
|
|
2105
2110
|
* Returns the title of a given reusable block
|
|
2106
2111
|
*
|