@wordpress/block-editor 7.0.2 → 8.0.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 +11 -0
- package/README.md +45 -1
- package/build/components/autocomplete/index.js +1 -1
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +8 -4
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +61 -14
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-controls/fill.js +2 -2
- package/build/components/block-controls/fill.js.map +1 -1
- package/build/components/block-controls/hook.js +3 -3
- package/build/components/block-controls/hook.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-icon/index.native.js +9 -11
- package/build/components/block-icon/index.native.js.map +1 -1
- package/build/components/block-inspector/index.js +8 -0
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +5 -0
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block.js +12 -5
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +4 -3
- package/build/components/block-list/block.native.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-list-appender/index.js +9 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-mover/index.js +4 -4
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +4 -4
- package/build/components/block-mover/index.native.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-preview/auto.js +1 -1
- package/build/components/block-preview/auto.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 +26 -5
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +10 -3
- package/build/components/block-settings-menu-controls/index.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/block-switcher/block-styles-menu.js +1 -1
- package/build/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build/components/block-switcher/index.js +10 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +3 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-tools/block-popover.js +2 -4
- package/build/components/block-tools/block-popover.js.map +1 -1
- package/build/components/block-tools/index.js +4 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +96 -7
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +17 -8
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors/utils.js +11 -3
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +22 -57
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/contrast-checker/index.js +18 -12
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/copy-handler/index.js +9 -3
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-block-appender/index.js +2 -2
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/duotone-control/index.js +41 -39
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/editor-styles/index.js +9 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +32 -21
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/iframe/index.js +6 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build/components/image-editor/constants.js +16 -0
- package/build/components/image-editor/constants.js.map +1 -0
- package/build/components/image-editor/context.js +59 -0
- package/build/components/image-editor/context.js.map +1 -0
- package/build/components/image-editor/cropper.js +83 -0
- package/build/components/image-editor/cropper.js.map +1 -0
- package/build/components/image-editor/form-controls.js +36 -0
- package/build/components/image-editor/form-controls.js.map +1 -0
- package/build/components/image-editor/index.js +60 -0
- package/build/components/image-editor/index.js.map +1 -0
- package/build/components/image-editor/rotation-button.js +37 -0
- package/build/components/image-editor/rotation-button.js.map +1 -0
- package/build/components/image-editor/use-save-image.js +84 -0
- package/build/components/image-editor/use-save-image.js.map +1 -0
- package/build/components/image-editor/use-transform-image.js +135 -0
- package/build/components/image-editor/use-transform-image.js.map +1 -0
- package/build/components/image-editor/zoom-dropdown.js +55 -0
- package/build/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build/components/image-size-control/use-dimension-handler.js +14 -3
- package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build/components/index.js +36 -20
- 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/button-block-appender.js +11 -1
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +8 -5
- 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/inner-blocks/use-nested-settings-update.js +24 -13
- package/build/components/inner-blocks/use-nested-settings-update.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 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js +3 -11
- package/build/components/inserter/block-types-tab.native.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/hooks/use-clipboard-block.native.js +5 -4
- package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build/components/inserter/index.js +12 -4
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -7
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +2 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js +11 -15
- package/build/components/inserter/menu.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/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +6 -11
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inserter/utils.native.js +44 -0
- package/build/components/inserter/utils.native.js.map +1 -0
- package/build/components/inspector-controls/block-support-slot-container.js +28 -0
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build/components/inspector-controls/fill.js +16 -1
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/groups.js +5 -1
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +15 -0
- package/build/components/inspector-controls/slot.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 +93 -34
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +45 -15
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +25 -7
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-contents.js +1 -20
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block.js +54 -69
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +102 -76
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +45 -20
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -2
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/list-item.js +3 -2
- package/build/components/list-view/list-item.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +13 -54
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/media-placeholder/index.js +29 -20
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +5 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +1 -4
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/observe-typing/index.js +1 -1
- package/build/components/observe-typing/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +30 -1
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/rich-text/embed-handler-picker.native.js +66 -0
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
- 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 +32 -11
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/index.js +5 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +41 -2
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +28 -9
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/rich-text/utils.js +22 -0
- package/build/components/rich-text/utils.js.map +1 -1
- package/build/components/typewriter/index.js +1 -1
- package/build/components/typewriter/index.js.map +1 -1
- package/build/components/url-input/index.js +25 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +13 -10
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +2 -1
- package/build/components/use-on-block-drop/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/components/writing-flow/use-multi-selection.js +6 -0
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +10 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +13 -10
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +1 -1
- package/build/hooks/anchor.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 +5 -2
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +23 -27
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +60 -16
- 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 +123 -32
- 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/gap.js +2 -1
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/index.js +10 -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/lock.js +43 -0
- package/build/hooks/lock.js.map +1 -0
- 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/style.js +7 -4
- package/build/hooks/style.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 +160 -34
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +75 -8
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +323 -265
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.native.js +13 -1
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/index.js +1 -3
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +33 -22
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +172 -38
- package/build/store/selectors.js.map +1 -1
- package/build/utils/index.js +10 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +51 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build/utils/transform-styles/transforms/wrap.js +16 -0
- package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-module/components/autocomplete/index.js +2 -2
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +8 -4
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +64 -17
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-controls/fill.js +2 -2
- package/build-module/components/block-controls/fill.js.map +1 -1
- package/build-module/components/block-controls/hook.js +3 -3
- package/build-module/components/block-controls/hook.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-icon/index.native.js +10 -11
- package/build-module/components/block-icon/index.native.js.map +1 -1
- package/build-module/components/block-inspector/index.js +8 -0
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -0
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block.js +12 -5
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +4 -3
- package/build-module/components/block-list/block.native.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-list-appender/index.js +9 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -4
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +4 -4
- package/build-module/components/block-mover/index.native.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-preview/auto.js +1 -1
- package/build-module/components/block-preview/auto.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 +28 -7
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +10 -3
- package/build-module/components/block-settings-menu-controls/index.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/block-switcher/block-styles-menu.js +1 -1
- package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build-module/components/block-switcher/index.js +10 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +3 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-tools/block-popover.js +3 -5
- package/build-module/components/block-tools/block-popover.js.map +1 -1
- package/build-module/components/block-tools/index.js +4 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +96 -8
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +16 -9
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors/utils.js +9 -3
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +26 -63
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +13 -10
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/copy-handler/index.js +9 -3
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js +2 -2
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/duotone-control/index.js +43 -39
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/editor-styles/index.js +7 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +28 -21
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build-module/components/image-editor/constants.js +7 -0
- package/build-module/components/image-editor/constants.js.map +1 -0
- package/build-module/components/image-editor/context.js +44 -0
- package/build-module/components/image-editor/context.js.map +1 -0
- package/build-module/components/image-editor/cropper.js +69 -0
- package/build-module/components/image-editor/cropper.js.map +1 -0
- package/build-module/components/image-editor/form-controls.js +26 -0
- package/build-module/components/image-editor/form-controls.js.map +1 -0
- package/build-module/components/image-editor/index.js +37 -0
- package/build-module/components/image-editor/index.js.map +1 -0
- package/build-module/components/image-editor/rotation-button.js +26 -0
- package/build-module/components/image-editor/rotation-button.js.map +1 -0
- package/build-module/components/image-editor/use-save-image.js +70 -0
- package/build-module/components/image-editor/use-save-image.js.map +1 -0
- package/build-module/components/image-editor/use-transform-image.js +127 -0
- package/build-module/components/image-editor/use-transform-image.js.map +1 -0
- package/build-module/components/image-editor/zoom-dropdown.js +43 -0
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
- package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build-module/components/index.js +4 -3
- 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/button-block-appender.js +10 -1
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -6
- 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/inner-blocks/use-nested-settings-update.js +24 -13
- package/build-module/components/inner-blocks/use-nested-settings-update.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 -36
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js +2 -10
- package/build-module/components/inserter/block-types-tab.native.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/hooks/use-clipboard-block.native.js +5 -4
- package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build-module/components/inserter/index.js +12 -4
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +1 -7
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +2 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js +10 -15
- package/build-module/components/inserter/menu.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/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +5 -10
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inserter/utils.native.js +35 -0
- package/build-module/components/inserter/utils.native.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build-module/components/inspector-controls/fill.js +16 -2
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +5 -1
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +13 -0
- package/build-module/components/inspector-controls/slot.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 +93 -35
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +46 -17
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +24 -7
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +1 -18
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block.js +56 -71
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +102 -78
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +48 -23
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -2
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/list-item.js +3 -2
- package/build-module/components/list-view/list-item.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +29 -20
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +5 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +1 -4
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/observe-typing/index.js +1 -1
- package/build-module/components/observe-typing/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +29 -2
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
- 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 +29 -11
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +4 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +41 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +28 -9
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/rich-text/utils.js +20 -0
- package/build-module/components/rich-text/utils.js.map +1 -1
- package/build-module/components/typewriter/index.js +1 -1
- package/build-module/components/typewriter/index.js.map +1 -1
- package/build-module/components/url-input/index.js +25 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +13 -10
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -2
- package/build-module/components/use-on-block-drop/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/components/writing-flow/use-multi-selection.js +6 -0
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +10 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +13 -10
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +1 -1
- package/build-module/hooks/anchor.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 +6 -3
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +1 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +24 -27
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +59 -16
- 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 +117 -33
- 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/gap.js +2 -1
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/index.js +2 -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/lock.js +33 -0
- package/build-module/hooks/lock.js.map +1 -0
- 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/style.js +7 -4
- package/build-module/hooks/style.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 +163 -38
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +74 -8
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +286 -241
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.native.js +12 -1
- package/build-module/store/defaults.native.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 +33 -22
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +160 -34
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/index.js +1 -0
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +48 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
- package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-style/style-rtl.css +267 -144
- package/build-style/style.css +267 -144
- package/package.json +28 -27
- package/src/components/autocomplete/index.js +5 -2
- package/src/components/block-actions/index.js +9 -5
- package/src/components/block-alignment-control/style.scss +5 -0
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
- package/src/components/block-alignment-control/test/index.native.js +37 -0
- package/src/components/block-alignment-control/ui.js +98 -27
- package/src/components/block-alignment-control/use-available-alignments.js +31 -10
- package/src/components/block-controls/fill.js +5 -2
- package/src/components/block-controls/hook.js +3 -3
- package/src/components/block-draggable/style.scss +19 -4
- package/src/components/block-icon/index.js +4 -1
- package/src/components/block-icon/index.native.js +10 -16
- package/src/components/block-inspector/index.js +10 -0
- package/src/components/block-list/block-html.js +5 -0
- package/src/components/block-list/block.js +11 -3
- package/src/components/block-list/block.native.js +5 -3
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-list/style.scss +15 -0
- package/src/components/block-list/use-block-props/use-multi-selection.js +27 -7
- package/src/components/block-list-appender/index.js +8 -0
- package/src/components/block-mover/index.js +4 -4
- package/src/components/block-mover/index.native.js +4 -4
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
- package/src/components/block-mover/test/index.native.js +26 -28
- 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-preview/README.md +1 -1
- package/src/components/block-preview/auto.js +1 -1
- package/src/components/block-preview/style.scss +0 -17
- package/src/components/block-settings/container.native.js +7 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
- package/src/components/block-settings-menu-controls/index.js +9 -6
- package/src/components/block-styles/preview.native.js +2 -2
- package/src/components/block-switcher/block-styles-menu.js +1 -1
- package/src/components/block-switcher/index.js +7 -3
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-switcher/test/index.js +3 -0
- package/src/components/block-title/index.js +5 -2
- package/src/components/block-tools/block-popover.js +3 -5
- package/src/components/block-tools/index.js +5 -2
- package/src/components/block-tools/insertion-point.js +97 -9
- package/src/components/block-tools/style.scss +4 -35
- package/src/components/block-types-list/style.scss +0 -3
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/test/utils.js +216 -0
- package/src/components/border-radius-control/utils.js +18 -10
- package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
- package/src/components/colors/test/utils.js +41 -0
- package/src/components/colors/utils.js +9 -5
- package/src/components/colors-gradients/control.js +70 -110
- package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
- package/src/components/colors-gradients/style.scss +10 -18
- package/src/components/colors-gradients/test/control.js +41 -66
- package/src/components/contrast-checker/index.js +14 -10
- package/src/components/copy-handler/index.js +6 -1
- package/src/components/default-block-appender/index.js +2 -2
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
- package/src/components/duotone-control/index.js +49 -41
- package/src/components/duotone-control/style.scss +27 -12
- package/src/components/editor-styles/index.js +7 -4
- package/src/components/font-appearance-control/index.js +41 -33
- package/src/components/font-appearance-control/style.scss +1 -1
- package/src/components/iframe/index.js +4 -4
- package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
- package/src/components/image-editor/constants.js +6 -0
- package/src/components/image-editor/context.js +56 -0
- package/src/components/image-editor/cropper.js +74 -0
- package/src/components/image-editor/form-controls.js +22 -0
- package/src/components/image-editor/index.js +52 -0
- package/src/components/image-editor/rotation-button.js +24 -0
- package/src/components/image-editor/use-save-image.js +97 -0
- package/src/components/image-editor/use-transform-image.js +162 -0
- package/src/components/image-editor/zoom-dropdown.js +40 -0
- package/src/components/image-size-control/use-dimension-handler.js +18 -1
- package/src/components/index.js +7 -6
- package/src/components/index.native.js +1 -4
- package/src/components/inner-blocks/button-block-appender.js +9 -0
- package/src/components/inner-blocks/index.js +8 -4
- package/src/components/inner-blocks/index.native.js +7 -4
- package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
- 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 -73
- package/src/components/inserter/block-types-tab.native.js +3 -15
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
- package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
- package/src/components/inserter/index.js +15 -3
- package/src/components/inserter/index.native.js +2 -19
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +4 -1
- package/src/components/inserter/menu.native.js +9 -14
- package/src/components/inserter/pattern-panel.js +33 -16
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/quick-inserter.js +1 -1
- package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
- package/src/components/inserter/search-results.native.js +5 -15
- package/src/components/inserter/style.scss +80 -16
- 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/inserter/utils.native.js +35 -0
- package/src/components/inserter-list-item/style.scss +4 -2
- package/src/components/inspector-controls/block-support-slot-container.js +10 -0
- package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
- package/src/components/inspector-controls/fill.js +23 -2
- package/src/components/inspector-controls/groups.js +8 -0
- package/src/components/inspector-controls/slot.js +15 -0
- package/src/components/letter-spacing-control/index.js +12 -6
- package/src/components/link-control/README.md +47 -14
- package/src/components/link-control/index.js +102 -31
- package/src/components/link-control/link-preview.js +53 -20
- package/src/components/link-control/search-input.js +21 -7
- package/src/components/link-control/style.scss +66 -19
- package/src/components/link-control/test/index.js +311 -4
- package/src/components/list-view/block-contents.js +17 -38
- package/src/components/list-view/block.js +73 -84
- package/src/components/list-view/branch.js +123 -94
- package/src/components/list-view/index.js +82 -30
- package/src/components/list-view/leaf.js +2 -2
- package/src/components/list-view/list-item.js +5 -4
- package/src/components/list-view/style.scss +70 -33
- package/src/components/list-view/use-list-view-client-ids.js +9 -68
- package/src/components/media-placeholder/index.js +26 -19
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +4 -1
- package/src/components/media-upload/README.md +1 -1
- package/src/components/navigable-toolbar/index.js +1 -4
- package/src/components/observe-typing/index.js +3 -2
- package/src/components/plain-text/index.native.js +26 -4
- package/src/components/rich-text/embed-handler-picker.native.js +68 -0
- package/src/components/rich-text/format-edit.js +36 -2
- package/src/components/rich-text/format-toolbar/index.js +25 -6
- package/src/components/rich-text/index.js +12 -8
- package/src/components/rich-text/index.native.js +35 -1
- package/src/components/rich-text/use-paste-handler.js +30 -12
- package/src/components/rich-text/utils.js +16 -0
- package/src/components/skip-to-selected-block/README.md +39 -0
- package/src/components/typewriter/index.js +3 -2
- package/src/components/url-input/index.js +26 -10
- package/src/components/use-moving-animation/index.js +9 -8
- package/src/components/use-on-block-drop/index.js +5 -1
- package/src/components/use-setting/index.js +49 -11
- package/src/components/writing-flow/use-multi-selection.js +6 -0
- package/src/components/writing-flow/use-tab-nav.js +17 -3
- package/src/hooks/align.js +19 -10
- package/src/hooks/anchor.js +2 -2
- package/src/hooks/border.js +8 -11
- package/src/hooks/color-panel.js +4 -1
- package/src/hooks/color.js +7 -4
- package/src/hooks/dimensions.js +48 -59
- package/src/hooks/duotone.js +68 -19
- package/src/hooks/font-appearance.js +38 -7
- package/src/hooks/font-family.js +129 -33
- package/src/hooks/font-size.js +42 -6
- package/src/hooks/gap.js +2 -1
- package/src/hooks/index.js +2 -0
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.scss +8 -0
- package/src/hooks/letter-spacing.js +35 -7
- package/src/hooks/line-height.js +37 -9
- package/src/hooks/lock.js +34 -0
- package/src/hooks/margin.js +1 -1
- package/src/hooks/padding.js +1 -1
- package/src/hooks/style.js +15 -11
- 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 +179 -50
- package/src/layouts/flow.js +54 -8
- package/src/store/actions.js +239 -377
- package/src/store/defaults.native.js +12 -0
- package/src/store/index.js +1 -2
- package/src/store/reducer.js +54 -18
- package/src/store/selectors.js +173 -47
- package/src/store/test/actions.js +407 -705
- package/src/store/test/reducer.js +22 -54
- package/src/store/test/selectors.js +79 -21
- package/src/style.scss +2 -1
- package/src/utils/index.js +1 -0
- package/src/utils/parse-css-unit-to-px.js +43 -1
- package/src/utils/test/parse-css-unit-to-px.js +148 -165
- package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
- package/src/utils/transform-styles/transforms/wrap.js +16 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/duotone-control/duotone-picker-popover.js +0 -44
- package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build/components/list-view/block-slot.js +0 -121
- package/build/components/list-view/block-slot.js.map +0 -1
- package/build/components/list-view/editor.js +0 -35
- package/build/components/list-view/editor.js.map +0 -1
- 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/duotone-control/duotone-picker-popover.js +0 -35
- package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build-module/components/list-view/block-slot.js +0 -96
- package/build-module/components/list-view/block-slot.js.map +0 -1
- package/build-module/components/list-view/editor.js +0 -25
- package/build-module/components/list-view/editor.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/duotone-control/duotone-picker-popover.js +0 -36
- package/src/components/list-view/block-slot.js +0 -120
- package/src/components/list-view/editor.js +0 -29
- 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
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { createContext, useContext, useMemo } from '@wordpress/element';
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import useSaveImage from './use-save-image';
|
|
12
|
+
import useTransformImage from './use-transform-image';
|
|
13
|
+
const ImageEditingContext = createContext({});
|
|
14
|
+
export const useImageEditingContext = () => useContext(ImageEditingContext);
|
|
15
|
+
export default function ImageEditingProvider({
|
|
16
|
+
id,
|
|
17
|
+
url,
|
|
18
|
+
naturalWidth,
|
|
19
|
+
naturalHeight,
|
|
20
|
+
isEditing,
|
|
21
|
+
onFinishEditing,
|
|
22
|
+
onSaveImage,
|
|
23
|
+
children
|
|
24
|
+
}) {
|
|
25
|
+
const transformImage = useTransformImage({
|
|
26
|
+
url,
|
|
27
|
+
naturalWidth,
|
|
28
|
+
naturalHeight
|
|
29
|
+
}, isEditing);
|
|
30
|
+
const saveImage = useSaveImage({
|
|
31
|
+
id,
|
|
32
|
+
url,
|
|
33
|
+
onSaveImage,
|
|
34
|
+
onFinishEditing,
|
|
35
|
+
...transformImage
|
|
36
|
+
});
|
|
37
|
+
const providerValue = useMemo(() => ({ ...transformImage,
|
|
38
|
+
...saveImage
|
|
39
|
+
}), [transformImage, saveImage]);
|
|
40
|
+
return createElement(ImageEditingContext.Provider, {
|
|
41
|
+
value: providerValue
|
|
42
|
+
}, children);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/context.js"],"names":["createContext","useContext","useMemo","useSaveImage","useTransformImage","ImageEditingContext","useImageEditingContext","ImageEditingProvider","id","url","naturalWidth","naturalHeight","isEditing","onFinishEditing","onSaveImage","children","transformImage","saveImage","providerValue"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,aAAT,EAAwBC,UAAxB,EAAoCC,OAApC,QAAmD,oBAAnD;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,OAAOC,iBAAP,MAA8B,uBAA9B;AAEA,MAAMC,mBAAmB,GAAGL,aAAa,CAAE,EAAF,CAAzC;AAEA,OAAO,MAAMM,sBAAsB,GAAG,MAAML,UAAU,CAAEI,mBAAF,CAA/C;AAEP,eAAe,SAASE,oBAAT,CAA+B;AAC7CC,EAAAA,EAD6C;AAE7CC,EAAAA,GAF6C;AAG7CC,EAAAA,YAH6C;AAI7CC,EAAAA,aAJ6C;AAK7CC,EAAAA,SAL6C;AAM7CC,EAAAA,eAN6C;AAO7CC,EAAAA,WAP6C;AAQ7CC,EAAAA;AAR6C,CAA/B,EASX;AACH,QAAMC,cAAc,GAAGZ,iBAAiB,CACvC;AACCK,IAAAA,GADD;AAECC,IAAAA,YAFD;AAGCC,IAAAA;AAHD,GADuC,EAMvCC,SANuC,CAAxC;AASA,QAAMK,SAAS,GAAGd,YAAY,CAAE;AAC/BK,IAAAA,EAD+B;AAE/BC,IAAAA,GAF+B;AAG/BK,IAAAA,WAH+B;AAI/BD,IAAAA,eAJ+B;AAK/B,OAAGG;AAL4B,GAAF,CAA9B;AAQA,QAAME,aAAa,GAAGhB,OAAO,CAC5B,OAAQ,EACP,GAAGc,cADI;AAEP,OAAGC;AAFI,GAAR,CAD4B,EAK5B,CAAED,cAAF,EAAkBC,SAAlB,CAL4B,CAA7B;AAQA,SACC,cAAC,mBAAD,CAAqB,QAArB;AAA8B,IAAA,KAAK,EAAGC;AAAtC,KACGH,QADH,CADD;AAKA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext, useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useSaveImage from './use-save-image';\nimport useTransformImage from './use-transform-image';\n\nconst ImageEditingContext = createContext( {} );\n\nexport const useImageEditingContext = () => useContext( ImageEditingContext );\n\nexport default function ImageEditingProvider( {\n\tid,\n\turl,\n\tnaturalWidth,\n\tnaturalHeight,\n\tisEditing,\n\tonFinishEditing,\n\tonSaveImage,\n\tchildren,\n} ) {\n\tconst transformImage = useTransformImage(\n\t\t{\n\t\t\turl,\n\t\t\tnaturalWidth,\n\t\t\tnaturalHeight,\n\t\t},\n\t\tisEditing\n\t);\n\n\tconst saveImage = useSaveImage( {\n\t\tid,\n\t\turl,\n\t\tonSaveImage,\n\t\tonFinishEditing,\n\t\t...transformImage,\n\t} );\n\n\tconst providerValue = useMemo(\n\t\t() => ( {\n\t\t\t...transformImage,\n\t\t\t...saveImage,\n\t\t} ),\n\t\t[ transformImage, saveImage ]\n\t);\n\n\treturn (\n\t\t<ImageEditingContext.Provider value={ providerValue }>\n\t\t\t{ children }\n\t\t</ImageEditingContext.Provider>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import Cropper from 'react-easy-crop';
|
|
7
|
+
import classnames from 'classnames';
|
|
8
|
+
/**
|
|
9
|
+
* WordPress dependencies
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { Spinner } from '@wordpress/components';
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { MIN_ZOOM, MAX_ZOOM } from './constants';
|
|
18
|
+
import { useImageEditingContext } from './context';
|
|
19
|
+
export default function ImageCropper({
|
|
20
|
+
url,
|
|
21
|
+
width,
|
|
22
|
+
height,
|
|
23
|
+
clientWidth,
|
|
24
|
+
naturalHeight,
|
|
25
|
+
naturalWidth
|
|
26
|
+
}) {
|
|
27
|
+
const {
|
|
28
|
+
isInProgress,
|
|
29
|
+
editedUrl,
|
|
30
|
+
position,
|
|
31
|
+
zoom,
|
|
32
|
+
aspect,
|
|
33
|
+
setPosition,
|
|
34
|
+
setCrop,
|
|
35
|
+
setZoom,
|
|
36
|
+
rotation
|
|
37
|
+
} = useImageEditingContext();
|
|
38
|
+
let editedHeight = height || clientWidth * naturalHeight / naturalWidth;
|
|
39
|
+
|
|
40
|
+
if (rotation % 180 === 90) {
|
|
41
|
+
editedHeight = clientWidth * naturalWidth / naturalHeight;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return createElement("div", {
|
|
45
|
+
className: classnames('wp-block-image__crop-area', {
|
|
46
|
+
'is-applying': isInProgress
|
|
47
|
+
}),
|
|
48
|
+
style: {
|
|
49
|
+
width: width || clientWidth,
|
|
50
|
+
height: editedHeight
|
|
51
|
+
}
|
|
52
|
+
}, createElement(Cropper, {
|
|
53
|
+
image: editedUrl || url,
|
|
54
|
+
disabled: isInProgress,
|
|
55
|
+
minZoom: MIN_ZOOM / 100,
|
|
56
|
+
maxZoom: MAX_ZOOM / 100,
|
|
57
|
+
crop: position,
|
|
58
|
+
zoom: zoom / 100,
|
|
59
|
+
aspect: aspect,
|
|
60
|
+
onCropChange: setPosition,
|
|
61
|
+
onCropComplete: newCropPercent => {
|
|
62
|
+
setCrop(newCropPercent);
|
|
63
|
+
},
|
|
64
|
+
onZoomChange: newZoom => {
|
|
65
|
+
setZoom(newZoom * 100);
|
|
66
|
+
}
|
|
67
|
+
}), isInProgress && createElement(Spinner, null));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=cropper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/cropper.js"],"names":["Cropper","classnames","Spinner","MIN_ZOOM","MAX_ZOOM","useImageEditingContext","ImageCropper","url","width","height","clientWidth","naturalHeight","naturalWidth","isInProgress","editedUrl","position","zoom","aspect","setPosition","setCrop","setZoom","rotation","editedHeight","newCropPercent","newZoom"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,iBAApB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,OAAT,QAAwB,uBAAxB;AAEA;AACA;AACA;;AACA,SAASC,QAAT,EAAmBC,QAAnB,QAAmC,aAAnC;AAEA,SAASC,sBAAT,QAAuC,WAAvC;AAEA,eAAe,SAASC,YAAT,CAAuB;AACrCC,EAAAA,GADqC;AAErCC,EAAAA,KAFqC;AAGrCC,EAAAA,MAHqC;AAIrCC,EAAAA,WAJqC;AAKrCC,EAAAA,aALqC;AAMrCC,EAAAA;AANqC,CAAvB,EAOX;AACH,QAAM;AACLC,IAAAA,YADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,QAHK;AAILC,IAAAA,IAJK;AAKLC,IAAAA,MALK;AAMLC,IAAAA,WANK;AAOLC,IAAAA,OAPK;AAQLC,IAAAA,OARK;AASLC,IAAAA;AATK,MAUFhB,sBAAsB,EAV1B;AAYA,MAAIiB,YAAY,GAAGb,MAAM,IAAMC,WAAW,GAAGC,aAAhB,GAAkCC,YAA/D;;AAEA,MAAKS,QAAQ,GAAG,GAAX,KAAmB,EAAxB,EAA6B;AAC5BC,IAAAA,YAAY,GAAKZ,WAAW,GAAGE,YAAhB,GAAiCD,aAAhD;AACA;;AAED,SACC;AACC,IAAA,SAAS,EAAGV,UAAU,CAAE,2BAAF,EAA+B;AACpD,qBAAeY;AADqC,KAA/B,CADvB;AAIC,IAAA,KAAK,EAAG;AACPL,MAAAA,KAAK,EAAEA,KAAK,IAAIE,WADT;AAEPD,MAAAA,MAAM,EAAEa;AAFD;AAJT,KASC,cAAC,OAAD;AACC,IAAA,KAAK,EAAGR,SAAS,IAAIP,GADtB;AAEC,IAAA,QAAQ,EAAGM,YAFZ;AAGC,IAAA,OAAO,EAAGV,QAAQ,GAAG,GAHtB;AAIC,IAAA,OAAO,EAAGC,QAAQ,GAAG,GAJtB;AAKC,IAAA,IAAI,EAAGW,QALR;AAMC,IAAA,IAAI,EAAGC,IAAI,GAAG,GANf;AAOC,IAAA,MAAM,EAAGC,MAPV;AAQC,IAAA,YAAY,EAAGC,WARhB;AASC,IAAA,cAAc,EAAKK,cAAF,IAAsB;AACtCJ,MAAAA,OAAO,CAAEI,cAAF,CAAP;AACA,KAXF;AAYC,IAAA,YAAY,EAAKC,OAAF,IAAe;AAC7BJ,MAAAA,OAAO,CAAEI,OAAO,GAAG,GAAZ,CAAP;AACA;AAdF,IATD,EAyBGX,YAAY,IAAI,cAAC,OAAD,OAzBnB,CADD;AA6BA","sourcesContent":["/**\n * External dependencies\n */\nimport Cropper from 'react-easy-crop';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { MIN_ZOOM, MAX_ZOOM } from './constants';\n\nimport { useImageEditingContext } from './context';\n\nexport default function ImageCropper( {\n\turl,\n\twidth,\n\theight,\n\tclientWidth,\n\tnaturalHeight,\n\tnaturalWidth,\n} ) {\n\tconst {\n\t\tisInProgress,\n\t\teditedUrl,\n\t\tposition,\n\t\tzoom,\n\t\taspect,\n\t\tsetPosition,\n\t\tsetCrop,\n\t\tsetZoom,\n\t\trotation,\n\t} = useImageEditingContext();\n\n\tlet editedHeight = height || ( clientWidth * naturalHeight ) / naturalWidth;\n\n\tif ( rotation % 180 === 90 ) {\n\t\teditedHeight = ( clientWidth * naturalWidth ) / naturalHeight;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'wp-block-image__crop-area', {\n\t\t\t\t'is-applying': isInProgress,\n\t\t\t} ) }\n\t\t\tstyle={ {\n\t\t\t\twidth: width || clientWidth,\n\t\t\t\theight: editedHeight,\n\t\t\t} }\n\t\t>\n\t\t\t<Cropper\n\t\t\t\timage={ editedUrl || url }\n\t\t\t\tdisabled={ isInProgress }\n\t\t\t\tminZoom={ MIN_ZOOM / 100 }\n\t\t\t\tmaxZoom={ MAX_ZOOM / 100 }\n\t\t\t\tcrop={ position }\n\t\t\t\tzoom={ zoom / 100 }\n\t\t\t\taspect={ aspect }\n\t\t\t\tonCropChange={ setPosition }\n\t\t\t\tonCropComplete={ ( newCropPercent ) => {\n\t\t\t\t\tsetCrop( newCropPercent );\n\t\t\t\t} }\n\t\t\t\tonZoomChange={ ( newZoom ) => {\n\t\t\t\t\tsetZoom( newZoom * 100 );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t{ isInProgress && <Spinner /> }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createElement, Fragment } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { ToolbarButton } from '@wordpress/components';
|
|
7
|
+
import { __ } from '@wordpress/i18n';
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { useImageEditingContext } from './context';
|
|
13
|
+
export default function FormControls() {
|
|
14
|
+
const {
|
|
15
|
+
isInProgress,
|
|
16
|
+
apply,
|
|
17
|
+
cancel
|
|
18
|
+
} = useImageEditingContext();
|
|
19
|
+
return createElement(Fragment, null, createElement(ToolbarButton, {
|
|
20
|
+
onClick: apply,
|
|
21
|
+
disabled: isInProgress
|
|
22
|
+
}, __('Apply')), createElement(ToolbarButton, {
|
|
23
|
+
onClick: cancel
|
|
24
|
+
}, __('Cancel')));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=form-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/form-controls.js"],"names":["ToolbarButton","__","useImageEditingContext","FormControls","isInProgress","apply","cancel"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,aAAT,QAA8B,uBAA9B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,QAAuC,WAAvC;AAEA,eAAe,SAASC,YAAT,GAAwB;AACtC,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,KAAhB;AAAuBC,IAAAA;AAAvB,MAAkCJ,sBAAsB,EAA9D;AACA,SACC,8BACC,cAAC,aAAD;AAAe,IAAA,OAAO,EAAGG,KAAzB;AAAiC,IAAA,QAAQ,EAAGD;AAA5C,KACGH,EAAE,CAAE,OAAF,CADL,CADD,EAIC,cAAC,aAAD;AAAe,IAAA,OAAO,EAAGK;AAAzB,KAAoCL,EAAE,CAAE,QAAF,CAAtC,CAJD,CADD;AAQA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useImageEditingContext } from './context';\n\nexport default function FormControls() {\n\tconst { isInProgress, apply, cancel } = useImageEditingContext();\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton onClick={ apply } disabled={ isInProgress }>\n\t\t\t\t{ __( 'Apply' ) }\n\t\t\t</ToolbarButton>\n\t\t\t<ToolbarButton onClick={ cancel }>{ __( 'Cancel' ) }</ToolbarButton>\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createElement, Fragment } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import BlockControls from '../block-controls';
|
|
12
|
+
import Cropper from './cropper';
|
|
13
|
+
import ZoomDropdown from './zoom-dropdown';
|
|
14
|
+
import AspectRatioDropdown from './aspect-ratio-dropdown';
|
|
15
|
+
import RotationButton from './rotation-button';
|
|
16
|
+
import FormControls from './form-controls';
|
|
17
|
+
export default function ImageEditor({
|
|
18
|
+
url,
|
|
19
|
+
width,
|
|
20
|
+
height,
|
|
21
|
+
clientWidth,
|
|
22
|
+
naturalHeight,
|
|
23
|
+
naturalWidth
|
|
24
|
+
}) {
|
|
25
|
+
return createElement(Fragment, null, createElement(Cropper, {
|
|
26
|
+
url: url,
|
|
27
|
+
width: width,
|
|
28
|
+
height: height,
|
|
29
|
+
clientWidth: clientWidth,
|
|
30
|
+
naturalHeight: naturalHeight,
|
|
31
|
+
naturalWidth: naturalWidth
|
|
32
|
+
}), createElement(BlockControls, null, createElement(ToolbarGroup, null, createElement(ZoomDropdown, null), createElement(ToolbarItem, null, toggleProps => createElement(AspectRatioDropdown, {
|
|
33
|
+
toggleProps: toggleProps
|
|
34
|
+
})), createElement(RotationButton, null)), createElement(ToolbarGroup, null, createElement(FormControls, null))));
|
|
35
|
+
}
|
|
36
|
+
export { default as ImageEditingProvider } from './context';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/index.js"],"names":["ToolbarGroup","ToolbarItem","BlockControls","Cropper","ZoomDropdown","AspectRatioDropdown","RotationButton","FormControls","ImageEditor","url","width","height","clientWidth","naturalHeight","naturalWidth","toggleProps","default","ImageEditingProvider"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,YAAT,EAAuBC,WAAvB,QAA0C,uBAA1C;AAEA;AACA;AACA;;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AACA,OAAOC,cAAP,MAA2B,mBAA3B;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AAEA,eAAe,SAASC,WAAT,CAAsB;AACpCC,EAAAA,GADoC;AAEpCC,EAAAA,KAFoC;AAGpCC,EAAAA,MAHoC;AAIpCC,EAAAA,WAJoC;AAKpCC,EAAAA,aALoC;AAMpCC,EAAAA;AANoC,CAAtB,EAOX;AACH,SACC,8BACC,cAAC,OAAD;AACC,IAAA,GAAG,EAAGL,GADP;AAEC,IAAA,KAAK,EAAGC,KAFT;AAGC,IAAA,MAAM,EAAGC,MAHV;AAIC,IAAA,WAAW,EAAGC,WAJf;AAKC,IAAA,aAAa,EAAGC,aALjB;AAMC,IAAA,YAAY,EAAGC;AANhB,IADD,EASC,cAAC,aAAD,QACC,cAAC,YAAD,QACC,cAAC,YAAD,OADD,EAEC,cAAC,WAAD,QACKC,WAAF,IACD,cAAC,mBAAD;AAAqB,IAAA,WAAW,EAAGA;AAAnC,IAFF,CAFD,EAOC,cAAC,cAAD,OAPD,CADD,EAUC,cAAC,YAAD,QACC,cAAC,YAAD,OADD,CAVD,CATD,CADD;AA0BA;AAED,SAASC,OAAO,IAAIC,oBAApB,QAAgD,WAAhD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockControls from '../block-controls';\nimport Cropper from './cropper';\nimport ZoomDropdown from './zoom-dropdown';\nimport AspectRatioDropdown from './aspect-ratio-dropdown';\nimport RotationButton from './rotation-button';\nimport FormControls from './form-controls';\n\nexport default function ImageEditor( {\n\turl,\n\twidth,\n\theight,\n\tclientWidth,\n\tnaturalHeight,\n\tnaturalWidth,\n} ) {\n\treturn (\n\t\t<>\n\t\t\t<Cropper\n\t\t\t\turl={ url }\n\t\t\t\twidth={ width }\n\t\t\t\theight={ height }\n\t\t\t\tclientWidth={ clientWidth }\n\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t/>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ZoomDropdown />\n\t\t\t\t\t<ToolbarItem>\n\t\t\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t\t\t<AspectRatioDropdown toggleProps={ toggleProps } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolbarItem>\n\t\t\t\t\t<RotationButton />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<FormControls />\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\nexport { default as ImageEditingProvider } from './context';\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { ToolbarButton } from '@wordpress/components';
|
|
7
|
+
import { __ } from '@wordpress/i18n';
|
|
8
|
+
import { rotateRight as rotateRightIcon } from '@wordpress/icons';
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { useImageEditingContext } from './context';
|
|
14
|
+
export default function RotationButton() {
|
|
15
|
+
const {
|
|
16
|
+
isInProgress,
|
|
17
|
+
rotateClockwise
|
|
18
|
+
} = useImageEditingContext();
|
|
19
|
+
return createElement(ToolbarButton, {
|
|
20
|
+
icon: rotateRightIcon,
|
|
21
|
+
label: __('Rotate'),
|
|
22
|
+
onClick: rotateClockwise,
|
|
23
|
+
disabled: isInProgress
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=rotation-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/rotation-button.js"],"names":["ToolbarButton","__","rotateRight","rotateRightIcon","useImageEditingContext","RotationButton","isInProgress","rotateClockwise"],"mappings":";;AAAA;AACA;AACA;AAEA,SAASA,aAAT,QAA8B,uBAA9B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,WAAW,IAAIC,eAAxB,QAA+C,kBAA/C;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,QAAuC,WAAvC;AAEA,eAAe,SAASC,cAAT,GAA0B;AACxC,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAoCH,sBAAsB,EAAhE;AACA,SACC,cAAC,aAAD;AACC,IAAA,IAAI,EAAGD,eADR;AAEC,IAAA,KAAK,EAAGF,EAAE,CAAE,QAAF,CAFX;AAGC,IAAA,OAAO,EAAGM,eAHX;AAIC,IAAA,QAAQ,EAAGD;AAJZ,IADD;AAQA","sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { rotateRight as rotateRightIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useImageEditingContext } from './context';\n\nexport default function RotationButton() {\n\tconst { isInProgress, rotateClockwise } = useImageEditingContext();\n\treturn (\n\t\t<ToolbarButton\n\t\t\ticon={ rotateRightIcon }\n\t\t\tlabel={ __( 'Rotate' ) }\n\t\t\tonClick={ rotateClockwise }\n\t\t\tdisabled={ isInProgress }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import apiFetch from '@wordpress/api-fetch';
|
|
5
|
+
import { useDispatch } from '@wordpress/data';
|
|
6
|
+
import { useCallback, useMemo, useState } from '@wordpress/element';
|
|
7
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
8
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
9
|
+
export default function useSaveImage({
|
|
10
|
+
crop,
|
|
11
|
+
rotation,
|
|
12
|
+
height,
|
|
13
|
+
width,
|
|
14
|
+
aspect,
|
|
15
|
+
url,
|
|
16
|
+
id,
|
|
17
|
+
onSaveImage,
|
|
18
|
+
onFinishEditing
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
createErrorNotice
|
|
22
|
+
} = useDispatch(noticesStore);
|
|
23
|
+
const [isInProgress, setIsInProgress] = useState(false);
|
|
24
|
+
const cancel = useCallback(() => {
|
|
25
|
+
setIsInProgress(false);
|
|
26
|
+
onFinishEditing();
|
|
27
|
+
}, [setIsInProgress, onFinishEditing]);
|
|
28
|
+
const apply = useCallback(() => {
|
|
29
|
+
setIsInProgress(true);
|
|
30
|
+
let attrs = {}; // The crop script may return some very small, sub-pixel values when the image was not cropped.
|
|
31
|
+
// Crop only when the new size has changed by more than 0.1%.
|
|
32
|
+
|
|
33
|
+
if (crop.width < 99.9 || crop.height < 99.9) {
|
|
34
|
+
attrs = crop;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (rotation > 0) {
|
|
38
|
+
attrs.rotation = rotation;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
attrs.src = url;
|
|
42
|
+
apiFetch({
|
|
43
|
+
path: `/wp/v2/media/${id}/edit`,
|
|
44
|
+
method: 'POST',
|
|
45
|
+
data: attrs
|
|
46
|
+
}).then(response => {
|
|
47
|
+
onSaveImage({
|
|
48
|
+
id: response.id,
|
|
49
|
+
url: response.source_url,
|
|
50
|
+
height: height && width ? width / aspect : undefined
|
|
51
|
+
});
|
|
52
|
+
}).catch(error => {
|
|
53
|
+
createErrorNotice(sprintf(
|
|
54
|
+
/* translators: 1. Error message */
|
|
55
|
+
__('Could not edit image. %s'), error.message), {
|
|
56
|
+
id: 'image-editing-error',
|
|
57
|
+
type: 'snackbar'
|
|
58
|
+
});
|
|
59
|
+
}).finally(() => {
|
|
60
|
+
setIsInProgress(false);
|
|
61
|
+
onFinishEditing();
|
|
62
|
+
});
|
|
63
|
+
}, [setIsInProgress, crop, rotation, height, width, aspect, url, onSaveImage, createErrorNotice, setIsInProgress, onFinishEditing]);
|
|
64
|
+
return useMemo(() => ({
|
|
65
|
+
isInProgress,
|
|
66
|
+
apply,
|
|
67
|
+
cancel
|
|
68
|
+
}), [isInProgress, apply, cancel]);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=use-save-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/use-save-image.js"],"names":["apiFetch","useDispatch","useCallback","useMemo","useState","__","sprintf","store","noticesStore","useSaveImage","crop","rotation","height","width","aspect","url","id","onSaveImage","onFinishEditing","createErrorNotice","isInProgress","setIsInProgress","cancel","apply","attrs","src","path","method","data","then","response","source_url","undefined","catch","error","message","type","finally"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,WAAT,EAAsBC,OAAtB,EAA+BC,QAA/B,QAA+C,oBAA/C;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,KAAK,IAAIC,YAAlB,QAAsC,oBAAtC;AAEA,eAAe,SAASC,YAAT,CAAuB;AACrCC,EAAAA,IADqC;AAErCC,EAAAA,QAFqC;AAGrCC,EAAAA,MAHqC;AAIrCC,EAAAA,KAJqC;AAKrCC,EAAAA,MALqC;AAMrCC,EAAAA,GANqC;AAOrCC,EAAAA,EAPqC;AAQrCC,EAAAA,WARqC;AASrCC,EAAAA;AATqC,CAAvB,EAUX;AACH,QAAM;AAAEC,IAAAA;AAAF,MAAwBlB,WAAW,CAAEO,YAAF,CAAzC;AACA,QAAM,CAAEY,YAAF,EAAgBC,eAAhB,IAAoCjB,QAAQ,CAAE,KAAF,CAAlD;AAEA,QAAMkB,MAAM,GAAGpB,WAAW,CAAE,MAAM;AACjCmB,IAAAA,eAAe,CAAE,KAAF,CAAf;AACAH,IAAAA,eAAe;AACf,GAHyB,EAGvB,CAAEG,eAAF,EAAmBH,eAAnB,CAHuB,CAA1B;AAKA,QAAMK,KAAK,GAAGrB,WAAW,CAAE,MAAM;AAChCmB,IAAAA,eAAe,CAAE,IAAF,CAAf;AAEA,QAAIG,KAAK,GAAG,EAAZ,CAHgC,CAKhC;AACA;;AACA,QAAKd,IAAI,CAACG,KAAL,GAAa,IAAb,IAAqBH,IAAI,CAACE,MAAL,GAAc,IAAxC,EAA+C;AAC9CY,MAAAA,KAAK,GAAGd,IAAR;AACA;;AAED,QAAKC,QAAQ,GAAG,CAAhB,EAAoB;AACnBa,MAAAA,KAAK,CAACb,QAAN,GAAiBA,QAAjB;AACA;;AAEDa,IAAAA,KAAK,CAACC,GAAN,GAAYV,GAAZ;AAEAf,IAAAA,QAAQ,CAAE;AACT0B,MAAAA,IAAI,EAAG,gBAAgBV,EAAI,OADlB;AAETW,MAAAA,MAAM,EAAE,MAFC;AAGTC,MAAAA,IAAI,EAAEJ;AAHG,KAAF,CAAR,CAKEK,IALF,CAKUC,QAAF,IAAgB;AACtBb,MAAAA,WAAW,CAAE;AACZD,QAAAA,EAAE,EAAEc,QAAQ,CAACd,EADD;AAEZD,QAAAA,GAAG,EAAEe,QAAQ,CAACC,UAFF;AAGZnB,QAAAA,MAAM,EAAEA,MAAM,IAAIC,KAAV,GAAkBA,KAAK,GAAGC,MAA1B,GAAmCkB;AAH/B,OAAF,CAAX;AAKA,KAXF,EAYEC,KAZF,CAYWC,KAAF,IAAa;AACpBf,MAAAA,iBAAiB,CAChBb,OAAO;AACN;AACAD,MAAAA,EAAE,CAAE,0BAAF,CAFI,EAGN6B,KAAK,CAACC,OAHA,CADS,EAMhB;AACCnB,QAAAA,EAAE,EAAE,qBADL;AAECoB,QAAAA,IAAI,EAAE;AAFP,OANgB,CAAjB;AAWA,KAxBF,EAyBEC,OAzBF,CAyBW,MAAM;AACfhB,MAAAA,eAAe,CAAE,KAAF,CAAf;AACAH,MAAAA,eAAe;AACf,KA5BF;AA6BA,GA9CwB,EA8CtB,CACFG,eADE,EAEFX,IAFE,EAGFC,QAHE,EAIFC,MAJE,EAKFC,KALE,EAMFC,MANE,EAOFC,GAPE,EAQFE,WARE,EASFE,iBATE,EAUFE,eAVE,EAWFH,eAXE,CA9CsB,CAAzB;AA4DA,SAAOf,OAAO,CACb,OAAQ;AACPiB,IAAAA,YADO;AAEPG,IAAAA,KAFO;AAGPD,IAAAA;AAHO,GAAR,CADa,EAMb,CAAEF,YAAF,EAAgBG,KAAhB,EAAuBD,MAAvB,CANa,CAAd;AAQA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { useDispatch } from '@wordpress/data';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\nexport default function useSaveImage( {\n\tcrop,\n\trotation,\n\theight,\n\twidth,\n\taspect,\n\turl,\n\tid,\n\tonSaveImage,\n\tonFinishEditing,\n} ) {\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst [ isInProgress, setIsInProgress ] = useState( false );\n\n\tconst cancel = useCallback( () => {\n\t\tsetIsInProgress( false );\n\t\tonFinishEditing();\n\t}, [ setIsInProgress, onFinishEditing ] );\n\n\tconst apply = useCallback( () => {\n\t\tsetIsInProgress( true );\n\n\t\tlet attrs = {};\n\n\t\t// The crop script may return some very small, sub-pixel values when the image was not cropped.\n\t\t// Crop only when the new size has changed by more than 0.1%.\n\t\tif ( crop.width < 99.9 || crop.height < 99.9 ) {\n\t\t\tattrs = crop;\n\t\t}\n\n\t\tif ( rotation > 0 ) {\n\t\t\tattrs.rotation = rotation;\n\t\t}\n\n\t\tattrs.src = url;\n\n\t\tapiFetch( {\n\t\t\tpath: `/wp/v2/media/${ id }/edit`,\n\t\t\tmethod: 'POST',\n\t\t\tdata: attrs,\n\t\t} )\n\t\t\t.then( ( response ) => {\n\t\t\t\tonSaveImage( {\n\t\t\t\t\tid: response.id,\n\t\t\t\t\turl: response.source_url,\n\t\t\t\t\theight: height && width ? width / aspect : undefined,\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: 1. Error message */\n\t\t\t\t\t\t__( 'Could not edit image. %s' ),\n\t\t\t\t\t\terror.message\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'image-editing-error',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\tsetIsInProgress( false );\n\t\t\t\tonFinishEditing();\n\t\t\t} );\n\t}, [\n\t\tsetIsInProgress,\n\t\tcrop,\n\t\trotation,\n\t\theight,\n\t\twidth,\n\t\taspect,\n\t\turl,\n\t\tonSaveImage,\n\t\tcreateErrorNotice,\n\t\tsetIsInProgress,\n\t\tonFinishEditing,\n\t] );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tisInProgress,\n\t\t\tapply,\n\t\t\tcancel,\n\t\t} ),\n\t\t[ isInProgress, apply, cancel ]\n\t);\n}\n"]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useCallback, useEffect, useMemo, useState } from '@wordpress/element';
|
|
5
|
+
import { applyFilters } from '@wordpress/hooks';
|
|
6
|
+
|
|
7
|
+
function useTransformState({
|
|
8
|
+
url,
|
|
9
|
+
naturalWidth,
|
|
10
|
+
naturalHeight
|
|
11
|
+
}) {
|
|
12
|
+
const [editedUrl, setEditedUrl] = useState();
|
|
13
|
+
const [crop, setCrop] = useState();
|
|
14
|
+
const [position, setPosition] = useState({
|
|
15
|
+
x: 0,
|
|
16
|
+
y: 0
|
|
17
|
+
});
|
|
18
|
+
const [zoom, setZoom] = useState();
|
|
19
|
+
const [rotation, setRotation] = useState();
|
|
20
|
+
const [aspect, setAspect] = useState();
|
|
21
|
+
const [defaultAspect, setDefaultAspect] = useState();
|
|
22
|
+
const initializeTransformValues = useCallback(() => {
|
|
23
|
+
setPosition({
|
|
24
|
+
x: 0,
|
|
25
|
+
y: 0
|
|
26
|
+
});
|
|
27
|
+
setZoom(100);
|
|
28
|
+
setRotation(0);
|
|
29
|
+
setAspect(naturalWidth / naturalHeight);
|
|
30
|
+
setDefaultAspect(naturalWidth / naturalHeight);
|
|
31
|
+
}, [naturalWidth, naturalHeight, setPosition, setZoom, setRotation, setAspect, setDefaultAspect]);
|
|
32
|
+
const rotateClockwise = useCallback(() => {
|
|
33
|
+
const angle = (rotation + 90) % 360;
|
|
34
|
+
let naturalAspectRatio = naturalWidth / naturalHeight;
|
|
35
|
+
|
|
36
|
+
if (rotation % 180 === 90) {
|
|
37
|
+
naturalAspectRatio = naturalHeight / naturalWidth;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (angle === 0) {
|
|
41
|
+
setEditedUrl();
|
|
42
|
+
setRotation(angle);
|
|
43
|
+
setAspect(1 / aspect);
|
|
44
|
+
setPosition({
|
|
45
|
+
x: -(position.y * naturalAspectRatio),
|
|
46
|
+
y: position.x * naturalAspectRatio
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function editImage(event) {
|
|
52
|
+
const canvas = document.createElement('canvas');
|
|
53
|
+
let translateX = 0;
|
|
54
|
+
let translateY = 0;
|
|
55
|
+
|
|
56
|
+
if (angle % 180) {
|
|
57
|
+
canvas.width = event.target.height;
|
|
58
|
+
canvas.height = event.target.width;
|
|
59
|
+
} else {
|
|
60
|
+
canvas.width = event.target.width;
|
|
61
|
+
canvas.height = event.target.height;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (angle === 90 || angle === 180) {
|
|
65
|
+
translateX = canvas.width;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (angle === 270 || angle === 180) {
|
|
69
|
+
translateY = canvas.height;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const context = canvas.getContext('2d');
|
|
73
|
+
context.translate(translateX, translateY);
|
|
74
|
+
context.rotate(angle * Math.PI / 180);
|
|
75
|
+
context.drawImage(event.target, 0, 0);
|
|
76
|
+
canvas.toBlob(blob => {
|
|
77
|
+
setEditedUrl(URL.createObjectURL(blob));
|
|
78
|
+
setRotation(angle);
|
|
79
|
+
setAspect(1 / aspect);
|
|
80
|
+
setPosition({
|
|
81
|
+
x: -(position.y * naturalAspectRatio),
|
|
82
|
+
y: position.x * naturalAspectRatio
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const el = new window.Image();
|
|
88
|
+
el.src = url;
|
|
89
|
+
el.onload = editImage;
|
|
90
|
+
const imgCrossOrigin = applyFilters('media.crossOrigin', undefined, url);
|
|
91
|
+
|
|
92
|
+
if (typeof imgCrossOrigin === 'string') {
|
|
93
|
+
el.crossOrigin = imgCrossOrigin;
|
|
94
|
+
}
|
|
95
|
+
}, [rotation, naturalWidth, naturalHeight, setEditedUrl, setRotation, setAspect, setPosition]);
|
|
96
|
+
return useMemo(() => ({
|
|
97
|
+
editedUrl,
|
|
98
|
+
setEditedUrl,
|
|
99
|
+
crop,
|
|
100
|
+
setCrop,
|
|
101
|
+
position,
|
|
102
|
+
setPosition,
|
|
103
|
+
zoom,
|
|
104
|
+
setZoom,
|
|
105
|
+
rotation,
|
|
106
|
+
setRotation,
|
|
107
|
+
rotateClockwise,
|
|
108
|
+
aspect,
|
|
109
|
+
setAspect,
|
|
110
|
+
defaultAspect,
|
|
111
|
+
initializeTransformValues
|
|
112
|
+
}), [editedUrl, setEditedUrl, crop, setCrop, position, setPosition, zoom, setZoom, rotation, setRotation, rotateClockwise, aspect, setAspect, defaultAspect, initializeTransformValues]);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export default function useTransformImage(imageProperties, isEditing) {
|
|
116
|
+
const transformState = useTransformState(imageProperties);
|
|
117
|
+
const {
|
|
118
|
+
initializeTransformValues
|
|
119
|
+
} = transformState;
|
|
120
|
+
useEffect(() => {
|
|
121
|
+
if (isEditing) {
|
|
122
|
+
initializeTransformValues();
|
|
123
|
+
}
|
|
124
|
+
}, [isEditing, initializeTransformValues]);
|
|
125
|
+
return transformState;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=use-transform-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/use-transform-image.js"],"names":["useCallback","useEffect","useMemo","useState","applyFilters","useTransformState","url","naturalWidth","naturalHeight","editedUrl","setEditedUrl","crop","setCrop","position","setPosition","x","y","zoom","setZoom","rotation","setRotation","aspect","setAspect","defaultAspect","setDefaultAspect","initializeTransformValues","rotateClockwise","angle","naturalAspectRatio","editImage","event","canvas","document","createElement","translateX","translateY","width","target","height","context","getContext","translate","rotate","Math","PI","drawImage","toBlob","blob","URL","createObjectURL","el","window","Image","src","onload","imgCrossOrigin","undefined","crossOrigin","useTransformImage","imageProperties","isEditing","transformState"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAT,EAAsBC,SAAtB,EAAiCC,OAAjC,EAA0CC,QAA1C,QAA0D,oBAA1D;AACA,SAASC,YAAT,QAA6B,kBAA7B;;AAEA,SAASC,iBAAT,CAA4B;AAAEC,EAAAA,GAAF;AAAOC,EAAAA,YAAP;AAAqBC,EAAAA;AAArB,CAA5B,EAAmE;AAClE,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8BP,QAAQ,EAA5C;AACA,QAAM,CAAEQ,IAAF,EAAQC,OAAR,IAAoBT,QAAQ,EAAlC;AACA,QAAM,CAAEU,QAAF,EAAYC,WAAZ,IAA4BX,QAAQ,CAAE;AAAEY,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAAF,CAA1C;AACA,QAAM,CAAEC,IAAF,EAAQC,OAAR,IAAoBf,QAAQ,EAAlC;AACA,QAAM,CAAEgB,QAAF,EAAYC,WAAZ,IAA4BjB,QAAQ,EAA1C;AACA,QAAM,CAAEkB,MAAF,EAAUC,SAAV,IAAwBnB,QAAQ,EAAtC;AACA,QAAM,CAAEoB,aAAF,EAAiBC,gBAAjB,IAAsCrB,QAAQ,EAApD;AAEA,QAAMsB,yBAAyB,GAAGzB,WAAW,CAAE,MAAM;AACpDc,IAAAA,WAAW,CAAE;AAAEC,MAAAA,CAAC,EAAE,CAAL;AAAQC,MAAAA,CAAC,EAAE;AAAX,KAAF,CAAX;AACAE,IAAAA,OAAO,CAAE,GAAF,CAAP;AACAE,IAAAA,WAAW,CAAE,CAAF,CAAX;AACAE,IAAAA,SAAS,CAAEf,YAAY,GAAGC,aAAjB,CAAT;AACAgB,IAAAA,gBAAgB,CAAEjB,YAAY,GAAGC,aAAjB,CAAhB;AACA,GAN4C,EAM1C,CACFD,YADE,EAEFC,aAFE,EAGFM,WAHE,EAIFI,OAJE,EAKFE,WALE,EAMFE,SANE,EAOFE,gBAPE,CAN0C,CAA7C;AAgBA,QAAME,eAAe,GAAG1B,WAAW,CAAE,MAAM;AAC1C,UAAM2B,KAAK,GAAG,CAAER,QAAQ,GAAG,EAAb,IAAoB,GAAlC;AAEA,QAAIS,kBAAkB,GAAGrB,YAAY,GAAGC,aAAxC;;AAEA,QAAKW,QAAQ,GAAG,GAAX,KAAmB,EAAxB,EAA6B;AAC5BS,MAAAA,kBAAkB,GAAGpB,aAAa,GAAGD,YAArC;AACA;;AAED,QAAKoB,KAAK,KAAK,CAAf,EAAmB;AAClBjB,MAAAA,YAAY;AACZU,MAAAA,WAAW,CAAEO,KAAF,CAAX;AACAL,MAAAA,SAAS,CAAE,IAAID,MAAN,CAAT;AACAP,MAAAA,WAAW,CAAE;AACZC,QAAAA,CAAC,EAAE,EAAGF,QAAQ,CAACG,CAAT,GAAaY,kBAAhB,CADS;AAEZZ,QAAAA,CAAC,EAAEH,QAAQ,CAACE,CAAT,GAAaa;AAFJ,OAAF,CAAX;AAIA;AACA;;AAED,aAASC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,YAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAwB,QAAxB,CAAf;AAEA,UAAIC,UAAU,GAAG,CAAjB;AACA,UAAIC,UAAU,GAAG,CAAjB;;AAEA,UAAKR,KAAK,GAAG,GAAb,EAAmB;AAClBI,QAAAA,MAAM,CAACK,KAAP,GAAeN,KAAK,CAACO,MAAN,CAAaC,MAA5B;AACAP,QAAAA,MAAM,CAACO,MAAP,GAAgBR,KAAK,CAACO,MAAN,CAAaD,KAA7B;AACA,OAHD,MAGO;AACNL,QAAAA,MAAM,CAACK,KAAP,GAAeN,KAAK,CAACO,MAAN,CAAaD,KAA5B;AACAL,QAAAA,MAAM,CAACO,MAAP,GAAgBR,KAAK,CAACO,MAAN,CAAaC,MAA7B;AACA;;AAED,UAAKX,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,GAA/B,EAAqC;AACpCO,QAAAA,UAAU,GAAGH,MAAM,CAACK,KAApB;AACA;;AAED,UAAKT,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAAhC,EAAsC;AACrCQ,QAAAA,UAAU,GAAGJ,MAAM,CAACO,MAApB;AACA;;AAED,YAAMC,OAAO,GAAGR,MAAM,CAACS,UAAP,CAAmB,IAAnB,CAAhB;AAEAD,MAAAA,OAAO,CAACE,SAAR,CAAmBP,UAAnB,EAA+BC,UAA/B;AACAI,MAAAA,OAAO,CAACG,MAAR,CAAkBf,KAAK,GAAGgB,IAAI,CAACC,EAAf,GAAsB,GAAtC;AACAL,MAAAA,OAAO,CAACM,SAAR,CAAmBf,KAAK,CAACO,MAAzB,EAAiC,CAAjC,EAAoC,CAApC;AAEAN,MAAAA,MAAM,CAACe,MAAP,CAAiBC,IAAF,IAAY;AAC1BrC,QAAAA,YAAY,CAAEsC,GAAG,CAACC,eAAJ,CAAqBF,IAArB,CAAF,CAAZ;AACA3B,QAAAA,WAAW,CAAEO,KAAF,CAAX;AACAL,QAAAA,SAAS,CAAE,IAAID,MAAN,CAAT;AACAP,QAAAA,WAAW,CAAE;AACZC,UAAAA,CAAC,EAAE,EAAGF,QAAQ,CAACG,CAAT,GAAaY,kBAAhB,CADS;AAEZZ,UAAAA,CAAC,EAAEH,QAAQ,CAACE,CAAT,GAAaa;AAFJ,SAAF,CAAX;AAIA,OARD;AASA;;AAED,UAAMsB,EAAE,GAAG,IAAIC,MAAM,CAACC,KAAX,EAAX;AACAF,IAAAA,EAAE,CAACG,GAAH,GAAS/C,GAAT;AACA4C,IAAAA,EAAE,CAACI,MAAH,GAAYzB,SAAZ;AAEA,UAAM0B,cAAc,GAAGnD,YAAY,CAClC,mBADkC,EAElCoD,SAFkC,EAGlClD,GAHkC,CAAnC;;AAKA,QAAK,OAAOiD,cAAP,KAA0B,QAA/B,EAA0C;AACzCL,MAAAA,EAAE,CAACO,WAAH,GAAiBF,cAAjB;AACA;AACD,GAvEkC,EAuEhC,CACFpC,QADE,EAEFZ,YAFE,EAGFC,aAHE,EAIFE,YAJE,EAKFU,WALE,EAMFE,SANE,EAOFR,WAPE,CAvEgC,CAAnC;AAiFA,SAAOZ,OAAO,CACb,OAAQ;AACPO,IAAAA,SADO;AAEPC,IAAAA,YAFO;AAGPC,IAAAA,IAHO;AAIPC,IAAAA,OAJO;AAKPC,IAAAA,QALO;AAMPC,IAAAA,WANO;AAOPG,IAAAA,IAPO;AAQPC,IAAAA,OARO;AASPC,IAAAA,QATO;AAUPC,IAAAA,WAVO;AAWPM,IAAAA,eAXO;AAYPL,IAAAA,MAZO;AAaPC,IAAAA,SAbO;AAcPC,IAAAA,aAdO;AAePE,IAAAA;AAfO,GAAR,CADa,EAkBb,CACChB,SADD,EAECC,YAFD,EAGCC,IAHD,EAICC,OAJD,EAKCC,QALD,EAMCC,WAND,EAOCG,IAPD,EAQCC,OARD,EASCC,QATD,EAUCC,WAVD,EAWCM,eAXD,EAYCL,MAZD,EAaCC,SAbD,EAcCC,aAdD,EAeCE,yBAfD,CAlBa,CAAd;AAoCA;;AAED,eAAe,SAASiC,iBAAT,CAA4BC,eAA5B,EAA6CC,SAA7C,EAAyD;AACvE,QAAMC,cAAc,GAAGxD,iBAAiB,CAAEsD,eAAF,CAAxC;AACA,QAAM;AAAElC,IAAAA;AAAF,MAAgCoC,cAAtC;AAEA5D,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK2D,SAAL,EAAiB;AAChBnC,MAAAA,yBAAyB;AACzB;AACD,GAJQ,EAIN,CAAEmC,SAAF,EAAanC,yBAAb,CAJM,CAAT;AAMA,SAAOoC,cAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useMemo, useState } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\n\nfunction useTransformState( { url, naturalWidth, naturalHeight } ) {\n\tconst [ editedUrl, setEditedUrl ] = useState();\n\tconst [ crop, setCrop ] = useState();\n\tconst [ position, setPosition ] = useState( { x: 0, y: 0 } );\n\tconst [ zoom, setZoom ] = useState();\n\tconst [ rotation, setRotation ] = useState();\n\tconst [ aspect, setAspect ] = useState();\n\tconst [ defaultAspect, setDefaultAspect ] = useState();\n\n\tconst initializeTransformValues = useCallback( () => {\n\t\tsetPosition( { x: 0, y: 0 } );\n\t\tsetZoom( 100 );\n\t\tsetRotation( 0 );\n\t\tsetAspect( naturalWidth / naturalHeight );\n\t\tsetDefaultAspect( naturalWidth / naturalHeight );\n\t}, [\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetPosition,\n\t\tsetZoom,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetDefaultAspect,\n\t] );\n\n\tconst rotateClockwise = useCallback( () => {\n\t\tconst angle = ( rotation + 90 ) % 360;\n\n\t\tlet naturalAspectRatio = naturalWidth / naturalHeight;\n\n\t\tif ( rotation % 180 === 90 ) {\n\t\t\tnaturalAspectRatio = naturalHeight / naturalWidth;\n\t\t}\n\n\t\tif ( angle === 0 ) {\n\t\t\tsetEditedUrl();\n\t\t\tsetRotation( angle );\n\t\t\tsetAspect( 1 / aspect );\n\t\t\tsetPosition( {\n\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfunction editImage( event ) {\n\t\t\tconst canvas = document.createElement( 'canvas' );\n\n\t\t\tlet translateX = 0;\n\t\t\tlet translateY = 0;\n\n\t\t\tif ( angle % 180 ) {\n\t\t\t\tcanvas.width = event.target.height;\n\t\t\t\tcanvas.height = event.target.width;\n\t\t\t} else {\n\t\t\t\tcanvas.width = event.target.width;\n\t\t\t\tcanvas.height = event.target.height;\n\t\t\t}\n\n\t\t\tif ( angle === 90 || angle === 180 ) {\n\t\t\t\ttranslateX = canvas.width;\n\t\t\t}\n\n\t\t\tif ( angle === 270 || angle === 180 ) {\n\t\t\t\ttranslateY = canvas.height;\n\t\t\t}\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\n\t\t\tcontext.translate( translateX, translateY );\n\t\t\tcontext.rotate( ( angle * Math.PI ) / 180 );\n\t\t\tcontext.drawImage( event.target, 0, 0 );\n\n\t\t\tcanvas.toBlob( ( blob ) => {\n\t\t\t\tsetEditedUrl( URL.createObjectURL( blob ) );\n\t\t\t\tsetRotation( angle );\n\t\t\t\tsetAspect( 1 / aspect );\n\t\t\t\tsetPosition( {\n\t\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tconst el = new window.Image();\n\t\tel.src = url;\n\t\tel.onload = editImage;\n\n\t\tconst imgCrossOrigin = applyFilters(\n\t\t\t'media.crossOrigin',\n\t\t\tundefined,\n\t\t\turl\n\t\t);\n\t\tif ( typeof imgCrossOrigin === 'string' ) {\n\t\t\tel.crossOrigin = imgCrossOrigin;\n\t\t}\n\t}, [\n\t\trotation,\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetEditedUrl,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetPosition,\n\t] );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t} ),\n\t\t[\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t]\n\t);\n}\n\nexport default function useTransformImage( imageProperties, isEditing ) {\n\tconst transformState = useTransformState( imageProperties );\n\tconst { initializeTransformValues } = transformState;\n\n\tuseEffect( () => {\n\t\tif ( isEditing ) {\n\t\t\tinitializeTransformValues();\n\t\t}\n\t}, [ isEditing, initializeTransformValues ] );\n\n\treturn transformState;\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { ToolbarButton, RangeControl, Dropdown } from '@wordpress/components';
|
|
7
|
+
import { __ } from '@wordpress/i18n';
|
|
8
|
+
import { search } from '@wordpress/icons';
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { MIN_ZOOM, MAX_ZOOM, POPOVER_PROPS } from './constants';
|
|
14
|
+
import { useImageEditingContext } from './context';
|
|
15
|
+
export default function ZoomDropdown() {
|
|
16
|
+
const {
|
|
17
|
+
isInProgress,
|
|
18
|
+
zoom,
|
|
19
|
+
setZoom
|
|
20
|
+
} = useImageEditingContext();
|
|
21
|
+
return createElement(Dropdown, {
|
|
22
|
+
contentClassName: "wp-block-image__zoom",
|
|
23
|
+
popoverProps: POPOVER_PROPS,
|
|
24
|
+
renderToggle: ({
|
|
25
|
+
isOpen,
|
|
26
|
+
onToggle
|
|
27
|
+
}) => createElement(ToolbarButton, {
|
|
28
|
+
icon: search,
|
|
29
|
+
label: __('Zoom'),
|
|
30
|
+
onClick: onToggle,
|
|
31
|
+
"aria-expanded": isOpen,
|
|
32
|
+
disabled: isInProgress
|
|
33
|
+
}),
|
|
34
|
+
renderContent: () => createElement(RangeControl, {
|
|
35
|
+
label: __('Zoom'),
|
|
36
|
+
min: MIN_ZOOM,
|
|
37
|
+
max: MAX_ZOOM,
|
|
38
|
+
value: Math.round(zoom),
|
|
39
|
+
onChange: setZoom
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=zoom-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/zoom-dropdown.js"],"names":["ToolbarButton","RangeControl","Dropdown","__","search","MIN_ZOOM","MAX_ZOOM","POPOVER_PROPS","useImageEditingContext","ZoomDropdown","isInProgress","zoom","setZoom","isOpen","onToggle","Math","round"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,aAAT,EAAwBC,YAAxB,EAAsCC,QAAtC,QAAsD,uBAAtD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAT,QAAuB,kBAAvB;AAEA;AACA;AACA;;AACA,SAASC,QAAT,EAAmBC,QAAnB,EAA6BC,aAA7B,QAAkD,aAAlD;AACA,SAASC,sBAAT,QAAuC,WAAvC;AAEA,eAAe,SAASC,YAAT,GAAwB;AACtC,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,IAAhB;AAAsBC,IAAAA;AAAtB,MAAkCJ,sBAAsB,EAA9D;AACA,SACC,cAAC,QAAD;AACC,IAAA,gBAAgB,EAAC,sBADlB;AAEC,IAAA,YAAY,EAAGD,aAFhB;AAGC,IAAA,YAAY,EAAG,CAAE;AAAEM,MAAAA,MAAF;AAAUC,MAAAA;AAAV,KAAF,KACd,cAAC,aAAD;AACC,MAAA,IAAI,EAAGV,MADR;AAEC,MAAA,KAAK,EAAGD,EAAE,CAAE,MAAF,CAFX;AAGC,MAAA,OAAO,EAAGW,QAHX;AAIC,uBAAgBD,MAJjB;AAKC,MAAA,QAAQ,EAAGH;AALZ,MAJF;AAYC,IAAA,aAAa,EAAG,MACf,cAAC,YAAD;AACC,MAAA,KAAK,EAAGP,EAAE,CAAE,MAAF,CADX;AAEC,MAAA,GAAG,EAAGE,QAFP;AAGC,MAAA,GAAG,EAAGC,QAHP;AAIC,MAAA,KAAK,EAAGS,IAAI,CAACC,KAAL,CAAYL,IAAZ,CAJT;AAKC,MAAA,QAAQ,EAAGC;AALZ;AAbF,IADD;AAwBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton, RangeControl, Dropdown } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { search } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { MIN_ZOOM, MAX_ZOOM, POPOVER_PROPS } from './constants';\nimport { useImageEditingContext } from './context';\n\nexport default function ZoomDropdown() {\n\tconst { isInProgress, zoom, setZoom } = useImageEditingContext();\n\treturn (\n\t\t<Dropdown\n\t\t\tcontentClassName=\"wp-block-image__zoom\"\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ search }\n\t\t\t\t\tlabel={ __( 'Zoom' ) }\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\tdisabled={ isInProgress }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\trenderContent={ () => (\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Zoom' ) }\n\t\t\t\t\tmin={ MIN_ZOOM }\n\t\t\t\t\tmax={ MAX_ZOOM }\n\t\t\t\t\tvalue={ Math.round( zoom ) }\n\t\t\t\t\tonChange={ setZoom }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useEffect, useState } from '@wordpress/element';
|
|
5
|
-
export default function
|
|
5
|
+
export default function useDimensionHandler(customHeight, customWidth, defaultHeight, defaultWidth, onChange) {
|
|
6
6
|
var _ref, _ref2;
|
|
7
7
|
|
|
8
8
|
const [currentWidth, setCurrentWidth] = useState((_ref = customWidth !== null && customWidth !== void 0 ? customWidth : defaultWidth) !== null && _ref !== void 0 ? _ref : '');
|
|
@@ -18,7 +18,18 @@ export default function useDimensionHander(customHeight, customWidth, defaultHei
|
|
|
18
18
|
if (customHeight === undefined && defaultHeight !== undefined) {
|
|
19
19
|
setCurrentHeight(defaultHeight);
|
|
20
20
|
}
|
|
21
|
-
}, [defaultWidth, defaultHeight]);
|
|
21
|
+
}, [defaultWidth, defaultHeight]); // If custom values change, it means an outsider has resized the image using some other method (eg resize box)
|
|
22
|
+
// this keeps track of these values too. We need to parse before comparing; custom values can be strings.
|
|
23
|
+
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (customWidth !== undefined && Number.parseInt(customWidth) !== Number.parseInt(currentWidth)) {
|
|
26
|
+
setCurrentWidth(customWidth);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (customHeight !== undefined && Number.parseInt(customHeight) !== Number.parseInt(currentHeight)) {
|
|
30
|
+
setCurrentHeight(customHeight);
|
|
31
|
+
}
|
|
32
|
+
}, [customWidth, customHeight]);
|
|
22
33
|
|
|
23
34
|
const updateDimension = (dimension, value) => {
|
|
24
35
|
if (dimension === 'width') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/image-size-control/use-dimension-handler.js"],"names":["useEffect","useState","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-size-control/use-dimension-handler.js"],"names":["useEffect","useState","useDimensionHandler","customHeight","customWidth","defaultHeight","defaultWidth","onChange","currentWidth","setCurrentWidth","currentHeight","setCurrentHeight","undefined","Number","parseInt","updateDimension","dimension","value","updateDimensions","nextHeight","nextWidth","height","width"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,oBAApC;AAEA,eAAe,SAASC,mBAAT,CACdC,YADc,EAEdC,WAFc,EAGdC,aAHc,EAIdC,YAJc,EAKdC,QALc,EAMb;AAAA;;AACD,QAAM,CAAEC,YAAF,EAAgBC,eAAhB,IAAoCR,QAAQ,SACjDG,WADiD,aACjDA,WADiD,cACjDA,WADiD,GAClCE,YADkC,uCAClB,EADkB,CAAlD;AAGA,QAAM,CAAEI,aAAF,EAAiBC,gBAAjB,IAAsCV,QAAQ,UACnDE,YADmD,aACnDA,YADmD,cACnDA,YADmD,GACnCE,aADmC,yCAClB,EADkB,CAApD,CAJC,CAQD;AACA;AACA;;AACAL,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKI,WAAW,KAAKQ,SAAhB,IAA6BN,YAAY,KAAKM,SAAnD,EAA+D;AAC9DH,MAAAA,eAAe,CAAEH,YAAF,CAAf;AACA;;AACD,QAAKH,YAAY,KAAKS,SAAjB,IAA8BP,aAAa,KAAKO,SAArD,EAAiE;AAChED,MAAAA,gBAAgB,CAAEN,aAAF,CAAhB;AACA;AACD,GAPQ,EAON,CAAEC,YAAF,EAAgBD,aAAhB,CAPM,CAAT,CAXC,CAoBD;AACA;;AACAL,EAAAA,SAAS,CAAE,MAAM;AAChB,QACCI,WAAW,KAAKQ,SAAhB,IACAC,MAAM,CAACC,QAAP,CAAiBV,WAAjB,MAAmCS,MAAM,CAACC,QAAP,CAAiBN,YAAjB,CAFpC,EAGE;AACDC,MAAAA,eAAe,CAAEL,WAAF,CAAf;AACA;;AACD,QACCD,YAAY,KAAKS,SAAjB,IACAC,MAAM,CAACC,QAAP,CAAiBX,YAAjB,MAAoCU,MAAM,CAACC,QAAP,CAAiBJ,aAAjB,CAFrC,EAGE;AACDC,MAAAA,gBAAgB,CAAER,YAAF,CAAhB;AACA;AACD,GAbQ,EAaN,CAAEC,WAAF,EAAeD,YAAf,CAbM,CAAT;;AAeA,QAAMY,eAAe,GAAG,CAAEC,SAAF,EAAaC,KAAb,KAAwB;AAC/C,QAAKD,SAAS,KAAK,OAAnB,EAA6B;AAC5BP,MAAAA,eAAe,CAAEQ,KAAF,CAAf;AACA,KAFD,MAEO;AACNN,MAAAA,gBAAgB,CAAEM,KAAF,CAAhB;AACA;;AACDV,IAAAA,QAAQ,CAAE;AACT,OAAES,SAAF,GAAeC,KAAK,KAAK,EAAV,GAAeL,SAAf,GAA2BE,QAAQ,CAAEG,KAAF,EAAS,EAAT;AADzC,KAAF,CAAR;AAGA,GATD;;AAWA,QAAMC,gBAAgB,GAAG,CAAEC,UAAF,EAAcC,SAAd,KAA6B;AACrDT,IAAAA,gBAAgB,CAAEQ,UAAF,aAAEA,UAAF,cAAEA,UAAF,GAAgBd,aAAhB,CAAhB;AACAI,IAAAA,eAAe,CAAEW,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAed,YAAf,CAAf;AACAC,IAAAA,QAAQ,CAAE;AAAEc,MAAAA,MAAM,EAAEF,UAAV;AAAsBG,MAAAA,KAAK,EAAEF;AAA7B,KAAF,CAAR;AACA,GAJD;;AAMA,SAAO;AACNV,IAAAA,aADM;AAENF,IAAAA,YAFM;AAGNO,IAAAA,eAHM;AAING,IAAAA;AAJM,GAAP;AAMA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\nexport default function useDimensionHandler(\n\tcustomHeight,\n\tcustomWidth,\n\tdefaultHeight,\n\tdefaultWidth,\n\tonChange\n) {\n\tconst [ currentWidth, setCurrentWidth ] = useState(\n\t\tcustomWidth ?? defaultWidth ?? ''\n\t);\n\tconst [ currentHeight, setCurrentHeight ] = useState(\n\t\tcustomHeight ?? defaultHeight ?? ''\n\t);\n\n\t// When an image is first inserted, the default dimensions are initially\n\t// undefined. This effect updates the dimensions when the default values\n\t// come through.\n\tuseEffect( () => {\n\t\tif ( customWidth === undefined && defaultWidth !== undefined ) {\n\t\t\tsetCurrentWidth( defaultWidth );\n\t\t}\n\t\tif ( customHeight === undefined && defaultHeight !== undefined ) {\n\t\t\tsetCurrentHeight( defaultHeight );\n\t\t}\n\t}, [ defaultWidth, defaultHeight ] );\n\n\t// If custom values change, it means an outsider has resized the image using some other method (eg resize box)\n\t// this keeps track of these values too. We need to parse before comparing; custom values can be strings.\n\tuseEffect( () => {\n\t\tif (\n\t\t\tcustomWidth !== undefined &&\n\t\t\tNumber.parseInt( customWidth ) !== Number.parseInt( currentWidth )\n\t\t) {\n\t\t\tsetCurrentWidth( customWidth );\n\t\t}\n\t\tif (\n\t\t\tcustomHeight !== undefined &&\n\t\t\tNumber.parseInt( customHeight ) !== Number.parseInt( currentHeight )\n\t\t) {\n\t\t\tsetCurrentHeight( customHeight );\n\t\t}\n\t}, [ customWidth, customHeight ] );\n\n\tconst updateDimension = ( dimension, value ) => {\n\t\tif ( dimension === 'width' ) {\n\t\t\tsetCurrentWidth( value );\n\t\t} else {\n\t\t\tsetCurrentHeight( value );\n\t\t}\n\t\tonChange( {\n\t\t\t[ dimension ]: value === '' ? undefined : parseInt( value, 10 ),\n\t\t} );\n\t};\n\n\tconst updateDimensions = ( nextHeight, nextWidth ) => {\n\t\tsetCurrentHeight( nextHeight ?? defaultHeight );\n\t\tsetCurrentWidth( nextWidth ?? defaultWidth );\n\t\tonChange( { height: nextHeight, width: nextWidth } );\n\t};\n\n\treturn {\n\t\tcurrentHeight,\n\t\tcurrentWidth,\n\t\tupdateDimension,\n\t\tupdateDimensions,\n\t};\n}\n"]}
|
|
@@ -32,10 +32,13 @@ export { default as __experimentalDuotoneControl } from './duotone-control';
|
|
|
32
32
|
export { default as __experimentalFontAppearanceControl } from './font-appearance-control';
|
|
33
33
|
export { default as __experimentalFontFamilyControl } from './font-family';
|
|
34
34
|
export { default as __experimentalLetterSpacingControl } from './letter-spacing-control';
|
|
35
|
+
export { default as __experimentalTextDecorationControl } from './text-decoration-control';
|
|
36
|
+
export { default as __experimentalTextTransformControl } from './text-transform-control';
|
|
35
37
|
export { default as __experimentalColorGradientControl } from './colors-gradients/control';
|
|
36
38
|
export { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';
|
|
39
|
+
export { default as __experimentalImageEditor, ImageEditingProvider as __experimentalImageEditingProvider } from './image-editor';
|
|
37
40
|
export { default as __experimentalImageSizeControl } from './image-size-control';
|
|
38
|
-
export { default as InnerBlocks, useInnerBlocksProps
|
|
41
|
+
export { default as InnerBlocks, useInnerBlocksProps } from './inner-blocks';
|
|
39
42
|
export { default as InspectorControls, InspectorAdvancedControls } from './inspector-controls';
|
|
40
43
|
export { JustifyToolbar, JustifyContentControl } from './justify-content-control';
|
|
41
44
|
export { default as __experimentalLinkControl } from './link-control';
|
|
@@ -44,8 +47,6 @@ export { default as __experimentalLinkControlSearchResults } from './link-contro
|
|
|
44
47
|
export { default as __experimentalLinkControlSearchItem } from './link-control/search-item';
|
|
45
48
|
export { default as LineHeightControl } from './line-height-control';
|
|
46
49
|
export { default as __experimentalListView } from './list-view';
|
|
47
|
-
export { ListViewBlockFill as __experimentalListViewBlockFill } from './list-view/block-slot';
|
|
48
|
-
export { default as __experimentalListViewEditor } from './list-view/editor';
|
|
49
50
|
export { default as MediaReplaceFlow } from './media-replace-flow';
|
|
50
51
|
export { default as MediaPlaceholder } from './media-placeholder';
|
|
51
52
|
export { default as MediaUpload } from './media-upload';
|