@wordpress/block-editor 15.22.1-next.v.202606191442.0 → 15.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/README.md +2 -2
- package/build/components/block-editing-mode/index.cjs +13 -7
- package/build/components/block-editing-mode/index.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +32 -16
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-rename/modal.cjs +0 -1
- package/build/components/block-rename/modal.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +14 -6
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +25 -14
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/colors-gradients/dropdown.cjs +4 -1
- package/build/components/colors-gradients/dropdown.cjs.map +3 -3
- package/build/components/contrast-checker/index.cjs +22 -4
- package/build/components/contrast-checker/index.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs +0 -1
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +153 -25
- package/build/components/global-styles/background-panel.cjs.map +3 -3
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +227 -0
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +7 -0
- package/build/components/global-styles/color-panel.cjs +98 -375
- package/build/components/global-styles/color-panel.cjs.map +3 -3
- package/build/components/global-styles/dimensions-panel.cjs +0 -3
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/hooks.cjs +34 -0
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +82 -10
- package/build/components/global-styles/typography-panel.cjs.map +3 -3
- package/build/components/inspector-controls/groups.cjs +2 -0
- package/build/components/inspector-controls/groups.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/styles-tab.cjs +75 -31
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/link-control/index.cjs +1 -2
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/list-view/block-select-button.cjs +1 -10
- package/build/components/list-view/block-select-button.cjs.map +3 -3
- package/build/components/provider/use-block-sync.cjs +3 -1
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/url-popover/image-url-input-ui.cjs +0 -2
- package/build/components/url-popover/image-url-input-ui.cjs.map +2 -2
- package/build/components/use-block-display-information/index.cjs +10 -3
- package/build/components/use-block-display-information/index.cjs.map +2 -2
- package/build/hooks/anchor.cjs +0 -1
- package/build/hooks/anchor.cjs.map +2 -2
- package/build/hooks/background.cjs +124 -75
- package/build/hooks/background.cjs.map +3 -3
- package/build/hooks/color.cjs +0 -162
- package/build/hooks/color.cjs.map +3 -3
- package/build/hooks/contrast-checker.cjs +31 -28
- package/build/hooks/contrast-checker.cjs.map +3 -3
- package/build/hooks/custom-class-name.cjs +0 -1
- package/build/hooks/custom-class-name.cjs.map +2 -2
- package/build/hooks/elements.cjs +142 -0
- package/build/hooks/elements.cjs.map +7 -0
- package/build/hooks/grid-visualizer.cjs +21 -11
- package/build/hooks/grid-visualizer.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +38 -8
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +6 -3
- package/build/hooks/layout.cjs.map +2 -2
- package/build/hooks/states.cjs +2 -2
- package/build/hooks/states.cjs.map +2 -2
- package/build/hooks/style.cjs +8 -4
- package/build/hooks/style.cjs.map +2 -2
- package/build/hooks/typography.cjs +62 -10
- package/build/hooks/typography.cjs.map +3 -3
- package/build/layouts/flex.cjs +99 -6
- package/build/layouts/flex.cjs.map +2 -2
- package/build/utils/block-bindings.cjs +9 -9
- package/build/utils/block-bindings.cjs.map +3 -3
- package/build/utils/color-values.cjs +10 -1
- package/build/utils/color-values.cjs.map +3 -3
- package/build/utils/dom.cjs +2 -5
- package/build/utils/dom.cjs.map +3 -3
- package/build/utils/fit-text-frontend.cjs +6 -2
- package/build/utils/fit-text-frontend.cjs.map +3 -3
- package/build/utils/fit-text-utils.cjs +1 -1
- package/build/utils/fit-text-utils.cjs.map +3 -3
- package/build/utils/format-font-style.cjs +1 -1
- package/build/utils/format-font-style.cjs.map +3 -3
- package/build/utils/format-font-weight.cjs +1 -1
- package/build/utils/format-font-weight.cjs.map +3 -3
- package/build/utils/get-editor-region.cjs +4 -2
- package/build/utils/get-editor-region.cjs.map +3 -3
- package/build/utils/get-font-styles-and-weights.cjs +8 -12
- package/build/utils/get-font-styles-and-weights.cjs.map +3 -3
- package/build/utils/get-px-from-css-unit.cjs +1 -1
- package/build/utils/get-px-from-css-unit.cjs.map +1 -1
- package/build/utils/index.cjs +1 -1
- package/build/utils/index.cjs.map +1 -1
- package/build/utils/math.cjs +1 -1
- package/build/utils/math.cjs.map +3 -3
- package/build/utils/object.cjs +8 -8
- package/build/utils/object.cjs.map +3 -3
- package/build/utils/order-inserter-block-items.cjs +1 -1
- package/build/utils/order-inserter-block-items.cjs.map +3 -3
- package/build/utils/pasting.cjs +4 -2
- package/build/utils/pasting.cjs.map +3 -3
- package/build/utils/selection.cjs +2 -1
- package/build/utils/selection.cjs.map +3 -3
- package/build/utils/sorting.cjs +9 -3
- package/build/utils/sorting.cjs.map +3 -3
- package/build/utils/transform-styles/index.cjs +3 -2
- package/build/utils/transform-styles/index.cjs.map +3 -3
- package/build/utils/transform-styles/postcss-urlrebase.d.cjs +2 -0
- package/build/utils/transform-styles/postcss-urlrebase.d.cjs.map +7 -0
- package/build/utils/transform-styles/types.cjs +19 -0
- package/build/utils/transform-styles/types.cjs.map +7 -0
- package/build/utils/types.cjs +19 -0
- package/build/utils/types.cjs.map +7 -0
- package/build-module/components/block-editing-mode/index.mjs +14 -8
- package/build-module/components/block-editing-mode/index.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +32 -16
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-rename/modal.mjs +0 -1
- package/build-module/components/block-rename/modal.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +14 -6
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +27 -15
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/colors-gradients/dropdown.mjs +4 -1
- package/build-module/components/colors-gradients/dropdown.mjs.map +2 -2
- package/build-module/components/contrast-checker/index.mjs +18 -4
- package/build-module/components/contrast-checker/index.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs +0 -1
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +155 -27
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +207 -0
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +7 -0
- package/build-module/components/global-styles/color-panel.mjs +106 -387
- package/build-module/components/global-styles/color-panel.mjs.map +3 -3
- package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +33 -0
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +84 -10
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/inspector-controls/groups.mjs +2 -0
- package/build-module/components/inspector-controls/groups.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +75 -31
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs +1 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +2 -17
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs +3 -1
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/url-popover/image-url-input-ui.mjs +0 -2
- package/build-module/components/url-popover/image-url-input-ui.mjs.map +2 -2
- package/build-module/components/use-block-display-information/index.mjs +10 -3
- package/build-module/components/use-block-display-information/index.mjs.map +2 -2
- package/build-module/hooks/anchor.mjs +0 -1
- package/build-module/hooks/anchor.mjs.map +2 -2
- package/build-module/hooks/background.mjs +123 -75
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/color.mjs +2 -175
- package/build-module/hooks/color.mjs.map +2 -2
- package/build-module/hooks/contrast-checker.mjs +32 -19
- package/build-module/hooks/contrast-checker.mjs.map +2 -2
- package/build-module/hooks/custom-class-name.mjs +0 -1
- package/build-module/hooks/custom-class-name.mjs.map +2 -2
- package/build-module/hooks/elements.mjs +115 -0
- package/build-module/hooks/elements.mjs.map +7 -0
- package/build-module/hooks/grid-visualizer.mjs +21 -11
- package/build-module/hooks/grid-visualizer.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +41 -8
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +6 -3
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/states.mjs +2 -2
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/style.mjs +9 -5
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +62 -10
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +105 -7
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/utils/block-bindings.mjs +9 -9
- package/build-module/utils/block-bindings.mjs.map +3 -3
- package/build-module/utils/color-values.mjs +9 -1
- package/build-module/utils/color-values.mjs.map +3 -3
- package/build-module/utils/dom.mjs +2 -5
- package/build-module/utils/dom.mjs.map +3 -3
- package/build-module/utils/fit-text-frontend.mjs +6 -2
- package/build-module/utils/fit-text-frontend.mjs.map +3 -3
- package/build-module/utils/fit-text-utils.mjs +1 -1
- package/build-module/utils/fit-text-utils.mjs.map +3 -3
- package/build-module/utils/format-font-style.mjs +1 -1
- package/build-module/utils/format-font-style.mjs.map +3 -3
- package/build-module/utils/format-font-weight.mjs +1 -1
- package/build-module/utils/format-font-weight.mjs.map +3 -3
- package/build-module/utils/get-editor-region.mjs +4 -2
- package/build-module/utils/get-editor-region.mjs.map +3 -3
- package/build-module/utils/get-font-styles-and-weights.mjs +8 -12
- package/build-module/utils/get-font-styles-and-weights.mjs.map +3 -3
- package/build-module/utils/get-px-from-css-unit.mjs +1 -1
- package/build-module/utils/get-px-from-css-unit.mjs.map +1 -1
- package/build-module/utils/index.mjs +1 -1
- package/build-module/utils/index.mjs.map +1 -1
- package/build-module/utils/math.mjs +1 -1
- package/build-module/utils/math.mjs.map +3 -3
- package/build-module/utils/object.mjs +8 -8
- package/build-module/utils/object.mjs.map +3 -3
- package/build-module/utils/order-inserter-block-items.mjs +1 -1
- package/build-module/utils/order-inserter-block-items.mjs.map +3 -3
- package/build-module/utils/pasting.mjs +4 -2
- package/build-module/utils/pasting.mjs.map +3 -3
- package/build-module/utils/selection.mjs +2 -1
- package/build-module/utils/selection.mjs.map +3 -3
- package/build-module/utils/sorting.mjs +9 -3
- package/build-module/utils/sorting.mjs.map +3 -3
- package/build-module/utils/transform-styles/index.mjs +3 -2
- package/build-module/utils/transform-styles/index.mjs.map +3 -3
- package/build-module/utils/transform-styles/postcss-urlrebase.d.mjs +1 -0
- package/build-module/utils/transform-styles/postcss-urlrebase.d.mjs.map +7 -0
- package/build-module/utils/transform-styles/types.mjs +1 -0
- package/build-module/utils/transform-styles/types.mjs.map +7 -0
- package/build-module/utils/types.mjs +1 -0
- package/build-module/utils/types.mjs.map +7 -0
- package/build-style/content-rtl.css +2 -0
- package/build-style/content.css +2 -0
- package/build-style/style-rtl.css +34 -41
- package/build-style/style.css +34 -41
- package/build-types/utils/block-bindings.d.ts +27 -0
- package/build-types/utils/block-bindings.d.ts.map +1 -0
- package/build-types/utils/color-values.d.ts +40 -0
- package/build-types/utils/color-values.d.ts.map +1 -0
- package/build-types/utils/dom.d.ts +19 -19
- package/build-types/utils/dom.d.ts.map +1 -1
- package/build-types/utils/fit-text-frontend.d.ts +7 -0
- package/build-types/utils/fit-text-frontend.d.ts.map +1 -0
- package/build-types/utils/fit-text-utils.d.ts +15 -0
- package/build-types/utils/fit-text-utils.d.ts.map +1 -0
- package/build-types/utils/format-font-style.d.ts +12 -0
- package/build-types/utils/format-font-style.d.ts.map +1 -0
- package/build-types/utils/format-font-weight.d.ts +12 -0
- package/build-types/utils/format-font-weight.d.ts.map +1 -0
- package/build-types/utils/get-editor-region.d.ts +9 -0
- package/build-types/utils/get-editor-region.d.ts.map +1 -0
- package/build-types/utils/get-font-styles-and-weights.d.ts +16 -0
- package/build-types/utils/get-font-styles-and-weights.d.ts.map +1 -0
- package/build-types/utils/get-px-from-css-unit.d.ts +10 -0
- package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -0
- package/build-types/utils/index.d.ts +3 -0
- package/build-types/utils/index.d.ts.map +1 -0
- package/build-types/utils/math.d.ts +61 -0
- package/build-types/utils/math.d.ts.map +1 -0
- package/build-types/utils/object.d.ts +39 -0
- package/build-types/utils/object.d.ts.map +1 -0
- package/build-types/utils/order-inserter-block-items.d.ts +13 -0
- package/build-types/utils/order-inserter-block-items.d.ts.map +1 -0
- package/build-types/utils/pasting.d.ts +28 -0
- package/build-types/utils/pasting.d.ts.map +1 -0
- package/build-types/utils/selection.d.ts +21 -0
- package/build-types/utils/selection.d.ts.map +1 -0
- package/build-types/utils/sorting.d.ts +17 -0
- package/build-types/utils/sorting.d.ts.map +1 -0
- package/build-types/utils/transform-styles/index.d.ts +15 -0
- package/build-types/utils/transform-styles/index.d.ts.map +1 -0
- package/build-types/utils/transform-styles/types.d.ts +13 -0
- package/build-types/utils/transform-styles/types.d.ts.map +1 -0
- package/build-types/utils/types.d.ts +28 -0
- package/build-types/utils/types.d.ts.map +1 -0
- package/package.json +40 -39
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -0
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -0
- package/src/components/block-editing-mode/index.js +17 -9
- package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -0
- package/src/components/block-inspector/index.js +20 -10
- package/src/components/block-rename/modal.js +0 -1
- package/src/components/block-toolbar/block-toolbar-icon.js +22 -6
- package/src/components/block-toolbar/test/block-toolbar-icon.js +99 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +4 -0
- package/src/components/colors-gradients/control.js +29 -12
- package/src/components/colors-gradients/dropdown.js +4 -1
- package/src/components/colors-gradients/style.scss +39 -2
- package/src/components/contrast-checker/README.md +9 -0
- package/src/components/contrast-checker/index.js +42 -3
- package/src/components/date-format-picker/index.js +0 -1
- package/src/components/default-block-appender/content.scss +3 -0
- package/src/components/global-styles/background-panel.js +201 -34
- package/src/components/global-styles/color-gradient-dropdown-item.js +258 -0
- package/src/components/global-styles/color-panel.js +125 -487
- package/src/components/global-styles/dimensions-panel.js +0 -3
- package/src/components/global-styles/hooks.js +45 -0
- package/src/components/global-styles/test/background-panel.js +56 -0
- package/src/components/global-styles/test/color-panel.js +172 -118
- package/src/components/global-styles/test/typography-panel.js +167 -0
- package/src/components/global-styles/typography-panel.js +100 -11
- package/src/components/inspector-controls/README.md +0 -2
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +74 -28
- package/src/components/link-control/index.js +0 -1
- package/src/components/link-control/test/index.js +2 -3
- package/src/components/list-view/block-select-button.js +2 -17
- package/src/components/provider/use-block-sync.js +3 -1
- package/src/components/rich-text/content.scss +2 -0
- package/src/components/url-popover/image-url-input-ui.js +0 -2
- package/src/components/use-block-display-information/index.js +15 -2
- package/src/components/use-block-display-information/test/index.js +140 -0
- package/src/hooks/anchor.js +0 -1
- package/src/hooks/background.js +210 -133
- package/src/hooks/background.scss +0 -35
- package/src/hooks/color.js +2 -205
- package/src/hooks/color.scss +3 -9
- package/src/hooks/contrast-checker.js +60 -17
- package/src/hooks/custom-class-name.js +0 -1
- package/src/hooks/elements.js +140 -0
- package/src/hooks/elements.scss +8 -0
- package/src/hooks/grid-visualizer.js +59 -45
- package/src/hooks/layout-child.js +51 -12
- package/src/hooks/layout.js +6 -3
- package/src/hooks/states.js +2 -2
- package/src/hooks/style.js +11 -7
- package/src/hooks/test/background.js +59 -0
- package/src/hooks/test/block-style-state.js +14 -14
- package/src/hooks/test/layout.js +6 -6
- package/src/hooks/test/style.js +8 -8
- package/src/hooks/typography.js +70 -6
- package/src/layouts/flex.js +118 -15
- package/src/store/test/private-selectors.js +28 -7
- package/src/store/test/reducer.js +61 -10
- package/src/style.scss +1 -0
- package/src/utils/block-bindings.ts +51 -0
- package/src/utils/color-values.ts +63 -0
- package/src/utils/{dom.js → dom.ts} +27 -27
- package/src/utils/{fit-text-frontend.js → fit-text-frontend.ts} +12 -4
- package/src/utils/{fit-text-utils.js → fit-text-utils.ts} +15 -7
- package/src/utils/{format-font-style.js → format-font-style.ts} +10 -3
- package/src/utils/{format-font-weight.js → format-font-weight.ts} +10 -3
- package/src/utils/{get-editor-region.js → get-editor-region.ts} +10 -6
- package/src/utils/{get-font-styles-and-weights.js → get-font-styles-and-weights.ts} +21 -17
- package/src/utils/{math.js → math.ts} +37 -30
- package/src/utils/object.ts +89 -0
- package/src/utils/{order-inserter-block-items.js → order-inserter-block-items.ts} +8 -5
- package/src/utils/{pasting.js → pasting.ts} +18 -11
- package/src/utils/{selection.js → selection.ts} +11 -4
- package/src/utils/sorting.ts +81 -0
- package/src/utils/test/color-values.js +44 -1
- package/src/utils/transform-styles/{index.js → index.ts} +25 -25
- package/src/utils/transform-styles/postcss-urlrebase.d.ts +15 -0
- package/src/utils/transform-styles/types.ts +13 -0
- package/src/utils/types.ts +29 -0
- package/src/utils/block-bindings.js +0 -46
- package/src/utils/color-values.js +0 -28
- package/src/utils/object.js +0 -67
- package/src/utils/sorting.js +0 -54
- /package/src/utils/{get-px-from-css-unit.js → get-px-from-css-unit.ts} +0 -0
- /package/src/utils/{index.js → index.ts} +0 -0
|
@@ -227,12 +227,12 @@ describe( 'private selectors', () => {
|
|
|
227
227
|
const state = {
|
|
228
228
|
selectedBlockStyleState: {
|
|
229
229
|
clientId: 'client-1',
|
|
230
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
230
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
231
231
|
},
|
|
232
232
|
};
|
|
233
233
|
|
|
234
234
|
expect( getSelectedBlockStyleState( state, 'client-1' ) ).toEqual( {
|
|
235
|
-
viewport: 'mobile',
|
|
235
|
+
viewport: '@mobile',
|
|
236
236
|
pseudo: ':hover',
|
|
237
237
|
} );
|
|
238
238
|
} );
|
|
@@ -287,7 +287,7 @@ describe( 'private selectors', () => {
|
|
|
287
287
|
const state = {
|
|
288
288
|
selectedBlockStyleState: {
|
|
289
289
|
clientId: 'client-1',
|
|
290
|
-
value: { viewport: 'mobile', pseudo: 'default' },
|
|
290
|
+
value: { viewport: '@mobile', pseudo: 'default' },
|
|
291
291
|
},
|
|
292
292
|
};
|
|
293
293
|
|
|
@@ -309,7 +309,7 @@ describe( 'private selectors', () => {
|
|
|
309
309
|
const state = {
|
|
310
310
|
selectedBlockStyleState: {
|
|
311
311
|
clientId: 'client-1',
|
|
312
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
312
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
313
313
|
},
|
|
314
314
|
};
|
|
315
315
|
|
|
@@ -1661,6 +1661,7 @@ describe( 'private selectors', () => {
|
|
|
1661
1661
|
blockName = 'core/group',
|
|
1662
1662
|
patternName,
|
|
1663
1663
|
disableContentOnlyForUnsyncedPatterns,
|
|
1664
|
+
disableContentOnlyForTemplateParts,
|
|
1664
1665
|
templateLock,
|
|
1665
1666
|
rootTemplateLock,
|
|
1666
1667
|
} = {} ) => {
|
|
@@ -1685,10 +1686,14 @@ describe( 'private selectors', () => {
|
|
|
1685
1686
|
: {},
|
|
1686
1687
|
],
|
|
1687
1688
|
] ),
|
|
1688
|
-
settings:
|
|
1689
|
-
disableContentOnlyForUnsyncedPatterns !== undefined
|
|
1689
|
+
settings: {
|
|
1690
|
+
...( disableContentOnlyForUnsyncedPatterns !== undefined
|
|
1690
1691
|
? { disableContentOnlyForUnsyncedPatterns }
|
|
1691
|
-
: {},
|
|
1692
|
+
: {} ),
|
|
1693
|
+
...( disableContentOnlyForTemplateParts !== undefined
|
|
1694
|
+
? { disableContentOnlyForTemplateParts }
|
|
1695
|
+
: {} ),
|
|
1696
|
+
},
|
|
1692
1697
|
editedContentOnlySection: undefined,
|
|
1693
1698
|
};
|
|
1694
1699
|
};
|
|
@@ -1732,6 +1737,22 @@ describe( 'private selectors', () => {
|
|
|
1732
1737
|
expect( isSectionBlock( state, 'block-1' ) ).toBe( true );
|
|
1733
1738
|
} );
|
|
1734
1739
|
|
|
1740
|
+
it( 'should return false for template parts when disableContentOnlyForTemplateParts is true', () => {
|
|
1741
|
+
const state = createState( {
|
|
1742
|
+
blockName: 'core/template-part',
|
|
1743
|
+
disableContentOnlyForTemplateParts: true,
|
|
1744
|
+
} );
|
|
1745
|
+
expect( isSectionBlock( state, 'block-1' ) ).toBe( false );
|
|
1746
|
+
} );
|
|
1747
|
+
|
|
1748
|
+
it( 'should return true for template parts when disableContentOnlyForTemplateParts is false', () => {
|
|
1749
|
+
const state = createState( {
|
|
1750
|
+
blockName: 'core/template-part',
|
|
1751
|
+
disableContentOnlyForTemplateParts: false,
|
|
1752
|
+
} );
|
|
1753
|
+
expect( isSectionBlock( state, 'block-1' ) ).toBe( true );
|
|
1754
|
+
} );
|
|
1755
|
+
|
|
1735
1756
|
it( 'returns false when nested inside another section block', () => {
|
|
1736
1757
|
const state = {
|
|
1737
1758
|
blocks: {
|
|
@@ -5860,6 +5860,57 @@ describe( 'state', () => {
|
|
|
5860
5860
|
);
|
|
5861
5861
|
} );
|
|
5862
5862
|
} );
|
|
5863
|
+
|
|
5864
|
+
describe( 'template parts with disableContentOnlyForTemplateParts enabled', () => {
|
|
5865
|
+
let initialState;
|
|
5866
|
+
beforeAll( () => {
|
|
5867
|
+
initialState = dispatchActions(
|
|
5868
|
+
[
|
|
5869
|
+
{
|
|
5870
|
+
type: 'UPDATE_SETTINGS',
|
|
5871
|
+
settings: {
|
|
5872
|
+
disableContentOnlyForTemplateParts: true,
|
|
5873
|
+
},
|
|
5874
|
+
},
|
|
5875
|
+
{
|
|
5876
|
+
type: 'RESET_BLOCKS',
|
|
5877
|
+
blocks: [
|
|
5878
|
+
{
|
|
5879
|
+
name: 'core/template-part',
|
|
5880
|
+
clientId: 'template-part',
|
|
5881
|
+
attributes: {},
|
|
5882
|
+
innerBlocks: [],
|
|
5883
|
+
},
|
|
5884
|
+
],
|
|
5885
|
+
},
|
|
5886
|
+
{
|
|
5887
|
+
type: 'SET_HAS_CONTROLLED_INNER_BLOCKS',
|
|
5888
|
+
clientId: 'template-part',
|
|
5889
|
+
hasControlledInnerBlocks: true,
|
|
5890
|
+
},
|
|
5891
|
+
{
|
|
5892
|
+
type: 'REPLACE_INNER_BLOCKS',
|
|
5893
|
+
rootClientId: 'template-part',
|
|
5894
|
+
blocks: [
|
|
5895
|
+
{
|
|
5896
|
+
name: 'core/paragraph',
|
|
5897
|
+
clientId: 'template-part-paragraph',
|
|
5898
|
+
attributes: {},
|
|
5899
|
+
innerBlocks: [],
|
|
5900
|
+
},
|
|
5901
|
+
],
|
|
5902
|
+
},
|
|
5903
|
+
],
|
|
5904
|
+
testReducer
|
|
5905
|
+
);
|
|
5906
|
+
} );
|
|
5907
|
+
|
|
5908
|
+
it( 'returns no derived editing modes for template parts when disableContentOnlyForTemplateParts is true', () => {
|
|
5909
|
+
expect( initialState.derivedBlockEditingModes ).toEqual(
|
|
5910
|
+
new Map()
|
|
5911
|
+
);
|
|
5912
|
+
} );
|
|
5913
|
+
} );
|
|
5863
5914
|
} );
|
|
5864
5915
|
|
|
5865
5916
|
describe( 'selectedBlockStyleState', () => {
|
|
@@ -5873,14 +5924,14 @@ describe( 'state', () => {
|
|
|
5873
5924
|
const state = selectedBlockStyleState( undefined, {
|
|
5874
5925
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE',
|
|
5875
5926
|
clientId: 'client-1',
|
|
5876
|
-
value: { viewport: 'mobile' },
|
|
5927
|
+
value: { viewport: '@mobile' },
|
|
5877
5928
|
} );
|
|
5878
5929
|
|
|
5879
5930
|
expect( state ).toEqual( {
|
|
5880
5931
|
clientId: 'client-1',
|
|
5881
5932
|
showStateOnCanvas: true,
|
|
5882
5933
|
value: {
|
|
5883
|
-
viewport: 'mobile',
|
|
5934
|
+
viewport: '@mobile',
|
|
5884
5935
|
pseudo: 'default',
|
|
5885
5936
|
},
|
|
5886
5937
|
} );
|
|
@@ -5907,7 +5958,7 @@ describe( 'state', () => {
|
|
|
5907
5958
|
const state = selectedBlockStyleState(
|
|
5908
5959
|
{
|
|
5909
5960
|
clientId: 'client-1',
|
|
5910
|
-
value: { viewport: 'mobile', pseudo: 'default' },
|
|
5961
|
+
value: { viewport: '@mobile', pseudo: 'default' },
|
|
5911
5962
|
},
|
|
5912
5963
|
{
|
|
5913
5964
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE',
|
|
@@ -5920,7 +5971,7 @@ describe( 'state', () => {
|
|
|
5920
5971
|
clientId: 'client-1',
|
|
5921
5972
|
showStateOnCanvas: true,
|
|
5922
5973
|
value: {
|
|
5923
|
-
viewport: 'mobile',
|
|
5974
|
+
viewport: '@mobile',
|
|
5924
5975
|
pseudo: ':hover',
|
|
5925
5976
|
},
|
|
5926
5977
|
} );
|
|
@@ -5930,7 +5981,7 @@ describe( 'state', () => {
|
|
|
5930
5981
|
const state = selectedBlockStyleState(
|
|
5931
5982
|
{
|
|
5932
5983
|
clientId: 'client-1',
|
|
5933
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
5984
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
5934
5985
|
},
|
|
5935
5986
|
{
|
|
5936
5987
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE',
|
|
@@ -5953,7 +6004,7 @@ describe( 'state', () => {
|
|
|
5953
6004
|
const state = selectedBlockStyleState(
|
|
5954
6005
|
{
|
|
5955
6006
|
clientId: 'client-1',
|
|
5956
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
6007
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
5957
6008
|
},
|
|
5958
6009
|
{
|
|
5959
6010
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE',
|
|
@@ -6186,7 +6237,7 @@ describe( 'state', () => {
|
|
|
6186
6237
|
const state = selectedBlockStyleState(
|
|
6187
6238
|
{
|
|
6188
6239
|
clientId: 'client-1',
|
|
6189
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
6240
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
6190
6241
|
},
|
|
6191
6242
|
{
|
|
6192
6243
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE_CANVAS_PREVIEW',
|
|
@@ -6198,7 +6249,7 @@ describe( 'state', () => {
|
|
|
6198
6249
|
expect( state ).toEqual( {
|
|
6199
6250
|
clientId: 'client-1',
|
|
6200
6251
|
showStateOnCanvas: false,
|
|
6201
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
6252
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
6202
6253
|
} );
|
|
6203
6254
|
} );
|
|
6204
6255
|
|
|
@@ -6207,7 +6258,7 @@ describe( 'state', () => {
|
|
|
6207
6258
|
{
|
|
6208
6259
|
clientId: 'client-1',
|
|
6209
6260
|
showStateOnCanvas: false,
|
|
6210
|
-
value: { viewport: 'mobile', pseudo: 'default' },
|
|
6261
|
+
value: { viewport: '@mobile', pseudo: 'default' },
|
|
6211
6262
|
},
|
|
6212
6263
|
{
|
|
6213
6264
|
type: 'SET_SELECTED_BLOCK_STYLE_STATE',
|
|
@@ -6219,7 +6270,7 @@ describe( 'state', () => {
|
|
|
6219
6270
|
expect( state ).toEqual( {
|
|
6220
6271
|
clientId: 'client-1',
|
|
6221
6272
|
showStateOnCanvas: false,
|
|
6222
|
-
value: { viewport: 'mobile', pseudo: ':hover' },
|
|
6273
|
+
value: { viewport: '@mobile', pseudo: ':hover' },
|
|
6223
6274
|
} );
|
|
6224
6275
|
} );
|
|
6225
6276
|
} );
|
package/src/style.scss
CHANGED
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
@use "./hooks/block-bindings.scss" as *;
|
|
62
62
|
@use "./hooks/border.scss" as *;
|
|
63
63
|
@use "./hooks/color.scss" as *;
|
|
64
|
+
@use "./hooks/elements.scss" as *;
|
|
64
65
|
@use "./hooks/dimensions.scss" as *;
|
|
65
66
|
@use "./hooks/layout.scss" as *;
|
|
66
67
|
@use "./hooks/spacing.scss" as *;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
type Binding = { source?: string };
|
|
2
|
+
type Bindings = Record< string, Binding >;
|
|
3
|
+
|
|
4
|
+
const DEFAULT_ATTRIBUTE = '__default';
|
|
5
|
+
const PATTERN_OVERRIDES_SOURCE = 'core/pattern-overrides';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the block has the `__default` binding for pattern overrides.
|
|
9
|
+
*
|
|
10
|
+
* @param bindings A block's bindings from the metadata attribute.
|
|
11
|
+
*
|
|
12
|
+
* @return Whether the block has the `__default` binding for pattern overrides.
|
|
13
|
+
*/
|
|
14
|
+
export function hasPatternOverridesDefaultBinding(
|
|
15
|
+
bindings: Bindings | undefined | null
|
|
16
|
+
): bindings is Bindings {
|
|
17
|
+
return bindings?.[ DEFAULT_ATTRIBUTE ]?.source === PATTERN_OVERRIDES_SOURCE;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns the bindings with the `__default` binding for pattern overrides
|
|
22
|
+
* replaced with the full-set of supported attributes. e.g.:
|
|
23
|
+
*
|
|
24
|
+
* - bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`
|
|
25
|
+
* - bindings returned: `{ content: { source: 'core/pattern-overrides' } }`
|
|
26
|
+
*
|
|
27
|
+
* @param bindings A block's bindings from the metadata attribute.
|
|
28
|
+
* @param supportedAttributes The block's attributes which are supported by block bindings.
|
|
29
|
+
*
|
|
30
|
+
* @return The bindings with default replaced for pattern overrides.
|
|
31
|
+
*/
|
|
32
|
+
export function replacePatternOverridesDefaultBinding(
|
|
33
|
+
bindings: Bindings | undefined | null,
|
|
34
|
+
supportedAttributes: string[]
|
|
35
|
+
) {
|
|
36
|
+
// The `__default` binding currently only works for pattern overrides.
|
|
37
|
+
if ( ! hasPatternOverridesDefaultBinding( bindings ) ) {
|
|
38
|
+
return bindings;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const bindingsWithDefaults: Bindings = {};
|
|
42
|
+
for ( const attributeName of supportedAttributes ) {
|
|
43
|
+
// If the block has mixed binding sources, retain any non pattern override bindings.
|
|
44
|
+
const bindingSource = bindings[ attributeName ]
|
|
45
|
+
? bindings[ attributeName ]
|
|
46
|
+
: { source: PATTERN_OVERRIDES_SOURCE };
|
|
47
|
+
bindingsWithDefaults[ attributeName ] = bindingSource;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return bindingsWithDefaults;
|
|
51
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the palette slug from a style value for any preset type, supporting
|
|
3
|
+
* both the user preset format and the theme CSS-variable format:
|
|
4
|
+
*
|
|
5
|
+
* - User format: `var:preset|<type>|slug`
|
|
6
|
+
* - Theme format: `var(--wp--preset--<type>--slug)`
|
|
7
|
+
*
|
|
8
|
+
* Returns `undefined` for plain values, non-strings, or any other
|
|
9
|
+
* unrecognised format.
|
|
10
|
+
*
|
|
11
|
+
* @param rawValue Raw style value stored in the style object.
|
|
12
|
+
* @param type Preset type, e.g. `'color'` or `'gradient'`.
|
|
13
|
+
* @return The palette slug, or undefined.
|
|
14
|
+
*/
|
|
15
|
+
export function extractPresetSlug(
|
|
16
|
+
rawValue: unknown,
|
|
17
|
+
type: 'color' | 'gradient'
|
|
18
|
+
) {
|
|
19
|
+
if ( typeof rawValue !== 'string' ) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const userPrefix = `var:preset|${ type }|`;
|
|
23
|
+
if ( rawValue.startsWith( userPrefix ) ) {
|
|
24
|
+
return rawValue.slice( userPrefix.length );
|
|
25
|
+
}
|
|
26
|
+
const cssVarPrefix = `--wp--preset--${ type }--`;
|
|
27
|
+
const themeFormatMatch = rawValue.match(
|
|
28
|
+
new RegExp( `^var\\(${ cssVarPrefix }([^)]+)\\)$` )
|
|
29
|
+
);
|
|
30
|
+
return themeFormatMatch?.[ 1 ];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Encodes a color value for storage in the style object.
|
|
35
|
+
*
|
|
36
|
+
* When a `slug` is provided it is used directly (the slug-based selection
|
|
37
|
+
* path). This is important because two palette entries can share the same
|
|
38
|
+
* hex value (e.g. two custom colors both set to `#e10000`); relying on a
|
|
39
|
+
* hex lookup alone would collapse them onto whichever entry appears first
|
|
40
|
+
* in the palette and silently discard the user's actual choice. Only when
|
|
41
|
+
* no slug is supplied does the function fall back to matching the hex value
|
|
42
|
+
* against the palette; if a match is found the slug is encoded, otherwise
|
|
43
|
+
* the raw value is stored as-is.
|
|
44
|
+
*
|
|
45
|
+
* Callers pass the flattened palette (`allColors`), typically computed once
|
|
46
|
+
* per render from the per-origin `colors` array.
|
|
47
|
+
*
|
|
48
|
+
* @param allColors Flat array of `{ color, slug }` objects.
|
|
49
|
+
* @param colorValue Hex or CSS color string.
|
|
50
|
+
* @param slug Optional palette slug from slug-aware selection.
|
|
51
|
+
* @return Encoded value suitable for the style object.
|
|
52
|
+
*/
|
|
53
|
+
export function encodeColorValueWithPalette(
|
|
54
|
+
allColors: { color: string; slug: string }[],
|
|
55
|
+
colorValue?: string,
|
|
56
|
+
slug?: string
|
|
57
|
+
) {
|
|
58
|
+
if ( slug ) {
|
|
59
|
+
return 'var:preset|color|' + slug;
|
|
60
|
+
}
|
|
61
|
+
const colorObject = allColors.find( ( { color } ) => color === colorValue );
|
|
62
|
+
return colorObject ? 'var:preset|color|' + colorObject.slug : colorValue;
|
|
63
|
+
}
|
|
@@ -5,12 +5,12 @@ const BLOCK_APPENDER_CLASS = '.block-editor-button-block-appender';
|
|
|
5
5
|
/**
|
|
6
6
|
* Returns true if two elements are contained within the same block.
|
|
7
7
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* @param
|
|
8
|
+
* @param a First element.
|
|
9
|
+
* @param b Second element.
|
|
10
10
|
*
|
|
11
|
-
* @return
|
|
11
|
+
* @return Whether elements are in the same block.
|
|
12
12
|
*/
|
|
13
|
-
export function isInSameBlock( a, b ) {
|
|
13
|
+
export function isInSameBlock( a: Element, b: Element ) {
|
|
14
14
|
return a.closest( BLOCK_SELECTOR ) === b.closest( BLOCK_SELECTOR );
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -18,13 +18,13 @@ export function isInSameBlock( a, b ) {
|
|
|
18
18
|
* Returns true if an element is considered part of the block and not its inner
|
|
19
19
|
* blocks or appender.
|
|
20
20
|
*
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
21
|
+
* @param blockElement Block container element.
|
|
22
|
+
* @param element Element.
|
|
23
23
|
*
|
|
24
|
-
* @return
|
|
25
|
-
*
|
|
24
|
+
* @return Whether an element is considered part of the block and not
|
|
25
|
+
* its inner blocks or appender.
|
|
26
26
|
*/
|
|
27
|
-
export function isInsideRootBlock( blockElement, element ) {
|
|
27
|
+
export function isInsideRootBlock( blockElement: Element, element: Element ) {
|
|
28
28
|
const parentBlock = element.closest(
|
|
29
29
|
[ BLOCK_SELECTOR, APPENDER_SELECTOR, BLOCK_APPENDER_CLASS ].join( ',' )
|
|
30
30
|
);
|
|
@@ -34,12 +34,12 @@ export function isInsideRootBlock( blockElement, element ) {
|
|
|
34
34
|
/**
|
|
35
35
|
* Finds the block client ID given any DOM node inside the block.
|
|
36
36
|
*
|
|
37
|
-
* @param
|
|
37
|
+
* @param node DOM node.
|
|
38
38
|
*
|
|
39
|
-
* @return
|
|
40
|
-
*
|
|
39
|
+
* @return Client ID or undefined if the node is not part of
|
|
40
|
+
* a block.
|
|
41
41
|
*/
|
|
42
|
-
export function getBlockClientId( node ) {
|
|
42
|
+
export function getBlockClientId( node: Node | null ) {
|
|
43
43
|
while ( node && node.nodeType !== node.ELEMENT_NODE ) {
|
|
44
44
|
node = node.parentNode;
|
|
45
45
|
}
|
|
@@ -48,7 +48,7 @@ export function getBlockClientId( node ) {
|
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
const elementNode =
|
|
51
|
+
const elementNode = node as Element;
|
|
52
52
|
const blockNode = elementNode.closest( BLOCK_SELECTOR );
|
|
53
53
|
|
|
54
54
|
if ( ! blockNode ) {
|
|
@@ -61,11 +61,11 @@ export function getBlockClientId( node ) {
|
|
|
61
61
|
/**
|
|
62
62
|
* Calculates the union of two rectangles.
|
|
63
63
|
*
|
|
64
|
-
* @param
|
|
65
|
-
* @param
|
|
66
|
-
* @return
|
|
64
|
+
* @param rect1 First rectangle.
|
|
65
|
+
* @param rect2 Second rectangle.
|
|
66
|
+
* @return Union of the two rectangles.
|
|
67
67
|
*/
|
|
68
|
-
export function rectUnion( rect1, rect2 ) {
|
|
68
|
+
export function rectUnion( rect1: DOMRect, rect2: DOMRect ) {
|
|
69
69
|
const left = Math.min( rect1.left, rect2.left );
|
|
70
70
|
const right = Math.max( rect1.right, rect2.right );
|
|
71
71
|
const bottom = Math.max( rect1.bottom, rect2.bottom );
|
|
@@ -77,10 +77,10 @@ export function rectUnion( rect1, rect2 ) {
|
|
|
77
77
|
/**
|
|
78
78
|
* Returns whether an element is visible.
|
|
79
79
|
*
|
|
80
|
-
* @param
|
|
81
|
-
* @return
|
|
80
|
+
* @param element Element.
|
|
81
|
+
* @return Whether the element is visible.
|
|
82
82
|
*/
|
|
83
|
-
export function isElementVisible( element ) {
|
|
83
|
+
export function isElementVisible( element: Element ) {
|
|
84
84
|
const viewport = element.ownerDocument.defaultView;
|
|
85
85
|
if ( ! viewport ) {
|
|
86
86
|
return false;
|
|
@@ -121,10 +121,10 @@ export function isElementVisible( element ) {
|
|
|
121
121
|
/**
|
|
122
122
|
* Checks if the element is scrollable.
|
|
123
123
|
*
|
|
124
|
-
* @param
|
|
125
|
-
* @return
|
|
124
|
+
* @param element Element.
|
|
125
|
+
* @return True if the element is scrollable.
|
|
126
126
|
*/
|
|
127
|
-
function isScrollable( element ) {
|
|
127
|
+
function isScrollable( element: Element ) {
|
|
128
128
|
const style = window.getComputedStyle( element );
|
|
129
129
|
return (
|
|
130
130
|
style.overflowX === 'auto' ||
|
|
@@ -145,10 +145,10 @@ export const WITH_OVERFLOW_ELEMENT_BLOCKS = [ 'core/navigation' ];
|
|
|
145
145
|
* The returned rect represents the full extent of the element and its visible
|
|
146
146
|
* children, which may extend beyond the viewport.
|
|
147
147
|
*
|
|
148
|
-
* @param
|
|
149
|
-
* @return
|
|
148
|
+
* @param element Element.
|
|
149
|
+
* @return Bounding client rect of the element and its visible children.
|
|
150
150
|
*/
|
|
151
|
-
export function getElementBounds( element ) {
|
|
151
|
+
export function getElementBounds( element: Element ) {
|
|
152
152
|
const viewport = element.ownerDocument.defaultView;
|
|
153
153
|
|
|
154
154
|
if ( ! viewport ) {
|
|
@@ -14,14 +14,21 @@ import { store, getElement, getContext } from '@wordpress/interactivity';
|
|
|
14
14
|
*/
|
|
15
15
|
import { optimizeFitText } from './fit-text-utils';
|
|
16
16
|
|
|
17
|
+
interface FitTextContext {
|
|
18
|
+
fontSize?: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
17
21
|
// Initialize via Interactivity API for client-side navigation
|
|
18
22
|
store( 'core/fit-text', {
|
|
19
23
|
callbacks: {
|
|
20
24
|
init() {
|
|
21
|
-
const context = getContext();
|
|
22
|
-
const { ref } = getElement();
|
|
25
|
+
const context = getContext< FitTextContext >();
|
|
26
|
+
const { ref } = getElement() as { ref: HTMLElement | null };
|
|
23
27
|
|
|
24
|
-
const applyFontSize = ( fontSize ) => {
|
|
28
|
+
const applyFontSize = ( fontSize: number ) => {
|
|
29
|
+
if ( ! ref ) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
25
32
|
if ( fontSize === 0 ) {
|
|
26
33
|
ref.style.fontSize = '';
|
|
27
34
|
} else {
|
|
@@ -33,7 +40,7 @@ store( 'core/fit-text', {
|
|
|
33
40
|
context.fontSize = optimizeFitText( ref, applyFontSize );
|
|
34
41
|
|
|
35
42
|
// Starts ResizeObserver to handle dynamic resizing.
|
|
36
|
-
if ( window.ResizeObserver && ref
|
|
43
|
+
if ( window.ResizeObserver && ref?.parentElement ) {
|
|
37
44
|
const resizeObserver = new window.ResizeObserver( () => {
|
|
38
45
|
context.fontSize = optimizeFitText( ref, applyFontSize );
|
|
39
46
|
} );
|
|
@@ -47,6 +54,7 @@ store( 'core/fit-text', {
|
|
|
47
54
|
}
|
|
48
55
|
};
|
|
49
56
|
}
|
|
57
|
+
return undefined;
|
|
50
58
|
},
|
|
51
59
|
},
|
|
52
60
|
} );
|
|
@@ -3,14 +3,19 @@
|
|
|
3
3
|
* Uses callback-based approach for maximum code reuse between editor and frontend.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
type ApplyFontSize = ( size: number ) => void;
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* Find optimal font size using simple binary search between 0-2400px.
|
|
8
10
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @param
|
|
11
|
-
* @return
|
|
11
|
+
* @param textElement The text element
|
|
12
|
+
* @param applyFontSize Function that receives font size in pixels
|
|
13
|
+
* @return Optimal font size
|
|
12
14
|
*/
|
|
13
|
-
function findOptimalFontSize(
|
|
15
|
+
function findOptimalFontSize(
|
|
16
|
+
textElement: HTMLElement,
|
|
17
|
+
applyFontSize: ApplyFontSize
|
|
18
|
+
) {
|
|
14
19
|
const alreadyHasScrollableHeight =
|
|
15
20
|
textElement.scrollHeight > textElement.clientHeight;
|
|
16
21
|
let minSize = 0;
|
|
@@ -85,10 +90,13 @@ function findOptimalFontSize( textElement, applyFontSize ) {
|
|
|
85
90
|
* Complete fit text optimization for a single text element.
|
|
86
91
|
* Handles the full flow using callbacks for font size application.
|
|
87
92
|
*
|
|
88
|
-
* @param
|
|
89
|
-
* @param
|
|
93
|
+
* @param textElement The text element (paragraph, heading, etc.)
|
|
94
|
+
* @param applyFontSize Function that receives font size in pixels (0 to clear, >0 to apply)
|
|
90
95
|
*/
|
|
91
|
-
export function optimizeFitText(
|
|
96
|
+
export function optimizeFitText(
|
|
97
|
+
textElement: HTMLElement | null,
|
|
98
|
+
applyFontSize: ApplyFontSize
|
|
99
|
+
) {
|
|
92
100
|
if ( ! textElement ) {
|
|
93
101
|
return;
|
|
94
102
|
}
|
|
@@ -3,13 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { _x } from '@wordpress/i18n';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import type { FormattedFont } from './types';
|
|
10
|
+
|
|
6
11
|
/**
|
|
7
12
|
* Formats font styles to human readable names.
|
|
8
13
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @return
|
|
14
|
+
* @param fontStyle font style string
|
|
15
|
+
* @return new object with formatted font style
|
|
11
16
|
*/
|
|
12
|
-
export function formatFontStyle(
|
|
17
|
+
export function formatFontStyle(
|
|
18
|
+
fontStyle: FormattedFont | string | undefined
|
|
19
|
+
): FormattedFont {
|
|
13
20
|
if ( ! fontStyle ) {
|
|
14
21
|
return {};
|
|
15
22
|
}
|
|
@@ -3,13 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { _x } from '@wordpress/i18n';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import type { FormattedFont } from './types';
|
|
10
|
+
|
|
6
11
|
/**
|
|
7
12
|
* Formats font weights to human readable names.
|
|
8
13
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @return
|
|
14
|
+
* @param fontWeight font weight string
|
|
15
|
+
* @return new object with formatted font weight
|
|
11
16
|
*/
|
|
12
|
-
export function formatFontWeight(
|
|
17
|
+
export function formatFontWeight(
|
|
18
|
+
fontWeight: FormattedFont | string | undefined
|
|
19
|
+
): FormattedFont {
|
|
13
20
|
if ( ! fontWeight ) {
|
|
14
21
|
return {};
|
|
15
22
|
}
|
|
@@ -2,23 +2,27 @@
|
|
|
2
2
|
* Gets the editor region for a given editor canvas element or
|
|
3
3
|
* returns the passed element if no region is found
|
|
4
4
|
*
|
|
5
|
-
* @param
|
|
6
|
-
* @return
|
|
5
|
+
* @param editor The editor canvas element.
|
|
6
|
+
* @return The editor region or given editor element
|
|
7
7
|
*/
|
|
8
|
-
export default function getEditorRegion( editor ) {
|
|
8
|
+
export default function getEditorRegion( editor: Element | null | undefined ) {
|
|
9
9
|
if ( ! editor ) {
|
|
10
10
|
return null;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
// If there are multiple editors, we need to find the iframe that contains our contentRef to make sure
|
|
14
14
|
// we're focusing the region that contains this editor.
|
|
15
|
-
const editorCanvas =
|
|
15
|
+
const editorCanvas: Element =
|
|
16
16
|
Array.from(
|
|
17
|
-
document
|
|
17
|
+
document
|
|
18
|
+
.querySelectorAll< HTMLIFrameElement >(
|
|
19
|
+
'iframe[name="editor-canvas"]'
|
|
20
|
+
)
|
|
21
|
+
.values()
|
|
18
22
|
).find( ( iframe ) => {
|
|
19
23
|
// Find the iframe that contains our contentRef
|
|
20
24
|
const iframeDocument =
|
|
21
|
-
iframe.contentDocument || iframe.contentWindow
|
|
25
|
+
iframe.contentDocument || iframe.contentWindow!.document;
|
|
22
26
|
|
|
23
27
|
return iframeDocument === editor.ownerDocument;
|
|
24
28
|
} ) ?? editor;
|