@wix/patterns-fields 1.124.0 → 1.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
- package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
- package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
- package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
- package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
- package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
- package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js +3 -3
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -1
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
- package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/cjs/components/media-gallery/media-preview-modal.js +12 -10
- package/dist/cjs/components/media-gallery/media-preview-modal.js.map +1 -1
- package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
- package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-image-field/cell-media-image-edit.js +46 -213
- package/dist/cjs/components/media-image-field/cell-media-image-edit.js.map +1 -1
- package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js +8 -8
- package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js.map +1 -1
- package/dist/cjs/components/media-image-field/form-media-image-field.js +116 -24
- package/dist/cjs/components/media-image-field/form-media-image-field.js.map +1 -1
- package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js +24 -8
- package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -1
- package/dist/cjs/components/media-image-field/media-image-actions.js +256 -0
- package/dist/cjs/components/media-image-field/media-image-actions.js.map +1 -0
- package/dist/cjs/components/media-image-field/media-image-view.st.css.js +3 -3
- package/dist/cjs/components/media-image-field/media-image-view.st.css.js.map +1 -1
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.js +31 -38
- package/dist/cjs/components/multi-document/cell-multi-document-edit.js.map +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-multi-reference-view.st.css.js +3 -3
- package/dist/cjs/components/reference/cell-multi-reference-view.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
- package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/text/text-view.st.css.js +3 -3
- package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
- package/dist/cjs/styles.global.css +1 -1
- package/dist/cjs/utils/detect-field-type.js +9 -17
- package/dist/cjs/utils/detect-field-type.js.map +1 -1
- package/dist/esm/components/address/input/address-input.st.css.js +2 -2
- package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
- package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
- package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
- package/dist/esm/components/color-view/cell-color-view.st.css.js.map +1 -1
- package/dist/esm/components/color-view/color-view.st.css.js +2 -2
- package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
- package/dist/esm/components/document/form-document-field.st.css.js +2 -2
- package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js +2 -2
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -1
- package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
- package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
- package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
- package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
- package/dist/esm/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
- package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/esm/components/media-gallery/media-preview-modal.js +2 -2
- package/dist/esm/components/media-gallery/media-preview-modal.js.map +1 -1
- package/dist/esm/components/media-image/media-image.st.css.js +3 -3
- package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
- package/dist/esm/components/media-image-field/cell-media-image-edit.js +11 -37
- package/dist/esm/components/media-image-field/cell-media-image-edit.js.map +1 -1
- package/dist/esm/components/media-image-field/cell-media-image-edit.st.css.js +2 -2
- package/dist/esm/components/media-image-field/form-media-image-field.js +37 -9
- package/dist/esm/components/media-image-field/form-media-image-field.js.map +1 -1
- package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js +24 -8
- package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -1
- package/dist/esm/components/media-image-field/media-image-actions.js +52 -0
- package/dist/esm/components/media-image-field/media-image-actions.js.map +1 -0
- package/dist/esm/components/media-image-field/media-image-view.st.css.js +2 -2
- package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/esm/components/multi-document/cell-multi-document-edit.js +2 -8
- package/dist/esm/components/multi-document/cell-multi-document-edit.js.map +1 -1
- package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
- package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
- package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/esm/components/reference/cell-multi-reference-view.st.css.js +2 -2
- package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
- package/dist/esm/components/text/text-view.st.css.js +2 -2
- package/dist/esm/styles.global.css +1 -1
- package/dist/esm/utils/detect-field-type.js +12 -16
- package/dist/esm/utils/detect-field-type.js.map +1 -1
- package/dist/types/components/audio/actions/actions-menu/actions-menu.st.css.d.ts.map +1 -1
- package/dist/types/components/color-view/cell-color-view.st.css.d.ts.map +1 -1
- package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
- package/dist/types/components/field-validation-settings/field-validation-settings-input.st.css.d.ts.map +1 -1
- package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
- package/dist/types/components/image/thumbnail-replace-overlay.st.css.d.ts.map +1 -1
- package/dist/types/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
- package/dist/types/components/media-gallery/form-media-gallery-field.st.css.d.ts.map +1 -1
- package/dist/types/components/media-image-field/cell-media-image-edit.d.ts.map +1 -1
- package/dist/types/components/media-image-field/form-media-image-field.d.ts.map +1 -1
- package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts +8 -4
- package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts.map +1 -1
- package/dist/types/components/media-image-field/media-image-actions.d.ts +33 -0
- package/dist/types/components/media-image-field/media-image-actions.d.ts.map +1 -0
- package/dist/types/components/multi-document/cell-multi-document-edit.d.ts.map +1 -1
- package/dist/types/components/multi-document/multi-document-input/form-multi-document.st.css.d.ts.map +1 -1
- package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
- package/dist/types/utils/detect-field-type.d.ts +1 -1
- package/dist/types/utils/detect-field-type.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/components/media-image-field/form-media-image-input.spec.tsx +69 -2
- package/src/__tests__/utils/detect-field-type.spec.ts +5 -5
- package/src/components/address/input/address-input.st.css.ts +2 -2
- package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
- package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
- package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
- package/src/components/color-view/cell-color-view.st.css.ts +2 -2
- package/src/components/color-view/color-view.st.css.ts +2 -2
- package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
- package/src/components/document/form-document-field.st.css.ts +2 -2
- package/src/components/exclamation/exclamation.st.css.ts +2 -2
- package/src/components/field-validation-settings/field-validation-settings-input.st.css.ts +2 -2
- package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
- package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
- package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
- package/src/components/media-control/paste-url-button.st.css.ts +2 -2
- package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
- package/src/components/media-gallery/media-preview-modal.tsx +2 -1
- package/src/components/media-image/media-image.st.css.ts +3 -3
- package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
- package/src/components/media-image-field/cell-media-image-edit.st.css.ts +2 -2
- package/src/components/media-image-field/cell-media-image-edit.tsx +26 -129
- package/src/components/media-image-field/form-media-image-field.tsx +105 -23
- package/src/components/media-image-field/form-media-image-field.uni.driver.ts +45 -10
- package/src/components/media-image-field/media-image-actions.tsx +205 -0
- package/src/components/media-image-field/media-image-view.st.css.ts +2 -2
- package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
- package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
- package/src/components/multi-document/cell-multi-document-edit.tsx +3 -6
- package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
- package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
- package/src/components/reference/cell-multi-reference-view.st.css.ts +2 -2
- package/src/components/reference/cell-reference-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
- package/src/components/text/text-view.st.css.ts +2 -2
- package/src/styles.global.css +1 -1
- package/src/utils/detect-field-type.ts +14 -16
|
@@ -7,6 +7,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _designSystem = require("@wix/design-system");
|
|
9
9
|
var _react2 = require("@wix/bex-core/react");
|
|
10
|
+
var _common = require("../common");
|
|
10
11
|
var _hooks = require("../../hooks");
|
|
11
12
|
var _getImageSource = require("../../utils/get-image-source");
|
|
12
13
|
var _getImageUrl = require("../../utils/get-image-url");
|
|
@@ -14,6 +15,7 @@ var _mediaConstants = require("../../utils/media-constants");
|
|
|
14
15
|
var _mediaImageValue = require("../../utils/media-image-value");
|
|
15
16
|
var _mediaUtils = require("../../utils/media-utils");
|
|
16
17
|
var _mediaControl = require("../media-control");
|
|
18
|
+
var _mediaImageActions = require("./media-image-actions");
|
|
17
19
|
var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/media-image-field/form-media-image-field.tsx";
|
|
18
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
21
|
/**
|
|
@@ -52,7 +54,7 @@ const FormMediaImageField = ({
|
|
|
52
54
|
}, [onChange]);
|
|
53
55
|
const {
|
|
54
56
|
callMedia,
|
|
55
|
-
|
|
57
|
+
downloadMedia
|
|
56
58
|
} = (0, _mediaControl.useMediaControl)({
|
|
57
59
|
mediaType: _mediaUtils.MEDIA_TYPES.IMAGE,
|
|
58
60
|
value: (0, _getImageSource.getImageSource)(image),
|
|
@@ -60,9 +62,25 @@ const FormMediaImageField = ({
|
|
|
60
62
|
autoFocus,
|
|
61
63
|
readOnly,
|
|
62
64
|
onBlur,
|
|
63
|
-
inputRef
|
|
64
|
-
initialLoading: true
|
|
65
|
+
inputRef
|
|
65
66
|
});
|
|
67
|
+
const pasteUrlForm = (0, _mediaControl.usePasteURLForm)({
|
|
68
|
+
onChange: url => onChange((0, _mediaImageValue.replaceImage)(imageRef.current, (0, _mediaImageValue.fromImageUrl)(url)))
|
|
69
|
+
});
|
|
70
|
+
const openPasteUrl = pasteUrlForm.onOpen({
|
|
71
|
+
title: t('CMS.image.replaceWithUrl.title'),
|
|
72
|
+
value: (0, _mediaImageValue.isExternalMediaImage)(image) ? image.url : undefined
|
|
73
|
+
});
|
|
74
|
+
const [isPreviewOpen, setIsPreviewOpen] = (0, _react.useState)(false);
|
|
75
|
+
const handleDownload = (0, _mediaImageActions.useMediaImageDownload)(image, downloadMedia);
|
|
76
|
+
const handleDelete = (0, _react.useCallback)(() => {
|
|
77
|
+
setIsPreviewOpen(false);
|
|
78
|
+
onChange(null);
|
|
79
|
+
}, [onChange]);
|
|
80
|
+
const handlePreviewReplace = (0, _react.useCallback)(() => {
|
|
81
|
+
setIsPreviewOpen(false);
|
|
82
|
+
callMedia();
|
|
83
|
+
}, [callMedia]);
|
|
66
84
|
const canEdit = !isMobile && !readOnly;
|
|
67
85
|
const handleAltTextChange = e => {
|
|
68
86
|
if (image) {
|
|
@@ -76,7 +94,7 @@ const FormMediaImageField = ({
|
|
|
76
94
|
__self: void 0,
|
|
77
95
|
__source: {
|
|
78
96
|
fileName: _jsxFileName,
|
|
79
|
-
lineNumber:
|
|
97
|
+
lineNumber: 140,
|
|
80
98
|
columnNumber: 5
|
|
81
99
|
}
|
|
82
100
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
@@ -86,7 +104,7 @@ const FormMediaImageField = ({
|
|
|
86
104
|
__self: void 0,
|
|
87
105
|
__source: {
|
|
88
106
|
fileName: _jsxFileName,
|
|
89
|
-
lineNumber:
|
|
107
|
+
lineNumber: 141,
|
|
90
108
|
columnNumber: 7
|
|
91
109
|
}
|
|
92
110
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, (0, _extends2.default)({}, imageFormFieldProps, {
|
|
@@ -94,31 +112,78 @@ const FormMediaImageField = ({
|
|
|
94
112
|
__self: void 0,
|
|
95
113
|
__source: {
|
|
96
114
|
fileName: _jsxFileName,
|
|
97
|
-
lineNumber:
|
|
115
|
+
lineNumber: 142,
|
|
98
116
|
columnNumber: 9
|
|
99
117
|
}
|
|
100
|
-
}), /*#__PURE__*/_react.default.createElement(_designSystem.
|
|
118
|
+
}), image ? /*#__PURE__*/_react.default.createElement(_designSystem.MediaOverlay, {
|
|
119
|
+
dataHook: "media-image-field-overlay",
|
|
120
|
+
hoverSkin: "dark",
|
|
121
|
+
media: /*#__PURE__*/_react.default.createElement(_designSystem.Image, {
|
|
122
|
+
dataHook: "media-image-field-current-image",
|
|
123
|
+
src: (0, _getImageUrl.getImageUrl)(image),
|
|
124
|
+
width: "100%",
|
|
125
|
+
height: _mediaConstants.MEDIA_HEIGHT,
|
|
126
|
+
fit: "cover",
|
|
127
|
+
__self: void 0,
|
|
128
|
+
__source: {
|
|
129
|
+
fileName: _jsxFileName,
|
|
130
|
+
lineNumber: 148,
|
|
131
|
+
columnNumber: 17
|
|
132
|
+
}
|
|
133
|
+
}),
|
|
134
|
+
__self: void 0,
|
|
135
|
+
__source: {
|
|
136
|
+
fileName: _jsxFileName,
|
|
137
|
+
lineNumber: 144,
|
|
138
|
+
columnNumber: 13
|
|
139
|
+
}
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.MediaOverlay.Content, {
|
|
141
|
+
placement: "middle",
|
|
142
|
+
visible: "hover",
|
|
143
|
+
__self: void 0,
|
|
144
|
+
__source: {
|
|
145
|
+
fileName: _jsxFileName,
|
|
146
|
+
lineNumber: 157,
|
|
147
|
+
columnNumber: 15
|
|
148
|
+
}
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
150
|
+
gap: "SP2",
|
|
151
|
+
__self: void 0,
|
|
152
|
+
__source: {
|
|
153
|
+
fileName: _jsxFileName,
|
|
154
|
+
lineNumber: 158,
|
|
155
|
+
columnNumber: 17
|
|
156
|
+
}
|
|
157
|
+
}, /*#__PURE__*/_react.default.createElement(_mediaImageActions.MediaImageActions, {
|
|
158
|
+
dataHook: "media-image-field",
|
|
159
|
+
onReplace: canEdit ? callMedia : undefined,
|
|
160
|
+
onReplaceWithUrl: readOnly ? undefined : openPasteUrl,
|
|
161
|
+
onPreview: () => setIsPreviewOpen(true),
|
|
162
|
+
onDownload: handleDownload,
|
|
163
|
+
onDelete: readOnly ? undefined : handleDelete,
|
|
164
|
+
menuZIndex: _common.Z_INDEX_MODAL_POPOVER,
|
|
165
|
+
__self: void 0,
|
|
166
|
+
__source: {
|
|
167
|
+
fileName: _jsxFileName,
|
|
168
|
+
lineNumber: 159,
|
|
169
|
+
columnNumber: 19
|
|
170
|
+
}
|
|
171
|
+
})))) : /*#__PURE__*/_react.default.createElement(_designSystem.ImageViewer
|
|
172
|
+
// Only the empty state has a focusable control, so this is the
|
|
173
|
+
// only place inputRef can land.
|
|
174
|
+
, {
|
|
101
175
|
ref: setInputRef,
|
|
102
176
|
dataHook: "media-image-field-viewer",
|
|
103
|
-
imageUrl: image ? (0, _getImageUrl.getImageUrl)(image) : undefined,
|
|
104
|
-
onImageLoad: onMediaLoad,
|
|
105
177
|
onAddImage: canEdit ? callMedia : undefined,
|
|
106
|
-
|
|
107
|
-
disabled: image ? Boolean(readOnly) : !canEdit,
|
|
108
|
-
showUpdateButton: canEdit,
|
|
109
|
-
showRemoveButton: !readOnly,
|
|
110
|
-
updateImageInfo: translate('cairo.replace-image.tooltip'),
|
|
111
|
-
removeImageInfo: translate('cairo.remove-image.tooltip'),
|
|
178
|
+
disabled: !canEdit,
|
|
112
179
|
addImageInfo: translate('cairo.add-image.tooltip'),
|
|
113
180
|
height: _mediaConstants.MEDIA_HEIGHT,
|
|
114
181
|
width: "100%",
|
|
115
|
-
fit: "cover",
|
|
116
|
-
onRemoveImage: () => onChange(null),
|
|
117
182
|
__self: void 0,
|
|
118
183
|
__source: {
|
|
119
184
|
fileName: _jsxFileName,
|
|
120
|
-
lineNumber:
|
|
121
|
-
columnNumber:
|
|
185
|
+
lineNumber: 172,
|
|
186
|
+
columnNumber: 13
|
|
122
187
|
}
|
|
123
188
|
}))), image && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
124
189
|
direction: "vertical",
|
|
@@ -127,7 +192,7 @@ const FormMediaImageField = ({
|
|
|
127
192
|
__self: void 0,
|
|
128
193
|
__source: {
|
|
129
194
|
fileName: _jsxFileName,
|
|
130
|
-
lineNumber:
|
|
195
|
+
lineNumber: 187,
|
|
131
196
|
columnNumber: 9
|
|
132
197
|
}
|
|
133
198
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
@@ -135,7 +200,7 @@ const FormMediaImageField = ({
|
|
|
135
200
|
__self: void 0,
|
|
136
201
|
__source: {
|
|
137
202
|
fileName: _jsxFileName,
|
|
138
|
-
lineNumber:
|
|
203
|
+
lineNumber: 188,
|
|
139
204
|
columnNumber: 11
|
|
140
205
|
}
|
|
141
206
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
|
|
@@ -147,10 +212,37 @@ const FormMediaImageField = ({
|
|
|
147
212
|
__self: void 0,
|
|
148
213
|
__source: {
|
|
149
214
|
fileName: _jsxFileName,
|
|
150
|
-
lineNumber:
|
|
215
|
+
lineNumber: 189,
|
|
151
216
|
columnNumber: 13
|
|
152
217
|
}
|
|
153
|
-
})))
|
|
218
|
+
}))), /*#__PURE__*/_react.default.createElement(_mediaControl.PasteURLForm, {
|
|
219
|
+
title: pasteUrlForm.title,
|
|
220
|
+
value: pasteUrlForm.value,
|
|
221
|
+
show: pasteUrlForm.isOpen,
|
|
222
|
+
closeModal: pasteUrlForm.onClose,
|
|
223
|
+
onSave: pasteUrlForm.onSave,
|
|
224
|
+
fieldType: _mediaControl.MediaFieldType.image,
|
|
225
|
+
__self: void 0,
|
|
226
|
+
__source: {
|
|
227
|
+
fileName: _jsxFileName,
|
|
228
|
+
lineNumber: 199,
|
|
229
|
+
columnNumber: 7
|
|
230
|
+
}
|
|
231
|
+
}), image && /*#__PURE__*/_react.default.createElement(_mediaImageActions.MediaImagePreviewModal, {
|
|
232
|
+
isOpen: isPreviewOpen,
|
|
233
|
+
image: image,
|
|
234
|
+
onClose: () => setIsPreviewOpen(false),
|
|
235
|
+
onReplace: handlePreviewReplace,
|
|
236
|
+
onDelete: handleDelete,
|
|
237
|
+
onDownload: handleDownload,
|
|
238
|
+
readOnly: !canEdit,
|
|
239
|
+
__self: void 0,
|
|
240
|
+
__source: {
|
|
241
|
+
fileName: _jsxFileName,
|
|
242
|
+
lineNumber: 208,
|
|
243
|
+
columnNumber: 9
|
|
244
|
+
}
|
|
245
|
+
}));
|
|
154
246
|
};
|
|
155
247
|
exports.FormMediaImageField = FormMediaImageField;
|
|
156
248
|
FormMediaImageField.displayName = 'FormMediaImageField';
|
|
@@ -171,7 +263,7 @@ const ControlledMediaImageInput = ({
|
|
|
171
263
|
__self: void 0,
|
|
172
264
|
__source: {
|
|
173
265
|
fileName: _jsxFileName,
|
|
174
|
-
lineNumber:
|
|
266
|
+
lineNumber: 237,
|
|
175
267
|
columnNumber: 3
|
|
176
268
|
}
|
|
177
269
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_designSystem","_react2","_hooks","_getImageSource","_getImageUrl","_mediaConstants","_mediaImageValue","_mediaUtils","_mediaControl","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FormMediaImageField","data","onChange","onBlur","readOnly","autoFocus","dataHook","inputRef","forwardedRef","imageFormFieldProps","translate","useWixPatternsContainer","useTranslations","isMobile","useIsMobile","image","toMediaImageValue","imageRef","useRef","current","setInputRef","useMergedRef","handlePick","useCallback","uri","next","fromMediaManagerPick","callMedia","onMediaLoad","useMediaControl","mediaType","MEDIA_TYPES","IMAGE","value","getImageSource","initialLoading","canEdit","handleAltTextChange","withAltText","target","createElement","Box","gap","width","__self","__source","fileName","lineNumber","columnNumber","maxWidth","MEDIA_MAX_WIDTH","flexShrink","FormField","_extends2","ImageViewer","ref","imageUrl","getImageUrl","undefined","onImageLoad","onAddImage","onUpdateImage","disabled","Boolean","showUpdateButton","showRemoveButton","updateImageInfo","removeImageInfo","addImageInfo","height","MEDIA_HEIGHT","fit","onRemoveImage","direction","flexGrow","minWidth","label","Input","altText","placeholder","exports","displayName","ControlledMediaImageInput"],"sources":["../../../../src/components/media-image-field/form-media-image-field.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport React, { useCallback, useRef } from 'react';\nimport type { FormFieldProps } from '@wix/design-system';\nimport { Box, FormField, ImageViewer, Input } from '@wix/design-system';\nimport { useIsMobile, useWixPatternsContainer } from '@wix/bex-core/react';\n\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type { MediaImageValue } from '../../types/media-image';\nimport { useMergedRef, useTranslations } from '../../hooks';\nimport { getImageSource } from '../../utils/get-image-source';\nimport { getImageUrl } from '../../utils/get-image-url';\nimport { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from '../../utils/media-constants';\nimport {\n fromMediaManagerPick,\n toMediaImageValue,\n withAltText,\n} from '../../utils/media-image-value';\nimport { MEDIA_TYPES } from '../../utils/media-utils';\nimport { useMediaControl } from '../media-control';\n\ninterface ImageViewerActions {\n focus: () => void;\n}\n\nexport interface FormMediaImageFieldProps {\n /** A `MEDIA_IMAGE` value. */\n data?: unknown;\n onChange: (value: MediaImageValue | null) => void;\n /** Fires when the media manager closes, whether or not a file was picked. */\n onBlur?: () => void;\n readOnly?: boolean;\n autoFocus?: boolean;\n dataHook?: string;\n inputRef?: React.Ref<ImageViewerActions>;\n /** The FormField around the image, e.g. the field's label and its error.\n * ImageViewer takes its error styling from it. */\n imageFormFieldProps?: Pick<\n FormFieldProps,\n 'label' | 'required' | 'status' | 'statusMessage'\n >;\n}\n\n/**\n * The entity page input of a `MEDIA_IMAGE` field: the image, and an alt text\n * input to its right once there is an image. A pick fills an empty alt text\n * from the file name; a replace keeps the current one.\n */\nexport const FormMediaImageField: FC<FormMediaImageFieldProps> = ({\n data,\n onChange,\n onBlur,\n readOnly,\n autoFocus,\n dataHook,\n inputRef: forwardedRef,\n imageFormFieldProps,\n}) => {\n const { translate } = useWixPatternsContainer();\n const { t } = useTranslations();\n const isMobile = useIsMobile();\n const image = toMediaImageValue(data);\n // The media manager calls back after it closes, so it reads the value from\n // here rather than from the render that opened it.\n const imageRef = useRef(image);\n imageRef.current = image;\n\n const [inputRef, setInputRef] =\n useMergedRef<ImageViewerActions>(forwardedRef);\n\n const handlePick = useCallback(\n (uri: string) => {\n const next = fromMediaManagerPick(uri, imageRef.current);\n if (next) {\n onChange(next);\n }\n },\n [onChange],\n );\n\n const { callMedia, onMediaLoad } = useMediaControl({\n mediaType: MEDIA_TYPES.IMAGE,\n value: getImageSource(image),\n onChange: handlePick,\n autoFocus,\n readOnly,\n onBlur,\n inputRef,\n initialLoading: true,\n });\n\n const canEdit = !isMobile && !readOnly;\n\n const handleAltTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (image) {\n onChange(withAltText(image, e.target.value));\n }\n };\n\n return (\n <Box dataHook={dataHook} gap=\"SP4\" width=\"100%\">\n <Box width=\"100%\" maxWidth={MEDIA_MAX_WIDTH} flexShrink={0}>\n <FormField {...imageFormFieldProps} dataHook=\"media-image-field-image\">\n <ImageViewer\n ref={setInputRef}\n dataHook=\"media-image-field-viewer\"\n imageUrl={image ? getImageUrl(image) : undefined}\n onImageLoad={onMediaLoad}\n onAddImage={canEdit ? callMedia : undefined}\n onUpdateImage={canEdit ? callMedia : undefined}\n disabled={image ? Boolean(readOnly) : !canEdit}\n showUpdateButton={canEdit}\n showRemoveButton={!readOnly}\n updateImageInfo={translate('cairo.replace-image.tooltip')}\n removeImageInfo={translate('cairo.remove-image.tooltip')}\n addImageInfo={translate('cairo.add-image.tooltip')}\n height={MEDIA_HEIGHT}\n width=\"100%\"\n fit=\"cover\"\n onRemoveImage={() => onChange(null)}\n />\n </FormField>\n </Box>\n {image && (\n <Box direction=\"vertical\" flexGrow={1} minWidth=\"0\">\n <FormField label={t('CMS.image.altText.label')}>\n <Input\n dataHook=\"media-image-field-alt-input\"\n value={image.altText ?? ''}\n placeholder={t('CMS.image.altText.inputPlaceholder')}\n onChange={handleAltTextChange}\n readOnly={readOnly}\n />\n </FormField>\n </Box>\n )}\n </Box>\n );\n};\n\nFormMediaImageField.displayName = 'FormMediaImageField';\n\nexport type ControlledMediaImageInputProps = Omit<\n ControlledInputProps<MediaImageValue | null>,\n 'invalid'\n>;\n\nexport const ControlledMediaImageInput: FC<ControlledMediaImageInputProps> = ({\n data,\n onChange,\n onBlur,\n readOnly,\n autoFocus,\n dataHook,\n}) => (\n <FormMediaImageField\n data={data}\n onChange={onChange}\n onBlur={onBlur}\n readOnly={readOnly}\n autoFocus={autoFocus}\n dataHook={dataHook}\n />\n);\n\nControlledMediaImageInput.displayName = 'ControlledMediaImageInput';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_designSystem","_react2","_common","_hooks","_getImageSource","_getImageUrl","_mediaConstants","_mediaImageValue","_mediaUtils","_mediaControl","_mediaImageActions","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FormMediaImageField","data","onChange","onBlur","readOnly","autoFocus","dataHook","inputRef","forwardedRef","imageFormFieldProps","translate","useWixPatternsContainer","useTranslations","isMobile","useIsMobile","image","toMediaImageValue","imageRef","useRef","current","setInputRef","useMergedRef","handlePick","useCallback","uri","next","fromMediaManagerPick","callMedia","downloadMedia","useMediaControl","mediaType","MEDIA_TYPES","IMAGE","value","getImageSource","pasteUrlForm","usePasteURLForm","url","replaceImage","fromImageUrl","openPasteUrl","onOpen","title","isExternalMediaImage","undefined","isPreviewOpen","setIsPreviewOpen","useState","handleDownload","useMediaImageDownload","handleDelete","handlePreviewReplace","canEdit","handleAltTextChange","withAltText","target","createElement","Box","gap","width","__self","__source","fileName","lineNumber","columnNumber","maxWidth","MEDIA_MAX_WIDTH","flexShrink","FormField","_extends2","MediaOverlay","hoverSkin","media","Image","src","getImageUrl","height","MEDIA_HEIGHT","fit","Content","placement","visible","MediaImageActions","onReplace","onReplaceWithUrl","onPreview","onDownload","onDelete","menuZIndex","Z_INDEX_MODAL_POPOVER","ImageViewer","ref","onAddImage","disabled","addImageInfo","direction","flexGrow","minWidth","label","Input","altText","placeholder","PasteURLForm","show","isOpen","closeModal","onClose","onSave","fieldType","MediaFieldType","MediaImagePreviewModal","exports","displayName","ControlledMediaImageInput"],"sources":["../../../../src/components/media-image-field/form-media-image-field.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport React, { useCallback, useRef, useState } from 'react';\nimport type { FormFieldProps } from '@wix/design-system';\nimport {\n Box,\n FormField,\n Image,\n ImageViewer,\n Input,\n MediaOverlay,\n} from '@wix/design-system';\nimport { useIsMobile, useWixPatternsContainer } from '@wix/bex-core/react';\n\nimport { Z_INDEX_MODAL_POPOVER } from '../common';\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type { MediaImageValue } from '../../types/media-image';\nimport { useMergedRef, useTranslations } from '../../hooks';\nimport { getImageSource } from '../../utils/get-image-source';\nimport { getImageUrl } from '../../utils/get-image-url';\nimport { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from '../../utils/media-constants';\nimport {\n fromImageUrl,\n fromMediaManagerPick,\n isExternalMediaImage,\n replaceImage,\n toMediaImageValue,\n withAltText,\n} from '../../utils/media-image-value';\nimport { MEDIA_TYPES } from '../../utils/media-utils';\nimport {\n MediaFieldType,\n PasteURLForm,\n useMediaControl,\n usePasteURLForm,\n} from '../media-control';\nimport {\n MediaImageActions,\n MediaImagePreviewModal,\n useMediaImageDownload,\n} from './media-image-actions';\n\ninterface ImageViewerActions {\n focus: () => void;\n}\n\nexport interface FormMediaImageFieldProps {\n /** A `MEDIA_IMAGE` value. */\n data?: unknown;\n onChange: (value: MediaImageValue | null) => void;\n /** Fires when the media manager closes, whether or not a file was picked. */\n onBlur?: () => void;\n readOnly?: boolean;\n autoFocus?: boolean;\n dataHook?: string;\n inputRef?: React.Ref<ImageViewerActions>;\n /** The FormField around the image, e.g. the field's label and its error.\n * ImageViewer takes its error styling from it. */\n imageFormFieldProps?: Pick<\n FormFieldProps,\n 'label' | 'required' | 'status' | 'statusMessage'\n >;\n}\n\n/**\n * The entity page input of a `MEDIA_IMAGE` field: the image, and an alt text\n * input to its right once there is an image. A pick fills an empty alt text\n * from the file name; a replace keeps the current one.\n */\nexport const FormMediaImageField: FC<FormMediaImageFieldProps> = ({\n data,\n onChange,\n onBlur,\n readOnly,\n autoFocus,\n dataHook,\n inputRef: forwardedRef,\n imageFormFieldProps,\n}) => {\n const { translate } = useWixPatternsContainer();\n const { t } = useTranslations();\n const isMobile = useIsMobile();\n const image = toMediaImageValue(data);\n // The media manager calls back after it closes, so it reads the value from\n // here rather than from the render that opened it.\n const imageRef = useRef(image);\n imageRef.current = image;\n\n const [inputRef, setInputRef] =\n useMergedRef<ImageViewerActions>(forwardedRef);\n\n const handlePick = useCallback(\n (uri: string) => {\n const next = fromMediaManagerPick(uri, imageRef.current);\n if (next) {\n onChange(next);\n }\n },\n [onChange],\n );\n\n const { callMedia, downloadMedia } = useMediaControl({\n mediaType: MEDIA_TYPES.IMAGE,\n value: getImageSource(image),\n onChange: handlePick,\n autoFocus,\n readOnly,\n onBlur,\n inputRef,\n });\n\n const pasteUrlForm = usePasteURLForm({\n onChange: (url) =>\n onChange(replaceImage(imageRef.current, fromImageUrl(url))),\n });\n const openPasteUrl = pasteUrlForm.onOpen({\n title: t('CMS.image.replaceWithUrl.title'),\n value: isExternalMediaImage(image) ? image.url : undefined,\n });\n\n const [isPreviewOpen, setIsPreviewOpen] = useState(false);\n const handleDownload = useMediaImageDownload(image, downloadMedia);\n const handleDelete = useCallback(() => {\n setIsPreviewOpen(false);\n onChange(null);\n }, [onChange]);\n const handlePreviewReplace = useCallback(() => {\n setIsPreviewOpen(false);\n callMedia();\n }, [callMedia]);\n\n const canEdit = !isMobile && !readOnly;\n\n const handleAltTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (image) {\n onChange(withAltText(image, e.target.value));\n }\n };\n\n return (\n <Box dataHook={dataHook} gap=\"SP4\" width=\"100%\">\n <Box width=\"100%\" maxWidth={MEDIA_MAX_WIDTH} flexShrink={0}>\n <FormField {...imageFormFieldProps} dataHook=\"media-image-field-image\">\n {image ? (\n <MediaOverlay\n dataHook=\"media-image-field-overlay\"\n hoverSkin=\"dark\"\n media={\n <Image\n dataHook=\"media-image-field-current-image\"\n src={getImageUrl(image)}\n width=\"100%\"\n height={MEDIA_HEIGHT}\n fit=\"cover\"\n />\n }\n >\n <MediaOverlay.Content placement=\"middle\" visible=\"hover\">\n <Box gap=\"SP2\">\n <MediaImageActions\n dataHook=\"media-image-field\"\n onReplace={canEdit ? callMedia : undefined}\n onReplaceWithUrl={readOnly ? undefined : openPasteUrl}\n onPreview={() => setIsPreviewOpen(true)}\n onDownload={handleDownload}\n onDelete={readOnly ? undefined : handleDelete}\n menuZIndex={Z_INDEX_MODAL_POPOVER}\n />\n </Box>\n </MediaOverlay.Content>\n </MediaOverlay>\n ) : (\n <ImageViewer\n // Only the empty state has a focusable control, so this is the\n // only place inputRef can land.\n ref={setInputRef}\n dataHook=\"media-image-field-viewer\"\n onAddImage={canEdit ? callMedia : undefined}\n disabled={!canEdit}\n addImageInfo={translate('cairo.add-image.tooltip')}\n height={MEDIA_HEIGHT}\n width=\"100%\"\n />\n )}\n </FormField>\n </Box>\n {image && (\n <Box direction=\"vertical\" flexGrow={1} minWidth=\"0\">\n <FormField label={t('CMS.image.altText.label')}>\n <Input\n dataHook=\"media-image-field-alt-input\"\n value={image.altText ?? ''}\n placeholder={t('CMS.image.altText.inputPlaceholder')}\n onChange={handleAltTextChange}\n readOnly={readOnly}\n />\n </FormField>\n </Box>\n )}\n <PasteURLForm\n title={pasteUrlForm.title}\n value={pasteUrlForm.value}\n show={pasteUrlForm.isOpen}\n closeModal={pasteUrlForm.onClose}\n onSave={pasteUrlForm.onSave}\n fieldType={MediaFieldType.image}\n />\n {image && (\n <MediaImagePreviewModal\n isOpen={isPreviewOpen}\n image={image}\n onClose={() => setIsPreviewOpen(false)}\n onReplace={handlePreviewReplace}\n onDelete={handleDelete}\n onDownload={handleDownload}\n readOnly={!canEdit}\n />\n )}\n </Box>\n );\n};\n\nFormMediaImageField.displayName = 'FormMediaImageField';\n\nexport type ControlledMediaImageInputProps = Omit<\n ControlledInputProps<MediaImageValue | null>,\n 'invalid'\n>;\n\nexport const ControlledMediaImageInput: FC<ControlledMediaImageInputProps> = ({\n data,\n onChange,\n onBlur,\n readOnly,\n autoFocus,\n dataHook,\n}) => (\n <FormMediaImageField\n data={data}\n onChange={onChange}\n onBlur={onBlur}\n readOnly={readOnly}\n autoFocus={autoFocus}\n dataHook={dataHook}\n />\n);\n\nControlledMediaImageInput.displayName = 'ControlledMediaImageInput';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,10 +4,14 @@ exports.__esModule = true;
|
|
|
4
4
|
exports.FormMediaImageFieldUniDriver = FormMediaImageFieldUniDriver;
|
|
5
5
|
var _unidriver = require("@wix/design-system/dist/testkit/unidriver");
|
|
6
6
|
var _baseDriver = require("../../testkit/base-driver");
|
|
7
|
+
/** The more actions menu, the URL form and the preview render in the body. */
|
|
7
8
|
function FormMediaImageFieldUniDriver(base, body) {
|
|
8
9
|
const formField = (0, _unidriver.FormFieldUniDriver)(base.$('[data-hook="media-image-field-image"]'), body);
|
|
9
10
|
const imageViewer = (0, _unidriver.ImageViewerUniDriver)(base.$('[data-hook="media-image-field-viewer"]'), body);
|
|
11
|
+
const replaceButton = (0, _unidriver.IconButtonUniDriver)(base.$('[data-hook="media-image-field-replace-button"]'), body);
|
|
10
12
|
const altInput = base.$('[data-hook="media-image-field-alt-input"] input');
|
|
13
|
+
const menuItem = action => body.$(`[data-hook="media-image-field-action-${action}"]`);
|
|
14
|
+
const openMenu = () => base.$('[data-hook="media-image-field-more-button"]').click();
|
|
11
15
|
return {
|
|
12
16
|
...(0, _baseDriver.baseUniDriverFactory)(base),
|
|
13
17
|
getLabel: async () => {
|
|
@@ -17,18 +21,30 @@ function FormMediaImageFieldUniDriver(base, body) {
|
|
|
17
21
|
isRequired: () => formField.isRequired(),
|
|
18
22
|
hasError: () => formField.hasStatus('error'),
|
|
19
23
|
getErrorMessage: () => formField.getStatusMessage(),
|
|
20
|
-
getImageUrl: () => imageViewer.getImageUrl(),
|
|
21
|
-
isAddItemVisible: () => imageViewer.isAddItemVisible(),
|
|
22
24
|
clickAdd: () => imageViewer.clickAdd(),
|
|
23
|
-
clickReplace: () =>
|
|
24
|
-
|
|
25
|
+
clickReplace: () => replaceButton.click(),
|
|
26
|
+
isReplaceDisabled: () => replaceButton.isButtonDisabled(),
|
|
27
|
+
replaceWithUrl: async url => {
|
|
28
|
+
await openMenu();
|
|
29
|
+
await menuItem('replace-url').click();
|
|
30
|
+
await (0, _unidriver.InputUniDriver)(body.$('[data-hook="paste-url-form.urlInput"]'), body).enterText(url);
|
|
31
|
+
await (await (0, _unidriver.CustomModalLayoutUniDriver)(body.$('[data-hook="paste-url-form.layout"]'), body).getPrimaryButtonDriver()).click();
|
|
32
|
+
},
|
|
33
|
+
openPreview: async () => {
|
|
34
|
+
await openMenu();
|
|
35
|
+
await menuItem('preview').click();
|
|
36
|
+
},
|
|
37
|
+
isPreviewOpen: () => body.$('[data-hook="preview-modal-content"]').exists(),
|
|
38
|
+
pressEscapeInPreview: () => body.$('[data-hook="preview-modal-content"]').pressKey('Escape'),
|
|
39
|
+
clickPreviewReplace: () => (0, _unidriver.ButtonUniDriver)(body.$('[data-hook="preview-modal-replace-button"]'), body).click(),
|
|
40
|
+
clickDelete: async () => {
|
|
41
|
+
await openMenu();
|
|
42
|
+
await menuItem('delete').click();
|
|
43
|
+
},
|
|
25
44
|
hasAltTextInput: () => altInput.exists(),
|
|
26
45
|
getAltText: () => altInput.value(),
|
|
27
46
|
getAltTextPlaceholder: () => altInput.attr('placeholder'),
|
|
28
|
-
enterAltText: text => altInput.enterValue(text)
|
|
29
|
-
// ImageViewer hides its edit buttons behind a loader until the image
|
|
30
|
-
// loads, and jsdom never fires that event on its own.
|
|
31
|
-
simulateImageLoad: async () => (await base.$('[data-hook="image-viewer-current-image"]').getNative()).dispatchEvent(new Event('load'))
|
|
47
|
+
enterAltText: text => altInput.enterValue(text)
|
|
32
48
|
};
|
|
33
49
|
}
|
|
34
50
|
//# sourceMappingURL=form-media-image-field.uni.driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_unidriver","require","_baseDriver","FormMediaImageFieldUniDriver","base","body","formField","FormFieldUniDriver","$","imageViewer","ImageViewerUniDriver","altInput","baseUniDriverFactory","getLabel","_await$formField$getL","textContent","isRequired","hasError","hasStatus","getErrorMessage","getStatusMessage","
|
|
1
|
+
{"version":3,"names":["_unidriver","require","_baseDriver","FormMediaImageFieldUniDriver","base","body","formField","FormFieldUniDriver","$","imageViewer","ImageViewerUniDriver","replaceButton","IconButtonUniDriver","altInput","menuItem","action","openMenu","click","baseUniDriverFactory","getLabel","_await$formField$getL","textContent","isRequired","hasError","hasStatus","getErrorMessage","getStatusMessage","clickAdd","clickReplace","isReplaceDisabled","isButtonDisabled","replaceWithUrl","url","InputUniDriver","enterText","CustomModalLayoutUniDriver","getPrimaryButtonDriver","openPreview","isPreviewOpen","exists","pressEscapeInPreview","pressKey","clickPreviewReplace","ButtonUniDriver","clickDelete","hasAltTextInput","getAltText","value","getAltTextPlaceholder","attr","enterAltText","text","enterValue"],"sources":["../../../../src/components/media-image-field/form-media-image-field.uni.driver.ts"],"sourcesContent":["import type { UniDriver } from '@wix/wix-ui-test-utils/unidriver';\nimport {\n ButtonUniDriver,\n CustomModalLayoutUniDriver,\n FormFieldUniDriver,\n IconButtonUniDriver,\n ImageViewerUniDriver,\n InputUniDriver,\n} from '@wix/design-system/dist/testkit/unidriver';\n\nimport { baseUniDriverFactory } from '../../testkit/base-driver';\n\n/** The more actions menu, the URL form and the preview render in the body. */\nexport function FormMediaImageFieldUniDriver(base: UniDriver, body: UniDriver) {\n const formField = FormFieldUniDriver(\n base.$('[data-hook=\"media-image-field-image\"]'),\n body,\n );\n const imageViewer = ImageViewerUniDriver(\n base.$('[data-hook=\"media-image-field-viewer\"]'),\n body,\n );\n const replaceButton = IconButtonUniDriver(\n base.$('[data-hook=\"media-image-field-replace-button\"]'),\n body,\n );\n const altInput = base.$('[data-hook=\"media-image-field-alt-input\"] input');\n const menuItem = (action: string) =>\n body.$(`[data-hook=\"media-image-field-action-${action}\"]`);\n const openMenu = () =>\n base.$('[data-hook=\"media-image-field-more-button\"]').click();\n\n return {\n ...baseUniDriverFactory(base),\n getLabel: async () => (await formField.getLabel())?.textContent ?? '',\n isRequired: () => formField.isRequired(),\n hasError: () => formField.hasStatus('error'),\n getErrorMessage: () => formField.getStatusMessage(),\n clickAdd: () => imageViewer.clickAdd(),\n clickReplace: () => replaceButton.click(),\n isReplaceDisabled: () => replaceButton.isButtonDisabled(),\n replaceWithUrl: async (url: string) => {\n await openMenu();\n await menuItem('replace-url').click();\n await InputUniDriver(\n body.$('[data-hook=\"paste-url-form.urlInput\"]'),\n body,\n ).enterText(url);\n await (\n await CustomModalLayoutUniDriver(\n body.$('[data-hook=\"paste-url-form.layout\"]'),\n body,\n ).getPrimaryButtonDriver()\n ).click();\n },\n openPreview: async () => {\n await openMenu();\n await menuItem('preview').click();\n },\n isPreviewOpen: () => body.$('[data-hook=\"preview-modal-content\"]').exists(),\n pressEscapeInPreview: () =>\n body.$('[data-hook=\"preview-modal-content\"]').pressKey('Escape'),\n clickPreviewReplace: () =>\n ButtonUniDriver(\n body.$('[data-hook=\"preview-modal-replace-button\"]'),\n body,\n ).click(),\n clickDelete: async () => {\n await openMenu();\n await menuItem('delete').click();\n },\n hasAltTextInput: () => altInput.exists(),\n getAltText: () => altInput.value(),\n getAltTextPlaceholder: () => altInput.attr('placeholder'),\n enterAltText: (text: string) => altInput.enterValue(text),\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.useMediaImageDownload = exports.MediaImagePreviewModal = exports.MediaImageActions = void 0;
|
|
5
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
6
|
+
var _designSystem = require("@wix/design-system");
|
|
7
|
+
var _lazy = require("@wix/wix-ui-icons-common/lazy");
|
|
8
|
+
var _hooks = require("../../hooks");
|
|
9
|
+
var _getImageSource = require("../../utils/get-image-source");
|
|
10
|
+
var _mediaImageValue = require("../../utils/media-image-value");
|
|
11
|
+
var _mediaUtils = require("../../utils/media-utils");
|
|
12
|
+
var _mediaPreviewModal = require("../media-gallery/media-preview-modal");
|
|
13
|
+
var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/media-image-field/media-image-actions.tsx";
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
/** WDS shows the menu's open state only to its trigger, so the trigger
|
|
16
|
+
* reports it. */
|
|
17
|
+
const MenuTrigger = ({
|
|
18
|
+
isOpen,
|
|
19
|
+
toggle,
|
|
20
|
+
buttonRef,
|
|
21
|
+
onOpenChange,
|
|
22
|
+
ariaLabel,
|
|
23
|
+
dataHook
|
|
24
|
+
}) => {
|
|
25
|
+
(0, _react.useEffect)(() => {
|
|
26
|
+
onOpenChange == null || onOpenChange(isOpen);
|
|
27
|
+
}, [isOpen, onOpenChange]);
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
|
|
29
|
+
ref: buttonRef,
|
|
30
|
+
size: "small",
|
|
31
|
+
skin: "light",
|
|
32
|
+
priority: "secondary",
|
|
33
|
+
dataHook: dataHook,
|
|
34
|
+
ariaLabel: ariaLabel,
|
|
35
|
+
"aria-haspopup": "menu",
|
|
36
|
+
"aria-expanded": isOpen,
|
|
37
|
+
onClick: toggle,
|
|
38
|
+
__self: void 0,
|
|
39
|
+
__source: {
|
|
40
|
+
fileName: _jsxFileName,
|
|
41
|
+
lineNumber: 43,
|
|
42
|
+
columnNumber: 5
|
|
43
|
+
}
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_lazy.MoreSmall, {
|
|
45
|
+
__self: void 0,
|
|
46
|
+
__source: {
|
|
47
|
+
fileName: _jsxFileName,
|
|
48
|
+
lineNumber: 54,
|
|
49
|
+
columnNumber: 7
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
};
|
|
53
|
+
/** The actions over a `MEDIA_IMAGE` image: Replace, and a menu with Replace
|
|
54
|
+
* with URL, Preview, Download and Delete. */
|
|
55
|
+
const MediaImageActions = ({
|
|
56
|
+
dataHook,
|
|
57
|
+
onReplace,
|
|
58
|
+
onReplaceWithUrl,
|
|
59
|
+
onPreview,
|
|
60
|
+
onDownload,
|
|
61
|
+
onDelete,
|
|
62
|
+
onMenuOpenChange,
|
|
63
|
+
menuZIndex
|
|
64
|
+
}) => {
|
|
65
|
+
const {
|
|
66
|
+
t
|
|
67
|
+
} = (0, _hooks.useTranslations)();
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_designSystem.Tooltip, {
|
|
69
|
+
content: t('CMS.image.replace'),
|
|
70
|
+
appendTo: "window",
|
|
71
|
+
__self: void 0,
|
|
72
|
+
__source: {
|
|
73
|
+
fileName: _jsxFileName,
|
|
74
|
+
lineNumber: 90,
|
|
75
|
+
columnNumber: 7
|
|
76
|
+
}
|
|
77
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
|
|
78
|
+
size: "small",
|
|
79
|
+
skin: "light",
|
|
80
|
+
priority: "secondary",
|
|
81
|
+
dataHook: `${dataHook}-replace-button`,
|
|
82
|
+
ariaLabel: t('CMS.image.replace'),
|
|
83
|
+
disabled: !onReplace,
|
|
84
|
+
onClick: onReplace,
|
|
85
|
+
__self: void 0,
|
|
86
|
+
__source: {
|
|
87
|
+
fileName: _jsxFileName,
|
|
88
|
+
lineNumber: 91,
|
|
89
|
+
columnNumber: 9
|
|
90
|
+
}
|
|
91
|
+
}, /*#__PURE__*/_react.default.createElement(_lazy.Replace, {
|
|
92
|
+
__self: void 0,
|
|
93
|
+
__source: {
|
|
94
|
+
fileName: _jsxFileName,
|
|
95
|
+
lineNumber: 100,
|
|
96
|
+
columnNumber: 11
|
|
97
|
+
}
|
|
98
|
+
}))), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu, {
|
|
99
|
+
textSize: "small",
|
|
100
|
+
appendTo: "window",
|
|
101
|
+
zIndex: menuZIndex,
|
|
102
|
+
triggerElement: ({
|
|
103
|
+
isOpen,
|
|
104
|
+
toggle,
|
|
105
|
+
ref
|
|
106
|
+
}) => /*#__PURE__*/_react.default.createElement(MenuTrigger, {
|
|
107
|
+
isOpen: isOpen,
|
|
108
|
+
toggle: toggle,
|
|
109
|
+
buttonRef: ref,
|
|
110
|
+
onOpenChange: onMenuOpenChange,
|
|
111
|
+
ariaLabel: t('auto-patterns.fields.more_actions_tooltip'),
|
|
112
|
+
dataHook: `${dataHook}-more-button`,
|
|
113
|
+
__self: void 0,
|
|
114
|
+
__source: {
|
|
115
|
+
fileName: _jsxFileName,
|
|
116
|
+
lineNumber: 108,
|
|
117
|
+
columnNumber: 11
|
|
118
|
+
}
|
|
119
|
+
}),
|
|
120
|
+
__self: void 0,
|
|
121
|
+
__source: {
|
|
122
|
+
fileName: _jsxFileName,
|
|
123
|
+
lineNumber: 103,
|
|
124
|
+
columnNumber: 7
|
|
125
|
+
}
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
|
|
127
|
+
dataHook: `${dataHook}-action-replace-url`,
|
|
128
|
+
text: t('CMS.image.replaceWithUrl.button'),
|
|
129
|
+
prefixIcon: /*#__PURE__*/_react.default.createElement(_lazy.Link, {
|
|
130
|
+
__self: void 0,
|
|
131
|
+
__source: {
|
|
132
|
+
fileName: _jsxFileName,
|
|
133
|
+
lineNumber: 121,
|
|
134
|
+
columnNumber: 23
|
|
135
|
+
}
|
|
136
|
+
}),
|
|
137
|
+
disabled: !onReplaceWithUrl,
|
|
138
|
+
onClick: () => onReplaceWithUrl == null ? void 0 : onReplaceWithUrl(),
|
|
139
|
+
__self: void 0,
|
|
140
|
+
__source: {
|
|
141
|
+
fileName: _jsxFileName,
|
|
142
|
+
lineNumber: 118,
|
|
143
|
+
columnNumber: 9
|
|
144
|
+
}
|
|
145
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
|
|
146
|
+
dataHook: `${dataHook}-action-preview`,
|
|
147
|
+
text: t('CMS.mediaGallery.preview'),
|
|
148
|
+
prefixIcon: /*#__PURE__*/_react.default.createElement(_lazy.Maximize, {
|
|
149
|
+
__self: void 0,
|
|
150
|
+
__source: {
|
|
151
|
+
fileName: _jsxFileName,
|
|
152
|
+
lineNumber: 128,
|
|
153
|
+
columnNumber: 23
|
|
154
|
+
}
|
|
155
|
+
}),
|
|
156
|
+
onClick: onPreview,
|
|
157
|
+
__self: void 0,
|
|
158
|
+
__source: {
|
|
159
|
+
fileName: _jsxFileName,
|
|
160
|
+
lineNumber: 125,
|
|
161
|
+
columnNumber: 9
|
|
162
|
+
}
|
|
163
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
|
|
164
|
+
dataHook: `${dataHook}-action-download`,
|
|
165
|
+
text: t('CMS.image.download'),
|
|
166
|
+
prefixIcon: /*#__PURE__*/_react.default.createElement(_lazy.Download, {
|
|
167
|
+
__self: void 0,
|
|
168
|
+
__source: {
|
|
169
|
+
fileName: _jsxFileName,
|
|
170
|
+
lineNumber: 134,
|
|
171
|
+
columnNumber: 23
|
|
172
|
+
}
|
|
173
|
+
}),
|
|
174
|
+
onClick: onDownload,
|
|
175
|
+
__self: void 0,
|
|
176
|
+
__source: {
|
|
177
|
+
fileName: _jsxFileName,
|
|
178
|
+
lineNumber: 131,
|
|
179
|
+
columnNumber: 9
|
|
180
|
+
}
|
|
181
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.Divider, {
|
|
182
|
+
__self: void 0,
|
|
183
|
+
__source: {
|
|
184
|
+
fileName: _jsxFileName,
|
|
185
|
+
lineNumber: 137,
|
|
186
|
+
columnNumber: 9
|
|
187
|
+
}
|
|
188
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
|
|
189
|
+
dataHook: `${dataHook}-action-delete`,
|
|
190
|
+
text: t('CMS.image.clear'),
|
|
191
|
+
skin: "destructive",
|
|
192
|
+
prefixIcon: /*#__PURE__*/_react.default.createElement(_lazy.Delete, {
|
|
193
|
+
__self: void 0,
|
|
194
|
+
__source: {
|
|
195
|
+
fileName: _jsxFileName,
|
|
196
|
+
lineNumber: 142,
|
|
197
|
+
columnNumber: 23
|
|
198
|
+
}
|
|
199
|
+
}),
|
|
200
|
+
disabled: !onDelete,
|
|
201
|
+
onClick: () => onDelete == null ? void 0 : onDelete(),
|
|
202
|
+
__self: void 0,
|
|
203
|
+
__source: {
|
|
204
|
+
fileName: _jsxFileName,
|
|
205
|
+
lineNumber: 138,
|
|
206
|
+
columnNumber: 9
|
|
207
|
+
}
|
|
208
|
+
})));
|
|
209
|
+
};
|
|
210
|
+
exports.MediaImageActions = MediaImageActions;
|
|
211
|
+
MediaImageActions.displayName = 'MediaImageActions';
|
|
212
|
+
|
|
213
|
+
/** Downloads the image: through the Media Manager, or straight from an
|
|
214
|
+
* external URL, which the Media Manager can't make a download link for. */
|
|
215
|
+
const useMediaImageDownload = (image, downloadMedia) => (0, _react.useCallback)(() => {
|
|
216
|
+
if ((0, _mediaImageValue.isExternalMediaImage)(image)) {
|
|
217
|
+
(0, _mediaUtils.executeDownloading)(image.url);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const src = (0, _getImageSource.getImageSource)(image);
|
|
221
|
+
if (src) {
|
|
222
|
+
downloadMedia(src);
|
|
223
|
+
}
|
|
224
|
+
}, [image, downloadMedia]);
|
|
225
|
+
exports.useMediaImageDownload = useMediaImageDownload;
|
|
226
|
+
const MediaImagePreviewModal = ({
|
|
227
|
+
isOpen,
|
|
228
|
+
image,
|
|
229
|
+
onClose,
|
|
230
|
+
onReplace,
|
|
231
|
+
onDelete,
|
|
232
|
+
onDownload,
|
|
233
|
+
readOnly
|
|
234
|
+
}) => /*#__PURE__*/_react.default.createElement(_mediaPreviewModal.MediaPreviewModal, {
|
|
235
|
+
isOpen: isOpen,
|
|
236
|
+
value: (0, _getImageSource.getImageSource)(image),
|
|
237
|
+
onClose: onClose,
|
|
238
|
+
onRequestMedia: onReplace,
|
|
239
|
+
onClearMedia: onDelete,
|
|
240
|
+
onDownloadMedia: onDownload,
|
|
241
|
+
readOnly: readOnly,
|
|
242
|
+
textKeys: {
|
|
243
|
+
replace: 'CMS.image.replace',
|
|
244
|
+
download: 'CMS.image.download',
|
|
245
|
+
delete: 'CMS.image.clear'
|
|
246
|
+
},
|
|
247
|
+
__self: void 0,
|
|
248
|
+
__source: {
|
|
249
|
+
fileName: _jsxFileName,
|
|
250
|
+
lineNumber: 189,
|
|
251
|
+
columnNumber: 3
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
exports.MediaImagePreviewModal = MediaImagePreviewModal;
|
|
255
|
+
MediaImagePreviewModal.displayName = 'MediaImagePreviewModal';
|
|
256
|
+
//# sourceMappingURL=media-image-actions.js.map
|