@wix/patterns-fields 1.124.0 → 1.125.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 (224) hide show
  1. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  2. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  3. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  4. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  5. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  6. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  7. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  8. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  9. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  10. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  11. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  12. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  13. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  14. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  15. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  16. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  17. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  18. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  19. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js +3 -3
  20. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -1
  21. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  22. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  23. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  24. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  25. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  26. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  27. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  28. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  29. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  30. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  31. package/dist/cjs/components/media-gallery/media-preview-modal.js +12 -10
  32. package/dist/cjs/components/media-gallery/media-preview-modal.js.map +1 -1
  33. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  34. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  35. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  36. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  37. package/dist/cjs/components/media-image-field/cell-media-image-edit.js +46 -213
  38. package/dist/cjs/components/media-image-field/cell-media-image-edit.js.map +1 -1
  39. package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js +8 -8
  40. package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js.map +1 -1
  41. package/dist/cjs/components/media-image-field/form-media-image-field.js +116 -24
  42. package/dist/cjs/components/media-image-field/form-media-image-field.js.map +1 -1
  43. package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js +24 -8
  44. package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -1
  45. package/dist/cjs/components/media-image-field/media-image-actions.js +256 -0
  46. package/dist/cjs/components/media-image-field/media-image-actions.js.map +1 -0
  47. package/dist/cjs/components/media-image-field/media-image-view.st.css.js +3 -3
  48. package/dist/cjs/components/media-image-field/media-image-view.st.css.js.map +1 -1
  49. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  50. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  51. package/dist/cjs/components/multi-document/cell-multi-document-edit.js +31 -38
  52. package/dist/cjs/components/multi-document/cell-multi-document-edit.js.map +1 -1
  53. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  54. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  55. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  56. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  57. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  58. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  59. package/dist/cjs/components/reference/cell-multi-reference-view.st.css.js +3 -3
  60. package/dist/cjs/components/reference/cell-multi-reference-view.st.css.js.map +1 -1
  61. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  62. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  63. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  64. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  65. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  66. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  67. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  68. 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
  69. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  70. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  71. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  72. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  73. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  74. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  75. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  76. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  77. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  78. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  79. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  80. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  81. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  82. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  83. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  84. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  85. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  86. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  87. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  88. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  89. package/dist/cjs/styles.global.css +1 -1
  90. package/dist/cjs/utils/detect-field-type.js +9 -17
  91. package/dist/cjs/utils/detect-field-type.js.map +1 -1
  92. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  93. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  94. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  95. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  96. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  97. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  98. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  99. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  100. package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
  101. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  102. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  103. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  104. package/dist/esm/components/exclamation/exclamation.st.css.js.map +1 -1
  105. package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js +2 -2
  106. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  107. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  108. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  109. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  110. package/dist/esm/components/media-control/paste-url-button.st.css.js.map +1 -1
  111. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  112. package/dist/esm/components/media-gallery/media-preview-modal.js +2 -2
  113. package/dist/esm/components/media-gallery/media-preview-modal.js.map +1 -1
  114. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  115. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  116. package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
  117. package/dist/esm/components/media-image-field/cell-media-image-edit.js +11 -37
  118. package/dist/esm/components/media-image-field/cell-media-image-edit.js.map +1 -1
  119. package/dist/esm/components/media-image-field/cell-media-image-edit.st.css.js +2 -2
  120. package/dist/esm/components/media-image-field/form-media-image-field.js +37 -9
  121. package/dist/esm/components/media-image-field/form-media-image-field.js.map +1 -1
  122. package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js +24 -8
  123. package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -1
  124. package/dist/esm/components/media-image-field/media-image-actions.js +52 -0
  125. package/dist/esm/components/media-image-field/media-image-actions.js.map +1 -0
  126. package/dist/esm/components/media-image-field/media-image-view.st.css.js +2 -2
  127. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  128. package/dist/esm/components/multi-document/cell-multi-document-edit.js +2 -8
  129. package/dist/esm/components/multi-document/cell-multi-document-edit.js.map +1 -1
  130. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  131. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  132. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  133. package/dist/esm/components/reference/cell-multi-reference-view.st.css.js +2 -2
  134. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  135. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  136. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  137. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  138. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  139. 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
  140. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  141. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  142. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  143. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  144. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  145. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  146. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  147. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  148. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  149. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  150. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  151. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  152. package/dist/esm/components/text/text-view.st.css.js +2 -2
  153. package/dist/esm/styles.global.css +1 -1
  154. package/dist/esm/utils/detect-field-type.js +12 -16
  155. package/dist/esm/utils/detect-field-type.js.map +1 -1
  156. package/dist/types/components/audio/actions/actions-menu/actions-menu.st.css.d.ts.map +1 -1
  157. package/dist/types/components/audio/audio-field/form-audio-field.st.css.d.ts.map +1 -1
  158. package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
  159. package/dist/types/components/exclamation/exclamation.st.css.d.ts.map +1 -1
  160. package/dist/types/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
  161. package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
  162. package/dist/types/components/media-image-field/cell-media-image-edit.d.ts.map +1 -1
  163. package/dist/types/components/media-image-field/form-media-image-field.d.ts.map +1 -1
  164. package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts +8 -4
  165. package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts.map +1 -1
  166. package/dist/types/components/media-image-field/media-image-actions.d.ts +33 -0
  167. package/dist/types/components/media-image-field/media-image-actions.d.ts.map +1 -0
  168. package/dist/types/components/multi-document/cell-multi-document-edit.d.ts.map +1 -1
  169. package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts.map +1 -1
  170. 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
  171. package/dist/types/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.d.ts.map +1 -1
  172. package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
  173. 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
  174. package/dist/types/utils/detect-field-type.d.ts +1 -1
  175. package/dist/types/utils/detect-field-type.d.ts.map +1 -1
  176. package/package.json +4 -4
  177. package/src/__tests__/components/media-image-field/form-media-image-input.spec.tsx +69 -2
  178. package/src/__tests__/utils/detect-field-type.spec.ts +5 -5
  179. package/src/components/address/input/address-input.st.css.ts +2 -2
  180. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  181. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  182. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  183. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  184. package/src/components/color-view/color-view.st.css.ts +2 -2
  185. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  186. package/src/components/document/form-document-field.st.css.ts +2 -2
  187. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  188. package/src/components/field-validation-settings/field-validation-settings-input.st.css.ts +2 -2
  189. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  190. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  191. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  192. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  193. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  194. package/src/components/media-gallery/media-preview-modal.tsx +2 -1
  195. package/src/components/media-image/media-image.st.css.ts +3 -3
  196. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  197. package/src/components/media-image-field/cell-media-image-edit.st.css.ts +2 -2
  198. package/src/components/media-image-field/cell-media-image-edit.tsx +26 -129
  199. package/src/components/media-image-field/form-media-image-field.tsx +105 -23
  200. package/src/components/media-image-field/form-media-image-field.uni.driver.ts +45 -10
  201. package/src/components/media-image-field/media-image-actions.tsx +205 -0
  202. package/src/components/media-image-field/media-image-view.st.css.ts +2 -2
  203. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  204. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  205. package/src/components/multi-document/cell-multi-document-edit.tsx +3 -6
  206. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  207. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  208. package/src/components/reference/cell-multi-reference-view.st.css.ts +2 -2
  209. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  210. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  211. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  212. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  213. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  214. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  215. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  216. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  217. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  218. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  219. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  220. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  221. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  222. package/src/components/text/text-view.st.css.ts +2 -2
  223. package/src/styles.global.css +1 -1
  224. 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
- onMediaLoad
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: 100,
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: 101,
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: 102,
115
+ lineNumber: 142,
98
116
  columnNumber: 9
99
117
  }
100
- }), /*#__PURE__*/_react.default.createElement(_designSystem.ImageViewer, {
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
- onUpdateImage: canEdit ? callMedia : undefined,
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: 103,
121
- columnNumber: 11
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: 124,
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: 125,
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: 126,
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: 155,
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":";;;;;;AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAQA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAGA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AAQA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AAMA,IAAAW,kBAAA,GAAAX,OAAA;AAI+B,IAAAY,YAAA;AAAA,SAAAb,wBAAAc,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAhB,uBAAA,YAAAA,CAAAc,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAwB/B;AACA;AACA;AACA;AACA;AACO,MAAMkB,mBAAiD,GAAGA,CAAC;EAChEC,IAAI;EACJC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,QAAQ,EAAEC,YAAY;EACtBC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,+BAAuB,EAAC,CAAC;EAC/C,MAAM;IAAE7B;EAAE,CAAC,GAAG,IAAA8B,sBAAe,EAAC,CAAC;EAC/B,MAAMC,QAAQ,GAAG,IAAAC,mBAAW,EAAC,CAAC;EAC9B,MAAMC,KAAK,GAAG,IAAAC,kCAAiB,EAACf,IAAI,CAAC;EACrC;EACA;EACA,MAAMgB,QAAQ,GAAG,IAAAC,aAAM,EAACH,KAAK,CAAC;EAC9BE,QAAQ,CAACE,OAAO,GAAGJ,KAAK;EAExB,MAAM,CAACR,QAAQ,EAAEa,WAAW,CAAC,GAC3B,IAAAC,mBAAY,EAAqBb,YAAY,CAAC;EAEhD,MAAMc,UAAU,GAAG,IAAAC,kBAAW,EAC3BC,GAAW,IAAK;IACf,MAAMC,IAAI,GAAG,IAAAC,qCAAoB,EAACF,GAAG,EAAEP,QAAQ,CAACE,OAAO,CAAC;IACxD,IAAIM,IAAI,EAAE;MACRvB,QAAQ,CAACuB,IAAI,CAAC;IAChB;EACF,CAAC,EACD,CAACvB,QAAQ,CACX,CAAC;EAED,MAAM;IAAEyB,SAAS;IAAEC;EAAc,CAAC,GAAG,IAAAC,6BAAe,EAAC;IACnDC,SAAS,EAAEC,uBAAW,CAACC,KAAK;IAC5BC,KAAK,EAAE,IAAAC,8BAAc,EAACnB,KAAK,CAAC;IAC5Bb,QAAQ,EAAEoB,UAAU;IACpBjB,SAAS;IACTD,QAAQ;IACRD,MAAM;IACNI;EACF,CAAC,CAAC;EAEF,MAAM4B,YAAY,GAAG,IAAAC,6BAAe,EAAC;IACnClC,QAAQ,EAAGmC,GAAG,IACZnC,QAAQ,CAAC,IAAAoC,6BAAY,EAACrB,QAAQ,CAACE,OAAO,EAAE,IAAAoB,6BAAY,EAACF,GAAG,CAAC,CAAC;EAC9D,CAAC,CAAC;EACF,MAAMG,YAAY,GAAGL,YAAY,CAACM,MAAM,CAAC;IACvCC,KAAK,EAAE5D,CAAC,CAAC,gCAAgC,CAAC;IAC1CmD,KAAK,EAAE,IAAAU,qCAAoB,EAAC5B,KAAK,CAAC,GAAGA,KAAK,CAACsB,GAAG,GAAGO;EACnD,CAAC,CAAC;EAEF,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACzD,MAAMC,cAAc,GAAG,IAAAC,wCAAqB,EAAClC,KAAK,EAAEa,aAAa,CAAC;EAClE,MAAMsB,YAAY,GAAG,IAAA3B,kBAAW,EAAC,MAAM;IACrCuB,gBAAgB,CAAC,KAAK,CAAC;IACvB5C,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EACd,MAAMiD,oBAAoB,GAAG,IAAA5B,kBAAW,EAAC,MAAM;IAC7CuB,gBAAgB,CAAC,KAAK,CAAC;IACvBnB,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMyB,OAAO,GAAG,CAACvC,QAAQ,IAAI,CAACT,QAAQ;EAEtC,MAAMiD,mBAAmB,GAAIxE,CAAsC,IAAK;IACtE,IAAIkC,KAAK,EAAE;MACTb,QAAQ,CAAC,IAAAoD,4BAAW,EAACvC,KAAK,EAAElC,CAAC,CAAC0E,MAAM,CAACtB,KAAK,CAAC,CAAC;IAC9C;EACF,CAAC;EAED,oBACEnE,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAwF,GAAG;IAACnD,QAAQ,EAAEA,QAAS;IAACoD,GAAG,EAAC,KAAK;IAACC,KAAK,EAAC,MAAM;IAAAC,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBAC7ClG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAwF,GAAG;IAACE,KAAK,EAAC,MAAM;IAACM,QAAQ,EAAEC,+BAAgB;IAACC,UAAU,EAAE,CAAE;IAAAP,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBACzDlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAmG,SAAS,MAAAC,SAAA,CAAA9E,OAAA,MAAKkB,mBAAmB;IAAEH,QAAQ,EAAC,yBAAyB;IAAAsD,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,IACnEjD,KAAK,gBACJjD,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAqG,YAAY;IACXhE,QAAQ,EAAC,2BAA2B;IACpCiE,SAAS,EAAC,MAAM;IAChBC,KAAK,eACH1G,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAwG,KAAK;MACJnE,QAAQ,EAAC,iCAAiC;MAC1CoE,GAAG,EAAE,IAAAC,wBAAW,EAAC5D,KAAK,CAAE;MACxB4C,KAAK,EAAC,MAAM;MACZiB,MAAM,EAAEC,4BAAa;MACrBC,GAAG,EAAC,OAAO;MAAAlB,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAlF,YAAA;QAAAmF,UAAA;QAAAC,YAAA;MAAA;IAAA,CACZ,CACF;IAAAJ,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBAEDlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAqG,YAAY,CAACS,OAAO;IAACC,SAAS,EAAC,QAAQ;IAACC,OAAO,EAAC,OAAO;IAAArB,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBACtDlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAwF,GAAG;IAACC,GAAG,EAAC,KAAK;IAAAE,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBACZlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAAC7E,kBAAA,CAAAuG,iBAAiB;IAChB5E,QAAQ,EAAC,mBAAmB;IAC5B6E,SAAS,EAAE/B,OAAO,GAAGzB,SAAS,GAAGiB,SAAU;IAC3CwC,gBAAgB,EAAEhF,QAAQ,GAAGwC,SAAS,GAAGJ,YAAa;IACtD6C,SAAS,EAAEA,CAAA,KAAMvC,gBAAgB,CAAC,IAAI,CAAE;IACxCwC,UAAU,EAAEtC,cAAe;IAC3BuC,QAAQ,EAAEnF,QAAQ,GAAGwC,SAAS,GAAGM,YAAa;IAC9CsC,UAAU,EAAEC,6BAAsB;IAAA7B,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,CACnC,CACE,CACe,CACV,CAAC,gBAEflG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAyH;EACC;EACA;EAAA;IACAC,GAAG,EAAEvE,WAAY;IACjBd,QAAQ,EAAC,0BAA0B;IACnCsF,UAAU,EAAExC,OAAO,GAAGzB,SAAS,GAAGiB,SAAU;IAC5CiD,QAAQ,EAAE,CAACzC,OAAQ;IACnB0C,YAAY,EAAEpF,SAAS,CAAC,yBAAyB,CAAE;IACnDkE,MAAM,EAAEC,4BAAa;IACrBlB,KAAK,EAAC,MAAM;IAAAC,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,CACb,CAEM,CACR,CAAC,EACLjD,KAAK,iBACJjD,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAwF,GAAG;IAACsC,SAAS,EAAC,UAAU;IAACC,QAAQ,EAAE,CAAE;IAACC,QAAQ,EAAC,GAAG;IAAArC,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBACjDlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAmG,SAAS;IAAC8B,KAAK,EAAEpH,CAAC,CAAC,yBAAyB,CAAE;IAAA8E,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,gBAC7ClG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACvF,aAAA,CAAAkI,KAAK;IACJ7F,QAAQ,EAAC,6BAA6B;IACtC2B,KAAK,EAAElB,KAAK,CAACqF,OAAO,IAAI,EAAG;IAC3BC,WAAW,EAAEvH,CAAC,CAAC,oCAAoC,CAAE;IACrDoB,QAAQ,EAAEmD,mBAAoB;IAC9BjD,QAAQ,EAAEA,QAAS;IAAAwD,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,CACpB,CACQ,CACR,CACN,eACDlG,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAAC9E,aAAA,CAAA4H,YAAY;IACX5D,KAAK,EAAEP,YAAY,CAACO,KAAM;IAC1BT,KAAK,EAAEE,YAAY,CAACF,KAAM;IAC1BsE,IAAI,EAAEpE,YAAY,CAACqE,MAAO;IAC1BC,UAAU,EAAEtE,YAAY,CAACuE,OAAQ;IACjCC,MAAM,EAAExE,YAAY,CAACwE,MAAO;IAC5BC,SAAS,EAAEC,4BAAc,CAAC9F,KAAM;IAAA6C,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,CACjC,CAAC,EACDjD,KAAK,iBACJjD,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAAC7E,kBAAA,CAAAmI,sBAAsB;IACrBN,MAAM,EAAE3D,aAAc;IACtB9B,KAAK,EAAEA,KAAM;IACb2F,OAAO,EAAEA,CAAA,KAAM5D,gBAAgB,CAAC,KAAK,CAAE;IACvCqC,SAAS,EAAEhC,oBAAqB;IAChCoC,QAAQ,EAAErC,YAAa;IACvBoC,UAAU,EAAEtC,cAAe;IAC3B5C,QAAQ,EAAE,CAACgD,OAAQ;IAAAQ,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAlF,YAAA;MAAAmF,UAAA;MAAAC,YAAA;IAAA;EAAA,CACpB,CAEA,CAAC;AAEV,CAAC;AAAC+C,OAAA,CAAA/G,mBAAA,GAAAA,mBAAA;AAEFA,mBAAmB,CAACgH,WAAW,GAAG,qBAAqB;AAOhD,MAAMC,yBAA6D,GAAGA,CAAC;EAC5EhH,IAAI;EACJC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC;AACF,CAAC,kBACCxC,MAAA,CAAAyB,OAAA,CAAAiE,aAAA,CAACxD,mBAAmB;EAClBC,IAAI,EAAEA,IAAK;EACXC,QAAQ,EAAEA,QAAS;EACnBC,MAAM,EAAEA,MAAO;EACfC,QAAQ,EAAEA,QAAS;EACnBC,SAAS,EAAEA,SAAU;EACrBC,QAAQ,EAAEA,QAAS;EAAAsD,MAAA;EAAAC,QAAA;IAAAC,QAAA,EAAAlF,YAAA;IAAAmF,UAAA;IAAAC,YAAA;EAAA;AAAA,CACpB,CACF;AAAC+C,OAAA,CAAAE,yBAAA,GAAAA,yBAAA;AAEFA,yBAAyB,CAACD,WAAW,GAAG,2BAA2B","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: () => imageViewer.clickUpdate(),
24
- clickRemove: () => imageViewer.clickRemove(),
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","getImageUrl","isAddItemVisible","clickAdd","clickReplace","clickUpdate","clickRemove","hasAltTextInput","exists","getAltText","value","getAltTextPlaceholder","attr","enterAltText","text","enterValue","simulateImageLoad","getNative","dispatchEvent","Event"],"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 FormFieldUniDriver,\n ImageViewerUniDriver,\n} from '@wix/design-system/dist/testkit/unidriver';\n\nimport { baseUniDriverFactory } from '../../testkit/base-driver';\n\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 altInput = base.$('[data-hook=\"media-image-field-alt-input\"] input');\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 getImageUrl: () => imageViewer.getImageUrl(),\n isAddItemVisible: () => imageViewer.isAddItemVisible(),\n clickAdd: () => imageViewer.clickAdd(),\n clickReplace: () => imageViewer.clickUpdate(),\n clickRemove: () => imageViewer.clickRemove(),\n hasAltTextInput: () => altInput.exists(),\n getAltText: () => altInput.value(),\n getAltTextPlaceholder: () => altInput.attr('placeholder'),\n enterAltText: (text: string) => altInput.enterValue(text),\n // ImageViewer hides its edit buttons behind a loader until the image\n // loads, and jsdom never fires that event on its own.\n simulateImageLoad: async () =>\n (\n await base.$('[data-hook=\"image-viewer-current-image\"]').getNative()\n ).dispatchEvent(new Event('load')),\n };\n}\n"],"mappings":";;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAEO,SAASE,4BAA4BA,CAACC,IAAe,EAAEC,IAAe,EAAE;EAC7E,MAAMC,SAAS,GAAG,IAAAC,6BAAkB,EAClCH,IAAI,CAACI,CAAC,CAAC,uCAAuC,CAAC,EAC/CH,IACF,CAAC;EACD,MAAMI,WAAW,GAAG,IAAAC,+BAAoB,EACtCN,IAAI,CAACI,CAAC,CAAC,wCAAwC,CAAC,EAChDH,IACF,CAAC;EACD,MAAMM,QAAQ,GAAGP,IAAI,CAACI,CAAC,CAAC,iDAAiD,CAAC;EAE1E,OAAO;IACL,GAAG,IAAAI,gCAAoB,EAACR,IAAI,CAAC;IAC7BS,QAAQ,EAAE,MAAAA,CAAA;MAAA,IAAAC,qBAAA;MAAA,OAAY,EAAAA,qBAAA,GAAC,MAAMR,SAAS,CAACO,QAAQ,CAAC,CAAC,qBAA3BC,qBAAA,CAA8BC,WAAW,KAAI,EAAE;IAAA;IACrEC,UAAU,EAAEA,CAAA,KAAMV,SAAS,CAACU,UAAU,CAAC,CAAC;IACxCC,QAAQ,EAAEA,CAAA,KAAMX,SAAS,CAACY,SAAS,CAAC,OAAO,CAAC;IAC5CC,eAAe,EAAEA,CAAA,KAAMb,SAAS,CAACc,gBAAgB,CAAC,CAAC;IACnDC,WAAW,EAAEA,CAAA,KAAMZ,WAAW,CAACY,WAAW,CAAC,CAAC;IAC5CC,gBAAgB,EAAEA,CAAA,KAAMb,WAAW,CAACa,gBAAgB,CAAC,CAAC;IACtDC,QAAQ,EAAEA,CAAA,KAAMd,WAAW,CAACc,QAAQ,CAAC,CAAC;IACtCC,YAAY,EAAEA,CAAA,KAAMf,WAAW,CAACgB,WAAW,CAAC,CAAC;IAC7CC,WAAW,EAAEA,CAAA,KAAMjB,WAAW,CAACiB,WAAW,CAAC,CAAC;IAC5CC,eAAe,EAAEA,CAAA,KAAMhB,QAAQ,CAACiB,MAAM,CAAC,CAAC;IACxCC,UAAU,EAAEA,CAAA,KAAMlB,QAAQ,CAACmB,KAAK,CAAC,CAAC;IAClCC,qBAAqB,EAAEA,CAAA,KAAMpB,QAAQ,CAACqB,IAAI,CAAC,aAAa,CAAC;IACzDC,YAAY,EAAGC,IAAY,IAAKvB,QAAQ,CAACwB,UAAU,CAACD,IAAI,CAAC;IACzD;IACA;IACAE,iBAAiB,EAAE,MAAAA,CAAA,KACjB,CACE,MAAMhC,IAAI,CAACI,CAAC,CAAC,0CAA0C,CAAC,CAAC6B,SAAS,CAAC,CAAC,EACpEC,aAAa,CAAC,IAAIC,KAAK,CAAC,MAAM,CAAC;EACrC,CAAC;AACH","ignoreList":[]}
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