@wix/patterns-fields 1.115.0 → 1.117.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 (447) hide show
  1. package/dist/cjs/assets/locale/messages_ar.json +2 -0
  2. package/dist/cjs/assets/locale/messages_bg.json +2 -0
  3. package/dist/cjs/assets/locale/messages_ca.json +2 -0
  4. package/dist/cjs/assets/locale/messages_cs.json +2 -0
  5. package/dist/cjs/assets/locale/messages_da.json +2 -0
  6. package/dist/cjs/assets/locale/messages_de.json +2 -0
  7. package/dist/cjs/assets/locale/messages_el.json +2 -0
  8. package/dist/cjs/assets/locale/messages_en.json +2 -0
  9. package/dist/cjs/assets/locale/messages_es.json +2 -0
  10. package/dist/cjs/assets/locale/messages_fi.json +2 -0
  11. package/dist/cjs/assets/locale/messages_fr.json +2 -0
  12. package/dist/cjs/assets/locale/messages_he.json +2 -0
  13. package/dist/cjs/assets/locale/messages_hi.json +2 -0
  14. package/dist/cjs/assets/locale/messages_hu.json +2 -0
  15. package/dist/cjs/assets/locale/messages_id.json +2 -0
  16. package/dist/cjs/assets/locale/messages_it.json +2 -0
  17. package/dist/cjs/assets/locale/messages_ja.json +2 -0
  18. package/dist/cjs/assets/locale/messages_ko.json +2 -0
  19. package/dist/cjs/assets/locale/messages_lt.json +2 -0
  20. package/dist/cjs/assets/locale/messages_ms.json +2 -0
  21. package/dist/cjs/assets/locale/messages_nl.json +2 -0
  22. package/dist/cjs/assets/locale/messages_no.json +2 -0
  23. package/dist/cjs/assets/locale/messages_pl.json +2 -0
  24. package/dist/cjs/assets/locale/messages_pt.json +2 -0
  25. package/dist/cjs/assets/locale/messages_ro.json +2 -0
  26. package/dist/cjs/assets/locale/messages_ru.json +2 -0
  27. package/dist/cjs/assets/locale/messages_sk.json +2 -0
  28. package/dist/cjs/assets/locale/messages_sl.json +2 -0
  29. package/dist/cjs/assets/locale/messages_sv.json +2 -0
  30. package/dist/cjs/assets/locale/messages_th.json +2 -0
  31. package/dist/cjs/assets/locale/messages_tl.json +2 -0
  32. package/dist/cjs/assets/locale/messages_tr.json +2 -0
  33. package/dist/cjs/assets/locale/messages_uk.json +2 -0
  34. package/dist/cjs/assets/locale/messages_vi.json +2 -0
  35. package/dist/cjs/assets/locale/messages_zh.json +2 -0
  36. package/dist/cjs/assets/locale/version_file +1 -1
  37. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  38. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  39. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  40. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  41. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  42. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  43. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  44. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  45. package/dist/cjs/components/audio/cell-audio-edit.js +10 -11
  46. package/dist/cjs/components/audio/cell-audio-edit.js.map +1 -1
  47. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  48. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  49. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  50. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  51. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  52. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  53. package/dist/cjs/components/document/cell-document-edit.js +25 -26
  54. package/dist/cjs/components/document/cell-document-edit.js.map +1 -1
  55. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  56. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  57. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  58. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  59. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js +3 -3
  60. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -1
  61. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  62. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  63. package/dist/cjs/components/image/cell-image-edit.js +22 -23
  64. package/dist/cjs/components/image/cell-image-edit.js.map +1 -1
  65. package/dist/cjs/components/image/image-preview-popover.js +77 -0
  66. package/dist/cjs/components/image/image-preview-popover.js.map +1 -0
  67. package/dist/cjs/components/image/image-thumbnail.js +14 -12
  68. package/dist/cjs/components/image/image-thumbnail.js.map +1 -1
  69. package/dist/cjs/components/image/image-view.js +9 -57
  70. package/dist/cjs/components/image/image-view.js.map +1 -1
  71. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  72. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  73. package/dist/cjs/components/index.js +6 -0
  74. package/dist/cjs/components/index.js.map +1 -1
  75. package/dist/cjs/components/media-control/cell-media-edit-shell.js +19 -31
  76. package/dist/cjs/components/media-control/cell-media-edit-shell.js.map +1 -1
  77. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  78. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  79. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  80. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  81. package/dist/cjs/components/media-control/use-cell-media-edit.js +51 -23
  82. package/dist/cjs/components/media-control/use-cell-media-edit.js.map +1 -1
  83. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  84. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  85. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  86. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  87. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  88. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  89. package/dist/cjs/components/media-image-field/cell-media-image-edit.js +530 -0
  90. package/dist/cjs/components/media-image-field/cell-media-image-edit.js.map +1 -0
  91. package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css +63 -0
  92. package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js +33 -0
  93. package/dist/cjs/components/media-image-field/cell-media-image-edit.st.css.js.map +1 -0
  94. package/dist/cjs/components/media-image-field/form-media-image-field.js +180 -0
  95. package/dist/cjs/components/media-image-field/form-media-image-field.js.map +1 -0
  96. package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js +34 -0
  97. package/dist/cjs/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -0
  98. package/dist/cjs/components/media-image-field/form-media-image-input.js +64 -0
  99. package/dist/cjs/components/media-image-field/form-media-image-input.js.map +1 -0
  100. package/dist/cjs/components/media-image-field/index.js +28 -0
  101. package/dist/cjs/components/media-image-field/index.js.map +1 -0
  102. package/dist/cjs/components/media-image-field/media-image-view.js +114 -0
  103. package/dist/cjs/components/media-image-field/media-image-view.js.map +1 -0
  104. package/dist/cjs/components/media-image-field/media-image-view.st.css +16 -0
  105. package/dist/cjs/components/media-image-field/media-image-view.st.css.js +27 -0
  106. package/dist/cjs/components/media-image-field/media-image-view.st.css.js.map +1 -0
  107. package/dist/cjs/components/media-image-field/media-image-view.uni.driver.js +18 -0
  108. package/dist/cjs/components/media-image-field/media-image-view.uni.driver.js.map +1 -0
  109. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  110. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  111. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  112. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  113. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  114. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  115. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  116. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  117. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  118. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  119. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  120. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  121. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  122. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  123. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  124. 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
  125. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  126. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  127. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  128. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  129. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  130. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  131. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  132. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  133. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  134. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  135. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  136. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  137. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  138. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  139. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  140. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  141. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  142. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  143. package/dist/cjs/components/text/cell-text-input.js +43 -27
  144. package/dist/cjs/components/text/cell-text-input.js.map +1 -1
  145. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  146. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  147. package/dist/cjs/services/translations.js.map +1 -1
  148. package/dist/cjs/styles.global.css +1 -1
  149. package/dist/cjs/types/index.js +6 -0
  150. package/dist/cjs/types/index.js.map +1 -1
  151. package/dist/cjs/types/media-image.js +4 -0
  152. package/dist/cjs/types/media-image.js.map +1 -0
  153. package/dist/cjs/utils/index.js +6 -0
  154. package/dist/cjs/utils/index.js.map +1 -1
  155. package/dist/cjs/utils/media-image-value.js +95 -0
  156. package/dist/cjs/utils/media-image-value.js.map +1 -0
  157. package/dist/esm/assets/locale/messages_ar.json +2 -0
  158. package/dist/esm/assets/locale/messages_bg.json +2 -0
  159. package/dist/esm/assets/locale/messages_ca.json +2 -0
  160. package/dist/esm/assets/locale/messages_cs.json +2 -0
  161. package/dist/esm/assets/locale/messages_da.json +2 -0
  162. package/dist/esm/assets/locale/messages_de.json +2 -0
  163. package/dist/esm/assets/locale/messages_el.json +2 -0
  164. package/dist/esm/assets/locale/messages_en.json +2 -0
  165. package/dist/esm/assets/locale/messages_es.json +2 -0
  166. package/dist/esm/assets/locale/messages_fi.json +2 -0
  167. package/dist/esm/assets/locale/messages_fr.json +2 -0
  168. package/dist/esm/assets/locale/messages_he.json +2 -0
  169. package/dist/esm/assets/locale/messages_hi.json +2 -0
  170. package/dist/esm/assets/locale/messages_hu.json +2 -0
  171. package/dist/esm/assets/locale/messages_id.json +2 -0
  172. package/dist/esm/assets/locale/messages_it.json +2 -0
  173. package/dist/esm/assets/locale/messages_ja.json +2 -0
  174. package/dist/esm/assets/locale/messages_ko.json +2 -0
  175. package/dist/esm/assets/locale/messages_lt.json +2 -0
  176. package/dist/esm/assets/locale/messages_ms.json +2 -0
  177. package/dist/esm/assets/locale/messages_nl.json +2 -0
  178. package/dist/esm/assets/locale/messages_no.json +2 -0
  179. package/dist/esm/assets/locale/messages_pl.json +2 -0
  180. package/dist/esm/assets/locale/messages_pt.json +2 -0
  181. package/dist/esm/assets/locale/messages_ro.json +2 -0
  182. package/dist/esm/assets/locale/messages_ru.json +2 -0
  183. package/dist/esm/assets/locale/messages_sk.json +2 -0
  184. package/dist/esm/assets/locale/messages_sl.json +2 -0
  185. package/dist/esm/assets/locale/messages_sv.json +2 -0
  186. package/dist/esm/assets/locale/messages_th.json +2 -0
  187. package/dist/esm/assets/locale/messages_tl.json +2 -0
  188. package/dist/esm/assets/locale/messages_tr.json +2 -0
  189. package/dist/esm/assets/locale/messages_uk.json +2 -0
  190. package/dist/esm/assets/locale/messages_vi.json +2 -0
  191. package/dist/esm/assets/locale/messages_zh.json +2 -0
  192. package/dist/esm/assets/locale/version_file +1 -1
  193. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  194. package/dist/esm/components/address/input/address-input.st.css.js.map +1 -1
  195. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  196. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  197. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  198. package/dist/esm/components/audio/cell-audio-edit.js +1 -1
  199. package/dist/esm/components/audio/cell-audio-edit.js.map +1 -1
  200. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  201. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  202. package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
  203. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  204. package/dist/esm/components/document/cell-document-edit.js +1 -1
  205. package/dist/esm/components/document/cell-document-edit.js.map +1 -1
  206. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  207. package/dist/esm/components/document/form-document-field.st.css.js.map +1 -1
  208. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  209. package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js +2 -2
  210. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  211. package/dist/esm/components/image/cell-image-edit.js +1 -1
  212. package/dist/esm/components/image/cell-image-edit.js.map +1 -1
  213. package/dist/esm/components/image/image-preview-popover.js +16 -0
  214. package/dist/esm/components/image/image-preview-popover.js.map +1 -0
  215. package/dist/esm/components/image/image-thumbnail.js +5 -6
  216. package/dist/esm/components/image/image-thumbnail.js.map +1 -1
  217. package/dist/esm/components/image/image-view.js +4 -13
  218. package/dist/esm/components/image/image-view.js.map +1 -1
  219. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  220. package/dist/esm/components/index.js +1 -0
  221. package/dist/esm/components/index.js.map +1 -1
  222. package/dist/esm/components/media-control/cell-media-edit-shell.js +5 -7
  223. package/dist/esm/components/media-control/cell-media-edit-shell.js.map +1 -1
  224. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  225. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  226. package/dist/esm/components/media-control/paste-url-button.st.css.js.map +1 -1
  227. package/dist/esm/components/media-control/use-cell-media-edit.js +48 -30
  228. package/dist/esm/components/media-control/use-cell-media-edit.js.map +1 -1
  229. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  230. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  231. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  232. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  233. package/dist/esm/components/media-image-field/cell-media-image-edit.js +159 -0
  234. package/dist/esm/components/media-image-field/cell-media-image-edit.js.map +1 -0
  235. package/dist/esm/components/media-image-field/cell-media-image-edit.st.css +63 -0
  236. package/dist/esm/components/media-image-field/cell-media-image-edit.st.css.js +15 -0
  237. package/dist/esm/components/media-image-field/cell-media-image-edit.st.css.js.map +1 -0
  238. package/dist/esm/components/media-image-field/form-media-image-field.js +59 -0
  239. package/dist/esm/components/media-image-field/form-media-image-field.js.map +1 -0
  240. package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js +27 -0
  241. package/dist/esm/components/media-image-field/form-media-image-field.uni.driver.js.map +1 -0
  242. package/dist/esm/components/media-image-field/form-media-image-input.js +40 -0
  243. package/dist/esm/components/media-image-field/form-media-image-input.js.map +1 -0
  244. package/dist/esm/components/media-image-field/index.js +5 -0
  245. package/dist/esm/components/media-image-field/index.js.map +1 -0
  246. package/dist/esm/components/media-image-field/media-image-view.js +34 -0
  247. package/dist/esm/components/media-image-field/media-image-view.js.map +1 -0
  248. package/dist/esm/components/media-image-field/media-image-view.st.css +16 -0
  249. package/dist/esm/components/media-image-field/media-image-view.st.css.js +15 -0
  250. package/dist/esm/components/media-image-field/media-image-view.st.css.js.map +1 -0
  251. package/dist/esm/components/media-image-field/media-image-view.uni.driver.js +14 -0
  252. package/dist/esm/components/media-image-field/media-image-view.uni.driver.js.map +1 -0
  253. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  254. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  255. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  256. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  257. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  258. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  259. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  260. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  261. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  262. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  263. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  264. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  265. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  266. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  267. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  268. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  269. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  270. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  271. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  272. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  273. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  274. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  275. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  276. package/dist/esm/components/text/cell-text-input.js +9 -13
  277. package/dist/esm/components/text/cell-text-input.js.map +1 -1
  278. package/dist/esm/components/text/text-view.st.css.js +2 -2
  279. package/dist/esm/components/text/text-view.st.css.js.map +1 -1
  280. package/dist/esm/styles.global.css +1 -1
  281. package/dist/esm/types/index.js +1 -0
  282. package/dist/esm/types/index.js.map +1 -1
  283. package/dist/esm/types/media-image.js +2 -0
  284. package/dist/esm/types/media-image.js.map +1 -0
  285. package/dist/esm/utils/index.js +1 -0
  286. package/dist/esm/utils/index.js.map +1 -1
  287. package/dist/esm/utils/media-image-value.js +65 -0
  288. package/dist/esm/utils/media-image-value.js.map +1 -0
  289. package/dist/types/components/address/input/address-input.st.css.d.ts.map +1 -1
  290. package/dist/types/components/audio/cell-audio-edit.d.ts.map +1 -1
  291. package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
  292. package/dist/types/components/document/cell-document-edit.d.ts.map +1 -1
  293. package/dist/types/components/document/form-document-field.st.css.d.ts.map +1 -1
  294. package/dist/types/components/image/cell-image-edit.d.ts.map +1 -1
  295. package/dist/types/components/image/image-preview-popover.d.ts +10 -0
  296. package/dist/types/components/image/image-preview-popover.d.ts.map +1 -0
  297. package/dist/types/components/image/image-thumbnail.d.ts +3 -0
  298. package/dist/types/components/image/image-thumbnail.d.ts.map +1 -1
  299. package/dist/types/components/image/image-view.d.ts.map +1 -1
  300. package/dist/types/components/index.d.ts +1 -0
  301. package/dist/types/components/index.d.ts.map +1 -1
  302. package/dist/types/components/media-control/cell-media-edit-shell.d.ts +1 -2
  303. package/dist/types/components/media-control/cell-media-edit-shell.d.ts.map +1 -1
  304. package/dist/types/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
  305. package/dist/types/components/media-control/use-cell-media-edit.d.ts +20 -4
  306. package/dist/types/components/media-control/use-cell-media-edit.d.ts.map +1 -1
  307. package/dist/types/components/media-gallery/form-media-gallery-field.st.css.d.ts.map +1 -1
  308. package/dist/types/components/media-image-field/cell-media-image-edit.d.ts +26 -0
  309. package/dist/types/components/media-image-field/cell-media-image-edit.d.ts.map +1 -0
  310. package/dist/types/components/media-image-field/cell-media-image-edit.st.css.d.ts +24 -0
  311. package/dist/types/components/media-image-field/cell-media-image-edit.st.css.d.ts.map +1 -0
  312. package/dist/types/components/media-image-field/form-media-image-field.d.ts +32 -0
  313. package/dist/types/components/media-image-field/form-media-image-field.d.ts.map +1 -0
  314. package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts +22 -0
  315. package/dist/types/components/media-image-field/form-media-image-field.uni.driver.d.ts.map +1 -0
  316. package/dist/types/components/media-image-field/form-media-image-input.d.ts +9 -0
  317. package/dist/types/components/media-image-field/form-media-image-input.d.ts.map +1 -0
  318. package/dist/types/components/media-image-field/index.d.ts +5 -0
  319. package/dist/types/components/media-image-field/index.d.ts.map +1 -0
  320. package/dist/types/components/media-image-field/media-image-view.d.ts +13 -0
  321. package/dist/types/components/media-image-field/media-image-view.d.ts.map +1 -0
  322. package/dist/types/components/media-image-field/media-image-view.st.css.d.ts +18 -0
  323. package/dist/types/components/media-image-field/media-image-view.st.css.d.ts.map +1 -0
  324. package/dist/types/components/media-image-field/media-image-view.uni.driver.d.ts +12 -0
  325. package/dist/types/components/media-image-field/media-image-view.uni.driver.d.ts.map +1 -0
  326. package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
  327. package/dist/types/components/multi-document/multi-document-input/form-multi-document.st.css.d.ts.map +1 -1
  328. package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
  329. package/dist/types/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.d.ts.map +1 -1
  330. package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
  331. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
  332. package/dist/types/components/text/cell-text-input.d.ts +1 -1
  333. package/dist/types/components/text/cell-text-input.d.ts.map +1 -1
  334. package/dist/types/components/text/text-view.st.css.d.ts.map +1 -1
  335. package/dist/types/services/translations.d.ts +1 -1
  336. package/dist/types/services/translations.d.ts.map +1 -1
  337. package/dist/types/types/index.d.ts +1 -0
  338. package/dist/types/types/index.d.ts.map +1 -1
  339. package/dist/types/types/media-image.d.ts +23 -0
  340. package/dist/types/types/media-image.d.ts.map +1 -0
  341. package/dist/types/utils/index.d.ts +1 -0
  342. package/dist/types/utils/index.d.ts.map +1 -1
  343. package/dist/types/utils/media-image-value.d.ts +31 -0
  344. package/dist/types/utils/media-image-value.d.ts.map +1 -0
  345. package/package.json +4 -4
  346. package/src/__tests__/components/media-image-field/form-media-image-input.spec.tsx +130 -0
  347. package/src/__tests__/components/media-image-field/media-image-view.spec.tsx +51 -0
  348. package/src/__tests__/components/text/cell-text-input.spec.tsx +27 -0
  349. package/src/__tests__/utils/media-image-value.spec.ts +153 -0
  350. package/src/assets/locale/messages_ar.json +2 -0
  351. package/src/assets/locale/messages_bg.json +2 -0
  352. package/src/assets/locale/messages_ca.json +2 -0
  353. package/src/assets/locale/messages_cs.json +2 -0
  354. package/src/assets/locale/messages_da.json +2 -0
  355. package/src/assets/locale/messages_de.json +2 -0
  356. package/src/assets/locale/messages_el.json +2 -0
  357. package/src/assets/locale/messages_en.json +2 -0
  358. package/src/assets/locale/messages_es.json +2 -0
  359. package/src/assets/locale/messages_fi.json +2 -0
  360. package/src/assets/locale/messages_fr.json +2 -0
  361. package/src/assets/locale/messages_he.json +2 -0
  362. package/src/assets/locale/messages_hi.json +2 -0
  363. package/src/assets/locale/messages_hu.json +2 -0
  364. package/src/assets/locale/messages_id.json +2 -0
  365. package/src/assets/locale/messages_it.json +2 -0
  366. package/src/assets/locale/messages_ja.json +2 -0
  367. package/src/assets/locale/messages_ko.json +2 -0
  368. package/src/assets/locale/messages_lt.json +2 -0
  369. package/src/assets/locale/messages_ms.json +2 -0
  370. package/src/assets/locale/messages_nl.json +2 -0
  371. package/src/assets/locale/messages_no.json +2 -0
  372. package/src/assets/locale/messages_pl.json +2 -0
  373. package/src/assets/locale/messages_pt.json +2 -0
  374. package/src/assets/locale/messages_ro.json +2 -0
  375. package/src/assets/locale/messages_ru.json +2 -0
  376. package/src/assets/locale/messages_sk.json +2 -0
  377. package/src/assets/locale/messages_sl.json +2 -0
  378. package/src/assets/locale/messages_sv.json +2 -0
  379. package/src/assets/locale/messages_th.json +2 -0
  380. package/src/assets/locale/messages_tl.json +2 -0
  381. package/src/assets/locale/messages_tr.json +2 -0
  382. package/src/assets/locale/messages_uk.json +2 -0
  383. package/src/assets/locale/messages_vi.json +2 -0
  384. package/src/assets/locale/messages_zh.json +2 -0
  385. package/src/assets/locale/version_file +1 -1
  386. package/src/components/address/input/address-input.st.css.ts +2 -2
  387. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  388. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  389. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  390. package/src/components/audio/cell-audio-edit.tsx +0 -1
  391. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  392. package/src/components/color-view/color-view.st.css.ts +2 -2
  393. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  394. package/src/components/document/cell-document-edit.tsx +0 -1
  395. package/src/components/document/form-document-field.st.css.ts +2 -2
  396. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  397. package/src/components/field-validation-settings/field-validation-settings-input.st.css.ts +2 -2
  398. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  399. package/src/components/image/cell-image-edit.tsx +0 -1
  400. package/src/components/image/image-preview-popover.tsx +52 -0
  401. package/src/components/image/image-thumbnail.tsx +12 -7
  402. package/src/components/image/image-view.tsx +16 -42
  403. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  404. package/src/components/index.ts +1 -0
  405. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  406. package/src/components/media-control/cell-media-edit-shell.tsx +7 -20
  407. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  408. package/src/components/media-control/use-cell-media-edit.ts +98 -28
  409. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  410. package/src/components/media-image/media-image.st.css.ts +3 -3
  411. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  412. package/src/components/media-image-field/cell-media-image-edit.st.css +63 -0
  413. package/src/components/media-image-field/cell-media-image-edit.st.css.ts +25 -0
  414. package/src/components/media-image-field/cell-media-image-edit.tsx +402 -0
  415. package/src/components/media-image-field/form-media-image-field.tsx +165 -0
  416. package/src/components/media-image-field/form-media-image-field.uni.driver.ts +42 -0
  417. package/src/components/media-image-field/form-media-image-input.tsx +56 -0
  418. package/src/components/media-image-field/index.ts +4 -0
  419. package/src/components/media-image-field/media-image-view.st.css +16 -0
  420. package/src/components/media-image-field/media-image-view.st.css.ts +25 -0
  421. package/src/components/media-image-field/media-image-view.tsx +95 -0
  422. package/src/components/media-image-field/media-image-view.uni.driver.ts +18 -0
  423. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  424. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  425. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  426. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  427. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  428. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  429. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  430. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  431. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  432. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  433. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  434. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  435. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  436. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  437. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  438. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  439. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  440. package/src/components/text/cell-text-input.tsx +20 -18
  441. package/src/components/text/text-view.st.css.ts +2 -2
  442. package/src/services/translations.ts +2 -0
  443. package/src/styles.global.css +1 -1
  444. package/src/types/index.ts +1 -0
  445. package/src/types/media-image.ts +24 -0
  446. package/src/utils/index.ts +1 -0
  447. package/src/utils/media-image-value.ts +99 -0
@@ -20,6 +20,9 @@ export interface ImageThumbnailProps {
20
20
  dataHook?: string;
21
21
  showVideoIndicator?: boolean;
22
22
  size?: number;
23
+ width?: string;
24
+ height?: string;
25
+ borderRadius?: string;
23
26
  }
24
27
 
25
28
  export const ImageThumbnail: React.FC<ImageThumbnailProps> = ({
@@ -31,20 +34,22 @@ export const ImageThumbnail: React.FC<ImageThumbnailProps> = ({
31
34
  dataHook,
32
35
  showVideoIndicator = true,
33
36
  size = 36,
37
+ width = `${size}px`,
38
+ height = `${size}px`,
39
+ borderRadius = '3px',
34
40
  }) => {
35
41
  const value = getImageSource(imageValue);
36
42
  const src = value ? mediaURItoImageURL(value, ThumbnailSize.S) : undefined;
37
43
  const overlaySize = size <= 24 ? 'tiny' : 'small';
38
- const px = `${size}px`;
39
44
 
40
45
  return (
41
46
  <div
42
47
  data-hook={dataHook}
43
48
  data-empty={!value || undefined}
44
49
  style={{
45
- width: px,
46
- height: px,
47
- borderRadius: '3px',
50
+ width,
51
+ height,
52
+ borderRadius,
48
53
  flexShrink: 0,
49
54
  position: 'relative',
50
55
  }}
@@ -53,11 +58,11 @@ export const ImageThumbnail: React.FC<ImageThumbnailProps> = ({
53
58
  src={src}
54
59
  alt=""
55
60
  suspended
56
- borderRadius="3px"
61
+ borderRadius={borderRadius}
57
62
  transparent
58
63
  size={ThumbnailSize.S}
59
- width={px}
60
- height={px}
64
+ width={width}
65
+ height={height}
61
66
  onLoad={onLoad}
62
67
  onError={onError}
63
68
  onMouseEnter={onMouseEnter}
@@ -1,8 +1,7 @@
1
1
  import React, { useState, useCallback } from 'react';
2
- import { Box, Popover } from '@wix/design-system';
3
- import { mediaURItoImageURL, ThumbnailSize } from '../../auto-field-types';
2
+ import { Box } from '@wix/design-system';
4
3
  import { getImageSource, type ImageSource } from '../../utils/get-image-source';
5
- import { MediaImage } from '../media-image';
4
+ import { ImagePreviewPopover } from './image-preview-popover';
6
5
  import { ImageThumbnail } from './image-thumbnail';
7
6
 
8
7
  export interface ImageViewProps {
@@ -32,46 +31,21 @@ export const ImageView: React.FC<ImageViewProps> = ({
32
31
  >
33
32
  <Box minWidth="0" style={{ flex: 1 }}>
34
33
  {value ? (
35
- <Popover
36
- showArrow={false}
37
- shown={isPreviewShown}
38
- appendTo="viewport"
39
- placement="bottom-start"
40
- showDelay={300}
41
- moveBy={{ y: 4, x: 0 }}
42
- zIndex={9999}
43
- fluid
44
- >
45
- <Popover.Element>
46
- <ImageThumbnail
47
- value={value}
48
- size={size}
49
- dataHook="image-thumbnail"
50
- onMouseEnter={showPreview}
51
- onMouseLeave={hidePreview}
52
- />
53
- </Popover.Element>
54
- <Popover.Content>
55
- <Box
56
- width="204px"
57
- style={{
58
- borderRadius: '3px',
59
- overflow: 'hidden',
60
- lineHeight: 0,
61
- }}
62
- >
63
- <MediaImage
64
- src={mediaURItoImageURL(value, ThumbnailSize.L)}
65
- alt=""
66
- fit="contain"
67
- transparent
68
- size={ThumbnailSize.L}
69
- />
70
- </Box>
71
- </Popover.Content>
72
- </Popover>
34
+ <ImagePreviewPopover src={value} shown={isPreviewShown} fluid>
35
+ <ImageThumbnail
36
+ value={value}
37
+ size={size}
38
+ dataHook="image-thumbnail"
39
+ onMouseEnter={showPreview}
40
+ onMouseLeave={hidePreview}
41
+ />
42
+ </ImagePreviewPopover>
73
43
  ) : (
74
- <ImageThumbnail value={value} size={size} dataHook="image-thumbnail" />
44
+ <ImageThumbnail
45
+ value={value}
46
+ size={size}
47
+ dataHook="image-thumbnail"
48
+ />
75
49
  )}
76
50
  </Box>
77
51
  </Box>
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "thumbnailreplaceoverlay1352123798";
8
+ var _namespace_ = "thumbnailreplaceoverlay1763365333";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"thumbnailreplaceoverlay1352123798__root","icon":"thumbnailreplaceoverlay1352123798__icon"};
16
+ export var classes = {"root":"thumbnailreplaceoverlay1763365333__root","icon":"thumbnailreplaceoverlay1763365333__icon"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -23,5 +23,6 @@ export * from './boolean';
23
23
  export * from './number-input';
24
24
  export * from './url';
25
25
  export * from './image';
26
+ export * from './media-image-field';
26
27
  export * from './reference';
27
28
  export * from './field-validation-settings';
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmediaeditshell2355752670";
8
+ var _namespace_ = "cellmediaeditshell4153330898";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmediaeditshell2355752670__root"};
16
+ export var classes = {"root":"cellmediaeditshell4153330898__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -20,12 +20,11 @@ export interface CellMediaEditShellProps {
20
20
  | 'handleContainerBlur'
21
21
  | 'pasteUrlForm'
22
22
  >;
23
- /** Current cell value — forwarded to PasteURLForm as the pre-filled value. */
24
- value: string | null;
25
23
  /** Which validator/placeholder strings the PasteURLForm should use. */
26
24
  fieldType: MediaFieldType;
27
25
  /** Optional gap between the primary slot and the secondary actions. */
28
26
  gap?: BoxCssSizingProperty;
27
+ padding?: BoxCssSizingProperty;
29
28
  /** Inner content — typically two slots: primary cell content + secondary actions. */
30
29
  children: React.ReactNode;
31
30
  }
@@ -40,9 +39,9 @@ export interface CellMediaEditShellProps {
40
39
  export const CellMediaEditShell: React.FC<CellMediaEditShellProps> = ({
41
40
  dataHook,
42
41
  mediaEdit,
43
- value,
44
42
  fieldType,
45
43
  gap,
44
+ padding = '0 8px',
46
45
  children,
47
46
  }) => {
48
47
  const {
@@ -53,20 +52,8 @@ export const CellMediaEditShell: React.FC<CellMediaEditShellProps> = ({
53
52
  pasteUrlForm,
54
53
  } = mediaEdit;
55
54
 
56
- if (loading) {
57
- return (
58
- <Box
59
- dataHook={dataHook}
60
- verticalAlign="middle"
61
- width="100%"
62
- height="100%"
63
- padding="0 8px"
64
- >
65
- <Loader dataHook="loader" size="tiny" />
66
- </Box>
67
- );
68
- }
69
-
55
+ // The loader renders inside the container: `useCellEditKeyboard` attaches
56
+ // its key listener to the container element once.
70
57
  return (
71
58
  <div
72
59
  ref={containerRef}
@@ -79,16 +66,16 @@ export const CellMediaEditShell: React.FC<CellMediaEditShellProps> = ({
79
66
  align="space-between"
80
67
  verticalAlign="middle"
81
68
  height="100%"
82
- padding="0 8px"
69
+ padding={loading ? '0 8px' : padding}
83
70
  gap={gap}
84
71
  style={{ boxSizing: 'border-box' }}
85
72
  >
86
- {children}
73
+ {loading ? <Loader dataHook="loader" size="tiny" /> : children}
87
74
  </Box>
88
75
 
89
76
  <PasteURLForm
90
77
  title={pasteUrlForm.title}
91
- value={value ?? undefined}
78
+ value={pasteUrlForm.value}
92
79
  show={pasteUrlForm.isOpen}
93
80
  closeModal={pasteUrlForm.handleClose}
94
81
  onSave={pasteUrlForm.onSave}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "pasteurlbutton3327095583";
8
+ var _namespace_ = "pasteurlbutton531298721";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"pasteurlbutton3327095583__root","iconButtonTooltip":"pasteurlbutton3327095583__iconButtonTooltip","iconButton":"pasteurlbutton3327095583__iconButton"};
16
+ export var classes = {"root":"pasteurlbutton531298721__root","iconButtonTooltip":"pasteurlbutton531298721__iconButtonTooltip","iconButton":"pasteurlbutton531298721__iconButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -1,17 +1,15 @@
1
- import { useCallback, useRef } from 'react';
2
- import React from 'react';
1
+ import React, { useCallback, useRef } from 'react';
3
2
 
4
3
  import { MEDIA_TYPES } from '../../utils/media-utils';
5
4
  import { useCellEditKeyboard } from '../../hooks';
6
5
 
7
6
  import { useMediaControl } from './use-media-control';
8
- import { useMediaHandlers } from './use-media-handlers';
9
7
  import { usePasteURLForm } from './use-paste-url-form';
10
8
 
11
- export interface UseCellMediaEditParams {
9
+ export interface UseCellMediaEditParams<V = string> {
12
10
  mediaType: MEDIA_TYPES;
13
- value: string | null;
14
- onChange: (value: string | null) => void;
11
+ value: V | null;
12
+ onChange: (value: V | null) => void;
15
13
  onCommit: () => void;
16
14
  onCancel?: () => void;
17
15
  /**
@@ -22,6 +20,20 @@ export interface UseCellMediaEditParams {
22
20
  inputRef?: React.MutableRefObject<{ focus: () => void } | null | undefined>;
23
21
  }
24
22
 
23
+ /** For a cell whose value is not the picked URI itself. */
24
+ export interface CellMediaValueOptions<V> {
25
+ /** The value for a media manager pick. `null` ignores the pick. */
26
+ fromPick: (uri: string, current: V | null) => V | null;
27
+ /** The value for a URL saved in the paste-URL form. */
28
+ fromUrl: (url: string, current: V | null) => V;
29
+ /**
30
+ * When `false`, a pick only changes the value and the cell commits later.
31
+ * Closing the media manager or the URL form without a value then cancels
32
+ * the edit only if the cell is still empty.
33
+ */
34
+ commitOnPick?: boolean;
35
+ }
36
+
25
37
  export interface UseCellMediaEditResult {
26
38
  containerRef: React.MutableRefObject<HTMLDivElement | null>;
27
39
  loading: boolean;
@@ -43,6 +55,8 @@ export interface UseCellMediaEditResult {
43
55
  pasteUrlForm: {
44
56
  isOpen: boolean;
45
57
  title: string;
58
+ /** The URL the form opens with. */
59
+ value?: string;
46
60
  onSave: (value: string) => void;
47
61
  /** onClose composed with onCancel — call from PasteURLForm.closeModal. */
48
62
  handleClose: () => void;
@@ -51,6 +65,8 @@ export interface UseCellMediaEditResult {
51
65
  handleContainerBlur: (e: React.FocusEvent) => void;
52
66
  }
53
67
 
68
+ const sameUri = (uri: string) => uri;
69
+
54
70
  /**
55
71
  * Shared state + handlers for single-value media cell edit components
56
72
  * (image / document / audio / video / …). Each consumer renders its own
@@ -58,6 +74,15 @@ export interface UseCellMediaEditResult {
58
74
  * usePasteURLForm, useCellEditKeyboard, and the standard onCommit/onCancel
59
75
  * dance.
60
76
  */
77
+ // Generic only so TS accepts it against the `unknown` implementation below.
78
+ export function useCellMediaEdit<V extends string>(
79
+ params: UseCellMediaEditParams<V>,
80
+ ): UseCellMediaEditResult;
81
+
82
+ export function useCellMediaEdit<V>(
83
+ params: UseCellMediaEditParams<V> & CellMediaValueOptions<V>,
84
+ ): UseCellMediaEditResult;
85
+
61
86
  export function useCellMediaEdit({
62
87
  mediaType,
63
88
  value,
@@ -66,41 +91,80 @@ export function useCellMediaEdit({
66
91
  onCancel,
67
92
  onStartEdit,
68
93
  inputRef,
69
- }: UseCellMediaEditParams): UseCellMediaEditResult {
94
+ fromPick = sameUri,
95
+ fromUrl = sameUri,
96
+ commitOnPick = true,
97
+ }: UseCellMediaEditParams<unknown> &
98
+ Partial<CellMediaValueOptions<unknown>>): UseCellMediaEditResult {
70
99
  const containerRef = useRef<HTMLDivElement | null>(null);
100
+ // The media manager and the URL form call back after they close, so they
101
+ // read the value from here rather than from the render that opened them.
102
+ const latestValue = useRef(value);
103
+ latestValue.current = value;
104
+ const applied = useRef(false);
105
+
106
+ const apply = useCallback(
107
+ (next: unknown) => {
108
+ applied.current = true;
109
+ // The URL form closes right after it saves, before the next render.
110
+ latestValue.current = next;
111
+ onChange(next);
112
+ if (commitOnPick) {
113
+ onCommit();
114
+ }
115
+ },
116
+ [onChange, onCommit, commitOnPick],
117
+ );
71
118
 
72
- const onMediaChange = useCallback(
119
+ const onPick = useCallback(
73
120
  (uri: string) => {
74
- onChange(uri);
75
- onCommit();
121
+ const next = fromPick(uri, latestValue.current);
122
+ if (next !== null) {
123
+ apply(next);
124
+ }
76
125
  },
77
- [onChange, onCommit],
126
+ [fromPick, apply],
127
+ );
128
+
129
+ const onUrlSave = useCallback(
130
+ (url: string) => apply(fromUrl(url, latestValue.current)),
131
+ [fromUrl, apply],
78
132
  );
79
133
 
80
134
  const { callMedia, downloadMedia, loading } = useMediaControl({
81
135
  mediaType,
82
- value: value ?? undefined,
83
- onChange: onMediaChange,
136
+ onChange: onPick,
84
137
  });
85
138
 
86
- const { handleReplace: handleCallMedia, handleDelete } = useMediaHandlers({
87
- value,
88
- callMedia,
89
- downloadMedia,
90
- onChange,
91
- onCommit,
92
- onStartEdit,
93
- onCancel,
94
- });
139
+ const handleCallMedia = useCallback(async () => {
140
+ onStartEdit?.();
141
+ applied.current = false;
142
+ await callMedia();
143
+ if (!applied.current && (commitOnPick || latestValue.current === null)) {
144
+ onCancel?.();
145
+ }
146
+ }, [onStartEdit, callMedia, commitOnPick, onCancel]);
95
147
 
96
- const { isOpen, title, onOpen, onClose, onSave } = usePasteURLForm({
97
- onChange: onMediaChange,
98
- });
148
+ const handleDelete = useCallback(() => {
149
+ onChange(null);
150
+ onCommit();
151
+ }, [onChange, onCommit]);
152
+
153
+ const {
154
+ isOpen,
155
+ title,
156
+ value: pasteUrlValue,
157
+ onOpen,
158
+ onClose,
159
+ onSave,
160
+ } = usePasteURLForm({ onChange: onUrlSave });
99
161
 
100
162
  const handleFormClose = useCallback(() => {
101
163
  onClose();
102
- onCancel?.();
103
- }, [onClose, onCancel]);
164
+ if (commitOnPick || latestValue.current === null) {
165
+ onCancel?.();
166
+ }
167
+ }, [onClose, commitOnPick, onCancel]);
104
168
 
105
169
  const startEditAndOpenPasteUrl = useCallback(
106
170
  (params: { title: string; value?: string }) => () => {
@@ -124,7 +188,13 @@ export function useCellMediaEdit({
124
188
  handleCallMedia,
125
189
  handleDelete,
126
190
  startEditAndOpenPasteUrl,
127
- pasteUrlForm: { isOpen, title, onSave, handleClose: handleFormClose },
191
+ pasteUrlForm: {
192
+ isOpen,
193
+ title,
194
+ value: pasteUrlValue,
195
+ onSave,
196
+ handleClose: handleFormClose,
197
+ },
128
198
  handleContainerFocus,
129
199
  handleContainerBlur,
130
200
  };
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmediagalleryfield1913190078";
8
+ var _namespace_ = "formmediagalleryfield903826005";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formmediagalleryfield1913190078__root","container":"formmediagalleryfield1913190078__container","viewBox":"formmediagalleryfield1913190078__viewBox","addItemWrapper":"formmediagalleryfield1913190078__addItemWrapper","addItem":"formmediagalleryfield1913190078__addItem","overlay":"formmediagalleryfield1913190078__overlay","image":"formmediagalleryfield1913190078__image","previewImage":"formmediagalleryfield1913190078__previewImage","previewVideo":"formmediagalleryfield1913190078__previewVideo"};
16
+ export var classes = {"root":"formmediagalleryfield903826005__root","container":"formmediagalleryfield903826005__container","viewBox":"formmediagalleryfield903826005__viewBox","addItemWrapper":"formmediagalleryfield903826005__addItemWrapper","addItem":"formmediagalleryfield903826005__addItem","overlay":"formmediagalleryfield903826005__overlay","image":"formmediagalleryfield903826005__image","previewImage":"formmediagalleryfield903826005__previewImage","previewVideo":"formmediagalleryfield903826005__previewVideo"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "mediaimage3055775166";
8
+ var _namespace_ = "mediaimage3328930349";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,12 +13,12 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"mediaimage3055775166__root"};
16
+ export var classes = {"root":"mediaimage3328930349__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
20
20
  export var stVars = {};
21
- export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage3055775166-from","to":"--mediaimage3055775166-to"};
21
+ export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage3328930349-from","to":"--mediaimage3328930349-to"};
22
22
 
23
23
 
24
24
 
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "overlay3480378917";
8
+ var _namespace_ = "overlay3008863944";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"overlay3480378917__root","iconOverlay":"overlay3480378917__iconOverlay"};
16
+ export var classes = {"root":"overlay3008863944__root","iconOverlay":"overlay3008863944__iconOverlay"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -0,0 +1,63 @@
1
+ @property st-global(--wds-color-fill-transparent-primary);
2
+ @property st-global(--wsr-color-D10);
3
+ @property st-global(--wds-image-border-radius-default);
4
+ @property st-global(--wds-space-100);
5
+
6
+ .view {
7
+ position: relative;
8
+ width: 100%;
9
+ height: 100%;
10
+ }
11
+
12
+ /* A zero-height strip along the cell's bottom edge, so the popover opens
13
+ under the cell. */
14
+ .anchor {
15
+ position: absolute;
16
+ left: 0;
17
+ right: 0;
18
+ bottom: 0;
19
+ height: 0;
20
+ }
21
+
22
+ .anchorBox {
23
+ width: 100%;
24
+ height: 0;
25
+ }
26
+
27
+ .popoverContent {
28
+ width: 288px;
29
+ box-sizing: border-box;
30
+ }
31
+
32
+ .image {
33
+ position: relative;
34
+ width: 180px;
35
+ height: 180px;
36
+ border-radius: var(--wds-image-border-radius-default, 8px);
37
+ overflow: hidden;
38
+ line-height: 0;
39
+ }
40
+
41
+ /* Shown on hover, and while a button inside has focus, so the actions stay
42
+ reachable by keyboard. */
43
+ .imageActions {
44
+ -st-states: menuOpen;
45
+ position: absolute;
46
+ inset: 0;
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ gap: var(--wds-space-100, 6px);
51
+ opacity: 0;
52
+ background: var(
53
+ --wds-color-fill-transparent-primary,
54
+ color-mix(in srgb, var(--wsr-color-D10, #000624) 66%, transparent)
55
+ );
56
+ transition: opacity 0.15s;
57
+ }
58
+
59
+ .image:hover .imageActions,
60
+ .imageActions:focus-within,
61
+ .imageActions:menuOpen {
62
+ opacity: 1;
63
+ }
@@ -0,0 +1,25 @@
1
+ // @ts-nocheck
2
+
3
+
4
+ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
+
6
+
7
+
8
+ var _namespace_ = "cellmediaimageedit1735372897";
9
+ var _style_ = classesRuntime.bind(null, _namespace_);
10
+
11
+ export var cssStates = statesRuntime.bind(null, _namespace_);
12
+ export var style: import("@stylable/runtime").STFunction = _style_;
13
+ export var st: import("@stylable/runtime").STFunction = _style_;
14
+
15
+ export var namespace = _namespace_;
16
+ export var classes = {"root":"cellmediaimageedit1735372897__root","view":"cellmediaimageedit1735372897__view","anchor":"cellmediaimageedit1735372897__anchor","anchorBox":"cellmediaimageedit1735372897__anchorBox","popoverContent":"cellmediaimageedit1735372897__popoverContent","image":"cellmediaimageedit1735372897__image","imageActions":"cellmediaimageedit1735372897__imageActions"};
17
+ export var keyframes = {};
18
+ export var layers = {};
19
+ export var containers = {};
20
+ export var stVars = {};
21
+ export var vars = {"wds-color-fill-transparent-primary":"--wds-color-fill-transparent-primary","wsr-color-D10":"--wsr-color-D10","wds-image-border-radius-default":"--wds-image-border-radius-default","wds-space-100":"--wds-space-100"};
22
+
23
+
24
+
25
+