@wix/patterns-fields 1.12.0 → 1.14.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.
Files changed (200) hide show
  1. package/dist/cjs/assets/locale/messages_en.json +7 -1
  2. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  3. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  4. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  5. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  6. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  7. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  8. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  9. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  10. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  11. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  12. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  13. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  14. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  15. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  16. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  17. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  18. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  19. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  20. package/dist/cjs/components/image/cell-image-edit.js +474 -0
  21. package/dist/cjs/components/image/cell-image-edit.js.map +1 -0
  22. package/dist/cjs/components/image/image-thumbnail.js +78 -0
  23. package/dist/cjs/components/image/image-thumbnail.js.map +1 -0
  24. package/dist/cjs/components/image/image-view.js +123 -0
  25. package/dist/cjs/components/image/image-view.js.map +1 -0
  26. package/dist/cjs/components/image/index.js +22 -0
  27. package/dist/cjs/components/image/index.js.map +1 -0
  28. package/dist/cjs/components/index.js +6 -0
  29. package/dist/cjs/components/index.js.map +1 -1
  30. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  31. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  32. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  33. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  34. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  35. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  36. package/dist/cjs/components/media-image/overlays/custom-url-overlay.js +32 -0
  37. package/dist/cjs/components/media-image/overlays/custom-url-overlay.js.map +1 -0
  38. package/dist/cjs/components/media-image/overlays/index.js +3 -1
  39. package/dist/cjs/components/media-image/overlays/index.js.map +1 -1
  40. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +4 -4
  41. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  42. package/dist/cjs/components/media-image/overlays/types.js.map +1 -1
  43. package/dist/cjs/components/media-loader/media-loader.st.css.js +3 -3
  44. package/dist/cjs/components/media-loader/media-loader.st.css.js.map +1 -1
  45. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  46. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  47. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  48. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  49. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +6 -6
  50. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  51. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +5 -5
  52. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  53. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  54. 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
  55. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  56. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  57. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  58. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  59. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  60. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  61. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +9 -9
  62. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  63. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +4 -4
  64. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  65. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  66. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  67. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  68. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  69. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  70. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  71. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  72. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  73. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  74. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  75. package/dist/cjs/services/translations.js.map +1 -1
  76. package/dist/cjs/styles.global.css +1 -1
  77. package/dist/esm/assets/locale/messages_en.json +7 -1
  78. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  79. package/dist/esm/components/address/input/address-input.st.css.js.map +1 -1
  80. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  81. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  82. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  83. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  84. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  85. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  86. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  87. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  88. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  89. package/dist/esm/components/image/cell-image-edit.js +188 -0
  90. package/dist/esm/components/image/cell-image-edit.js.map +1 -0
  91. package/dist/esm/components/image/image-thumbnail.js +11 -0
  92. package/dist/esm/components/image/image-thumbnail.js.map +1 -0
  93. package/dist/esm/components/image/image-view.js +19 -0
  94. package/dist/esm/components/image/image-view.js.map +1 -0
  95. package/dist/esm/components/image/index.js +4 -0
  96. package/dist/esm/components/image/index.js.map +1 -0
  97. package/dist/esm/components/index.js +1 -0
  98. package/dist/esm/components/index.js.map +1 -1
  99. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  100. package/dist/esm/components/media-control/paste-url-button.st.css.js.map +1 -1
  101. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  102. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  103. package/dist/esm/components/media-image/overlays/custom-url-overlay.js +10 -0
  104. package/dist/esm/components/media-image/overlays/custom-url-overlay.js.map +1 -0
  105. package/dist/esm/components/media-image/overlays/index.js +1 -0
  106. package/dist/esm/components/media-image/overlays/index.js.map +1 -1
  107. package/dist/esm/components/media-image/overlays/overlay.st.css.js +3 -3
  108. package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
  109. package/dist/esm/components/media-loader/media-loader.st.css.js +2 -2
  110. package/dist/esm/components/media-loader/media-loader.st.css.js.map +1 -1
  111. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  112. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  113. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +3 -3
  114. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  115. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  116. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  117. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  118. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  119. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  120. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  121. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +3 -3
  122. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  123. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  124. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  125. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  126. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  127. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  128. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  129. package/dist/esm/components/text/text-view.st.css.js +2 -2
  130. package/dist/esm/components/text/text-view.st.css.js.map +1 -1
  131. package/dist/esm/styles.global.css +1 -1
  132. package/dist/types/components/address/input/address-input.st.css.d.ts.map +1 -1
  133. package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
  134. package/dist/types/components/image/cell-image-edit.d.ts +18 -0
  135. package/dist/types/components/image/cell-image-edit.d.ts.map +1 -0
  136. package/dist/types/components/image/image-thumbnail.d.ts +11 -0
  137. package/dist/types/components/image/image-thumbnail.d.ts.map +1 -0
  138. package/dist/types/components/image/image-view.d.ts +7 -0
  139. package/dist/types/components/image/image-view.d.ts.map +1 -0
  140. package/dist/types/components/image/index.d.ts +4 -0
  141. package/dist/types/components/image/index.d.ts.map +1 -0
  142. package/dist/types/components/index.d.ts +1 -0
  143. package/dist/types/components/index.d.ts.map +1 -1
  144. package/dist/types/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
  145. package/dist/types/components/media-image/overlays/custom-url-overlay.d.ts +5 -0
  146. package/dist/types/components/media-image/overlays/custom-url-overlay.d.ts.map +1 -0
  147. package/dist/types/components/media-image/overlays/index.d.ts +1 -0
  148. package/dist/types/components/media-image/overlays/index.d.ts.map +1 -1
  149. package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
  150. package/dist/types/components/media-image/overlays/types.d.ts +1 -1
  151. package/dist/types/components/media-image/overlays/types.d.ts.map +1 -1
  152. package/dist/types/components/media-loader/media-loader.st.css.d.ts.map +1 -1
  153. package/dist/types/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.d.ts.map +1 -1
  154. package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
  155. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
  156. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts.map +1 -1
  157. package/dist/types/components/text/text-view.st.css.d.ts.map +1 -1
  158. package/dist/types/services/translations.d.ts +1 -1
  159. package/dist/types/services/translations.d.ts.map +1 -1
  160. package/package.json +4 -4
  161. package/src/assets/locale/messages_en.json +7 -1
  162. package/src/components/address/input/address-input.st.css.ts +2 -2
  163. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  164. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  165. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  166. package/src/components/color-view/color-view.st.css.ts +2 -2
  167. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  168. package/src/components/document/form-document-field.st.css.ts +2 -2
  169. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  170. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  171. package/src/components/image/cell-image-edit.tsx +353 -0
  172. package/src/components/image/image-thumbnail.tsx +63 -0
  173. package/src/components/image/image-view.tsx +69 -0
  174. package/src/components/image/index.ts +3 -0
  175. package/src/components/index.ts +1 -0
  176. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  177. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  178. package/src/components/media-image/media-image.st.css.ts +3 -3
  179. package/src/components/media-image/overlays/custom-url-overlay.tsx +18 -0
  180. package/src/components/media-image/overlays/index.ts +1 -0
  181. package/src/components/media-image/overlays/overlay.st.css.ts +3 -3
  182. package/src/components/media-image/overlays/types.ts +1 -1
  183. package/src/components/media-loader/media-loader.st.css.ts +2 -2
  184. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  185. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  186. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +3 -3
  187. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +3 -3
  188. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  189. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  190. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  191. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  192. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +3 -3
  193. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  194. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  195. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  196. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  197. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  198. package/src/components/text/text-view.st.css.ts +2 -2
  199. package/src/services/translations.ts +6 -0
  200. package/src/styles.global.css +1 -1
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.CellImageEdit = void 0;
5
+ var _react = _interopRequireWildcard(require("react"));
6
+ var _designSystem = require("@wix/design-system");
7
+ var _wixUiIconsCommon = require("@wix/wix-ui-icons-common");
8
+ var _mediaUtils = require("../../utils/media-utils");
9
+ var _hooks = require("../../hooks");
10
+ var _mediaControl = require("../media-control");
11
+ var _imageThumbnail = require("./image-thumbnail");
12
+ var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/image/cell-image-edit.tsx";
13
+ 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); }
14
+ const CellImageEdit = ({
15
+ value,
16
+ onChange,
17
+ onCommit,
18
+ onCancel,
19
+ onStartEdit,
20
+ inputRef,
21
+ dataHook
22
+ }) => {
23
+ const {
24
+ t
25
+ } = (0, _hooks.useTranslations)();
26
+ const containerRef = (0, _react.useRef)(null);
27
+ // Tracks whether onMediaChange fired during the current callMedia() invocation.
28
+ // Reset to false before each call; checked after the promise resolves to detect
29
+ // "dismissed without selection" so the in-progress edit can be cancelled.
30
+ const mediaCommittedRef = (0, _react.useRef)(false);
31
+ const onMediaChange = (0, _react.useCallback)(uri => {
32
+ mediaCommittedRef.current = true;
33
+ onChange(uri);
34
+ onCommit();
35
+ }, [onChange, onCommit]);
36
+ const {
37
+ callMedia,
38
+ loading
39
+ } = (0, _mediaControl.useMediaControl)({
40
+ mediaType: _mediaUtils.MEDIA_TYPES.IMAGE,
41
+ value: value ?? undefined,
42
+ onChange: onMediaChange
43
+ });
44
+ const handleCallMedia = (0, _react.useCallback)(async () => {
45
+ onStartEdit == null || onStartEdit();
46
+ mediaCommittedRef.current = false;
47
+ await callMedia();
48
+ // If the picker was dismissed without a selection, neither onCommit nor
49
+ // onCancel ran — call onCancel now so isEditing resets to false and
50
+ // useClearFocusOnBlur is unblocked.
51
+ if (!mediaCommittedRef.current) {
52
+ onCancel == null || onCancel();
53
+ }
54
+ }, [onStartEdit, callMedia, onCancel]);
55
+ const pasteUrlTitle = t('CMS.image.replaceWithUrl.title');
56
+ const {
57
+ isOpen,
58
+ title,
59
+ onOpen,
60
+ onClose,
61
+ onSave
62
+ } = (0, _mediaControl.usePasteURLForm)({
63
+ onChange: onMediaChange
64
+ });
65
+
66
+ // When the paste-URL form is dismissed without saving, cancel the in-progress
67
+ // edit so isEditing returns to false and useClearFocusOnBlur works normally.
68
+ const handleFormClose = (0, _react.useCallback)(() => {
69
+ onClose();
70
+ onCancel == null || onCancel();
71
+ }, [onClose, onCancel]);
72
+ const handleOpenPasteUrl = (0, _react.useCallback)(params => () => {
73
+ onStartEdit == null || onStartEdit();
74
+ onOpen(params)();
75
+ }, [onStartEdit, onOpen]);
76
+ const handleDelete = (0, _react.useCallback)(() => {
77
+ onChange(null);
78
+ onCommit();
79
+ }, [onChange, onCommit]);
80
+
81
+ // Wire inputRef so the cell-level useEffect can focus the first button when
82
+ // the user presses Enter on a focused image cell (inner focus activation).
83
+ (0, _react.useEffect)(() => {
84
+ if (!inputRef) return;
85
+ inputRef.current = {
86
+ focus: () => {
87
+ var _containerRef$current;
88
+ const first = (_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.querySelectorAll('button')[0];
89
+ first == null || first.focus();
90
+ }
91
+ };
92
+ return () => {
93
+ inputRef.current = null;
94
+ };
95
+ }, [inputRef]);
96
+ const handleContainerFocus = (0, _react.useCallback)(() => {
97
+ var _containerRef$current2;
98
+ (_containerRef$current2 = containerRef.current) == null || _containerRef$current2.setAttribute('data-inner-focused', '');
99
+ }, []);
100
+ const handleContainerBlur = (0, _react.useCallback)(e => {
101
+ if (!e.currentTarget.contains(e.relatedTarget)) {
102
+ var _containerRef$current3;
103
+ (_containerRef$current3 = containerRef.current) == null || _containerRef$current3.removeAttribute('data-inner-focused');
104
+ }
105
+ }, []);
106
+ const focusCell = (0, _react.useCallback)(() => {
107
+ var _containerRef$current4;
108
+ const cellDiv = (_containerRef$current4 = containerRef.current) == null ? void 0 : _containerRef$current4.closest('[role="gridcell"]');
109
+ cellDiv == null || cellDiv.focus({
110
+ preventScroll: true
111
+ });
112
+ }, []);
113
+
114
+ // Native keydown listener — must be native (not React onKeyDown) so that
115
+ // e.stopPropagation() fires during the native bubble phase, before the event
116
+ // reaches the React root where useKeyboardNavigation's onKeyDown would
117
+ // otherwise intercept Tab and move to the next cell.
118
+ (0, _react.useEffect)(() => {
119
+ const el = containerRef.current;
120
+ if (!el) return;
121
+ const handleKeyDown = e => {
122
+ if (e.key === 'Escape') {
123
+ e.preventDefault();
124
+ e.stopPropagation();
125
+ // Cancel any in-progress edit (e.g. if isEditing was set before opening
126
+ // a modal that then got dismissed via keyboard), then return focus to the
127
+ // cell div. The useCellFocusAndEditing useEffect will also refocus the
128
+ // cell div if isEditing transitions false→false is a no-op, so we also
129
+ // call focusCell() directly as a reliable fallback.
130
+ onCancel == null || onCancel();
131
+ focusCell();
132
+ return;
133
+ }
134
+
135
+ // Tab while a button in this component is focused: cycle through the
136
+ // interactive elements. Tab off the last (or Shift+Tab off the first)
137
+ // returns focus to the cell div for normal cell-level navigation.
138
+ if (e.key === 'Tab') {
139
+ const buttons = Array.from(el.querySelectorAll('button'));
140
+ const currentIdx = buttons.indexOf(document.activeElement);
141
+ if (currentIdx === -1) return; // focus is not on one of our buttons — pass through
142
+
143
+ e.preventDefault();
144
+ e.stopPropagation();
145
+ if (!e.shiftKey) {
146
+ if (currentIdx >= buttons.length - 1) {
147
+ focusCell();
148
+ } else {
149
+ var _buttons;
150
+ (_buttons = buttons[currentIdx + 1]) == null || _buttons.focus();
151
+ }
152
+ } else {
153
+ if (currentIdx <= 0) {
154
+ focusCell();
155
+ } else {
156
+ var _buttons2;
157
+ (_buttons2 = buttons[currentIdx - 1]) == null || _buttons2.focus();
158
+ }
159
+ }
160
+ }
161
+ };
162
+ el.addEventListener('keydown', handleKeyDown);
163
+ return () => el.removeEventListener('keydown', handleKeyDown);
164
+ }, [focusCell, onCancel]);
165
+ if (loading) {
166
+ return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
167
+ dataHook: dataHook,
168
+ verticalAlign: "middle",
169
+ width: "100%",
170
+ height: "100%",
171
+ padding: "0 8px",
172
+ __self: void 0,
173
+ __source: {
174
+ fileName: _jsxFileName,
175
+ lineNumber: 199,
176
+ columnNumber: 7
177
+ }
178
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Loader, {
179
+ size: "tiny",
180
+ __self: void 0,
181
+ __source: {
182
+ fileName: _jsxFileName,
183
+ lineNumber: 206,
184
+ columnNumber: 9
185
+ }
186
+ }));
187
+ }
188
+ return /*#__PURE__*/_react.default.createElement("div", {
189
+ ref: containerRef,
190
+ "data-hook": dataHook,
191
+ style: {
192
+ width: '100%',
193
+ height: '100%'
194
+ },
195
+ onFocus: handleContainerFocus,
196
+ onBlur: handleContainerBlur,
197
+ __self: void 0,
198
+ __source: {
199
+ fileName: _jsxFileName,
200
+ lineNumber: 212,
201
+ columnNumber: 5
202
+ }
203
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
204
+ align: "space-between",
205
+ verticalAlign: "middle",
206
+ height: "100%",
207
+ padding: "0 8px",
208
+ style: {
209
+ boxSizing: 'border-box'
210
+ },
211
+ __self: void 0,
212
+ __source: {
213
+ fileName: _jsxFileName,
214
+ lineNumber: 219,
215
+ columnNumber: 7
216
+ }
217
+ }, value ?
218
+ /*#__PURE__*/
219
+ /* Has value: clickable thumbnail button with replace overlay */
220
+ _react.default.createElement(_designSystem.Tooltip, {
221
+ content: t('CMS.image.replace'),
222
+ appendTo: "window",
223
+ __self: void 0,
224
+ __source: {
225
+ fileName: _jsxFileName,
226
+ lineNumber: 228,
227
+ columnNumber: 11
228
+ }
229
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
230
+ __self: void 0,
231
+ __source: {
232
+ fileName: _jsxFileName,
233
+ lineNumber: 229,
234
+ columnNumber: 13
235
+ }
236
+ }, /*#__PURE__*/_react.default.createElement("button", {
237
+ type: "button",
238
+ "data-hook": "image-edit-thumbnail",
239
+ onClick: handleCallMedia,
240
+ style: {
241
+ cursor: 'pointer',
242
+ lineHeight: 0,
243
+ position: 'relative',
244
+ background: 'none',
245
+ border: 'none',
246
+ padding: 0
247
+ },
248
+ __self: void 0,
249
+ __source: {
250
+ fileName: _jsxFileName,
251
+ lineNumber: 230,
252
+ columnNumber: 15
253
+ }
254
+ }, /*#__PURE__*/_react.default.createElement(_imageThumbnail.ImageThumbnail, {
255
+ value: value,
256
+ __self: void 0,
257
+ __source: {
258
+ fileName: _jsxFileName,
259
+ lineNumber: 243,
260
+ columnNumber: 17
261
+ }
262
+ }), /*#__PURE__*/_react.default.createElement("div", {
263
+ style: {
264
+ position: 'absolute',
265
+ inset: 0,
266
+ display: 'flex',
267
+ alignItems: 'center',
268
+ justifyContent: 'center',
269
+ background: 'rgba(0, 0, 0, 0.4)',
270
+ borderRadius: '3px'
271
+ },
272
+ __self: void 0,
273
+ __source: {
274
+ fileName: _jsxFileName,
275
+ lineNumber: 244,
276
+ columnNumber: 17
277
+ }
278
+ }, /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.Replace, {
279
+ style: {
280
+ color: 'white',
281
+ width: '18px',
282
+ height: '18px'
283
+ },
284
+ __self: void 0,
285
+ __source: {
286
+ fileName: _jsxFileName,
287
+ lineNumber: 255,
288
+ columnNumber: 19
289
+ }
290
+ }))))) :
291
+ /*#__PURE__*/
292
+ /* Empty: icon button opens media manager */
293
+ _react.default.createElement(_designSystem.Tooltip, {
294
+ content: t('CMS.image.add'),
295
+ appendTo: "window",
296
+ __self: void 0,
297
+ __source: {
298
+ fileName: _jsxFileName,
299
+ lineNumber: 264,
300
+ columnNumber: 11
301
+ }
302
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
303
+ size: "tiny",
304
+ priority: "secondary",
305
+ dataHook: "image-edit-add-button",
306
+ onClick: handleCallMedia,
307
+ __self: void 0,
308
+ __source: {
309
+ fileName: _jsxFileName,
310
+ lineNumber: 265,
311
+ columnNumber: 13
312
+ }
313
+ }, /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.Add, {
314
+ __self: void 0,
315
+ __source: {
316
+ fileName: _jsxFileName,
317
+ lineNumber: 271,
318
+ columnNumber: 15
319
+ }
320
+ }))), value ?
321
+ /*#__PURE__*/
322
+ /* Has value: "..." menu with Replace / Replace with URL / Delete */
323
+ _react.default.createElement(_designSystem.PopoverMenu, {
324
+ textSize: "small",
325
+ appendTo: "window",
326
+ triggerElement: /*#__PURE__*/_react.default.createElement(_designSystem.Tooltip, {
327
+ content: t('auto-patterns.fields.more_actions_tooltip'),
328
+ appendTo: "window",
329
+ __self: void 0,
330
+ __source: {
331
+ fileName: _jsxFileName,
332
+ lineNumber: 282,
333
+ columnNumber: 15
334
+ }
335
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
336
+ size: "tiny",
337
+ priority: "tertiary",
338
+ dataHook: "image-edit-more-button",
339
+ __self: void 0,
340
+ __source: {
341
+ fileName: _jsxFileName,
342
+ lineNumber: 286,
343
+ columnNumber: 17
344
+ }
345
+ }, /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.MoreSmall, {
346
+ __self: void 0,
347
+ __source: {
348
+ fileName: _jsxFileName,
349
+ lineNumber: 291,
350
+ columnNumber: 19
351
+ }
352
+ }))),
353
+ __self: void 0,
354
+ __source: {
355
+ fileName: _jsxFileName,
356
+ lineNumber: 278,
357
+ columnNumber: 11
358
+ }
359
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
360
+ dataHook: "image-edit-action-replace",
361
+ text: t('CMS.image.replace'),
362
+ prefixIcon: /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.Replace, {
363
+ __self: void 0,
364
+ __source: {
365
+ fileName: _jsxFileName,
366
+ lineNumber: 299,
367
+ columnNumber: 27
368
+ }
369
+ }),
370
+ onClick: handleCallMedia,
371
+ __self: void 0,
372
+ __source: {
373
+ fileName: _jsxFileName,
374
+ lineNumber: 296,
375
+ columnNumber: 13
376
+ }
377
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
378
+ dataHook: "image-edit-action-replace-url",
379
+ text: t('CMS.image.replaceWithUrl.button'),
380
+ prefixIcon: /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.Link, {
381
+ __self: void 0,
382
+ __source: {
383
+ fileName: _jsxFileName,
384
+ lineNumber: 305,
385
+ columnNumber: 27
386
+ }
387
+ }),
388
+ onClick: handleOpenPasteUrl({
389
+ title: pasteUrlTitle,
390
+ value: value ?? undefined
391
+ }),
392
+ __self: void 0,
393
+ __source: {
394
+ fileName: _jsxFileName,
395
+ lineNumber: 302,
396
+ columnNumber: 13
397
+ }
398
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.Divider, {
399
+ __self: void 0,
400
+ __source: {
401
+ fileName: _jsxFileName,
402
+ lineNumber: 311,
403
+ columnNumber: 13
404
+ }
405
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.PopoverMenu.MenuItem, {
406
+ dataHook: "image-edit-action-delete",
407
+ text: t('CMS.image.clear'),
408
+ skin: "destructive",
409
+ prefixIcon: /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.Delete, {
410
+ __self: void 0,
411
+ __source: {
412
+ fileName: _jsxFileName,
413
+ lineNumber: 316,
414
+ columnNumber: 27
415
+ }
416
+ }),
417
+ onClick: handleDelete,
418
+ __self: void 0,
419
+ __source: {
420
+ fileName: _jsxFileName,
421
+ lineNumber: 312,
422
+ columnNumber: 13
423
+ }
424
+ })) :
425
+ /*#__PURE__*/
426
+ /* Empty: icon button opens paste-URL form */
427
+ _react.default.createElement(_designSystem.Tooltip, {
428
+ content: t('CMS.image.replaceWithUrl.button'),
429
+ appendTo: "window",
430
+ __self: void 0,
431
+ __source: {
432
+ fileName: _jsxFileName,
433
+ lineNumber: 322,
434
+ columnNumber: 11
435
+ }
436
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
437
+ size: "tiny",
438
+ priority: "tertiary",
439
+ dataHook: "image-edit-paste-url-button",
440
+ onClick: handleOpenPasteUrl({
441
+ title: pasteUrlTitle,
442
+ value: value ?? undefined
443
+ }),
444
+ __self: void 0,
445
+ __source: {
446
+ fileName: _jsxFileName,
447
+ lineNumber: 326,
448
+ columnNumber: 13
449
+ }
450
+ }, /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.LinkSmall, {
451
+ __self: void 0,
452
+ __source: {
453
+ fileName: _jsxFileName,
454
+ lineNumber: 335,
455
+ columnNumber: 15
456
+ }
457
+ })))), /*#__PURE__*/_react.default.createElement(_mediaControl.PasteURLForm, {
458
+ title: title,
459
+ value: value ?? undefined,
460
+ show: isOpen,
461
+ closeModal: handleFormClose,
462
+ onSave: onSave,
463
+ fieldType: _mediaControl.MediaFieldType.image,
464
+ __self: void 0,
465
+ __source: {
466
+ fileName: _jsxFileName,
467
+ lineNumber: 341,
468
+ columnNumber: 7
469
+ }
470
+ }));
471
+ };
472
+ exports.CellImageEdit = CellImageEdit;
473
+ CellImageEdit.displayName = 'CellImageEdit';
474
+ //# sourceMappingURL=cell-image-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_designSystem","_wixUiIconsCommon","_mediaUtils","_hooks","_mediaControl","_imageThumbnail","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CellImageEdit","value","onChange","onCommit","onCancel","onStartEdit","inputRef","dataHook","useTranslations","containerRef","useRef","mediaCommittedRef","onMediaChange","useCallback","uri","current","callMedia","loading","useMediaControl","mediaType","MEDIA_TYPES","IMAGE","undefined","handleCallMedia","pasteUrlTitle","isOpen","title","onOpen","onClose","onSave","usePasteURLForm","handleFormClose","handleOpenPasteUrl","params","handleDelete","useEffect","focus","_containerRef$current","first","querySelectorAll","handleContainerFocus","_containerRef$current2","setAttribute","handleContainerBlur","currentTarget","contains","relatedTarget","_containerRef$current3","removeAttribute","focusCell","_containerRef$current4","cellDiv","closest","preventScroll","el","handleKeyDown","key","preventDefault","stopPropagation","buttons","Array","from","currentIdx","indexOf","document","activeElement","shiftKey","length","_buttons","_buttons2","addEventListener","removeEventListener","createElement","Box","verticalAlign","width","height","padding","__self","__source","fileName","lineNumber","columnNumber","Loader","size","ref","style","onFocus","onBlur","align","boxSizing","Tooltip","content","appendTo","type","onClick","cursor","lineHeight","position","background","border","ImageThumbnail","inset","display","alignItems","justifyContent","borderRadius","Replace","color","IconButton","priority","Add","PopoverMenu","textSize","triggerElement","MoreSmall","MenuItem","text","prefixIcon","Link","Divider","skin","Delete","LinkSmall","PasteURLForm","show","closeModal","fieldType","MediaFieldType","image","exports","displayName"],"sources":["../../../../src/components/image/cell-image-edit.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport {\n Box,\n IconButton,\n Loader,\n PopoverMenu,\n Tooltip,\n} from '@wix/design-system';\nimport {\n Add,\n LinkSmall,\n MoreSmall,\n Replace,\n Link,\n Delete,\n} from '@wix/wix-ui-icons-common';\nimport { MEDIA_TYPES } from '../../utils/media-utils';\nimport { useTranslations } from '../../hooks';\nimport {\n useMediaControl,\n usePasteURLForm,\n PasteURLForm,\n MediaFieldType,\n} from '../media-control';\nimport { ImageThumbnail } from './image-thumbnail';\n\nexport interface CellImageEditProps {\n value: string | null | undefined;\n onChange: (value: string | null) => void;\n onCommit: () => void;\n onCancel?: () => void;\n /**\n * Called before opening external UI (media manager / paste-URL form) so the\n * table can set isEditing=true and protect cell focus while the modal is open.\n */\n onStartEdit?: () => void;\n inputRef?: React.MutableRefObject<{ focus: () => void } | null | undefined>;\n dataHook?: string;\n}\n\nexport const CellImageEdit: React.FC<CellImageEditProps> = ({\n value,\n onChange,\n onCommit,\n onCancel,\n onStartEdit,\n inputRef,\n dataHook,\n}) => {\n const { t } = useTranslations();\n const containerRef = useRef<HTMLDivElement | null>(null);\n // Tracks whether onMediaChange fired during the current callMedia() invocation.\n // Reset to false before each call; checked after the promise resolves to detect\n // \"dismissed without selection\" so the in-progress edit can be cancelled.\n const mediaCommittedRef = useRef(false);\n\n const onMediaChange = useCallback(\n (uri: string) => {\n mediaCommittedRef.current = true;\n onChange(uri);\n onCommit();\n },\n [onChange, onCommit],\n );\n\n const { callMedia, loading } = useMediaControl({\n mediaType: MEDIA_TYPES.IMAGE,\n value: value ?? undefined,\n onChange: onMediaChange,\n });\n\n const handleCallMedia = useCallback(async () => {\n onStartEdit?.();\n mediaCommittedRef.current = false;\n await callMedia();\n // If the picker was dismissed without a selection, neither onCommit nor\n // onCancel ran — call onCancel now so isEditing resets to false and\n // useClearFocusOnBlur is unblocked.\n if (!mediaCommittedRef.current) {\n onCancel?.();\n }\n }, [onStartEdit, callMedia, onCancel]);\n\n const pasteUrlTitle = t('CMS.image.replaceWithUrl.title');\n const { isOpen, title, onOpen, onClose, onSave } = usePasteURLForm({\n onChange: onMediaChange,\n });\n\n // When the paste-URL form is dismissed without saving, cancel the in-progress\n // edit so isEditing returns to false and useClearFocusOnBlur works normally.\n const handleFormClose = useCallback(() => {\n onClose();\n onCancel?.();\n }, [onClose, onCancel]);\n\n const handleOpenPasteUrl = useCallback(\n (params: { title: string; value?: string }) => () => {\n onStartEdit?.();\n onOpen(params)();\n },\n [onStartEdit, onOpen],\n );\n\n const handleDelete = useCallback(() => {\n onChange(null);\n onCommit();\n }, [onChange, onCommit]);\n\n // Wire inputRef so the cell-level useEffect can focus the first button when\n // the user presses Enter on a focused image cell (inner focus activation).\n useEffect(() => {\n if (!inputRef) return;\n inputRef.current = {\n focus: () => {\n const first =\n containerRef.current?.querySelectorAll<HTMLElement>('button')[0];\n first?.focus();\n },\n };\n return () => {\n inputRef.current = null;\n };\n }, [inputRef]);\n\n const handleContainerFocus = useCallback(() => {\n containerRef.current?.setAttribute('data-inner-focused', '');\n }, []);\n\n const handleContainerBlur = useCallback((e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node | null)) {\n containerRef.current?.removeAttribute('data-inner-focused');\n }\n }, []);\n\n const focusCell = useCallback(() => {\n const cellDiv = containerRef.current?.closest(\n '[role=\"gridcell\"]',\n ) as HTMLElement | null;\n cellDiv?.focus({ preventScroll: true });\n }, []);\n\n // Native keydown listener — must be native (not React onKeyDown) so that\n // e.stopPropagation() fires during the native bubble phase, before the event\n // reaches the React root where useKeyboardNavigation's onKeyDown would\n // otherwise intercept Tab and move to the next cell.\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n // Cancel any in-progress edit (e.g. if isEditing was set before opening\n // a modal that then got dismissed via keyboard), then return focus to the\n // cell div. The useCellFocusAndEditing useEffect will also refocus the\n // cell div if isEditing transitions false→false is a no-op, so we also\n // call focusCell() directly as a reliable fallback.\n onCancel?.();\n focusCell();\n return;\n }\n\n // Tab while a button in this component is focused: cycle through the\n // interactive elements. Tab off the last (or Shift+Tab off the first)\n // returns focus to the cell div for normal cell-level navigation.\n if (e.key === 'Tab') {\n const buttons = Array.from(el.querySelectorAll<HTMLElement>('button'));\n const currentIdx = buttons.indexOf(\n document.activeElement as HTMLElement,\n );\n if (currentIdx === -1) return; // focus is not on one of our buttons — pass through\n\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.shiftKey) {\n if (currentIdx >= buttons.length - 1) {\n focusCell();\n } else {\n buttons[currentIdx + 1]?.focus();\n }\n } else {\n if (currentIdx <= 0) {\n focusCell();\n } else {\n buttons[currentIdx - 1]?.focus();\n }\n }\n }\n };\n\n el.addEventListener('keydown', handleKeyDown);\n return () => el.removeEventListener('keydown', handleKeyDown);\n }, [focusCell, onCancel]);\n\n if (loading) {\n return (\n <Box\n dataHook={dataHook}\n verticalAlign=\"middle\"\n width=\"100%\"\n height=\"100%\"\n padding=\"0 8px\"\n >\n <Loader size=\"tiny\" />\n </Box>\n );\n }\n\n return (\n <div\n ref={containerRef}\n data-hook={dataHook}\n style={{ width: '100%', height: '100%' }}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <Box\n align=\"space-between\"\n verticalAlign=\"middle\"\n height=\"100%\"\n padding=\"0 8px\"\n style={{ boxSizing: 'border-box' }}\n >\n {value ? (\n /* Has value: clickable thumbnail button with replace overlay */\n <Tooltip content={t('CMS.image.replace')} appendTo=\"window\">\n <Box>\n <button\n type=\"button\"\n data-hook=\"image-edit-thumbnail\"\n onClick={handleCallMedia}\n style={{\n cursor: 'pointer',\n lineHeight: 0,\n position: 'relative',\n background: 'none',\n border: 'none',\n padding: 0,\n }}\n >\n <ImageThumbnail value={value} />\n <div\n style={{\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(0, 0, 0, 0.4)',\n borderRadius: '3px',\n }}\n >\n <Replace\n style={{ color: 'white', width: '18px', height: '18px' }}\n />\n </div>\n </button>\n </Box>\n </Tooltip>\n ) : (\n /* Empty: icon button opens media manager */\n <Tooltip content={t('CMS.image.add')} appendTo=\"window\">\n <IconButton\n size=\"tiny\"\n priority=\"secondary\"\n dataHook=\"image-edit-add-button\"\n onClick={handleCallMedia}\n >\n <Add />\n </IconButton>\n </Tooltip>\n )}\n\n {value ? (\n /* Has value: \"...\" menu with Replace / Replace with URL / Delete */\n <PopoverMenu\n textSize=\"small\"\n appendTo=\"window\"\n triggerElement={\n <Tooltip\n content={t('auto-patterns.fields.more_actions_tooltip')}\n appendTo=\"window\"\n >\n <IconButton\n size=\"tiny\"\n priority=\"tertiary\"\n dataHook=\"image-edit-more-button\"\n >\n <MoreSmall />\n </IconButton>\n </Tooltip>\n }\n >\n <PopoverMenu.MenuItem\n dataHook=\"image-edit-action-replace\"\n text={t('CMS.image.replace')}\n prefixIcon={<Replace />}\n onClick={handleCallMedia}\n />\n <PopoverMenu.MenuItem\n dataHook=\"image-edit-action-replace-url\"\n text={t('CMS.image.replaceWithUrl.button')}\n prefixIcon={<Link />}\n onClick={handleOpenPasteUrl({\n title: pasteUrlTitle,\n value: value ?? undefined,\n })}\n />\n <PopoverMenu.Divider />\n <PopoverMenu.MenuItem\n dataHook=\"image-edit-action-delete\"\n text={t('CMS.image.clear')}\n skin=\"destructive\"\n prefixIcon={<Delete />}\n onClick={handleDelete}\n />\n </PopoverMenu>\n ) : (\n /* Empty: icon button opens paste-URL form */\n <Tooltip\n content={t('CMS.image.replaceWithUrl.button')}\n appendTo=\"window\"\n >\n <IconButton\n size=\"tiny\"\n priority=\"tertiary\"\n dataHook=\"image-edit-paste-url-button\"\n onClick={handleOpenPasteUrl({\n title: pasteUrlTitle,\n value: value ?? undefined,\n })}\n >\n <LinkSmall />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n\n <PasteURLForm\n title={title}\n value={value ?? undefined}\n show={isOpen}\n closeModal={handleFormClose}\n onSave={onSave}\n fieldType={MediaFieldType.image}\n />\n </div>\n );\n};\n\nCellImageEdit.displayName = 'CellImageEdit';\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.ImageThumbnail = void 0;
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _autoFieldTypes = require("../../auto-field-types");
8
+ var _mediaImage = require("../media-image");
9
+ var _overlays = require("../media-image/overlays");
10
+ var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/image/image-thumbnail.tsx";
11
+ const ImageThumbnail = ({
12
+ value,
13
+ onLoad,
14
+ onError,
15
+ onMouseEnter,
16
+ onMouseLeave,
17
+ dataHook
18
+ }) => {
19
+ const src = value ? (0, _autoFieldTypes.mediaURItoImageURL)(value, _autoFieldTypes.ThumbnailSize.S) : undefined;
20
+ return /*#__PURE__*/_react.default.createElement("div", {
21
+ "data-hook": dataHook,
22
+ "data-empty": !value || undefined,
23
+ style: {
24
+ width: '36px',
25
+ height: '36px',
26
+ borderRadius: '3px',
27
+ flexShrink: 0,
28
+ position: 'relative'
29
+ },
30
+ __self: void 0,
31
+ __source: {
32
+ fileName: _jsxFileName,
33
+ lineNumber: 33,
34
+ columnNumber: 5
35
+ }
36
+ }, /*#__PURE__*/_react.default.createElement(_mediaImage.MediaImage, {
37
+ src: src,
38
+ alt: "",
39
+ suspended: true,
40
+ borderRadius: "3px",
41
+ transparent: true,
42
+ size: _autoFieldTypes.ThumbnailSize.S,
43
+ width: "36px",
44
+ height: "36px",
45
+ onLoad: onLoad,
46
+ onError: onError,
47
+ onMouseEnter: onMouseEnter,
48
+ onMouseLeave: onMouseLeave,
49
+ overlay: value && (0, _autoFieldTypes.isMediaVideoURI)(value) ? /*#__PURE__*/_react.default.createElement(_overlays.VideoIndicatorOverlay, {
50
+ src: value,
51
+ size: "small",
52
+ __self: void 0,
53
+ __source: {
54
+ fileName: _jsxFileName,
55
+ lineNumber: 53,
56
+ columnNumber: 13
57
+ }
58
+ }) : /*#__PURE__*/_react.default.createElement(_overlays.CustomUrlOverlay, {
59
+ src: value,
60
+ size: "small",
61
+ __self: void 0,
62
+ __source: {
63
+ fileName: _jsxFileName,
64
+ lineNumber: 55,
65
+ columnNumber: 13
66
+ }
67
+ }),
68
+ __self: void 0,
69
+ __source: {
70
+ fileName: _jsxFileName,
71
+ lineNumber: 38,
72
+ columnNumber: 7
73
+ }
74
+ }));
75
+ };
76
+ exports.ImageThumbnail = ImageThumbnail;
77
+ ImageThumbnail.displayName = 'ImageThumbnail';
78
+ //# sourceMappingURL=image-thumbnail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_autoFieldTypes","_mediaImage","_overlays","_jsxFileName","ImageThumbnail","value","onLoad","onError","onMouseEnter","onMouseLeave","dataHook","src","mediaURItoImageURL","ThumbnailSize","S","undefined","default","createElement","style","width","height","borderRadius","flexShrink","position","__self","__source","fileName","lineNumber","columnNumber","MediaImage","alt","suspended","transparent","size","overlay","isMediaVideoURI","VideoIndicatorOverlay","CustomUrlOverlay","exports","displayName"],"sources":["../../../../src/components/image/image-thumbnail.tsx"],"sourcesContent":["import React from 'react';\nimport {\n isMediaVideoURI,\n mediaURItoImageURL,\n ThumbnailSize,\n} from '../../auto-field-types';\nimport { MediaImage } from '../media-image';\nimport {\n CustomUrlOverlay,\n VideoIndicatorOverlay,\n} from '../media-image/overlays';\n\nexport interface ImageThumbnailProps {\n value?: string | null;\n onLoad?: () => void;\n onError?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n dataHook?: string;\n}\n\nexport const ImageThumbnail: React.FC<ImageThumbnailProps> = ({\n value,\n onLoad,\n onError,\n onMouseEnter,\n onMouseLeave,\n dataHook,\n}) => {\n const src = value ? mediaURItoImageURL(value, ThumbnailSize.S) : undefined;\n\n return (\n <div\n data-hook={dataHook}\n data-empty={!value || undefined}\n style={{ width: '36px', height: '36px', borderRadius: '3px', flexShrink: 0, position: 'relative' }}\n >\n <MediaImage\n src={src}\n alt=\"\"\n suspended\n borderRadius=\"3px\"\n transparent\n size={ThumbnailSize.S}\n width=\"36px\"\n height=\"36px\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n overlay={\n value && isMediaVideoURI(value) ? (\n <VideoIndicatorOverlay src={value} size=\"small\" />\n ) : (\n <CustomUrlOverlay src={value} size=\"small\" />\n )\n }\n />\n </div>\n );\n};\n\nImageThumbnail.displayName = 'ImageThumbnail';\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAGiC,IAAAI,YAAA;AAW1B,MAAMC,cAA6C,GAAGA,CAAC;EAC5DC,KAAK;EACLC,MAAM;EACNC,OAAO;EACPC,YAAY;EACZC,YAAY;EACZC;AACF,CAAC,KAAK;EACJ,MAAMC,GAAG,GAAGN,KAAK,GAAG,IAAAO,kCAAkB,EAACP,KAAK,EAAEQ,6BAAa,CAACC,CAAC,CAAC,GAAGC,SAAS;EAE1E,oBACElB,MAAA,CAAAmB,OAAA,CAAAC,aAAA;IACE,aAAWP,QAAS;IACpB,cAAY,CAACL,KAAK,IAAIU,SAAU;IAChCG,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAM;MAAEC,MAAM,EAAE,MAAM;MAAEC,YAAY,EAAE,KAAK;MAAEC,UAAU,EAAE,CAAC;MAAEC,QAAQ,EAAE;IAAW,CAAE;IAAAC,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAvB,YAAA;MAAAwB,UAAA;MAAAC,YAAA;IAAA;EAAA,gBAEnG/B,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAAChB,WAAA,CAAA4B,UAAU;IACTlB,GAAG,EAAEA,GAAI;IACTmB,GAAG,EAAC,EAAE;IACNC,SAAS;IACTV,YAAY,EAAC,KAAK;IAClBW,WAAW;IACXC,IAAI,EAAEpB,6BAAa,CAACC,CAAE;IACtBK,KAAK,EAAC,MAAM;IACZC,MAAM,EAAC,MAAM;IACbd,MAAM,EAAEA,MAAO;IACfC,OAAO,EAAEA,OAAQ;IACjBC,YAAY,EAAEA,YAAa;IAC3BC,YAAY,EAAEA,YAAa;IAC3ByB,OAAO,EACL7B,KAAK,IAAI,IAAA8B,+BAAe,EAAC9B,KAAK,CAAC,gBAC7BR,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACf,SAAA,CAAAkC,qBAAqB;MAACzB,GAAG,EAAEN,KAAM;MAAC4B,IAAI,EAAC,OAAO;MAAAT,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAvB,YAAA;QAAAwB,UAAA;QAAAC,YAAA;MAAA;IAAA,CAAE,CAAC,gBAElD/B,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACf,SAAA,CAAAmC,gBAAgB;MAAC1B,GAAG,EAAEN,KAAM;MAAC4B,IAAI,EAAC,OAAO;MAAAT,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAvB,YAAA;QAAAwB,UAAA;QAAAC,YAAA;MAAA;IAAA,CAAE,CAE/C;IAAAJ,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAvB,YAAA;MAAAwB,UAAA;MAAAC,YAAA;IAAA;EAAA,CACF,CACE,CAAC;AAEV,CAAC;AAACU,OAAA,CAAAlC,cAAA,GAAAA,cAAA;AAEFA,cAAc,CAACmC,WAAW,GAAG,gBAAgB","ignoreList":[]}