@wix/ricos 11.20.4 → 11.20.6

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 (969) hide show
  1. package/css/all-plugins-viewer.css +161 -158
  2. package/css/plugin-audio-viewer.global.css +3 -3
  3. package/css/plugin-audio-viewer.global.inject.mjs +4 -4
  4. package/css/plugin-button-viewer.global.css +1 -1
  5. package/css/plugin-button-viewer.global.inject.mjs +2 -2
  6. package/css/plugin-card-viewer.global.css +1 -1
  7. package/css/plugin-card-viewer.global.inject.mjs +2 -2
  8. package/css/plugin-collapsible-list-viewer.global.css +1 -1
  9. package/css/plugin-collapsible-list-viewer.global.inject.mjs +2 -2
  10. package/css/plugin-divider-viewer.global.css +1 -1
  11. package/css/plugin-divider-viewer.global.inject.mjs +2 -2
  12. package/css/plugin-file-upload-viewer.global.css +1 -1
  13. package/css/plugin-file-upload-viewer.global.inject.mjs +2 -2
  14. package/css/plugin-gallery-viewer.global.css +1 -1
  15. package/css/plugin-gallery-viewer.global.inject.mjs +2 -2
  16. package/css/plugin-giphy-viewer.global.css +1 -1
  17. package/css/plugin-giphy-viewer.global.inject.mjs +2 -2
  18. package/css/plugin-hashtag-viewer.global.css +1 -1
  19. package/css/plugin-hashtag-viewer.global.inject.mjs +2 -2
  20. package/css/plugin-html-viewer.global.css +1 -1
  21. package/css/plugin-html-viewer.global.inject.mjs +2 -2
  22. package/css/plugin-image-viewer.global.css +1 -1
  23. package/css/plugin-image-viewer.global.inject.mjs +2 -2
  24. package/css/plugin-link-preview-viewer.global.css +2 -2
  25. package/css/plugin-link-preview-viewer.global.inject.mjs +3 -3
  26. package/css/plugin-link-viewer.global.css +1 -1
  27. package/css/plugin-link-viewer.global.inject.mjs +2 -2
  28. package/css/plugin-mentions-viewer.global.css +1 -1
  29. package/css/plugin-mentions-viewer.global.inject.mjs +2 -2
  30. package/css/plugin-paywall-viewer.global.css +1 -1
  31. package/css/plugin-paywall-viewer.global.inject.mjs +2 -2
  32. package/css/plugin-smart-block-viewer.global.css +1 -1
  33. package/css/plugin-smart-block-viewer.global.inject.mjs +2 -2
  34. package/css/plugin-social-polls-viewer.global.css +1 -1
  35. package/css/plugin-social-polls-viewer.global.inject.mjs +2 -2
  36. package/css/plugin-spoiler-viewer.global.css +1 -1
  37. package/css/plugin-spoiler-viewer.global.inject.mjs +2 -2
  38. package/css/plugin-table-viewer.global.css +3 -3
  39. package/css/plugin-table-viewer.global.inject.mjs +4 -4
  40. package/css/plugin-toc-viewer.global.css +1 -1
  41. package/css/plugin-toc-viewer.global.inject.mjs +2 -2
  42. package/css/plugin-vertical-embed-viewer.global.css +2 -2
  43. package/css/plugin-vertical-embed-viewer.global.inject.mjs +3 -3
  44. package/css/plugin-video-viewer.global.css +1 -1
  45. package/css/plugin-video-viewer.global.inject.mjs +2 -2
  46. package/css/ricos-viewer.global.css +1 -1
  47. package/css/ricos-viewer.global.inject.mjs +2 -2
  48. package/dist/cjs/_shared/dropdown-modal/dropdown-modal-scss.js +2 -2
  49. package/dist/cjs/_shared/dropdown-modal/dropdown-modal-scss.js.map +1 -1
  50. package/dist/cjs/_shared/figure/add-caption-button-scss.js +9 -9
  51. package/dist/cjs/_shared/figure/add-caption-button-scss.js.map +1 -1
  52. package/dist/cjs/_shared/figure/viewer-caption-scss.js +2 -2
  53. package/dist/cjs/_shared/figure/viewer-caption-scss.js.map +1 -1
  54. package/dist/cjs/_shared/figure/viewer-figure-scss.js +1 -1
  55. package/dist/cjs/_shared/figure/viewer-figure-scss.js.map +1 -1
  56. package/dist/cjs/_shared/get-lock-icon.js +25 -0
  57. package/dist/cjs/_shared/get-lock-icon.js.map +7 -0
  58. package/dist/cjs/_shared/list-item-divider/list-item-divider-scss.js +1 -1
  59. package/dist/cjs/_shared/list-item-divider/list-item-divider-scss.js.map +1 -1
  60. package/dist/cjs/_shared/list-item-select/list-item-select-scss.js +2 -2
  61. package/dist/cjs/_shared/list-item-select/list-item-select-scss.js.map +1 -1
  62. package/dist/cjs/_shared/list-item-toggle/list-item-toggle-scss.js +3 -3
  63. package/dist/cjs/_shared/list-item-toggle/list-item-toggle-scss.js.map +1 -1
  64. package/dist/cjs/_shared/overlay-hoc/overlay-hoc-scss.js +1 -1
  65. package/dist/cjs/_shared/overlay-hoc/overlay-hoc-scss.js.map +1 -1
  66. package/dist/cjs/_shared/plugin-toolbar/separator/toolbar-button-separator-scss.js +2 -2
  67. package/dist/cjs/_shared/plugin-toolbar/separator/toolbar-button-separator-scss.js.map +1 -1
  68. package/dist/cjs/_shared/plugin-toolbar/url-link-button/url-link-button-scss.js +2 -2
  69. package/dist/cjs/_shared/plugin-toolbar/url-link-button/url-link-button-scss.js.map +1 -1
  70. package/dist/cjs/_shared/prompt-input-area/attachment-bar/attachment-bar-scss.js +7 -7
  71. package/dist/cjs/_shared/prompt-input-area/attachment-bar/attachment-bar-scss.js.map +1 -1
  72. package/dist/cjs/_shared/prompt-input-area/prompt-input-area-scss.js +13 -13
  73. package/dist/cjs/_shared/prompt-input-area/prompt-input-area-scss.js.map +1 -1
  74. package/dist/cjs/_shared/prompt-input-area/widget-prompt-input-area-scss.js +8 -8
  75. package/dist/cjs/_shared/prompt-input-area/widget-prompt-input-area-scss.js.map +1 -1
  76. package/dist/cjs/_shared/shape-select-modal/shape-select-modal-content-scss.js +7 -7
  77. package/dist/cjs/_shared/shape-select-modal/shape-select-modal-content-scss.js.map +1 -1
  78. package/dist/cjs/_shared/shape-view-renderer/shape-view-renderer-scss.js +2 -2
  79. package/dist/cjs/_shared/shape-view-renderer/shape-view-renderer-scss.js.map +1 -1
  80. package/dist/cjs/_shared/toolbar-button/toolbar-button-scss.js +3 -3
  81. package/dist/cjs/_shared/toolbar-button/toolbar-button-scss.js.map +1 -1
  82. package/dist/cjs/bundled-dependencies/ai-assistant-avatar.js +4 -4
  83. package/dist/cjs/bundled-dependencies/ai-assistant-avatar.js.map +1 -1
  84. package/dist/cjs/editor-common/statics/styles/general-scss.js +18 -18
  85. package/dist/cjs/editor-common/statics/styles/general-scss.js.map +1 -1
  86. package/dist/cjs/plugin-ai/ai-content-modal/ai-content-modal-scss.js +8 -8
  87. package/dist/cjs/plugin-ai/ai-content-modal/ai-content-modal-scss.js.map +1 -1
  88. package/dist/cjs/plugin-ai/ai-content-modal/feed/feed-scss.js +2 -2
  89. package/dist/cjs/plugin-ai/ai-content-modal/feed/feed-scss.js.map +1 -1
  90. package/dist/cjs/plugin-ai/ai-content-modal/no-selection-message/no-selection-message-scss.js +1 -1
  91. package/dist/cjs/plugin-ai/ai-content-modal/no-selection-message/no-selection-message-scss.js.map +1 -1
  92. package/dist/cjs/plugin-ai/ai-content-modal/text-cursor/text-cursor-scss.js +2 -2
  93. package/dist/cjs/plugin-ai/ai-content-modal/text-cursor/text-cursor-scss.js.map +1 -1
  94. package/dist/cjs/plugin-ai/ai-content-modal/textual-prompt-input-area/textual-prompt-input-area-scss.js +5 -5
  95. package/dist/cjs/plugin-ai/ai-content-modal/textual-prompt-input-area/textual-prompt-input-area-scss.js.map +1 -1
  96. package/dist/cjs/plugin-ai/ai-image-modal/ai-image-modal-scss.js +6 -6
  97. package/dist/cjs/plugin-ai/ai-image-modal/ai-image-modal-scss.js.map +1 -1
  98. package/dist/cjs/plugin-ai/ai-plus-button/ai-plus-button-scss.js +1 -1
  99. package/dist/cjs/plugin-ai/ai-plus-button/ai-plus-button-scss.js.map +1 -1
  100. package/dist/cjs/plugin-ai/error-message/error-message-scss.js +1 -1
  101. package/dist/cjs/plugin-ai/error-message/error-message-scss.js.map +1 -1
  102. package/dist/cjs/plugin-ai/prompt-input-area/prompt-input-area-scss.js +4 -4
  103. package/dist/cjs/plugin-ai/prompt-input-area/prompt-input-area-scss.js.map +1 -1
  104. package/dist/cjs/plugin-ai/toolbar/toolbar-button-scss.js +2 -2
  105. package/dist/cjs/plugin-ai/toolbar/toolbar-button-scss.js.map +1 -1
  106. package/dist/cjs/plugin-animation/animation-panel-scss.js +9 -9
  107. package/dist/cjs/plugin-animation/animation-panel-scss.js.map +1 -1
  108. package/dist/cjs/plugin-audio/statics/styles/audio-embed-scss.js +1 -1
  109. package/dist/cjs/plugin-audio/statics/styles/audio-embed-scss.js.map +1 -1
  110. package/dist/cjs/plugin-audio/statics/styles/audio-scss.js +21 -21
  111. package/dist/cjs/plugin-audio/statics/styles/audio-scss.js.map +1 -1
  112. package/dist/cjs/plugin-audio/statics/styles/icon-button-scss.js +1 -1
  113. package/dist/cjs/plugin-audio/statics/styles/icon-button-scss.js.map +1 -1
  114. package/dist/cjs/plugin-audio/statics/styles/settings-modal-scss.js +1 -1
  115. package/dist/cjs/plugin-audio/statics/styles/settings-modal-scss.js.map +1 -1
  116. package/dist/cjs/plugin-audio/statics/styles/sound-control-scss.js +2 -2
  117. package/dist/cjs/plugin-audio/statics/styles/sound-control-scss.js.map +1 -1
  118. package/dist/cjs/plugin-block-drag-handle/styles-scss.js +8 -8
  119. package/dist/cjs/plugin-block-drag-handle/styles-scss.js.map +1 -1
  120. package/dist/cjs/plugin-button/statics/styles/button-input-modal-scss.js +2 -2
  121. package/dist/cjs/plugin-button/statics/styles/button-input-modal-scss.js.map +1 -1
  122. package/dist/cjs/plugin-button/statics/styles/default-styles-scss.js +3 -3
  123. package/dist/cjs/plugin-button/statics/styles/default-styles-scss.js.map +1 -1
  124. package/dist/cjs/plugin-button/statics/styles/settings-component-scss.js +1 -1
  125. package/dist/cjs/plugin-button/statics/styles/settings-component-scss.js.map +1 -1
  126. package/dist/cjs/plugin-card/card-scss.js +19 -19
  127. package/dist/cjs/plugin-card/card-scss.js.map +1 -1
  128. package/dist/cjs/plugin-card/card-viewer-scss.js +6 -6
  129. package/dist/cjs/plugin-card/card-viewer-scss.js.map +1 -1
  130. package/dist/cjs/plugin-code-block/statics/styles/code-block-scss.js +6 -6
  131. package/dist/cjs/plugin-code-block/statics/styles/code-block-scss.js.map +1 -1
  132. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-component-scss.js +6 -6
  133. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-component-scss.js.map +1 -1
  134. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-pair-scss.js +18 -18
  135. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-pair-scss.js.map +1 -1
  136. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-settings-scss.js +2 -2
  137. package/dist/cjs/plugin-collapsible-list/statics/styles/collapsible-list-settings-scss.js.map +1 -1
  138. package/dist/cjs/plugin-collapsible-list/statics/styles/new-pair-button-scss.js +3 -3
  139. package/dist/cjs/plugin-collapsible-list/statics/styles/new-pair-button-scss.js.map +1 -1
  140. package/dist/cjs/plugin-divider/statics/styles/divider-viewer-scss.js +13 -13
  141. package/dist/cjs/plugin-divider/statics/styles/divider-viewer-scss.js.map +1 -1
  142. package/dist/cjs/plugin-divider/toolbar/modals/divider-design-panel-scss.js +1 -1
  143. package/dist/cjs/plugin-divider/toolbar/modals/divider-design-panel-scss.js.map +1 -1
  144. package/dist/cjs/plugin-emoji/modals/emoji-suggestions-modal-scss.js +1 -1
  145. package/dist/cjs/plugin-emoji/modals/emoji-suggestions-modal-scss.js.map +1 -1
  146. package/dist/cjs/plugin-figure/tiptap/caption-scss.js +3 -3
  147. package/dist/cjs/plugin-figure/tiptap/caption-scss.js.map +1 -1
  148. package/dist/cjs/plugin-figure/tiptap/figure-scss.js +3 -3
  149. package/dist/cjs/plugin-figure/tiptap/figure-scss.js.map +1 -1
  150. package/dist/cjs/plugin-file-upload/statics/styles/file-upload-viewer-scss.js +15 -15
  151. package/dist/cjs/plugin-file-upload/statics/styles/file-upload-viewer-scss.js.map +1 -1
  152. package/dist/cjs/plugin-gallery/media/create-gallery-media-url.js +4 -1
  153. package/dist/cjs/plugin-gallery/media/create-gallery-media-url.js.map +2 -2
  154. package/dist/cjs/plugin-gallery/media/normalize-gallery-items.js +6 -0
  155. package/dist/cjs/plugin-gallery/media/normalize-gallery-items.js.map +2 -2
  156. package/dist/cjs/plugin-gallery/modals/settings/gallery-settings-modal-scss.js +3 -3
  157. package/dist/cjs/plugin-gallery/modals/settings/gallery-settings-modal-scss.js.map +1 -1
  158. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/canonicalize-masonry-settings.js +3 -3
  159. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/canonicalize-masonry-settings.js.map +2 -2
  160. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/layout-controls-section/image-ratio-control-scss.js +6 -6
  161. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/layout-controls-section/image-ratio-control-scss.js.map +1 -1
  162. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/layout-controls-section/layout-controls-section.js.map +2 -2
  163. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/layout-controls-section/thumbnail-alignment-control-scss.js +5 -5
  164. package/dist/cjs/plugin-gallery/modals/settings/layout-settings/layout-controls-section/thumbnail-alignment-control-scss.js.map +1 -1
  165. package/dist/cjs/plugin-gallery/modals/settings/media-settings/media-list/sortable-item-scss.js +1 -1
  166. package/dist/cjs/plugin-gallery/modals/settings/media-settings/media-list/sortable-item-scss.js.map +1 -1
  167. package/dist/cjs/plugin-gallery/modals/settings/media-settings/media-list/sortable-list-scss.js +3 -3
  168. package/dist/cjs/plugin-gallery/modals/settings/media-settings/media-list/sortable-list-scss.js.map +1 -1
  169. package/dist/cjs/plugin-gallery/statics/styles/gallery-component-scss.js +1 -1
  170. package/dist/cjs/plugin-gallery/statics/styles/gallery-component-scss.js.map +1 -1
  171. package/dist/cjs/plugin-gallery/statics/styles/gallery-media-scss.js +21 -21
  172. package/dist/cjs/plugin-gallery/statics/styles/gallery-media-scss.js.map +1 -1
  173. package/dist/cjs/plugin-gallery/statics/styles/viewer-scss.js +1 -1
  174. package/dist/cjs/plugin-gallery/statics/styles/viewer-scss.js.map +1 -1
  175. package/dist/cjs/plugin-gallery/viewer/collage-groups.js +147 -0
  176. package/dist/cjs/plugin-gallery/viewer/collage-groups.js.map +7 -0
  177. package/dist/cjs/plugin-gallery/viewer/collage-rows.js +361 -0
  178. package/dist/cjs/plugin-gallery/viewer/collage-rows.js.map +7 -0
  179. package/dist/cjs/plugin-gallery/viewer/collage-styles.js +73 -0
  180. package/dist/cjs/plugin-gallery/viewer/collage-styles.js.map +7 -0
  181. package/dist/cjs/plugin-gallery/viewer/gallery-renderer.js +3 -1
  182. package/dist/cjs/plugin-gallery/viewer/gallery-renderer.js.map +2 -2
  183. package/dist/cjs/plugin-gallery/viewer/layout-collage-scss.js +31 -0
  184. package/dist/cjs/plugin-gallery/viewer/layout-collage-scss.js.map +7 -0
  185. package/dist/cjs/plugin-gallery/viewer/layout-collage.js +265 -0
  186. package/dist/cjs/plugin-gallery/viewer/layout-collage.js.map +7 -0
  187. package/dist/cjs/plugin-gallery/viewer/layout-column-scss.js +4 -4
  188. package/dist/cjs/plugin-gallery/viewer/layout-column-scss.js.map +1 -1
  189. package/dist/cjs/plugin-gallery/viewer/layout-fullsize-scss.js +4 -4
  190. package/dist/cjs/plugin-gallery/viewer/layout-fullsize-scss.js.map +1 -1
  191. package/dist/cjs/plugin-gallery/viewer/layout-grid-scss.js +2 -2
  192. package/dist/cjs/plugin-gallery/viewer/layout-grid-scss.js.map +1 -1
  193. package/dist/cjs/plugin-gallery/viewer/layout-masonry-scss.js +7 -7
  194. package/dist/cjs/plugin-gallery/viewer/layout-masonry-scss.js.map +1 -1
  195. package/dist/cjs/plugin-gallery/viewer/layout-panorama-scss.js +1 -1
  196. package/dist/cjs/plugin-gallery/viewer/layout-panorama-scss.js.map +1 -1
  197. package/dist/cjs/plugin-gallery/viewer/layout-slider-scss.js +6 -6
  198. package/dist/cjs/plugin-gallery/viewer/layout-slider-scss.js.map +1 -1
  199. package/dist/cjs/plugin-gallery/viewer/layout-thumbnail-scss.js +11 -11
  200. package/dist/cjs/plugin-gallery/viewer/layout-thumbnail-scss.js.map +1 -1
  201. package/dist/cjs/plugin-gallery/viewer/resolve-gallery-layout.js +14 -4
  202. package/dist/cjs/plugin-gallery/viewer/resolve-gallery-layout.js.map +2 -2
  203. package/dist/cjs/plugin-giphy/components/giphy-selector-scss.js +9 -9
  204. package/dist/cjs/plugin-giphy/components/giphy-selector-scss.js.map +1 -1
  205. package/dist/cjs/plugin-giphy/viewer/giphy-viewer-scss.js +4 -4
  206. package/dist/cjs/plugin-giphy/viewer/giphy-viewer-scss.js.map +1 -1
  207. package/dist/cjs/plugin-giphy/viewer/play-icon-scss.js +2 -2
  208. package/dist/cjs/plugin-giphy/viewer/play-icon-scss.js.map +1 -1
  209. package/dist/cjs/plugin-hashtag/statics/hashtag-scss.js +2 -2
  210. package/dist/cjs/plugin-hashtag/statics/hashtag-scss.js.map +1 -1
  211. package/dist/cjs/plugin-headings/dropdown/headings-dropdown-scss.js +5 -5
  212. package/dist/cjs/plugin-headings/dropdown/headings-dropdown-scss.js.map +1 -1
  213. package/dist/cjs/plugin-html/statics/styles/HtmlComponent-scss.js +2 -2
  214. package/dist/cjs/plugin-html/statics/styles/HtmlComponent-scss.js.map +1 -1
  215. package/dist/cjs/plugin-html/statics/styles/Iframe-scss.js +1 -1
  216. package/dist/cjs/plugin-html/statics/styles/Iframe-scss.js.map +1 -1
  217. package/dist/cjs/plugin-html/tiptap/ai-widget-scss.js +2 -2
  218. package/dist/cjs/plugin-html/tiptap/ai-widget-scss.js.map +1 -1
  219. package/dist/cjs/plugin-html/tiptap/loader-scss.js +9 -9
  220. package/dist/cjs/plugin-html/tiptap/loader-scss.js.map +1 -1
  221. package/dist/cjs/plugin-html/tiptap/preset-bar/preset-bar-scss.js +2 -2
  222. package/dist/cjs/plugin-html/tiptap/preset-bar/preset-bar-scss.js.map +1 -1
  223. package/dist/cjs/plugin-image/components/corner-radius-handles-scss.js +4 -4
  224. package/dist/cjs/plugin-image/components/corner-radius-handles-scss.js.map +1 -1
  225. package/dist/cjs/plugin-image/components/crop-edge-handles-scss.js +1 -1
  226. package/dist/cjs/plugin-image/components/crop-edge-handles-scss.js.map +1 -1
  227. package/dist/cjs/plugin-image/crop-overlay/crop-overlay-scss.js +14 -14
  228. package/dist/cjs/plugin-image/crop-overlay/crop-overlay-scss.js.map +1 -1
  229. package/dist/cjs/plugin-image/statics/styles/image-viewer-scss.js +20 -20
  230. package/dist/cjs/plugin-image/statics/styles/image-viewer-scss.js.map +1 -1
  231. package/dist/cjs/plugin-image/statics/styles/settings-modal-scss.js +1 -1
  232. package/dist/cjs/plugin-image/statics/styles/settings-modal-scss.js.map +1 -1
  233. package/dist/cjs/plugin-image/toolbar/shape-crop-modal-scss.js +4 -4
  234. package/dist/cjs/plugin-image/toolbar/shape-crop-modal-scss.js.map +1 -1
  235. package/dist/cjs/plugin-inline-ai/ai-selection-tooltip-scss.js +10 -10
  236. package/dist/cjs/plugin-inline-ai/ai-selection-tooltip-scss.js.map +1 -1
  237. package/dist/cjs/plugin-inline-ai/aria-avatar-row-scss.js +1 -1
  238. package/dist/cjs/plugin-inline-ai/aria-avatar-row-scss.js.map +1 -1
  239. package/dist/cjs/plugin-inline-ai/aria-surface-row-scss.js +4 -4
  240. package/dist/cjs/plugin-inline-ai/aria-surface-row-scss.js.map +1 -1
  241. package/dist/cjs/plugin-inline-ai/html-placeholder-scss.js +3 -3
  242. package/dist/cjs/plugin-inline-ai/html-placeholder-scss.js.map +1 -1
  243. package/dist/cjs/plugin-inline-ai/modal-scss.js +9 -9
  244. package/dist/cjs/plugin-inline-ai/modal-scss.js.map +1 -1
  245. package/dist/cjs/plugin-inline-ai/pending-widget-placeholder-scss.js +12 -12
  246. package/dist/cjs/plugin-inline-ai/pending-widget-placeholder-scss.js.map +1 -1
  247. package/dist/cjs/plugin-inline-ai/spinner-scss.js +2 -2
  248. package/dist/cjs/plugin-inline-ai/spinner-scss.js.map +1 -1
  249. package/dist/cjs/plugin-inline-ai/toolbar/toolbar-button-scss.js +2 -2
  250. package/dist/cjs/plugin-inline-ai/toolbar/toolbar-button-scss.js.map +1 -1
  251. package/dist/cjs/plugin-line-spacing/custom-spacing-editor-modal/custom-spacing-editor-modal-scss.js +1 -1
  252. package/dist/cjs/plugin-line-spacing/custom-spacing-editor-modal/custom-spacing-editor-modal-scss.js.map +1 -1
  253. package/dist/cjs/plugin-link/statics/link-viewer-scss.js +4 -4
  254. package/dist/cjs/plugin-link/statics/link-viewer-scss.js.map +1 -1
  255. package/dist/cjs/plugin-link/toolbar/anchor-link-button-scss.js +1 -1
  256. package/dist/cjs/plugin-link/toolbar/anchor-link-button-scss.js.map +1 -1
  257. package/dist/cjs/plugin-link-preview/statics/styles/insert-modal-scss.js +1 -1
  258. package/dist/cjs/plugin-link-preview/statics/styles/insert-modal-scss.js.map +1 -1
  259. package/dist/cjs/plugin-link-preview/statics/styles/link-preview-scss.js +18 -18
  260. package/dist/cjs/plugin-link-preview/statics/styles/link-preview-scss.js.map +1 -1
  261. package/dist/cjs/plugin-link-preview/statics/styles/settings-modal-scss.js +1 -1
  262. package/dist/cjs/plugin-link-preview/statics/styles/settings-modal-scss.js.map +1 -1
  263. package/dist/cjs/plugin-mentions/statics/mention-list-scss.js +3 -3
  264. package/dist/cjs/plugin-mentions/statics/mention-list-scss.js.map +1 -1
  265. package/dist/cjs/plugin-mentions/statics/mentions-scss.js +4 -4
  266. package/dist/cjs/plugin-mentions/statics/mentions-scss.js.map +1 -1
  267. package/dist/cjs/plugin-paywall/paywall-fallback-scss.js +1 -1
  268. package/dist/cjs/plugin-paywall/paywall-fallback-scss.js.map +1 -1
  269. package/dist/cjs/plugin-smart-block/components/cell-accessory-scss.js +22 -22
  270. package/dist/cjs/plugin-smart-block/components/cell-accessory-scss.js.map +1 -1
  271. package/dist/cjs/plugin-smart-block/components/cell-quote-glyph-scss.js +3 -3
  272. package/dist/cjs/plugin-smart-block/components/cell-quote-glyph-scss.js.map +1 -1
  273. package/dist/cjs/plugin-smart-block/components/cell-star-rating-scss.js +4 -4
  274. package/dist/cjs/plugin-smart-block/components/cell-star-rating-scss.js.map +1 -1
  275. package/dist/cjs/plugin-smart-block/components/cell-stat-scss.js +20 -20
  276. package/dist/cjs/plugin-smart-block/components/cell-stat-scss.js.map +1 -1
  277. package/dist/cjs/plugin-smart-block/components/circle-donut-scss.js +7 -7
  278. package/dist/cjs/plugin-smart-block/components/circle-donut-scss.js.map +1 -1
  279. package/dist/cjs/plugin-smart-block/components/shape-overlay-scss.js +1 -1
  280. package/dist/cjs/plugin-smart-block/components/shape-overlay-scss.js.map +1 -1
  281. package/dist/cjs/plugin-smart-block/components/smart-block-view-scss.js +50 -50
  282. package/dist/cjs/plugin-smart-block/components/smart-block-view-scss.js.map +1 -1
  283. package/dist/cjs/plugin-smart-block/components/stars-scss.js +8 -8
  284. package/dist/cjs/plugin-smart-block/components/stars-scss.js.map +1 -1
  285. package/dist/cjs/plugin-smart-block/modals/variant-picker-scss.js +7 -7
  286. package/dist/cjs/plugin-smart-block/modals/variant-picker-scss.js.map +1 -1
  287. package/dist/cjs/plugin-smart-block/tiptap/smart-block-editor-scss.js +13 -13
  288. package/dist/cjs/plugin-smart-block/tiptap/smart-block-editor-scss.js.map +1 -1
  289. package/dist/cjs/plugin-social-polls/components/image-upload/image-upload-scss.js +9 -9
  290. package/dist/cjs/plugin-social-polls/components/image-upload/image-upload-scss.js.map +1 -1
  291. package/dist/cjs/plugin-social-polls/components/insert-modal/insert-modal-scss.js +1 -1
  292. package/dist/cjs/plugin-social-polls/components/insert-modal/insert-modal-scss.js.map +1 -1
  293. package/dist/cjs/plugin-social-polls/components/poll-header/poll-header-scss.js +3 -3
  294. package/dist/cjs/plugin-social-polls/components/poll-header/poll-header-scss.js.map +1 -1
  295. package/dist/cjs/plugin-social-polls/components/poll-option/option-scss.js +23 -23
  296. package/dist/cjs/plugin-social-polls/components/poll-option/option-scss.js.map +1 -1
  297. package/dist/cjs/plugin-social-polls/components/poll-option/webview/option-webview-scss.js +24 -24
  298. package/dist/cjs/plugin-social-polls/components/poll-option/webview/option-webview-scss.js.map +1 -1
  299. package/dist/cjs/plugin-social-polls/components/poll-scss.js +19 -19
  300. package/dist/cjs/plugin-social-polls/components/poll-scss.js.map +1 -1
  301. package/dist/cjs/plugin-social-polls/components/settings-modal/settings-modal-scss.js +2 -2
  302. package/dist/cjs/plugin-social-polls/components/settings-modal/settings-modal-scss.js.map +1 -1
  303. package/dist/cjs/plugin-social-polls/components/text-field/text-field-scss.js +12 -12
  304. package/dist/cjs/plugin-social-polls/components/text-field/text-field-scss.js.map +1 -1
  305. package/dist/cjs/plugin-social-polls/components/voted-users/voted-users-scss.js +20 -20
  306. package/dist/cjs/plugin-social-polls/components/voted-users/voted-users-scss.js.map +1 -1
  307. package/dist/cjs/plugin-spoiler/statics/styles/spoiler-scss.js +18 -18
  308. package/dist/cjs/plugin-spoiler/statics/styles/spoiler-scss.js.map +1 -1
  309. package/dist/cjs/plugin-table/modals/table-grid-selector-scss.js +5 -5
  310. package/dist/cjs/plugin-table/modals/table-grid-selector-scss.js.map +1 -1
  311. package/dist/cjs/plugin-table/statics/styles/cell-scss.js +15 -15
  312. package/dist/cjs/plugin-table/statics/styles/cell-scss.js.map +1 -1
  313. package/dist/cjs/plugin-table/statics/styles/resizer-scss.js +18 -18
  314. package/dist/cjs/plugin-table/statics/styles/resizer-scss.js.map +1 -1
  315. package/dist/cjs/plugin-table/statics/styles/table-settings-modal-scss.js +1 -1
  316. package/dist/cjs/plugin-table/statics/styles/table-settings-modal-scss.js.map +1 -1
  317. package/dist/cjs/plugin-table/statics/styles/table-viewer-scss.js +6 -6
  318. package/dist/cjs/plugin-table/statics/styles/table-viewer-scss.js.map +1 -1
  319. package/dist/cjs/plugin-table/tiptap/decorations/tableHandles-scss.js +9 -9
  320. package/dist/cjs/plugin-table/tiptap/decorations/tableHandles-scss.js.map +1 -1
  321. package/dist/cjs/plugin-table/tiptap/plugins/table-scss.js +33 -33
  322. package/dist/cjs/plugin-table/tiptap/plugins/table-scss.js.map +1 -1
  323. package/dist/cjs/plugin-table/toolbar/modals/border-scope-selector-scss.js +2 -2
  324. package/dist/cjs/plugin-table/toolbar/modals/border-scope-selector-scss.js.map +1 -1
  325. package/dist/cjs/plugin-text-color/text-button-color-scss.js +2 -2
  326. package/dist/cjs/plugin-text-color/text-button-color-scss.js.map +1 -1
  327. package/dist/cjs/plugin-toc/toc-view-scss.js +2 -2
  328. package/dist/cjs/plugin-toc/toc-view-scss.js.map +1 -1
  329. package/dist/cjs/plugin-vertical-embed/components/Ribbon-scss.js +3 -3
  330. package/dist/cjs/plugin-vertical-embed/components/Ribbon-scss.js.map +1 -1
  331. package/dist/cjs/plugin-vertical-embed/components/card-content-scss.js +23 -23
  332. package/dist/cjs/plugin-vertical-embed/components/card-content-scss.js.map +1 -1
  333. package/dist/cjs/plugin-vertical-embed/components/card-scss.js +19 -19
  334. package/dist/cjs/plugin-vertical-embed/components/card-scss.js.map +1 -1
  335. package/dist/cjs/plugin-vertical-embed/components/description-scss.js +2 -2
  336. package/dist/cjs/plugin-vertical-embed/components/description-scss.js.map +1 -1
  337. package/dist/cjs/plugin-vertical-embed/modals/settings-modal-scss.js +2 -2
  338. package/dist/cjs/plugin-vertical-embed/modals/settings-modal-scss.js.map +1 -1
  339. package/dist/cjs/plugin-vertical-embed/tiptap/component-scss.js +10 -10
  340. package/dist/cjs/plugin-vertical-embed/tiptap/component-scss.js.map +1 -1
  341. package/dist/cjs/plugin-vertical-embed/toolbar/items-list-scss.js +1 -1
  342. package/dist/cjs/plugin-vertical-embed/toolbar/items-list-scss.js.map +1 -1
  343. package/dist/cjs/plugin-vertical-embed/viewer/vertical-embed-viewer-scss.js +6 -6
  344. package/dist/cjs/plugin-vertical-embed/viewer/vertical-embed-viewer-scss.js.map +1 -1
  345. package/dist/cjs/plugin-video/statics/styles/default-video-styles-scss.js +8 -8
  346. package/dist/cjs/plugin-video/statics/styles/default-video-styles-scss.js.map +1 -1
  347. package/dist/cjs/plugin-video/statics/styles/video-viewer-scss.js +3 -3
  348. package/dist/cjs/plugin-video/statics/styles/video-viewer-scss.js.map +1 -1
  349. package/dist/cjs/plugin-video/toolbar/embed-video-scss.js +1 -1
  350. package/dist/cjs/plugin-video/toolbar/embed-video-scss.js.map +1 -1
  351. package/dist/cjs/ricos-common-plugins/font-size/dropdown/font-size-dropdown-scss.js +1 -1
  352. package/dist/cjs/ricos-common-plugins/font-size/dropdown/font-size-dropdown-scss.js.map +1 -1
  353. package/dist/cjs/ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles-scss.js +8 -8
  354. package/dist/cjs/ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles-scss.js.map +1 -1
  355. package/dist/cjs/ricos-common-plugins/layout/layout-node-view.js +3 -13
  356. package/dist/cjs/ricos-common-plugins/layout/layout-node-view.js.map +2 -2
  357. package/dist/cjs/ricos-common-plugins/layout/layouts-scss.js +33 -33
  358. package/dist/cjs/ricos-common-plugins/layout/layouts-scss.js.map +2 -2
  359. package/dist/cjs/ricos-common-plugins/layout/section-dividers/section-dividers-panel-scss.js +2 -2
  360. package/dist/cjs/ricos-common-plugins/layout/section-dividers/section-dividers-panel-scss.js.map +1 -1
  361. package/dist/cjs/ricos-common-plugins/layout/section-dividers/section-dividers-scss.js +4 -4
  362. package/dist/cjs/ricos-common-plugins/layout/section-dividers/section-dividers-scss.js.map +1 -1
  363. package/dist/cjs/ricos-common-plugins/quick-actions/modal/modal-scss.js +2 -2
  364. package/dist/cjs/ricos-common-plugins/quick-actions/modal/modal-scss.js.map +1 -1
  365. package/dist/cjs/ricos-common-plugins/statics/styles-scss.js +18 -18
  366. package/dist/cjs/ricos-common-plugins/statics/styles-scss.js.map +1 -1
  367. package/dist/cjs/ricos-common-plugins/title/headings-scss.js +8 -8
  368. package/dist/cjs/ricos-common-plugins/title/headings-scss.js.map +1 -1
  369. package/dist/cjs/ricos-editor/statics/styles/editor-styles-scss.js +9 -9
  370. package/dist/cjs/ricos-editor/statics/styles/editor-styles-scss.js.map +1 -1
  371. package/dist/cjs/ricos-modals/statics/styles/drawer-scss.js +9 -9
  372. package/dist/cjs/ricos-modals/statics/styles/drawer-scss.js.map +1 -1
  373. package/dist/cjs/ricos-modals/statics/styles/fullscreen-scss.js +1 -1
  374. package/dist/cjs/ricos-modals/statics/styles/fullscreen-scss.js.map +1 -1
  375. package/dist/cjs/ricos-modals/statics/styles/popper-scss.js +3 -3
  376. package/dist/cjs/ricos-modals/statics/styles/popper-scss.js.map +1 -1
  377. package/dist/cjs/ricos-schema/next-schema/version.js +1 -1
  378. package/dist/cjs/ricos-schema/next-schema/version.js.map +1 -1
  379. package/dist/cjs/ricos-styles/statics/styles/style-presets-scss.js +4 -4
  380. package/dist/cjs/ricos-styles/statics/styles/style-presets-scss.js.map +1 -1
  381. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote-scss.js +3 -3
  382. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote-scss.js.map +1 -1
  383. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock-scss.js +3 -3
  384. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock-scss.js.map +1 -1
  385. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading-scss.js +9 -9
  386. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading-scss.js.map +1 -1
  387. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout-scss.js +10 -10
  388. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout-scss.js.map +1 -1
  389. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/lists/lists-scss.js +6 -6
  390. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/lists/lists-scss.js.map +1 -1
  391. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph-scss.js +4 -4
  392. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph-scss.js.map +1 -1
  393. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/link-viewer-wrapper-scss.js +2 -2
  394. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/link-viewer-wrapper-scss.js.map +1 -1
  395. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/plugin-scss.js +15 -15
  396. package/dist/cjs/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/plugin-scss.js.map +1 -1
  397. package/dist/cjs/ricos-viewer-next/modals/fullscreen/fullscreen-carousel.js +2 -1
  398. package/dist/cjs/ricos-viewer-next/modals/fullscreen/fullscreen-carousel.js.map +2 -2
  399. package/dist/cjs/ricos-viewer-next/modals/fullscreen/fullscreen-scss.js +12 -12
  400. package/dist/cjs/ricos-viewer-next/modals/fullscreen/fullscreen-scss.js.map +1 -1
  401. package/dist/cjs/ricos-viewer-next/statics/alignment-scss.js +16 -16
  402. package/dist/cjs/ricos-viewer-next/statics/alignment-scss.js.map +1 -1
  403. package/dist/cjs/ricos-viewer-next/statics/indentation-scss.js +7 -7
  404. package/dist/cjs/ricos-viewer-next/statics/indentation-scss.js.map +1 -1
  405. package/dist/cjs/ricos-viewer-next/statics/rich-content-viewer-scss.js +9 -9
  406. package/dist/cjs/ricos-viewer-next/statics/rich-content-viewer-scss.js.map +1 -1
  407. package/dist/cjs/ricos-viewer-next/statics/rtl-scss.js +2 -2
  408. package/dist/cjs/ricos-viewer-next/statics/rtl-scss.js.map +1 -1
  409. package/dist/cjs/text-selection-toolbar/statics/styles/viewer-inline-toolbar-scss.js +2 -2
  410. package/dist/cjs/text-selection-toolbar/statics/styles/viewer-inline-toolbar-scss.js.map +1 -1
  411. package/dist/cjs/tiptap-editor/statics/styles/tiptap-editor-styles-scss.js +13 -13
  412. package/dist/cjs/tiptap-editor/statics/styles/tiptap-editor-styles-scss.js.map +1 -1
  413. package/dist/cjs/tiptap-extensions/placeholder-scss.js +1 -1
  414. package/dist/cjs/tiptap-extensions/placeholder-scss.js.map +1 -1
  415. package/dist/cjs/tiptap-extensions/statics/styles-scss.js +4 -4
  416. package/dist/cjs/tiptap-extensions/statics/styles-scss.js.map +1 -1
  417. package/dist/cjs/toolbars-v3/components/InsertPluginToolbar/insert-plugin-toolbar-scss.js +1 -1
  418. package/dist/cjs/toolbars-v3/components/InsertPluginToolbar/insert-plugin-toolbar-scss.js.map +1 -1
  419. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/OverflownButtons-scss.js +3 -3
  420. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/OverflownButtons-scss.js.map +1 -1
  421. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbar-scss.js +3 -3
  422. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbar-scss.js.map +1 -1
  423. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbarWrapper-scss.js +4 -4
  424. package/dist/cjs/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbarWrapper-scss.js.map +1 -1
  425. package/dist/cjs/toolbars-v3/components/Toolbar/RicosMobileToolbar/RicosMobileToolbar-scss.js +9 -9
  426. package/dist/cjs/toolbars-v3/components/Toolbar/RicosMobileToolbar/RicosMobileToolbar-scss.js.map +1 -1
  427. package/dist/cjs/toolbars-v3/components/Toolbar/RicosMobileToolbar/mobile-toolbar-overlay/mobile-toolbar-overlay-scss.js +1 -1
  428. package/dist/cjs/toolbars-v3/components/Toolbar/RicosMobileToolbar/mobile-toolbar-overlay/mobile-toolbar-overlay-scss.js.map +1 -1
  429. package/dist/cjs/toolbars-v3/components/buttons/AddPluginMenuButtons/AddPluginMenuMobileButton-scss.js +1 -1
  430. package/dist/cjs/toolbars-v3/components/buttons/AddPluginMenuButtons/AddPluginMenuMobileButton-scss.js.map +1 -1
  431. package/dist/cjs/toolbars-v3/components/buttons/FontSizeButton/FontSizeButton-scss.js +5 -5
  432. package/dist/cjs/toolbars-v3/components/buttons/FontSizeButton/FontSizeButton-scss.js.map +1 -1
  433. package/dist/cjs/toolbars-v3/modals/FloatingPluginMenu/styles/floating-add-plugin-menu-scss.js +6 -6
  434. package/dist/cjs/toolbars-v3/modals/FloatingPluginMenu/styles/floating-add-plugin-menu-scss.js.map +1 -1
  435. package/dist/cjs/toolbars-v3/ricos-toolbars/footer/FooterToolbar-scss.js +1 -1
  436. package/dist/cjs/toolbars-v3/ricos-toolbars/footer/FooterToolbar-scss.js.map +1 -1
  437. package/dist/cjs/ui-components/Components/Image-scss.js +1 -1
  438. package/dist/cjs/ui-components/Components/Image-scss.js.map +1 -1
  439. package/dist/cjs/ui-components/Components/double-loader-scss.js +4 -4
  440. package/dist/cjs/ui-components/Components/double-loader-scss.js.map +1 -1
  441. package/dist/cjs/ui-components/color-picker/button-color-swatches/button-color-swatches-scss.js +2 -2
  442. package/dist/cjs/ui-components/color-picker/button-color-swatches/button-color-swatches-scss.js.map +1 -1
  443. package/dist/cjs/ui-components/color-picker/new-color-picker/components/gradient-picker/gradient-picker-scss.js +13 -13
  444. package/dist/cjs/ui-components/color-picker/new-color-picker/components/gradient-picker/gradient-picker-scss.js.map +1 -1
  445. package/dist/cjs/ui-components/color-picker/new-color-picker/components/new-color-swatches/new-color-swatches-scss.js +1 -1
  446. package/dist/cjs/ui-components/color-picker/new-color-picker/components/new-color-swatches/new-color-swatches-scss.js.map +1 -1
  447. package/dist/cjs/ui-components/color-picker/new-color-picker/components/simple-color-picker/simple-color-picker-scss.js +2 -2
  448. package/dist/cjs/ui-components/color-picker/new-color-picker/components/simple-color-picker/simple-color-picker-scss.js.map +1 -1
  449. package/dist/cjs/ui-components/color-picker/new-color-picker/components/single-color-swatch/single-color-swatch-scss.js +2 -2
  450. package/dist/cjs/ui-components/color-picker/new-color-picker/components/single-color-swatch/single-color-swatch-scss.js.map +1 -1
  451. package/dist/cjs/ui-components/color-picker/new-color-picker/new-color-picker-scss.js +1 -1
  452. package/dist/cjs/ui-components/color-picker/new-color-picker/new-color-picker-scss.js.map +1 -1
  453. package/dist/cjs/ui-components/input-with-slider/input-with-slider-scss.js +1 -1
  454. package/dist/cjs/ui-components/input-with-slider/input-with-slider-scss.js.map +1 -1
  455. package/dist/cjs/ui-components/layout-background-loader/layout-background-loader-scss.js +3 -3
  456. package/dist/cjs/ui-components/layout-background-loader/layout-background-loader-scss.js.map +1 -1
  457. package/dist/cjs/ui-components/modal-layout/floating-layout/floating-desktop-layout-scss.js +1 -1
  458. package/dist/cjs/ui-components/modal-layout/floating-layout/floating-desktop-layout-scss.js.map +1 -1
  459. package/dist/cjs/ui-components/modal-layout/fullscreen-mobile-layout/fullscreen-mobile-layout-scss.js +4 -4
  460. package/dist/cjs/ui-components/modal-layout/fullscreen-mobile-layout/fullscreen-mobile-layout-scss.js.map +1 -1
  461. package/dist/cjs/ui-components/panel/panel-scss.js +2 -2
  462. package/dist/cjs/ui-components/panel/panel-scss.js.map +1 -1
  463. package/dist/cjs/ui-components/panel-header/panel-header-scss.js +1 -1
  464. package/dist/cjs/ui-components/panel-header/panel-header-scss.js.map +1 -1
  465. package/dist/cjs/ui-components/settings-panel-discard-modal/settings-panel-discard-modal-scss.js +1 -1
  466. package/dist/cjs/ui-components/settings-panel-discard-modal/settings-panel-discard-modal-scss.js.map +1 -1
  467. package/dist/cjs/ui-components/statics/styles/generic-error-scss.js +1 -1
  468. package/dist/cjs/ui-components/statics/styles/generic-error-scss.js.map +1 -1
  469. package/dist/cjs/ui-components/statics/styles/loaders-scss.js +8 -8
  470. package/dist/cjs/ui-components/statics/styles/loaders-scss.js.map +1 -1
  471. package/dist/cjs/ui-components/statics/styles/media-item-error-msg-scss.js +3 -3
  472. package/dist/cjs/ui-components/statics/styles/media-item-error-msg-scss.js.map +1 -1
  473. package/dist/cjs/ui-components/statics/styles/slider-scss.js +5 -5
  474. package/dist/cjs/ui-components/statics/styles/slider-scss.js.map +1 -1
  475. package/dist/cjs/ui-components/thumbnail-picker/thumbnail-picker-scss.js +1 -1
  476. package/dist/cjs/ui-components/thumbnail-picker/thumbnail-picker-scss.js.map +1 -1
  477. package/dist/cjs/ui-components/wixel-assistant/assistant-timeline-scss.js +16 -16
  478. package/dist/cjs/ui-components/wixel-assistant/assistant-timeline-scss.js.map +1 -1
  479. package/dist/cjs/wix-rich-content-common/statics/styles/fonts-scss.js +1 -1
  480. package/dist/cjs/wix-rich-content-common/statics/styles/fonts-scss.js.map +1 -1
  481. package/dist/cjs/wix-rich-content-common/statics/styles/general-scss.js +11 -11
  482. package/dist/cjs/wix-rich-content-common/statics/styles/general-scss.js.map +1 -1
  483. package/dist/es/_shared/dropdown-modal/dropdown-modal-scss.js +5 -5
  484. package/dist/es/_shared/dropdown-modal/dropdown-modal-scss.js.map +1 -1
  485. package/dist/es/_shared/figure/add-caption-button-scss.js +11 -11
  486. package/dist/es/_shared/figure/add-caption-button-scss.js.map +1 -1
  487. package/dist/es/_shared/figure/viewer-caption-scss.js +2 -2
  488. package/dist/es/_shared/figure/viewer-caption-scss.js.map +1 -1
  489. package/dist/es/_shared/figure/viewer-figure-scss.js +1 -1
  490. package/dist/es/_shared/figure/viewer-figure-scss.js.map +1 -1
  491. package/dist/es/_shared/get-lock-icon.js +5 -0
  492. package/dist/es/_shared/get-lock-icon.js.map +7 -0
  493. package/dist/es/_shared/list-item-divider/list-item-divider-scss.js +3 -3
  494. package/dist/es/_shared/list-item-divider/list-item-divider-scss.js.map +1 -1
  495. package/dist/es/_shared/list-item-select/list-item-select-scss.js +4 -4
  496. package/dist/es/_shared/list-item-select/list-item-select-scss.js.map +1 -1
  497. package/dist/es/_shared/list-item-toggle/list-item-toggle-scss.js +5 -5
  498. package/dist/es/_shared/list-item-toggle/list-item-toggle-scss.js.map +1 -1
  499. package/dist/es/_shared/overlay-hoc/overlay-hoc-scss.js +3 -3
  500. package/dist/es/_shared/overlay-hoc/overlay-hoc-scss.js.map +1 -1
  501. package/dist/es/_shared/plugin-toolbar/separator/toolbar-button-separator-scss.js +4 -4
  502. package/dist/es/_shared/plugin-toolbar/separator/toolbar-button-separator-scss.js.map +1 -1
  503. package/dist/es/_shared/plugin-toolbar/url-link-button/url-link-button-scss.js +4 -4
  504. package/dist/es/_shared/plugin-toolbar/url-link-button/url-link-button-scss.js.map +1 -1
  505. package/dist/es/_shared/prompt-input-area/attachment-bar/attachment-bar-scss.js +9 -9
  506. package/dist/es/_shared/prompt-input-area/attachment-bar/attachment-bar-scss.js.map +1 -1
  507. package/dist/es/_shared/prompt-input-area/prompt-input-area-scss.js +15 -15
  508. package/dist/es/_shared/prompt-input-area/prompt-input-area-scss.js.map +1 -1
  509. package/dist/es/_shared/prompt-input-area/widget-prompt-input-area-scss.js +10 -10
  510. package/dist/es/_shared/prompt-input-area/widget-prompt-input-area-scss.js.map +1 -1
  511. package/dist/es/_shared/shape-select-modal/shape-select-modal-content-scss.js +9 -9
  512. package/dist/es/_shared/shape-select-modal/shape-select-modal-content-scss.js.map +1 -1
  513. package/dist/es/_shared/shape-view-renderer/shape-view-renderer-scss.js +4 -4
  514. package/dist/es/_shared/shape-view-renderer/shape-view-renderer-scss.js.map +1 -1
  515. package/dist/es/_shared/toolbar-button/toolbar-button-scss.js +5 -5
  516. package/dist/es/_shared/toolbar-button/toolbar-button-scss.js.map +1 -1
  517. package/dist/es/bundled-dependencies/ai-assistant-avatar.js +6 -6
  518. package/dist/es/bundled-dependencies/ai-assistant-avatar.js.map +1 -1
  519. package/dist/es/editor-common/statics/styles/general-scss.js +20 -20
  520. package/dist/es/editor-common/statics/styles/general-scss.js.map +1 -1
  521. package/dist/es/plugin-ai/ai-content-modal/ai-content-modal-scss.js +10 -10
  522. package/dist/es/plugin-ai/ai-content-modal/ai-content-modal-scss.js.map +1 -1
  523. package/dist/es/plugin-ai/ai-content-modal/feed/feed-scss.js +4 -4
  524. package/dist/es/plugin-ai/ai-content-modal/feed/feed-scss.js.map +1 -1
  525. package/dist/es/plugin-ai/ai-content-modal/no-selection-message/no-selection-message-scss.js +3 -3
  526. package/dist/es/plugin-ai/ai-content-modal/no-selection-message/no-selection-message-scss.js.map +1 -1
  527. package/dist/es/plugin-ai/ai-content-modal/text-cursor/text-cursor-scss.js +4 -4
  528. package/dist/es/plugin-ai/ai-content-modal/text-cursor/text-cursor-scss.js.map +1 -1
  529. package/dist/es/plugin-ai/ai-content-modal/textual-prompt-input-area/textual-prompt-input-area-scss.js +7 -7
  530. package/dist/es/plugin-ai/ai-content-modal/textual-prompt-input-area/textual-prompt-input-area-scss.js.map +1 -1
  531. package/dist/es/plugin-ai/ai-image-modal/ai-image-modal-scss.js +8 -8
  532. package/dist/es/plugin-ai/ai-image-modal/ai-image-modal-scss.js.map +1 -1
  533. package/dist/es/plugin-ai/ai-plus-button/ai-plus-button-scss.js +3 -3
  534. package/dist/es/plugin-ai/ai-plus-button/ai-plus-button-scss.js.map +1 -1
  535. package/dist/es/plugin-ai/error-message/error-message-scss.js +3 -3
  536. package/dist/es/plugin-ai/error-message/error-message-scss.js.map +1 -1
  537. package/dist/es/plugin-ai/prompt-input-area/prompt-input-area-scss.js +6 -6
  538. package/dist/es/plugin-ai/prompt-input-area/prompt-input-area-scss.js.map +1 -1
  539. package/dist/es/plugin-ai/toolbar/toolbar-button-scss.js +4 -4
  540. package/dist/es/plugin-ai/toolbar/toolbar-button-scss.js.map +1 -1
  541. package/dist/es/plugin-animation/animation-panel-scss.js +11 -11
  542. package/dist/es/plugin-animation/animation-panel-scss.js.map +1 -1
  543. package/dist/es/plugin-audio/statics/styles/audio-embed-scss.js +3 -3
  544. package/dist/es/plugin-audio/statics/styles/audio-embed-scss.js.map +1 -1
  545. package/dist/es/plugin-audio/statics/styles/audio-scss.js +21 -21
  546. package/dist/es/plugin-audio/statics/styles/audio-scss.js.map +1 -1
  547. package/dist/es/plugin-audio/statics/styles/icon-button-scss.js +1 -1
  548. package/dist/es/plugin-audio/statics/styles/icon-button-scss.js.map +1 -1
  549. package/dist/es/plugin-audio/statics/styles/settings-modal-scss.js +3 -3
  550. package/dist/es/plugin-audio/statics/styles/settings-modal-scss.js.map +1 -1
  551. package/dist/es/plugin-audio/statics/styles/sound-control-scss.js +2 -2
  552. package/dist/es/plugin-audio/statics/styles/sound-control-scss.js.map +1 -1
  553. package/dist/es/plugin-audio/viewer-styles-inject.js +4 -4
  554. package/dist/es/plugin-block-drag-handle/styles-scss.js +10 -10
  555. package/dist/es/plugin-block-drag-handle/styles-scss.js.map +1 -1
  556. package/dist/es/plugin-button/statics/styles/button-input-modal-scss.js +4 -4
  557. package/dist/es/plugin-button/statics/styles/button-input-modal-scss.js.map +1 -1
  558. package/dist/es/plugin-button/statics/styles/default-styles-scss.js +3 -3
  559. package/dist/es/plugin-button/statics/styles/default-styles-scss.js.map +1 -1
  560. package/dist/es/plugin-button/statics/styles/settings-component-scss.js +3 -3
  561. package/dist/es/plugin-button/statics/styles/settings-component-scss.js.map +1 -1
  562. package/dist/es/plugin-button/viewer-styles-inject.js +2 -2
  563. package/dist/es/plugin-card/card-scss.js +19 -19
  564. package/dist/es/plugin-card/card-scss.js.map +1 -1
  565. package/dist/es/plugin-card/card-viewer-scss.js +6 -6
  566. package/dist/es/plugin-card/card-viewer-scss.js.map +1 -1
  567. package/dist/es/plugin-card/viewer-styles-inject.js +2 -2
  568. package/dist/es/plugin-code-block/statics/styles/code-block-scss.js +8 -8
  569. package/dist/es/plugin-code-block/statics/styles/code-block-scss.js.map +1 -1
  570. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-component-scss.js +6 -6
  571. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-component-scss.js.map +1 -1
  572. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-pair-scss.js +18 -18
  573. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-pair-scss.js.map +1 -1
  574. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-settings-scss.js +4 -4
  575. package/dist/es/plugin-collapsible-list/statics/styles/collapsible-list-settings-scss.js.map +1 -1
  576. package/dist/es/plugin-collapsible-list/statics/styles/new-pair-button-scss.js +5 -5
  577. package/dist/es/plugin-collapsible-list/statics/styles/new-pair-button-scss.js.map +1 -1
  578. package/dist/es/plugin-collapsible-list/viewer-styles-inject.js +2 -2
  579. package/dist/es/plugin-divider/statics/styles/divider-viewer-scss.js +13 -13
  580. package/dist/es/plugin-divider/statics/styles/divider-viewer-scss.js.map +1 -1
  581. package/dist/es/plugin-divider/toolbar/modals/divider-design-panel-scss.js +3 -3
  582. package/dist/es/plugin-divider/toolbar/modals/divider-design-panel-scss.js.map +1 -1
  583. package/dist/es/plugin-divider/viewer-styles-inject.js +2 -2
  584. package/dist/es/plugin-emoji/modals/emoji-suggestions-modal-scss.js +3 -3
  585. package/dist/es/plugin-emoji/modals/emoji-suggestions-modal-scss.js.map +1 -1
  586. package/dist/es/plugin-figure/tiptap/caption-scss.js +5 -5
  587. package/dist/es/plugin-figure/tiptap/caption-scss.js.map +1 -1
  588. package/dist/es/plugin-figure/tiptap/figure-scss.js +5 -5
  589. package/dist/es/plugin-figure/tiptap/figure-scss.js.map +1 -1
  590. package/dist/es/plugin-file-upload/statics/styles/file-upload-viewer-scss.js +15 -15
  591. package/dist/es/plugin-file-upload/statics/styles/file-upload-viewer-scss.js.map +1 -1
  592. package/dist/es/plugin-file-upload/viewer-styles-inject.js +2 -2
  593. package/dist/es/plugin-gallery/media/create-gallery-media-url.js +4 -1
  594. package/dist/es/plugin-gallery/media/create-gallery-media-url.js.map +2 -2
  595. package/dist/es/plugin-gallery/media/normalize-gallery-items.js +6 -0
  596. package/dist/es/plugin-gallery/media/normalize-gallery-items.js.map +2 -2
  597. package/dist/es/plugin-gallery/modals/settings/gallery-settings-modal-scss.js +5 -5
  598. package/dist/es/plugin-gallery/modals/settings/gallery-settings-modal-scss.js.map +1 -1
  599. package/dist/es/plugin-gallery/modals/settings/layout-settings/canonicalize-masonry-settings.js +7 -4
  600. package/dist/es/plugin-gallery/modals/settings/layout-settings/canonicalize-masonry-settings.js.map +2 -2
  601. package/dist/es/plugin-gallery/modals/settings/layout-settings/layout-controls-section/image-ratio-control-scss.js +8 -8
  602. package/dist/es/plugin-gallery/modals/settings/layout-settings/layout-controls-section/image-ratio-control-scss.js.map +1 -1
  603. package/dist/es/plugin-gallery/modals/settings/layout-settings/layout-controls-section/layout-controls-section.js.map +2 -2
  604. package/dist/es/plugin-gallery/modals/settings/layout-settings/layout-controls-section/thumbnail-alignment-control-scss.js +7 -7
  605. package/dist/es/plugin-gallery/modals/settings/layout-settings/layout-controls-section/thumbnail-alignment-control-scss.js.map +1 -1
  606. package/dist/es/plugin-gallery/modals/settings/media-settings/media-list/sortable-item-scss.js +3 -3
  607. package/dist/es/plugin-gallery/modals/settings/media-settings/media-list/sortable-item-scss.js.map +1 -1
  608. package/dist/es/plugin-gallery/modals/settings/media-settings/media-list/sortable-list-scss.js +5 -5
  609. package/dist/es/plugin-gallery/modals/settings/media-settings/media-list/sortable-list-scss.js.map +1 -1
  610. package/dist/es/plugin-gallery/statics/styles/gallery-component-scss.js +3 -3
  611. package/dist/es/plugin-gallery/statics/styles/gallery-component-scss.js.map +1 -1
  612. package/dist/es/plugin-gallery/statics/styles/gallery-media-scss.js +21 -21
  613. package/dist/es/plugin-gallery/statics/styles/gallery-media-scss.js.map +1 -1
  614. package/dist/es/plugin-gallery/statics/styles/viewer-scss.js +1 -1
  615. package/dist/es/plugin-gallery/statics/styles/viewer-scss.js.map +1 -1
  616. package/dist/es/plugin-gallery/viewer/collage-groups.js +127 -0
  617. package/dist/es/plugin-gallery/viewer/collage-groups.js.map +7 -0
  618. package/dist/es/plugin-gallery/viewer/collage-rows.js +341 -0
  619. package/dist/es/plugin-gallery/viewer/collage-rows.js.map +7 -0
  620. package/dist/es/plugin-gallery/viewer/collage-styles.js +53 -0
  621. package/dist/es/plugin-gallery/viewer/collage-styles.js.map +7 -0
  622. package/dist/es/plugin-gallery/viewer/gallery-renderer.js +3 -1
  623. package/dist/es/plugin-gallery/viewer/gallery-renderer.js.map +2 -2
  624. package/dist/es/plugin-gallery/viewer/layout-collage-scss.js +11 -0
  625. package/dist/es/plugin-gallery/viewer/layout-collage-scss.js.map +7 -0
  626. package/dist/es/plugin-gallery/viewer/layout-collage.js +235 -0
  627. package/dist/es/plugin-gallery/viewer/layout-collage.js.map +7 -0
  628. package/dist/es/plugin-gallery/viewer/layout-column-scss.js +4 -4
  629. package/dist/es/plugin-gallery/viewer/layout-column-scss.js.map +1 -1
  630. package/dist/es/plugin-gallery/viewer/layout-fullsize-scss.js +4 -4
  631. package/dist/es/plugin-gallery/viewer/layout-fullsize-scss.js.map +1 -1
  632. package/dist/es/plugin-gallery/viewer/layout-grid-scss.js +2 -2
  633. package/dist/es/plugin-gallery/viewer/layout-grid-scss.js.map +1 -1
  634. package/dist/es/plugin-gallery/viewer/layout-masonry-scss.js +7 -7
  635. package/dist/es/plugin-gallery/viewer/layout-masonry-scss.js.map +1 -1
  636. package/dist/es/plugin-gallery/viewer/layout-panorama-scss.js +1 -1
  637. package/dist/es/plugin-gallery/viewer/layout-panorama-scss.js.map +1 -1
  638. package/dist/es/plugin-gallery/viewer/layout-slider-scss.js +6 -6
  639. package/dist/es/plugin-gallery/viewer/layout-slider-scss.js.map +1 -1
  640. package/dist/es/plugin-gallery/viewer/layout-thumbnail-scss.js +11 -11
  641. package/dist/es/plugin-gallery/viewer/layout-thumbnail-scss.js.map +1 -1
  642. package/dist/es/plugin-gallery/viewer/resolve-gallery-layout.js +14 -4
  643. package/dist/es/plugin-gallery/viewer/resolve-gallery-layout.js.map +2 -2
  644. package/dist/es/plugin-gallery/viewer-styles-inject.js +2 -2
  645. package/dist/es/plugin-giphy/components/giphy-selector-scss.js +11 -11
  646. package/dist/es/plugin-giphy/components/giphy-selector-scss.js.map +1 -1
  647. package/dist/es/plugin-giphy/viewer/giphy-viewer-scss.js +4 -4
  648. package/dist/es/plugin-giphy/viewer/giphy-viewer-scss.js.map +1 -1
  649. package/dist/es/plugin-giphy/viewer/play-icon-scss.js +2 -2
  650. package/dist/es/plugin-giphy/viewer/play-icon-scss.js.map +1 -1
  651. package/dist/es/plugin-giphy/viewer-styles-inject.js +2 -2
  652. package/dist/es/plugin-hashtag/statics/hashtag-scss.js +2 -2
  653. package/dist/es/plugin-hashtag/statics/hashtag-scss.js.map +1 -1
  654. package/dist/es/plugin-hashtag/viewer-styles-inject.js +2 -2
  655. package/dist/es/plugin-headings/dropdown/headings-dropdown-scss.js +9 -9
  656. package/dist/es/plugin-headings/dropdown/headings-dropdown-scss.js.map +1 -1
  657. package/dist/es/plugin-html/statics/styles/HtmlComponent-scss.js +2 -2
  658. package/dist/es/plugin-html/statics/styles/HtmlComponent-scss.js.map +1 -1
  659. package/dist/es/plugin-html/statics/styles/Iframe-scss.js +1 -1
  660. package/dist/es/plugin-html/statics/styles/Iframe-scss.js.map +1 -1
  661. package/dist/es/plugin-html/tiptap/ai-widget-scss.js +4 -4
  662. package/dist/es/plugin-html/tiptap/ai-widget-scss.js.map +1 -1
  663. package/dist/es/plugin-html/tiptap/loader-scss.js +11 -11
  664. package/dist/es/plugin-html/tiptap/loader-scss.js.map +1 -1
  665. package/dist/es/plugin-html/tiptap/preset-bar/preset-bar-scss.js +4 -4
  666. package/dist/es/plugin-html/tiptap/preset-bar/preset-bar-scss.js.map +1 -1
  667. package/dist/es/plugin-html/viewer-styles-inject.js +2 -2
  668. package/dist/es/plugin-image/components/corner-radius-handles-scss.js +6 -6
  669. package/dist/es/plugin-image/components/corner-radius-handles-scss.js.map +1 -1
  670. package/dist/es/plugin-image/components/crop-edge-handles-scss.js +3 -3
  671. package/dist/es/plugin-image/components/crop-edge-handles-scss.js.map +1 -1
  672. package/dist/es/plugin-image/crop-overlay/crop-overlay-scss.js +16 -16
  673. package/dist/es/plugin-image/crop-overlay/crop-overlay-scss.js.map +1 -1
  674. package/dist/es/plugin-image/statics/styles/image-viewer-scss.js +20 -20
  675. package/dist/es/plugin-image/statics/styles/image-viewer-scss.js.map +1 -1
  676. package/dist/es/plugin-image/statics/styles/settings-modal-scss.js +3 -3
  677. package/dist/es/plugin-image/statics/styles/settings-modal-scss.js.map +1 -1
  678. package/dist/es/plugin-image/toolbar/shape-crop-modal-scss.js +6 -6
  679. package/dist/es/plugin-image/toolbar/shape-crop-modal-scss.js.map +1 -1
  680. package/dist/es/plugin-image/viewer-styles-inject.js +2 -2
  681. package/dist/es/plugin-inline-ai/ai-selection-tooltip-scss.js +12 -12
  682. package/dist/es/plugin-inline-ai/ai-selection-tooltip-scss.js.map +1 -1
  683. package/dist/es/plugin-inline-ai/aria-avatar-row-scss.js +3 -3
  684. package/dist/es/plugin-inline-ai/aria-avatar-row-scss.js.map +1 -1
  685. package/dist/es/plugin-inline-ai/aria-surface-row-scss.js +6 -6
  686. package/dist/es/plugin-inline-ai/aria-surface-row-scss.js.map +1 -1
  687. package/dist/es/plugin-inline-ai/html-placeholder-scss.js +5 -5
  688. package/dist/es/plugin-inline-ai/html-placeholder-scss.js.map +1 -1
  689. package/dist/es/plugin-inline-ai/modal-scss.js +11 -11
  690. package/dist/es/plugin-inline-ai/modal-scss.js.map +1 -1
  691. package/dist/es/plugin-inline-ai/pending-widget-placeholder-scss.js +14 -14
  692. package/dist/es/plugin-inline-ai/pending-widget-placeholder-scss.js.map +1 -1
  693. package/dist/es/plugin-inline-ai/spinner-scss.js +4 -4
  694. package/dist/es/plugin-inline-ai/spinner-scss.js.map +1 -1
  695. package/dist/es/plugin-inline-ai/toolbar/toolbar-button-scss.js +4 -4
  696. package/dist/es/plugin-inline-ai/toolbar/toolbar-button-scss.js.map +1 -1
  697. package/dist/es/plugin-line-spacing/custom-spacing-editor-modal/custom-spacing-editor-modal-scss.js +3 -3
  698. package/dist/es/plugin-line-spacing/custom-spacing-editor-modal/custom-spacing-editor-modal-scss.js.map +1 -1
  699. package/dist/es/plugin-link/statics/link-viewer-scss.js +4 -4
  700. package/dist/es/plugin-link/statics/link-viewer-scss.js.map +1 -1
  701. package/dist/es/plugin-link/toolbar/anchor-link-button-scss.js +3 -3
  702. package/dist/es/plugin-link/toolbar/anchor-link-button-scss.js.map +1 -1
  703. package/dist/es/plugin-link/viewer-styles-inject.js +2 -2
  704. package/dist/es/plugin-link-preview/statics/styles/insert-modal-scss.js +3 -3
  705. package/dist/es/plugin-link-preview/statics/styles/insert-modal-scss.js.map +1 -1
  706. package/dist/es/plugin-link-preview/statics/styles/link-preview-scss.js +18 -18
  707. package/dist/es/plugin-link-preview/statics/styles/link-preview-scss.js.map +1 -1
  708. package/dist/es/plugin-link-preview/statics/styles/settings-modal-scss.js +3 -3
  709. package/dist/es/plugin-link-preview/statics/styles/settings-modal-scss.js.map +1 -1
  710. package/dist/es/plugin-link-preview/viewer-styles-inject.js +3 -3
  711. package/dist/es/plugin-mentions/statics/mention-list-scss.js +6 -6
  712. package/dist/es/plugin-mentions/statics/mention-list-scss.js.map +1 -1
  713. package/dist/es/plugin-mentions/statics/mentions-scss.js +4 -4
  714. package/dist/es/plugin-mentions/statics/mentions-scss.js.map +1 -1
  715. package/dist/es/plugin-mentions/viewer-styles-inject.js +2 -2
  716. package/dist/es/plugin-paywall/paywall-fallback-scss.js +1 -1
  717. package/dist/es/plugin-paywall/paywall-fallback-scss.js.map +1 -1
  718. package/dist/es/plugin-smart-block/components/cell-accessory-scss.js +22 -22
  719. package/dist/es/plugin-smart-block/components/cell-accessory-scss.js.map +1 -1
  720. package/dist/es/plugin-smart-block/components/cell-quote-glyph-scss.js +3 -3
  721. package/dist/es/plugin-smart-block/components/cell-quote-glyph-scss.js.map +1 -1
  722. package/dist/es/plugin-smart-block/components/cell-star-rating-scss.js +4 -4
  723. package/dist/es/plugin-smart-block/components/cell-star-rating-scss.js.map +1 -1
  724. package/dist/es/plugin-smart-block/components/cell-stat-scss.js +20 -20
  725. package/dist/es/plugin-smart-block/components/cell-stat-scss.js.map +1 -1
  726. package/dist/es/plugin-smart-block/components/circle-donut-scss.js +7 -7
  727. package/dist/es/plugin-smart-block/components/circle-donut-scss.js.map +1 -1
  728. package/dist/es/plugin-smart-block/components/shape-overlay-scss.js +3 -3
  729. package/dist/es/plugin-smart-block/components/shape-overlay-scss.js.map +1 -1
  730. package/dist/es/plugin-smart-block/components/smart-block-view-scss.js +50 -50
  731. package/dist/es/plugin-smart-block/components/smart-block-view-scss.js.map +1 -1
  732. package/dist/es/plugin-smart-block/components/stars-scss.js +8 -8
  733. package/dist/es/plugin-smart-block/components/stars-scss.js.map +1 -1
  734. package/dist/es/plugin-smart-block/modals/variant-picker-scss.js +9 -9
  735. package/dist/es/plugin-smart-block/modals/variant-picker-scss.js.map +1 -1
  736. package/dist/es/plugin-smart-block/tiptap/smart-block-editor-scss.js +15 -15
  737. package/dist/es/plugin-smart-block/tiptap/smart-block-editor-scss.js.map +1 -1
  738. package/dist/es/plugin-smart-block/viewer-styles-inject.js +2 -2
  739. package/dist/es/plugin-social-polls/components/image-upload/image-upload-scss.js +9 -9
  740. package/dist/es/plugin-social-polls/components/image-upload/image-upload-scss.js.map +1 -1
  741. package/dist/es/plugin-social-polls/components/insert-modal/insert-modal-scss.js +3 -3
  742. package/dist/es/plugin-social-polls/components/insert-modal/insert-modal-scss.js.map +1 -1
  743. package/dist/es/plugin-social-polls/components/poll-header/poll-header-scss.js +3 -3
  744. package/dist/es/plugin-social-polls/components/poll-header/poll-header-scss.js.map +1 -1
  745. package/dist/es/plugin-social-polls/components/poll-option/option-scss.js +23 -23
  746. package/dist/es/plugin-social-polls/components/poll-option/option-scss.js.map +1 -1
  747. package/dist/es/plugin-social-polls/components/poll-option/webview/option-webview-scss.js +24 -24
  748. package/dist/es/plugin-social-polls/components/poll-option/webview/option-webview-scss.js.map +1 -1
  749. package/dist/es/plugin-social-polls/components/poll-scss.js +19 -19
  750. package/dist/es/plugin-social-polls/components/poll-scss.js.map +1 -1
  751. package/dist/es/plugin-social-polls/components/settings-modal/settings-modal-scss.js +4 -4
  752. package/dist/es/plugin-social-polls/components/settings-modal/settings-modal-scss.js.map +1 -1
  753. package/dist/es/plugin-social-polls/components/text-field/text-field-scss.js +12 -12
  754. package/dist/es/plugin-social-polls/components/text-field/text-field-scss.js.map +1 -1
  755. package/dist/es/plugin-social-polls/components/voted-users/voted-users-scss.js +20 -20
  756. package/dist/es/plugin-social-polls/components/voted-users/voted-users-scss.js.map +1 -1
  757. package/dist/es/plugin-social-polls/viewer-styles-inject.js +2 -2
  758. package/dist/es/plugin-spoiler/statics/styles/spoiler-scss.js +18 -18
  759. package/dist/es/plugin-spoiler/statics/styles/spoiler-scss.js.map +1 -1
  760. package/dist/es/plugin-spoiler/viewer-styles-inject.js +2 -2
  761. package/dist/es/plugin-table/modals/table-grid-selector-scss.js +7 -7
  762. package/dist/es/plugin-table/modals/table-grid-selector-scss.js.map +1 -1
  763. package/dist/es/plugin-table/statics/styles/cell-scss.js +15 -15
  764. package/dist/es/plugin-table/statics/styles/cell-scss.js.map +1 -1
  765. package/dist/es/plugin-table/statics/styles/resizer-scss.js +20 -20
  766. package/dist/es/plugin-table/statics/styles/resizer-scss.js.map +1 -1
  767. package/dist/es/plugin-table/statics/styles/table-settings-modal-scss.js +3 -3
  768. package/dist/es/plugin-table/statics/styles/table-settings-modal-scss.js.map +1 -1
  769. package/dist/es/plugin-table/statics/styles/table-viewer-scss.js +6 -6
  770. package/dist/es/plugin-table/statics/styles/table-viewer-scss.js.map +1 -1
  771. package/dist/es/plugin-table/tiptap/decorations/tableHandles-scss.js +11 -11
  772. package/dist/es/plugin-table/tiptap/decorations/tableHandles-scss.js.map +1 -1
  773. package/dist/es/plugin-table/tiptap/plugins/table-scss.js +35 -35
  774. package/dist/es/plugin-table/tiptap/plugins/table-scss.js.map +1 -1
  775. package/dist/es/plugin-table/toolbar/modals/border-scope-selector-scss.js +4 -4
  776. package/dist/es/plugin-table/toolbar/modals/border-scope-selector-scss.js.map +1 -1
  777. package/dist/es/plugin-table/viewer-styles-inject.js +4 -4
  778. package/dist/es/plugin-text-color/text-button-color-scss.js +4 -4
  779. package/dist/es/plugin-text-color/text-button-color-scss.js.map +1 -1
  780. package/dist/es/plugin-toc/toc-view-scss.js +2 -2
  781. package/dist/es/plugin-toc/toc-view-scss.js.map +1 -1
  782. package/dist/es/plugin-toc/viewer-styles-inject.js +2 -2
  783. package/dist/es/plugin-vertical-embed/components/Ribbon-scss.js +3 -3
  784. package/dist/es/plugin-vertical-embed/components/Ribbon-scss.js.map +1 -1
  785. package/dist/es/plugin-vertical-embed/components/card-content-scss.js +23 -23
  786. package/dist/es/plugin-vertical-embed/components/card-content-scss.js.map +1 -1
  787. package/dist/es/plugin-vertical-embed/components/card-scss.js +19 -19
  788. package/dist/es/plugin-vertical-embed/components/card-scss.js.map +1 -1
  789. package/dist/es/plugin-vertical-embed/components/description-scss.js +2 -2
  790. package/dist/es/plugin-vertical-embed/components/description-scss.js.map +1 -1
  791. package/dist/es/plugin-vertical-embed/modals/settings-modal-scss.js +4 -4
  792. package/dist/es/plugin-vertical-embed/modals/settings-modal-scss.js.map +1 -1
  793. package/dist/es/plugin-vertical-embed/tiptap/component-scss.js +12 -12
  794. package/dist/es/plugin-vertical-embed/tiptap/component-scss.js.map +1 -1
  795. package/dist/es/plugin-vertical-embed/toolbar/items-list-scss.js +3 -3
  796. package/dist/es/plugin-vertical-embed/toolbar/items-list-scss.js.map +1 -1
  797. package/dist/es/plugin-vertical-embed/viewer/vertical-embed-viewer-scss.js +6 -6
  798. package/dist/es/plugin-vertical-embed/viewer/vertical-embed-viewer-scss.js.map +1 -1
  799. package/dist/es/plugin-vertical-embed/viewer-styles-inject.js +3 -3
  800. package/dist/es/plugin-video/statics/styles/default-video-styles-scss.js +10 -10
  801. package/dist/es/plugin-video/statics/styles/default-video-styles-scss.js.map +1 -1
  802. package/dist/es/plugin-video/statics/styles/video-viewer-scss.js +3 -3
  803. package/dist/es/plugin-video/statics/styles/video-viewer-scss.js.map +1 -1
  804. package/dist/es/plugin-video/toolbar/embed-video-scss.js +3 -3
  805. package/dist/es/plugin-video/toolbar/embed-video-scss.js.map +1 -1
  806. package/dist/es/plugin-video/viewer-styles-inject.js +2 -2
  807. package/dist/es/ricos-common-plugins/font-size/dropdown/font-size-dropdown-scss.js +3 -3
  808. package/dist/es/ricos-common-plugins/font-size/dropdown/font-size-dropdown-scss.js.map +1 -1
  809. package/dist/es/ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles-scss.js +10 -10
  810. package/dist/es/ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles-scss.js.map +1 -1
  811. package/dist/es/ricos-common-plugins/layout/layout-node-view.js +3 -13
  812. package/dist/es/ricos-common-plugins/layout/layout-node-view.js.map +2 -2
  813. package/dist/es/ricos-common-plugins/layout/layouts-scss.js +35 -35
  814. package/dist/es/ricos-common-plugins/layout/layouts-scss.js.map +2 -2
  815. package/dist/es/ricos-common-plugins/layout/section-dividers/section-dividers-panel-scss.js +4 -4
  816. package/dist/es/ricos-common-plugins/layout/section-dividers/section-dividers-panel-scss.js.map +1 -1
  817. package/dist/es/ricos-common-plugins/layout/section-dividers/section-dividers-scss.js +6 -6
  818. package/dist/es/ricos-common-plugins/layout/section-dividers/section-dividers-scss.js.map +1 -1
  819. package/dist/es/ricos-common-plugins/quick-actions/modal/modal-scss.js +4 -4
  820. package/dist/es/ricos-common-plugins/quick-actions/modal/modal-scss.js.map +1 -1
  821. package/dist/es/ricos-common-plugins/statics/styles-scss.js +20 -20
  822. package/dist/es/ricos-common-plugins/statics/styles-scss.js.map +1 -1
  823. package/dist/es/ricos-common-plugins/title/headings-scss.js +10 -10
  824. package/dist/es/ricos-common-plugins/title/headings-scss.js.map +1 -1
  825. package/dist/es/ricos-editor/statics/styles/editor-styles-scss.js +11 -11
  826. package/dist/es/ricos-editor/statics/styles/editor-styles-scss.js.map +1 -1
  827. package/dist/es/ricos-modals/statics/styles/drawer-scss.js +11 -11
  828. package/dist/es/ricos-modals/statics/styles/drawer-scss.js.map +1 -1
  829. package/dist/es/ricos-modals/statics/styles/fullscreen-scss.js +3 -3
  830. package/dist/es/ricos-modals/statics/styles/fullscreen-scss.js.map +1 -1
  831. package/dist/es/ricos-modals/statics/styles/popper-scss.js +5 -5
  832. package/dist/es/ricos-modals/statics/styles/popper-scss.js.map +1 -1
  833. package/dist/es/ricos-schema/next-schema/version.js +1 -1
  834. package/dist/es/ricos-schema/next-schema/version.js.map +1 -1
  835. package/dist/es/ricos-styles/statics/styles/style-presets-scss.js +8 -8
  836. package/dist/es/ricos-styles/statics/styles/style-presets-scss.js.map +1 -1
  837. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote-scss.js +3 -3
  838. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote-scss.js.map +1 -1
  839. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock-scss.js +3 -3
  840. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock-scss.js.map +1 -1
  841. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading-scss.js +9 -9
  842. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading-scss.js.map +1 -1
  843. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout-scss.js +10 -10
  844. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout-scss.js.map +1 -1
  845. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/lists/lists-scss.js +6 -6
  846. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/lists/lists-scss.js.map +1 -1
  847. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph-scss.js +4 -4
  848. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph-scss.js.map +1 -1
  849. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/link-viewer-wrapper-scss.js +2 -2
  850. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/link-viewer-wrapper-scss.js.map +1 -1
  851. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/plugin-scss.js +15 -15
  852. package/dist/es/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/plugin-scss.js.map +1 -1
  853. package/dist/es/ricos-viewer-next/modals/fullscreen/fullscreen-carousel.js +2 -1
  854. package/dist/es/ricos-viewer-next/modals/fullscreen/fullscreen-carousel.js.map +2 -2
  855. package/dist/es/ricos-viewer-next/modals/fullscreen/fullscreen-scss.js +14 -14
  856. package/dist/es/ricos-viewer-next/modals/fullscreen/fullscreen-scss.js.map +1 -1
  857. package/dist/es/ricos-viewer-next/statics/alignment-scss.js +16 -16
  858. package/dist/es/ricos-viewer-next/statics/alignment-scss.js.map +1 -1
  859. package/dist/es/ricos-viewer-next/statics/indentation-scss.js +7 -7
  860. package/dist/es/ricos-viewer-next/statics/indentation-scss.js.map +1 -1
  861. package/dist/es/ricos-viewer-next/statics/rich-content-viewer-scss.js +9 -9
  862. package/dist/es/ricos-viewer-next/statics/rich-content-viewer-scss.js.map +1 -1
  863. package/dist/es/ricos-viewer-next/statics/rtl-scss.js +2 -2
  864. package/dist/es/ricos-viewer-next/statics/rtl-scss.js.map +1 -1
  865. package/dist/es/text-selection-toolbar/statics/styles/viewer-inline-toolbar-scss.js +4 -4
  866. package/dist/es/text-selection-toolbar/statics/styles/viewer-inline-toolbar-scss.js.map +1 -1
  867. package/dist/es/tiptap-editor/statics/styles/tiptap-editor-styles-scss.js +15 -15
  868. package/dist/es/tiptap-editor/statics/styles/tiptap-editor-styles-scss.js.map +1 -1
  869. package/dist/es/tiptap-extensions/placeholder-scss.js +3 -3
  870. package/dist/es/tiptap-extensions/placeholder-scss.js.map +1 -1
  871. package/dist/es/tiptap-extensions/statics/styles-scss.js +6 -6
  872. package/dist/es/tiptap-extensions/statics/styles-scss.js.map +1 -1
  873. package/dist/es/toolbars-v3/components/InsertPluginToolbar/insert-plugin-toolbar-scss.js +3 -3
  874. package/dist/es/toolbars-v3/components/InsertPluginToolbar/insert-plugin-toolbar-scss.js.map +1 -1
  875. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/OverflownButtons-scss.js +5 -5
  876. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/OverflownButtons-scss.js.map +1 -1
  877. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbar-scss.js +5 -5
  878. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbar-scss.js.map +1 -1
  879. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbarWrapper-scss.js +6 -6
  880. package/dist/es/toolbars-v3/components/Toolbar/RicosDesktopToolbar/RicosDesktopToolbarWrapper-scss.js.map +1 -1
  881. package/dist/es/toolbars-v3/components/Toolbar/RicosMobileToolbar/RicosMobileToolbar-scss.js +11 -11
  882. package/dist/es/toolbars-v3/components/Toolbar/RicosMobileToolbar/RicosMobileToolbar-scss.js.map +1 -1
  883. package/dist/es/toolbars-v3/components/Toolbar/RicosMobileToolbar/mobile-toolbar-overlay/mobile-toolbar-overlay-scss.js +3 -3
  884. package/dist/es/toolbars-v3/components/Toolbar/RicosMobileToolbar/mobile-toolbar-overlay/mobile-toolbar-overlay-scss.js.map +1 -1
  885. package/dist/es/toolbars-v3/components/buttons/AddPluginMenuButtons/AddPluginMenuMobileButton-scss.js +5 -5
  886. package/dist/es/toolbars-v3/components/buttons/AddPluginMenuButtons/AddPluginMenuMobileButton-scss.js.map +1 -1
  887. package/dist/es/toolbars-v3/components/buttons/FontSizeButton/FontSizeButton-scss.js +7 -7
  888. package/dist/es/toolbars-v3/components/buttons/FontSizeButton/FontSizeButton-scss.js.map +1 -1
  889. package/dist/es/toolbars-v3/modals/FloatingPluginMenu/styles/floating-add-plugin-menu-scss.js +8 -8
  890. package/dist/es/toolbars-v3/modals/FloatingPluginMenu/styles/floating-add-plugin-menu-scss.js.map +1 -1
  891. package/dist/es/toolbars-v3/ricos-toolbars/footer/FooterToolbar-scss.js +3 -3
  892. package/dist/es/toolbars-v3/ricos-toolbars/footer/FooterToolbar-scss.js.map +1 -1
  893. package/dist/es/ui-components/Components/Image-scss.js +3 -3
  894. package/dist/es/ui-components/Components/Image-scss.js.map +1 -1
  895. package/dist/es/ui-components/Components/double-loader-scss.js +6 -6
  896. package/dist/es/ui-components/Components/double-loader-scss.js.map +1 -1
  897. package/dist/es/ui-components/color-picker/button-color-swatches/button-color-swatches-scss.js +4 -4
  898. package/dist/es/ui-components/color-picker/button-color-swatches/button-color-swatches-scss.js.map +1 -1
  899. package/dist/es/ui-components/color-picker/new-color-picker/components/gradient-picker/gradient-picker-scss.js +15 -15
  900. package/dist/es/ui-components/color-picker/new-color-picker/components/gradient-picker/gradient-picker-scss.js.map +1 -1
  901. package/dist/es/ui-components/color-picker/new-color-picker/components/new-color-swatches/new-color-swatches-scss.js +3 -3
  902. package/dist/es/ui-components/color-picker/new-color-picker/components/new-color-swatches/new-color-swatches-scss.js.map +1 -1
  903. package/dist/es/ui-components/color-picker/new-color-picker/components/simple-color-picker/simple-color-picker-scss.js +4 -4
  904. package/dist/es/ui-components/color-picker/new-color-picker/components/simple-color-picker/simple-color-picker-scss.js.map +1 -1
  905. package/dist/es/ui-components/color-picker/new-color-picker/components/single-color-swatch/single-color-swatch-scss.js +4 -4
  906. package/dist/es/ui-components/color-picker/new-color-picker/components/single-color-swatch/single-color-swatch-scss.js.map +1 -1
  907. package/dist/es/ui-components/color-picker/new-color-picker/new-color-picker-scss.js +3 -3
  908. package/dist/es/ui-components/color-picker/new-color-picker/new-color-picker-scss.js.map +1 -1
  909. package/dist/es/ui-components/input-with-slider/input-with-slider-scss.js +3 -3
  910. package/dist/es/ui-components/input-with-slider/input-with-slider-scss.js.map +1 -1
  911. package/dist/es/ui-components/layout-background-loader/layout-background-loader-scss.js +5 -5
  912. package/dist/es/ui-components/layout-background-loader/layout-background-loader-scss.js.map +1 -1
  913. package/dist/es/ui-components/modal-layout/floating-layout/floating-desktop-layout-scss.js +3 -3
  914. package/dist/es/ui-components/modal-layout/floating-layout/floating-desktop-layout-scss.js.map +1 -1
  915. package/dist/es/ui-components/modal-layout/fullscreen-mobile-layout/fullscreen-mobile-layout-scss.js +6 -6
  916. package/dist/es/ui-components/modal-layout/fullscreen-mobile-layout/fullscreen-mobile-layout-scss.js.map +1 -1
  917. package/dist/es/ui-components/panel/panel-scss.js +4 -4
  918. package/dist/es/ui-components/panel/panel-scss.js.map +1 -1
  919. package/dist/es/ui-components/panel-header/panel-header-scss.js +3 -3
  920. package/dist/es/ui-components/panel-header/panel-header-scss.js.map +1 -1
  921. package/dist/es/ui-components/settings-panel-discard-modal/settings-panel-discard-modal-scss.js +3 -3
  922. package/dist/es/ui-components/settings-panel-discard-modal/settings-panel-discard-modal-scss.js.map +1 -1
  923. package/dist/es/ui-components/statics/styles/generic-error-scss.js +3 -3
  924. package/dist/es/ui-components/statics/styles/generic-error-scss.js.map +1 -1
  925. package/dist/es/ui-components/statics/styles/loaders-scss.js +10 -10
  926. package/dist/es/ui-components/statics/styles/loaders-scss.js.map +1 -1
  927. package/dist/es/ui-components/statics/styles/media-item-error-msg-scss.js +5 -5
  928. package/dist/es/ui-components/statics/styles/media-item-error-msg-scss.js.map +1 -1
  929. package/dist/es/ui-components/statics/styles/slider-scss.js +9 -9
  930. package/dist/es/ui-components/statics/styles/slider-scss.js.map +1 -1
  931. package/dist/es/ui-components/thumbnail-picker/thumbnail-picker-scss.js +3 -3
  932. package/dist/es/ui-components/thumbnail-picker/thumbnail-picker-scss.js.map +1 -1
  933. package/dist/es/ui-components/wixel-assistant/assistant-timeline-scss.js +18 -18
  934. package/dist/es/ui-components/wixel-assistant/assistant-timeline-scss.js.map +1 -1
  935. package/dist/es/wix-rich-content-common/statics/styles/fonts-scss.js +3 -3
  936. package/dist/es/wix-rich-content-common/statics/styles/fonts-scss.js.map +1 -1
  937. package/dist/es/wix-rich-content-common/statics/styles/general-scss.js +13 -13
  938. package/dist/es/wix-rich-content-common/statics/styles/general-scss.js.map +1 -1
  939. package/dist/src/_shared/get-lock-icon.d.ts +2 -0
  940. package/dist/src/_shared/get-lock-icon.d.ts.map +1 -0
  941. package/dist/src/plugin-gallery/media/create-gallery-media-url.d.ts.map +1 -1
  942. package/dist/src/plugin-gallery/media/normalize-gallery-items.d.ts +6 -0
  943. package/dist/src/plugin-gallery/media/normalize-gallery-items.d.ts.map +1 -1
  944. package/dist/src/plugin-gallery/modals/settings/layout-settings/canonicalize-masonry-settings.d.ts.map +1 -1
  945. package/dist/src/plugin-gallery/modals/settings/layout-settings/layout-controls-section/layout-controls-section.d.ts.map +1 -1
  946. package/dist/src/plugin-gallery/viewer/collage-groups.d.ts +19 -0
  947. package/dist/src/plugin-gallery/viewer/collage-groups.d.ts.map +1 -0
  948. package/dist/src/plugin-gallery/viewer/collage-groups.spec.d.ts +2 -0
  949. package/dist/src/plugin-gallery/viewer/collage-groups.spec.d.ts.map +1 -0
  950. package/dist/src/plugin-gallery/viewer/collage-rows.d.ts +34 -0
  951. package/dist/src/plugin-gallery/viewer/collage-rows.d.ts.map +1 -0
  952. package/dist/src/plugin-gallery/viewer/collage-rows.spec.d.ts +2 -0
  953. package/dist/src/plugin-gallery/viewer/collage-rows.spec.d.ts.map +1 -0
  954. package/dist/src/plugin-gallery/viewer/collage-styles.d.ts +23 -0
  955. package/dist/src/plugin-gallery/viewer/collage-styles.d.ts.map +1 -0
  956. package/dist/src/plugin-gallery/viewer/collage-styles.spec.d.ts +2 -0
  957. package/dist/src/plugin-gallery/viewer/collage-styles.spec.d.ts.map +1 -0
  958. package/dist/src/plugin-gallery/viewer/gallery-renderer.d.ts.map +1 -1
  959. package/dist/src/plugin-gallery/viewer/layout-collage.d.ts +16 -0
  960. package/dist/src/plugin-gallery/viewer/layout-collage.d.ts.map +1 -0
  961. package/dist/src/plugin-gallery/viewer/layout-collage.spec.d.ts +2 -0
  962. package/dist/src/plugin-gallery/viewer/layout-collage.spec.d.ts.map +1 -0
  963. package/dist/src/plugin-gallery/viewer/resolve-gallery-layout.d.ts +6 -0
  964. package/dist/src/plugin-gallery/viewer/resolve-gallery-layout.d.ts.map +1 -1
  965. package/dist/src/ricos-common-plugins/layout/layout-node-view.d.ts.map +1 -1
  966. package/dist/src/ricos-schema/next-schema/version.d.ts +1 -1
  967. package/dist/src/ricos-styles/tests/test-cases.d.ts +5 -5
  968. package/dist/src/ricos-viewer-next/modals/fullscreen/fullscreen-carousel.d.ts.map +1 -1
  969. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/ricos-common-plugins/layout/layout-node-view.ts"],
4
- "sourcesContent": ["import classNames from 'classnames';\nimport type { Node as ProseMirrorNode } from 'prosemirror-model';\n\nimport {\n getLayoutWrapperDataHook,\n LAYOUT_HANDLE,\n PAYWALL_DIVIDER,\n} from './../../ricos-common-plugins/layout/data-hooks.js';\nimport { createResizeHandler } from './../../ricos-common-plugins/resizable/create-resize-handler.js';\nimport { TIPTAP_LAYOUT_CELL_TYPE, TIPTAP_LAYOUT_TYPE } from './../../ricos-content/index.js';\nimport type { ModalService } from './../../ricos-modals/index.js';\nimport type { Node as NodeOld } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/next-schema/index.js';\nimport type { Gradient } from './../../ricos-types/color-palette-types.js';\nimport type { RicosPalette } from './../../ricos-types/index.js';\nimport type { ExtensionProps } from './../../ricos-types/tiptap.js';\nimport { buildResponsiveCss } from './../../_shared/build-responsive-css.js';\nimport { TRANSPARENT_HEX_COLOR } from './../../_shared/colors.js';\nimport { getMoveIcon } from './../../_shared/drag-handle-icons.js';\nimport { getElementScale } from './../../_shared/get-element-scale.js';\nimport { isEdgeBanner } from './../../_shared/is-edge-banner.js';\nimport { logInvariant } from './../../_shared/log-invariant.js';\nimport { isPaywallLayoutNode } from './../../_shared/paywall/paywall-selection.js';\nimport type { PmLayoutNode } from './../../_shared/pm-node-types.js';\nimport { resolveBackwardCompatOverlay } from './../../_shared/resolve-backward-compat-overlay.js';\nimport { schemaGradientToCss } from './../../_shared/schema-gradient-to-css.js';\nimport { resolveDocumentColorToCss } from './../../_shared/theme-color-token.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../tiptap/index.js';\nimport { findParentNodeClosestToPos } from './../../tiptap/index.js';\nimport type { Node as PmNode, ResolvedPos } from './../../tiptap/pm/model.js';\nimport { NodeSelection } from './../../tiptap/pm/state.js';\nimport { getContrastYIQ } from './../../wix-rich-content-common/Utils/color-utils.js';\nimport { findNodeById } from './../../tiptap-editor/helpers/index.js';\n\nimport staticsStyles from '../statics/styles-scss.js';\nimport { setAttr, setChild, setClass, setStyleVar, setText } from './idempotent-dom.js';\nimport { isEditorOrModalActive } from './is-editor-or-modal-active.js';\nimport { layoutConverter } from './layout-converter.js';\nimport { getResolvedLayoutFillColor, getResolvedLayoutFillGradient } from './layout-fill.js';\nimport styles from './layouts-scss.js';\nimport { DIVIDER_PRESETS, getDividerLayers } from './section-dividers/divider-presets.js';\nimport {\n LAYOUT_DEFAULTS,\n MAX_CELLS,\n MAX_COLUMNS,\n MAX_VERTICAL_MARGIN,\n MIN_COL_SPAN,\n} from './shared-with-viewer.js';\nimport type { LayoutExtensionStorage } from './shared.js';\nimport { balanceLayoutCells, findLayoutOfCell, getImageUrl } from './shared.js';\n\ntype LayoutNodeViewState = {\n columnTemplate: number[];\n isResizing: boolean;\n isDragging: boolean;\n invalid: 'none' | 'left' | 'right';\n dropCursorPosition: null | number;\n isDraggingOver: boolean;\n};\n\ntype LayoutNodeViewOptions = {\n disableInteractions: boolean;\n breakoutRule: ExtensionProps['breakoutRule'];\n isMobile: boolean;\n suppressDragHandle?: boolean;\n colorPalette?: RicosPalette;\n modals?: ModalService;\n t: (key: string) => string;\n};\n\nexport const layoutNodeView =\n ({\n disableInteractions,\n breakoutRule,\n isMobile,\n suppressDragHandle,\n colorPalette,\n modals,\n t,\n }: LayoutNodeViewOptions): NodeViewRenderer =>\n ({ node, getPos, editor }) => {\n const state: LayoutNodeViewState = {\n columnTemplate: getGridTemplateColumns(node),\n isResizing: false,\n isDragging: false,\n invalid: 'none',\n dropCursorPosition: null,\n isDraggingOver: false,\n };\n const resizableHandlerCleanups: (() => void)[] = [];\n const layoutWrapper = document.createElement('div');\n layoutWrapper.setAttribute('data-layout-wrapper', '');\n layoutWrapper.setAttribute('data-hook', getLayoutWrapperDataHook(node.attrs.id));\n layoutWrapper.classList.add(styles.layoutWrapper);\n\n if (disableInteractions) {\n layoutWrapper.classList.add(styles.disabled);\n }\n\n const layoutStyle = document.createElement('style');\n layoutStyle.setAttribute('data-layout-style', node.attrs.id);\n layoutWrapper.append(layoutStyle);\n\n const layoutElement = document.createElement('div');\n\n // Wrap layoutElement in a container that will hold resize handles.\n // ProseMirror only manages contentDOM (layoutElement), so handles\n // attached to layoutContainer won't be removed during DOM reconciliation.\n const layoutContainer = document.createElement('div');\n layoutContainer.setAttribute('data-resize-container', '');\n layoutContainer.classList.add(styles.layoutContainer);\n layoutContainer.append(layoutElement);\n\n const hasBreakout = breakoutRule\n ? breakoutRule({\n node: layoutConverter.fromPm.convert(node.toJSON()) as NodeOld,\n }) === 'fullWidth'\n : false;\n\n if (hasBreakout) {\n layoutWrapper.classList.add(styles.breakoutMargin);\n }\n\n const breakoutWrapper = document.createElement('div');\n breakoutWrapper.setAttribute('data-breakout', 'normal');\n // The layout's root carries no inline padding — this wrapper's box is what bounds\n // the visible content. Declare that for geometry consumers (see\n // _shared/get-content-edge-element.ts).\n breakoutWrapper.setAttribute('data-content-edge', '');\n breakoutWrapper.append(layoutContainer);\n\n layoutWrapper.append(breakoutWrapper);\n\n const dropCursorElement = document.createElement('div');\n dropCursorElement.classList.add(styles.dropCursor);\n\n // Built on first use and then kept: most layouts are not paywalls.\n let paywallDivider: HTMLDivElement | undefined;\n const syncPaywallDivider = (wrapper: HTMLElement, show: boolean) => {\n if (!show && !paywallDivider) {\n return;\n }\n const divider = (paywallDivider ??= createPaywallDivider(t));\n setChild(wrapper, divider, show);\n };\n\n const setState = (newState: Partial<LayoutNodeViewState>) => {\n // We need to keep ref to state object as updates can be triggered by ProseMirror and by us manually. We also we\n // need to keep latest state values in event listeners avoiding closure issues\n const isStateEqual = Object.entries(newState).every(\n ([key, value]) => state[key as keyof LayoutNodeViewState] === value\n );\n if (isStateEqual) {\n return;\n }\n Object.assign(state, newState);\n\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n };\n\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n\n const runLayoutUpdate = () =>\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n const onFocus = () => {\n runLayoutUpdate();\n };\n const onBlur = ({ event }: { event: FocusEvent }) => {\n // Skip update when focus moves to an element within the layout (e.g. cell handle, resize handle)\n if (event.relatedTarget && layoutWrapper.contains(event.relatedTarget as Node)) {\n return;\n }\n runLayoutUpdate();\n };\n editor.on('selectionUpdate', runLayoutUpdate);\n editor.on('focus', onFocus);\n editor.on('blur', onBlur);\n\n // Refresh chrome when a modal opens/closes — opening a settings modal blurs\n // the editor before the modal mount, and we want the selection to stay\n // visible while the modal is up. The modal service's pub/sub wiring is\n // attached after the editor is constructed, so defer to a microtask.\n let modalSubsCancelled = false;\n let modalSubs: { cancel: () => void }[] = [];\n queueMicrotask(() => {\n if (modalSubsCancelled || !modals) {\n return;\n }\n modalSubs = [modals.onModalOpened(runLayoutUpdate), modals.onModalClosed(runLayoutUpdate)];\n });\n\n const removeFocusListeners = () => {\n editor.off('selectionUpdate', runLayoutUpdate);\n editor.off('focus', onFocus);\n editor.off('blur', onBlur);\n modalSubsCancelled = true;\n modalSubs.forEach(s => s.cancel());\n };\n\n const cleanups = disableInteractions\n ? [removeFocusListeners]\n : [\n removeFocusListeners,\n attachCellResizeHandler({ layoutElement, state, editor, setState }),\n attachCellDragHandler({ layoutElement, editor, setState }),\n attachLayoutEventHandlers({\n layoutWrapper,\n layoutElement,\n editor,\n setState,\n }),\n ];\n\n return {\n dom: layoutWrapper,\n contentDOM: layoutElement,\n update: (newNode: PmNode) => {\n if (newNode.type !== node.type) {\n return false;\n }\n if (!state.isResizing) {\n state.columnTemplate = getGridTemplateColumns(newNode);\n }\n // oxlint-disable-next-line no-param-reassign\n node = newNode;\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node: newNode,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n return true;\n },\n ignoreMutation: (mutation: MutationRecord | { type: 'selection'; target: Node }) => {\n const isMutatingLayoutStyle = mutation.target === layoutStyle;\n const isMutatingDataAttribute =\n mutation.type === 'attributes' && mutation.attributeName?.startsWith('data-');\n const isMutatingLayoutAttribute =\n mutation.target === layoutElement && mutation.type === 'attributes';\n const isMutatingLayoutWrapperAttribute =\n mutation.target === layoutWrapper && mutation.type === 'attributes';\n const isMutatingLayoutWrapperChildren =\n mutation.target === layoutWrapper && mutation.type === 'childList';\n // Divider elements are fully owned by applySectionDivider — a real\n // style change (e.g. dragging the height slider while the layout is\n // selected) must not make ProseMirror reparse the node view, which\n // would drop the layout's NodeSelection.\n const isMutatingSectionDivider =\n mutation.target instanceof Element &&\n (mutation.target.hasAttribute('data-layout-divider') ||\n mutation.target.hasAttribute('data-layout-dividers-clip'));\n const isMutatingDropCursor = mutation.target === dropCursorElement;\n // Ignore mutations to breakout wrapper\n const isMutatingBreakoutWrapper = mutation.target === breakoutWrapper;\n // Ignore mutations to layout container (resize handles are attached here)\n const isMutatingLayoutContainer = mutation.target === layoutContainer;\n\n return (\n isMutatingLayoutStyle ||\n isMutatingDataAttribute ||\n isMutatingLayoutAttribute ||\n isMutatingLayoutWrapperAttribute ||\n isMutatingLayoutWrapperChildren ||\n isMutatingSectionDivider ||\n isMutatingDropCursor ||\n isMutatingBreakoutWrapper ||\n isMutatingLayoutContainer\n );\n },\n destroy: () => {\n cleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.length = 0;\n },\n };\n };\n\nconst attachResizeHandlers = ({\n layoutContainer,\n layoutWrapper,\n editor,\n node,\n resizableHandlerCleanups,\n}: Pick<NodeViewRendererProps, 'editor' | 'node'> & {\n layoutContainer: HTMLDivElement;\n layoutWrapper: HTMLDivElement;\n resizableHandlerCleanups: (() => void)[];\n}) => {\n const minWidth = 200;\n\n const cleanupHorizontalResizeHandler = createResizeHandler({\n resizeElement: layoutContainer,\n isEnabled: true,\n getMinWidth: () => minWidth,\n getMaxWidth: () => {\n const nodeContainer = layoutContainer.closest('[data-breakout=\"normal\"]') as HTMLElement;\n const nodeContentStyles = window.getComputedStyle(nodeContainer);\n const paddingStart = parseInt(nodeContentStyles.paddingInlineStart) || 0;\n const paddingEnd = parseInt(nodeContentStyles.paddingInlineEnd) || 0;\n\n return Math.max(minWidth, nodeContainer.clientWidth - paddingStart - paddingEnd);\n },\n enable: { left: true, right: true },\n lockAspectRatio: false,\n setMaxWidthAsPercentage: true,\n alignment: 'CENTER',\n onResize: () => {\n // Visual update during resize is handled by CSS variable --ricos-internal-resize-width\n // Editor state is updated only in onResizeStop to avoid lag\n },\n onResizeStop: ({ width, isMaxWidth }) => {\n editor\n .chain()\n .setContainerWidth(node.attrs.id, isMaxWidth ? null : width)\n .run();\n },\n });\n resizableHandlerCleanups.push(cleanupHorizontalResizeHandler);\n\n // Create vertical resize handler. Both top and bottom margins are linked\n // (change together). The handle sits on the layout's \"free\" edge:\n // - footer banner (BOTTOM) → top edge (where it meets the content above)\n // - top banner / regular layout → bottom edge\n const isFooterBanner = node.attrs.banner?.position === 'BOTTOM';\n const cleanupVerticalResize = createVerticalMarginResizeHandler({\n layoutWrapper,\n position: isFooterBanner ? 'top' : 'bottom',\n minPadding: 0,\n onResize: (newPadding: number) => {\n editor\n .chain()\n .updateNodeAttrsById(node.attrs.id, {\n backdropPaddingTop: newPadding,\n backdropPaddingBottom: newPadding,\n })\n .run();\n },\n });\n resizableHandlerCleanups.push(cleanupVerticalResize);\n};\n\nconst updateLayoutView = ({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n}: Pick<NodeViewRendererProps, 'node' | 'getPos' | 'editor'> & {\n layoutWrapper: HTMLDivElement;\n layoutStyle: HTMLStyleElement;\n layoutElement: HTMLDivElement;\n layoutContainer: HTMLDivElement;\n breakoutWrapper: HTMLDivElement;\n dropCursorElement: HTMLDivElement;\n syncPaywallDivider: (wrapper: HTMLElement, show: boolean) => void;\n state: LayoutNodeViewState;\n resizableHandlerCleanups: (() => void)[];\n isMobile: boolean;\n suppressDragHandle?: boolean;\n disableInteractions: boolean;\n colorPalette?: RicosPalette;\n modals?: ModalService;\n}) => {\n const { $to, $from } = editor.state.selection;\n const pos = getPos();\n const layoutEnd = pos + node.nodeSize;\n const isSelected = pos === $from.pos && layoutEnd === $to.pos;\n const isInSelection = pos >= $from.pos && layoutEnd <= $to.pos;\n const inLayout = isInLayout($to, node.attrs.id);\n const isCellSelected = isCellInLayoutSelected($to, $from, node.attrs.id, editor);\n // A NodeSelection on a block inside a cell, or on a container holding this layout, owns\n // the drag affordance: the layout's grips and resize handles next to it would read as\n // more handles for that node.\n const isOtherNodeSelected =\n editor.state.selection instanceof NodeSelection &&\n !isSelected &&\n !isCellSelected &&\n (inLayout || isInSelection);\n // While a modal is open the editor blurs, but the user is still acting on\n // this layout — keep chrome visible only when it is the strict NodeSelection\n // target. Cursor-in-layout / range-covers-layout / cell-selected chrome\n // requires real editor focus.\n const shouldShowActiveLayoutStyles =\n editor.view.hasFocus() || (isEditorOrModalActive(editor.view, modals) && isSelected);\n const scopeValue = `${node.attrs.id}-${node.attrs.responsivenessBreakpoint}-${node.attrs.responsivenessBehaviour}`;\n const isWrapping = node.attrs.responsivenessBehaviour === 'WRAP';\n const isBanner = isEdgeBanner(node.attrs.banner);\n // Show side resize handles when layout is selected, a cell is selected, cursor is inside the layout, or during column resize\n const shouldShowResize =\n shouldShowActiveLayoutStyles &&\n !isOtherNodeSelected &&\n (isSelected || isInSelection || isCellSelected || inLayout || state.isResizing);\n\n // Resize handler lifecycle (transition-only).\n const hasResizeHandlers = resizableHandlerCleanups.length > 0;\n if (hasResizeHandlers && !shouldShowResize) {\n resizableHandlerCleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.length = 0;\n } else if (shouldShowResize && !hasResizeHandlers && !disableInteractions) {\n attachResizeHandlers({\n layoutContainer,\n layoutWrapper,\n editor,\n node,\n resizableHandlerCleanups,\n });\n }\n\n // Drag handle (creation-only; subsequent runs just update its data-hook).\n const existingDragHandleWrapper = breakoutWrapper.querySelector(\n '[data-layout-drag-handle-wrapper]'\n ) as HTMLDivElement | null;\n if (!isBanner && !suppressDragHandle && !existingDragHandleWrapper) {\n createLayoutDragHandle({ breakoutWrapper, layoutElement, nodeId: node.attrs.id, editor });\n } else if ((isBanner || suppressDragHandle) && existingDragHandleWrapper) {\n existingDragHandleWrapper.remove();\n } else if (!isBanner && existingDragHandleWrapper) {\n const existingDragHandle = existingDragHandleWrapper.querySelector(\n '[data-layout-handle]'\n ) as HTMLButtonElement | null;\n if (existingDragHandle) {\n setAttr(existingDragHandle, 'data-hook', `${LAYOUT_HANDLE}-${node.attrs.id}`);\n }\n }\n\n // layoutWrapper: classes, data attributes.\n layoutWrapper.classList.toggle(styles.withVerticalResize, shouldShowResize);\n const isPaywall = isPaywallLayoutNode(node);\n layoutWrapper.classList.toggle(styles.paywall, isPaywall);\n // Gated on an editable editor as well as paywall-ness, so the divider never shows in the\n // viewer. Appended last in the wrapper and absolutely positioned by layouts.scss.\n syncPaywallDivider(layoutWrapper, isPaywall && editor.isEditable);\n setAttr(\n layoutWrapper,\n 'data-layout-banner',\n isBanner ? (node.attrs.banner?.position === 'BOTTOM' ? 'bottom' : 'top') : null\n );\n\n // layoutWrapper: refresh data-hook so it tracks the node id across updates.\n setAttr(layoutWrapper, 'data-hook', getLayoutWrapperDataHook(node.attrs.id));\n\n // layoutElement: data attributes, class set, column template var.\n setAttr(layoutElement, 'data-layout-container', node.attrs.id);\n setAttr(layoutElement, 'data-layout-scope', scopeValue);\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-column-template',\n formatGridTemplateColumns(state.columnTemplate)\n );\n setClass(\n layoutElement,\n classNames({\n [styles.layout]: true,\n [styles.designOnLayout]: !node.attrs.designTarget || node.attrs.designTarget === 'LAYOUT',\n [styles.designOnCell]: node.attrs.designTarget === 'CELL',\n [styles.mobile]: isMobile,\n [styles.draggingOver]: state.isDraggingOver || state.dropCursorPosition !== null,\n [styles.invalidLeft]: state.invalid === 'left',\n [styles.invalidRight]: state.invalid === 'right',\n [styles.resizing]: state.isResizing,\n [styles.dragging]: state.isDragging,\n [styles.layoutSelected]: shouldShowActiveLayoutStyles && isInSelection,\n [styles.inLayout]: shouldShowActiveLayoutStyles && inLayout,\n [styles.bannerMargin]: isEdgeBanner(node.attrs.banner),\n })\n );\n\n // layoutContainer: custom width.\n const customWidth = node.attrs.containerData?.width?.custom;\n setStyleVar(\n layoutContainer,\n '--ricos-internal-layout-width',\n customWidth ? `${customWidth}px` : null\n );\n\n // layoutStyle: responsive container query CSS.\n const maxWidth = node.attrs.responsivenessBreakpoint\n ? parseInt(node.attrs.responsivenessBreakpoint, 10)\n : LAYOUT_DEFAULTS.responsivenessBreakpoint;\n const responsiveRules = [\n {\n selector: `[data-layout-scope=\"${scopeValue}\"].${styles.layout}`,\n declarations: `\n --ricos-internal-layout-display: ${isWrapping ? 'flex' : 'grid'};\n --ricos-internal-layout-justify-content: ${isWrapping ? 'center' : 'auto'};\n --ricos-internal-layout-grid-template: grid-template-columns: minmax(0, 1fr);\n --ricos-internal-layout-cell-min-width: ${\n isWrapping\n ? `${Math.floor(node.attrs.responsivenessBreakpoint / node.childCount)}px`\n : '100%'\n };\n --ricos-internal-layout-cell-height: ${isWrapping ? 'auto' : '100%'};\n `,\n },\n {\n selector: `[data-layout-scope=\"${scopeValue}\"] .${styles.resizeHandler}`,\n declarations: 'display: none;',\n },\n ];\n setText(\n layoutStyle,\n `\n @supports not (contain: inline-size) {\n @media only screen and (max-width: ${maxWidth}px) {\n ${responsiveRules.map(({ selector, declarations }) => `${selector} {${declarations}}`).join('\\n')}\n }\n }\n ${buildResponsiveCss(`(width < ${maxWidth}px)`, responsiveRules)}\n `\n );\n\n // dropCursor: presence + position.\n const showDropCursor = state.dropCursorPosition !== null;\n setStyleVar(\n dropCursorElement,\n '--ricos-internal-layout-drop-cursor-position',\n showDropCursor ? `${state.dropCursorPosition}px` : null\n );\n setChild(layoutWrapper, dropCursorElement, showDropCursor);\n\n // Background fill (gradient OR color OR none).\n const backgroundGradient = getResolvedLayoutFillGradient(\n node.attrs.background,\n node.attrs.backgroundColor\n );\n const backgroundColorValue = getResolvedLayoutFillColor(\n node.attrs.background,\n node.attrs.backgroundColor\n );\n applyFill(layoutElement, {\n gradient: backgroundGradient,\n color: backgroundColorValue,\n gradientVar: '--ricos-internal-layout-background-gradient',\n colorVar: '--ricos-internal-layout-background-color',\n colorPalette,\n });\n\n // Background image.\n applyImage(layoutElement, node.attrs.backgroundImage, '--ricos-internal-layout-background-image');\n\n // Background image overlay (only visible when image present): gradient > color-with-opacity.\n applyImageOverlay(layoutElement, {\n image: node.attrs.backgroundImage,\n gradient: backgroundGradient,\n color: backgroundColorValue,\n overlayVar: '--ricos-internal-layout-background-overlay',\n });\n\n // Border + radius + gap on layoutElement.\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-color',\n node.attrs.borderColor\n ? (resolveDocumentColorToCss(node.attrs.borderColor) ?? node.attrs.borderColor)\n : null\n );\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-width',\n node.attrs.borderColor ? `${node.attrs.borderWidth}px` : null\n );\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-radius',\n node.attrs.borderRadius ? `${node.attrs.borderRadius}px` : null\n );\n // NB: existing code wrote `--ricos-internal-layout-vertical-gap` only on removal,\n // and `--ricos-internal-layout-gap` only on set. Preserved as-is to avoid behavior change.\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-gap',\n typeof node.attrs.gap === 'number' ? `${node.attrs.gap}px` : null\n );\n if (typeof node.attrs.gap !== 'number') {\n setStyleVar(layoutElement, '--ricos-internal-layout-vertical-gap', null);\n }\n\n // Backdrop fill (gradient OR color OR none).\n const backdropGradient = getResolvedLayoutFillGradient(\n node.attrs.backdrop,\n node.attrs.backdropColor\n );\n const backdropColorValue = getResolvedLayoutFillColor(\n node.attrs.backdrop,\n node.attrs.backdropColor\n );\n applyFill(layoutWrapper, {\n gradient: backdropGradient,\n color: backdropColorValue,\n gradientVar: '--ricos-internal-layout-backdrop-gradient',\n colorVar: '--ricos-internal-layout-backdrop-color',\n colorPalette,\n });\n\n // Backdrop image.\n applyImage(layoutWrapper, node.attrs.backdropImage, '--ricos-internal-layout-backdrop-image');\n\n // Backdrop padding.\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-backdrop-padding-top',\n node.attrs.backdropPaddingTop ? `${node.attrs.backdropPaddingTop}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-backdrop-padding-bottom',\n node.attrs.backdropPaddingBottom ? `${node.attrs.backdropPaddingBottom}px` : null\n );\n\n // Backdrop image overlay (only visible when image present): gradient > color-with-opacity.\n applyImageOverlay(layoutWrapper, {\n image: node.attrs.backdropImage,\n gradient: backdropGradient,\n color: backdropColorValue,\n overlayVar: '--ricos-internal-layout-backdrop-overlay',\n });\n\n // Cell padding (4-side, with css-shorthand-style fallbacks: cellPadding[i] || [i-2] || [0]).\n const cellPadding =\n node.attrs.cellPadding && node.attrs.cellPadding.length > 0 ? node.attrs.cellPadding : null;\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-top',\n cellPadding ? `${cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-right',\n cellPadding ? `${cellPadding[1] ?? cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-bottom',\n cellPadding ? `${cellPadding[2] ?? cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-left',\n cellPadding ? `${cellPadding[3] ?? cellPadding[1] ?? cellPadding[0]}px` : null\n );\n\n // Section dividers (decorative shape bands at the layout's top/bottom edge).\n applySectionDivider(layoutWrapper, node.attrs.topDivider, 'top');\n applySectionDivider(layoutWrapper, node.attrs.bottomDivider, 'bottom');\n\n // Cell vertical alignment.\n const verticalAlignment =\n node.attrs.cellVerticalAlignment === 'TOP'\n ? 'flex-start'\n : node.attrs.cellVerticalAlignment === 'BOTTOM'\n ? 'flex-end'\n : node.attrs.cellVerticalAlignment\n ? 'center'\n : null;\n setStyleVar(layoutWrapper, '--ricos-internal-layout-cell-vertical-alignment', verticalAlignment);\n};\n\n// Create/update/remove the divider band for one layout edge. A divider is one\n// element per layer (base shape + optional stacked copies) inside a clip\n// element that both edges share — a direct child of layoutWrapper (ProseMirror\n// only manages contentDOM, and ignoreMutation covers the divider elements) —\n// anchored to the wrapper's edges so the shape touches the layout box on all\n// sides and bands taller than the layout crop instead of escaping it. Heights\n// scale only the shapes, never the layout box. Per-layer presentation is\n// inline styles (fully-owned elements, overwritten wholesale each pass); only\n// the edge-wide color/flip flow through CSS variables on layoutWrapper.\nconst appliedDividers = new WeakMap<HTMLElement, { top?: unknown; bottom?: unknown }>();\n\nconst applySectionDivider = (\n layoutWrapper: HTMLElement,\n divider: PmLayoutNode['attrs']['topDivider'],\n edge: 'top' | 'bottom'\n) => {\n // updateLayoutView runs on every selection update, and divider attrs are\n // immutable PM objects — reference equality means the masks and styles below\n // are already applied, so skip the SVG data-URI recomputation and selector\n // queries entirely.\n const applied = appliedDividers.get(layoutWrapper) ?? {};\n if (applied[edge] === divider) {\n return;\n }\n applied[edge] = divider;\n appliedDividers.set(layoutWrapper, applied);\n\n const varPrefix = `--ricos-internal-layout-${edge}-divider`;\n let clipElement = layoutWrapper.querySelector<HTMLElement>(\n ':scope > [data-layout-dividers-clip]'\n );\n const existing = clipElement\n ? Array.from(\n clipElement.querySelectorAll<HTMLElement>(`:scope > [data-layout-divider=\"${edge}\"]`)\n )\n : [];\n // Paint order: DOM order = array order, base shape last (on top).\n const layers = divider ? getDividerLayers(divider) : [];\n\n existing.slice(layers.length).forEach(el => el.remove());\n\n if (layers.length && !clipElement) {\n clipElement = document.createElement('div');\n clipElement.setAttribute('contenteditable', 'false');\n clipElement.setAttribute('data-layout-dividers-clip', '');\n clipElement.classList.add(styles.sectionDividerClip);\n layoutWrapper.append(clipElement);\n }\n\n // Both edges' layers share the clip element, so DOM order decides cross-edge\n // paint order. The viewer always renders top layers before bottom (bottom\n // paints above top) — anchor new top-edge elements before any bottom-edge\n // ones so the stacking matches regardless of which divider the user applied\n // first.\n const insertBeforeElement =\n edge === 'top' && clipElement\n ? clipElement.querySelector(':scope > [data-layout-divider=\"bottom\"]')\n : null;\n\n layers.forEach((layer, index) => {\n let el = existing[index];\n if (!el) {\n el = document.createElement('div');\n el.setAttribute('contenteditable', 'false');\n el.setAttribute('data-layout-divider', edge);\n el.classList.add(\n styles.sectionDivider,\n edge === 'top' ? styles.sectionDividerTop : styles.sectionDividerBottom\n );\n clipElement!.insertBefore(el, insertBeforeElement);\n }\n setAttr(el, 'data-divider-layer', String(index));\n setAttr(\n el,\n 'style',\n `height:${layer.height};opacity:${layer.opacity};` +\n `mask-image:${layer.mask};-webkit-mask-image:${layer.mask};` +\n `mask-size:${layer.maskSize};-webkit-mask-size:${layer.maskSize};` +\n `mask-repeat:${layer.maskRepeat};-webkit-mask-repeat:${layer.maskRepeat};` +\n (layer.maskPosition\n ? `mask-position:${layer.maskPosition};-webkit-mask-position:${layer.maskPosition};`\n : '')\n );\n });\n\n setStyleVar(\n layoutWrapper,\n `${varPrefix}-color`,\n divider?.color ? (resolveDocumentColorToCss(divider.color) ?? divider.color) : null\n );\n setStyleVar(\n layoutWrapper,\n `${varPrefix}-flip`,\n divider && (divider.flipped ?? DIVIDER_PRESETS[divider.type].defaultFlipped) ? '-1' : null\n );\n};\n\ntype ApplyFillArgs = {\n gradient: ReturnType<typeof getResolvedLayoutFillGradient>;\n color: ReturnType<typeof getResolvedLayoutFillColor>;\n gradientVar: string;\n colorVar: string;\n colorPalette?: RicosPalette;\n};\n\n// Apply a fill (gradient OR solid color) to an element via CSS variables.\n// Mirrors the original three-way precedence: gradient > color > none.\nconst applyFill = (\n el: HTMLElement,\n { gradient, color, gradientVar, colorVar, colorPalette }: ApplyFillArgs\n) => {\n setStyleVar(el, gradientVar, gradient ? schemaGradientToCss(gradient as Gradient) : null);\n setStyleVar(\n el,\n colorVar,\n !gradient && color ? (resolveDocumentColorToCss(color) ?? color) : null\n );\n setStyleVar(\n el,\n '--ricos-internal-selection-color-tuple',\n !gradient && color && color !== TRANSPARENT_HEX_COLOR\n ? getContrastYIQ(color, colorPalette) === 'black'\n ? '0, 0, 0'\n : '255, 255, 255'\n : null\n );\n};\n\n// Apply an optional background/backdrop image to an element via CSS variables.\nconst applyImage = (\n el: HTMLElement,\n image: PmNode['attrs']['backgroundImage'] | undefined,\n varPrefix: string\n) => {\n const imageUrl = image\n ? (image.media?.src.url ?? (image.media?.src.id && getImageUrl(image.media)))\n : null;\n setStyleVar(el, `${varPrefix}-src`, imageUrl ? `url(${imageUrl})` : null);\n setStyleVar(el, `${varPrefix}-opacity`, image?.opacity ? `${image.opacity}%` : null);\n setStyleVar(el, `${varPrefix}-scaling`, image?.scaling ? image.scaling.toLowerCase() : null);\n setStyleVar(\n el,\n `${varPrefix}-position`,\n image?.position ? image.position.toLowerCase().split('_').join(' ') : null\n );\n // Blur is independent of any color overlay — both layers stack.\n setStyleVar(el, `${varPrefix}-blur`, image?.blur ? `blur(${image.blur}px)` : null);\n};\n\ntype ApplyImageOverlayArgs = {\n image: PmNode['attrs']['backgroundImage'] | undefined;\n gradient: ReturnType<typeof getResolvedLayoutFillGradient>;\n color: ReturnType<typeof getResolvedLayoutFillColor>;\n overlayVar: string;\n};\n\n// Apply a color/gradient overlay to a background/backdrop image. Only set when an image is present.\n// `image.overlay` (new model) is authoritative when present; otherwise the legacy `background`/\n// `backdrop` fill is rendered through the image's opacity. Gradient takes precedence over color.\nconst applyImageOverlay = (\n el: HTMLElement,\n { image, gradient, color, overlayVar }: ApplyImageOverlayArgs\n) => {\n let overlay: string | null = null;\n if (image) {\n if (image.overlay) {\n overlay =\n image.overlay.type === 'GRADIENT'\n ? schemaGradientToCss(image.overlay.gradient as Gradient)\n : (resolveDocumentColorToCss(image.overlay.color) ?? image.overlay.color);\n } else if (gradient) {\n overlay = schemaGradientToCss(gradient as Gradient);\n } else if (color) {\n overlay = resolveBackwardCompatOverlay(\n resolveDocumentColorToCss(color) ?? color,\n image.opacity ?? 100,\n 100\n );\n }\n }\n setStyleVar(el, overlayVar, overlay);\n};\n\n// The editor-only marker of the free/paid cut. Pure chrome — it adds no document node.\n// Built once per view, so its translated labels are fixed for the view's lifetime.\nconst createPaywallDivider = (t: (key: string) => string): HTMLDivElement => {\n const divider = document.createElement('div');\n divider.className = styles.paywallDivider;\n divider.setAttribute('data-hook', PAYWALL_DIVIDER);\n divider.setAttribute('aria-hidden', 'true');\n divider.setAttribute('contenteditable', 'false');\n\n const label = document.createElement('span');\n label.className = styles.paywallDividerLabel;\n\n const arrowUp = document.createElement('span');\n arrowUp.className = styles.paywallDividerArrow;\n arrowUp.textContent = '↑';\n\n const arrowDown = document.createElement('span');\n arrowDown.className = styles.paywallDividerArrow;\n arrowDown.textContent = '↓';\n\n label.append(\n document.createTextNode(`${t('GatedContent_Divider_NonSubscribersView')} `),\n arrowUp,\n document.createTextNode(' / '),\n arrowDown,\n document.createTextNode(` ${t('GatedContent_Divider_SubscribersOnlyBelow')}`)\n );\n divider.append(label);\n return divider;\n};\n\nconst getGridTemplateColumns = (node: PmNode) => {\n const cols: number[] = [];\n\n node.content.forEach(cell => {\n if ((cell.type.name as unknown as Node_Type) === Node_Type.LAYOUT_CELL) {\n cols.push(cell.attrs.colSpan);\n }\n });\n\n return cols;\n};\n\nconst formatGridTemplateColumns = (colSpans: number[]) => {\n return colSpans.map(col => `minmax(0, ${col}fr)`).join(' ');\n};\n\ntype LayoutDragHandleProps = {\n breakoutWrapper: HTMLElement;\n layoutElement: HTMLElement;\n nodeId: string;\n editor: NodeViewRendererProps['editor'];\n};\n\nconst createLayoutDragHandle = ({\n breakoutWrapper,\n layoutElement,\n nodeId,\n editor,\n}: LayoutDragHandleProps): (() => void) => {\n // Create drag handle wrapper with contenteditable=false to prevent selection\n const layoutDragHandleWrapper = document.createElement('div');\n layoutDragHandleWrapper.setAttribute('contenteditable', 'false');\n layoutDragHandleWrapper.setAttribute('data-layout-drag-handle-wrapper', '');\n layoutDragHandleWrapper.classList.add(styles.layoutHandlerWrapper);\n\n // Create the drag handle button\n const layoutDragHandle = document.createElement('button');\n layoutDragHandle.setAttribute('data-drag-handle', '');\n layoutDragHandle.setAttribute('data-layout-handle', '');\n layoutDragHandle.setAttribute('data-hook', `${LAYOUT_HANDLE}-${nodeId}`);\n layoutDragHandle.setAttribute('type', 'button');\n layoutDragHandle.classList.add(styles.layoutHandler);\n layoutDragHandle.innerHTML = getMoveIcon();\n\n // Click handler for selecting layout\n const handleClick = () => {\n const layoutId = layoutElement.getAttribute('data-layout-container');\n if (layoutId) {\n editor.chain().selectLayout(layoutId).focus().run();\n }\n };\n\n layoutDragHandle.addEventListener('click', handleClick);\n layoutDragHandleWrapper.append(layoutDragHandle);\n breakoutWrapper.append(layoutDragHandleWrapper);\n\n // Return cleanup function\n return () => {\n layoutDragHandle.removeEventListener('click', handleClick);\n if (layoutDragHandleWrapper.parentNode === breakoutWrapper) {\n breakoutWrapper.removeChild(layoutDragHandleWrapper);\n }\n };\n};\n\ntype VerticalMarginResizeHandlerProps = {\n layoutWrapper: HTMLElement;\n position: 'top' | 'bottom';\n minPadding: number;\n onResize: (newPadding: number) => void;\n};\n\nconst createVerticalMarginResizeHandler = ({\n layoutWrapper,\n position,\n minPadding,\n onResize,\n}: VerticalMarginResizeHandlerProps): (() => void) => {\n // Create the resize handle element\n const handle = document.createElement('div');\n handle.className = position === 'top' ? staticsStyles.handlerTop : staticsStyles.handlerBottom;\n handle.setAttribute('data-hook', `ricos-resize-handler-${position}`);\n\n // Ensure layoutWrapper has position: relative for absolute positioning\n const originalPosition = layoutWrapper.style.position;\n if (!originalPosition || originalPosition === 'static') {\n layoutWrapper.style.position = 'relative';\n }\n\n layoutWrapper.appendChild(handle);\n\n let startY = 0;\n let startPadding = 0;\n let currentPointerId: number | null = null;\n\n const removePointerListeners = () => {\n handle.removeEventListener('pointermove', handlePointerMove);\n handle.removeEventListener('pointerup', handlePointerUp);\n handle.removeEventListener('pointercancel', handlePointerUp);\n handle.removeEventListener('lostpointercapture', handleLostPointerCapture);\n };\n\n /**\n * End the resize: release capture, remove listeners, commit final padding, clear state.\n * When clientY is provided (normal pointerup), final padding is computed from delta.\n * When not provided (lostpointercapture or pointerId mismatch), padding is read from current computed style.\n */\n const finishResize = (clientY?: number) => {\n if (currentPointerId === null) {\n return;\n }\n\n if (handle.hasPointerCapture(currentPointerId)) {\n handle.releasePointerCapture(currentPointerId);\n }\n\n removePointerListeners();\n\n let newPadding: number;\n if (clientY !== undefined) {\n const deltaY = clientY - startY;\n const adjustedDelta = position === 'top' ? -deltaY : deltaY;\n newPadding = Math.round(\n Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, startPadding + adjustedDelta * 0.55))\n );\n } else {\n const computedStyle = window.getComputedStyle(layoutWrapper);\n const paddingProp = position === 'top' ? 'paddingTop' : 'paddingBottom';\n const computed = parseInt(computedStyle[paddingProp], 10);\n newPadding = !isNaN(computed)\n ? Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, computed))\n : minPadding;\n }\n\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-top',\n `${newPadding}px`\n );\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-bottom',\n `${newPadding}px`\n );\n\n onResize(newPadding);\n currentPointerId = null;\n };\n\n const handleLostPointerCapture = (event: PointerEvent) => {\n if (currentPointerId === null || event.pointerId !== currentPointerId) {\n return;\n }\n finishResize();\n };\n\n const handlePointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n currentPointerId = event.pointerId;\n startY = event.clientY;\n\n // Read current padding from computed style - this always reflects the actual rendered value\n const computedStyle = window.getComputedStyle(layoutWrapper);\n const paddingProp = position === 'top' ? 'paddingTop' : 'paddingBottom';\n const computed = parseInt(computedStyle[paddingProp], 10);\n startPadding = !isNaN(computed) ? computed : 0;\n\n handle.setPointerCapture(event.pointerId);\n handle.addEventListener('pointermove', handlePointerMove);\n handle.addEventListener('pointerup', handlePointerUp);\n handle.addEventListener('pointercancel', handlePointerUp);\n handle.addEventListener('lostpointercapture', handleLostPointerCapture);\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (currentPointerId === null || currentPointerId !== event.pointerId) {\n return;\n }\n\n const deltaY = event.clientY - startY;\n // For top handle, dragging up (negative deltaY) should increase padding\n // For bottom handle, dragging down (positive deltaY) should increase padding\n const adjustedDelta = position === 'top' ? -deltaY : deltaY;\n const newPadding = Math.round(\n Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, startPadding + adjustedDelta * 0.55))\n );\n\n // Update visual feedback immediately via CSS variables (both top and bottom for linked margins)\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-top',\n `${newPadding}px`\n );\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-bottom',\n `${newPadding}px`\n );\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n if (currentPointerId === null) {\n return;\n }\n if (currentPointerId !== event.pointerId) {\n // Mismatch: still clean up so we don't leave capture/listeners stuck\n finishResize();\n return;\n }\n\n finishResize(event.clientY);\n };\n\n handle.addEventListener('pointerdown', handlePointerDown);\n\n // Return cleanup function\n return () => {\n if (currentPointerId !== null && handle.hasPointerCapture(currentPointerId)) {\n handle.releasePointerCapture(currentPointerId);\n }\n removePointerListeners();\n handle.removeEventListener('pointerdown', handlePointerDown);\n\n if (handle.parentNode === layoutWrapper) {\n layoutWrapper.removeChild(handle);\n }\n\n if (!originalPosition || originalPosition === 'static') {\n layoutWrapper.style.position = originalPosition || '';\n }\n };\n};\n\nconst isInLayout = ($pos: ResolvedPos, nodeId: string) => {\n const layoutNode = findParentNodeClosestToPos(\n $pos,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n return layoutNode?.attrs.id === nodeId;\n};\n\nconst isCellInLayoutSelected = (\n $to: ResolvedPos,\n $from: ResolvedPos,\n layoutId: string,\n editor: NodeViewRendererProps['editor']\n): boolean => {\n // Check if a cell node is selected (NodeSelection)\n const selection = editor.state.selection;\n if (!(selection instanceof NodeSelection)) {\n return false;\n }\n\n const selectedNode = selection.node;\n if (selectedNode?.type.name !== TIPTAP_LAYOUT_CELL_TYPE) {\n return false;\n }\n\n // Check if this cell belongs to this layout\n const layoutNode = findParentNodeClosestToPos(\n $from,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n return layoutNode?.attrs.id === layoutId;\n};\n\nconst getCellParent = (node: ProseMirrorNode, cellId: string): ProseMirrorNode | null => {\n let parent: ProseMirrorNode | null = null;\n node.descendants((child, _pos, par) => {\n if (child.attrs.id === cellId) {\n parent = par;\n }\n });\n\n return parent;\n};\n\nconst getCellIndex = (node: PmNode, cellId: string) => {\n let index = -1;\n\n node.content.forEach((cell, _offset, i) => {\n if (cell.attrs.id === cellId) {\n index = i;\n }\n });\n\n return index;\n};\n\nconst isDraggingCell = (editor: NodeViewRendererProps['editor']) => {\n const slice = editor.view.dragging?.slice;\n\n if (!slice) {\n return false;\n }\n\n return (\n slice.openStart === 0 &&\n slice.openEnd === 0 &&\n slice.content.childCount === 1 &&\n editor.view.dragging?.slice.content.firstChild?.type.name === TIPTAP_LAYOUT_CELL_TYPE\n );\n};\n\nconst attachCellResizeHandler = ({\n layoutElement,\n state,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutElement: HTMLElement;\n state: LayoutNodeViewState;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n const dragHandle: HTMLElement | null = (event.target as HTMLElement)?.closest(\n '[data-layout-cell-resize-handle]'\n );\n\n if (!dragHandle || !event.currentTarget) {\n return;\n }\n\n const cellNodeId = dragHandle.dataset.layoutCellResizeHandle;\n\n if (!cellNodeId) {\n logInvariant(\n Error(\n 'Cell resize prevented. No cell id found! Make sure to add the data-layout-cell-resize-handle attribute to the drag handle'\n )\n );\n return;\n }\n event.preventDefault();\n\n // Set resizing state immediately to hide the blue selection overlay\n setState({ isResizing: true });\n\n const layoutNode = getCellParent(editor.state.doc, cellNodeId);\n\n if (!layoutNode) {\n logInvariant(Error('Cell resize prevented. Draggable cell has no parent!'));\n return;\n }\n\n const index = getCellIndex(layoutNode, cellNodeId);\n const currentOffset = event.clientX;\n const parentRect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const fractionInPixels = parentRect.width / MAX_COLUMNS;\n const minColumnWidth = fractionInPixels * MIN_COL_SPAN;\n const columnTemplateInFractionsByPixel = state.columnTemplate.map(\n col => col * fractionInPixels\n );\n\n // Clear any existing selection when starting resize\n window.getSelection()?.removeAllRanges();\n\n // Prevent any selection from starting during resize\n const preventSelection = (e: Event) => {\n e.preventDefault();\n };\n document.addEventListener('selectstart', preventSelection);\n\n setState({\n columnTemplate: columnTemplateInFractionsByPixel,\n isResizing: true,\n });\n\n const onDrag = (event: PointerEvent) => {\n event.preventDefault();\n let invalid: 'none' | 'left' | 'right' = 'none';\n\n const offset = currentOffset - event.clientX;\n\n const newTemplate = [...columnTemplateInFractionsByPixel];\n newTemplate[index] = columnTemplateInFractionsByPixel[index] + offset;\n newTemplate[index - 1] = columnTemplateInFractionsByPixel[index - 1] - offset;\n\n if (newTemplate[index] < minColumnWidth) {\n const diff = minColumnWidth - newTemplate[index];\n newTemplate[index] = minColumnWidth;\n newTemplate[index - 1] -= diff;\n invalid = 'right';\n }\n\n if (newTemplate[index - 1] < minColumnWidth) {\n const diff = minColumnWidth - newTemplate[index - 1];\n newTemplate[index - 1] = minColumnWidth;\n newTemplate[index] -= diff;\n invalid = 'left';\n }\n\n if (newTemplate.some(col => col < minColumnWidth)) {\n setState({ invalid });\n return;\n }\n\n setState({\n columnTemplate: newTemplate,\n invalid,\n });\n };\n\n const stopDrag = (event: PointerEvent) => {\n event.preventDefault();\n\n // Remove selection prevention listener\n document.removeEventListener('selectstart', preventSelection);\n\n // Clear any text selection that occurred during resize\n window.getSelection()?.removeAllRanges();\n\n const templateInFractions = state.columnTemplate.map(col => {\n return Math.round(col / fractionInPixels);\n });\n\n const diff = MAX_COLUMNS - templateInFractions.reduce((acc, val) => acc + val, 0);\n templateInFractions[index] += diff;\n\n editor\n .chain()\n .setCellsColSpan(layoutNode.attrs.id, templateInFractions)\n .selectLayout(layoutNode.attrs.id)\n .focus()\n .run();\n\n setState({\n invalid: 'none',\n isResizing: false,\n columnTemplate: templateInFractions,\n });\n\n window.removeEventListener('pointerup', stopDrag);\n window.removeEventListener('pointermove', onDrag);\n };\n\n window.addEventListener('pointerup', stopDrag);\n window.addEventListener('pointermove', onDrag);\n };\n\n layoutElement.addEventListener('pointerdown', onPointerDown);\n\n return () => {\n layoutElement.removeEventListener('pointerdown', onPointerDown);\n };\n};\n\nconst attachCellDragHandler = ({\n layoutElement,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutElement: HTMLElement;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onDragStart = (event: DragEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n if (!element) {\n return;\n }\n\n if (element.closest('[data-block-drag-handle]')) {\n return;\n }\n\n const cellElement = element.closest('[data-layout-cell]') as HTMLElement | null;\n const cellNodeId = cellElement?.getAttribute('data-layout-cell');\n if (!cellNodeId || !cellElement) {\n return;\n }\n\n // Drags from inner draggable nodes (buttons, images, etc.) bubble through here too.\n // Only treat this as a cell drag when the cell itself is the closest draggable element.\n const draggableAncestor = element.closest('[draggable=\"true\"]');\n if (draggableAncestor !== cellElement) {\n return;\n }\n\n editor.commands.selectCell(cellNodeId);\n event.dataTransfer?.setDragImage(cellElement, 0, 0);\n\n // Capture the source layout now, while the cell is still inside it. When the\n // cell is dropped outside any layout it ends up orphaned; cell-normalizing\n // uses this to re-wrap it in a layout that keeps the source styling and to\n // remove the now-drained source layout. Keyed by layout id (preserved across\n // the drop) rather than cell id (regenerated on the card-paste path).\n const sourceLayout = findLayoutOfCell(editor.state.doc, cellNodeId);\n (editor.storage[TIPTAP_LAYOUT_TYPE] as LayoutExtensionStorage).draggedCellSourceLayout =\n sourceLayout\n ? {\n layoutId: sourceLayout.node.attrs.id,\n attrs: sourceLayout.node.attrs,\n // Only the source layout that held this cell *alone* should be removed\n // after the drop. A multi-cell source keeps its remaining cell(s).\n wasOnlyCell: sourceLayout.node.childCount === 1,\n }\n : null;\n };\n\n // This is heavily based on prosemirror-view `drop` event. We only need this because PM-View can't\n // handle position resolving for vertical content.\n // https://github.com/ProseMirror/prosemirror-view/blob/0954f523ee0a193f7db3992702e6a3979ade89b8/src/input.ts#L702\n const onDrop = (event: DragEvent) => {\n if (!isDraggingCell(editor)) {\n // Non-cell drops are not this node view's business — the editor's own handlers\n // (block drag handle, PM's built-in drop) resolve them.\n setState({ dropCursorPosition: null, isDraggingOver: false });\n return;\n }\n if (!event.target) {\n return;\n }\n event.stopPropagation();\n setState({ dropCursorPosition: null, isDraggingOver: false });\n const view = editor.view;\n const dragging = view.dragging;\n const slice = dragging?.slice;\n view.dragging = null;\n\n if (!slice) {\n logInvariant(Error('Cell Drag prevented. PM view has no dragging slice'));\n return;\n }\n\n const sourceCell = slice.content.firstChild;\n const sourceCellId = sourceCell?.attrs.id;\n const eventPos = view.posAtDOM(event.target as HTMLElement, 0);\n const $eventPos = view.state.doc.resolve(eventPos);\n if (!eventPos || !sourceCellId) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve event position or source cell id'));\n return;\n }\n\n const layoutNode = findParentNodeClosestToPos(\n $eventPos,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n if (!layoutNode) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve target layout node'));\n return;\n }\n\n const cellIndexInSourceLayout = getCellIndex(layoutNode, sourceCellId);\n const isCellMovedToOtherLayout = cellIndexInSourceLayout === -1;\n if (layoutNode.childCount >= MAX_CELLS && isCellMovedToOtherLayout) {\n return;\n }\n\n const { node: cellNode, pos: cellPos } = findParentNodeClosestToPos(\n $eventPos,\n node => node.type?.name === TIPTAP_LAYOUT_CELL_TYPE\n ) ?? { node: null, pos: -1 };\n\n if (!cellNode || (layoutNode.childCount === 1 && layoutNode.firstChild === sourceCell)) {\n return;\n }\n\n const layout = event.currentTarget as HTMLElement;\n const layoutRect = layout.getBoundingClientRect();\n const cell = (event.target as HTMLElement).closest('[data-layout-cell]');\n\n if (!cell) {\n logInvariant(Error('Cell Drag prevented. Cannot find cell element'));\n return;\n }\n\n const mouseXInLayout = event.clientX - layoutRect.left;\n const cellRect = cell.getBoundingClientRect();\n\n const insertPos =\n mouseXInLayout < cellRect.left - layoutRect.left + cellRect.width / 2\n ? cellPos\n : cellPos + cellNode?.nodeSize;\n\n if (!insertPos) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve insert position'));\n return;\n }\n\n event.preventDefault();\n\n const tr = view.state.tr;\n // @ts-expect-error\n const { node } = dragging;\n\n if (node) {\n node.replace(tr);\n } else {\n tr.deleteSelection();\n }\n\n const pos = tr.mapping.map(insertPos);\n const beforeInsert = tr.doc;\n\n if (!slice.content.firstChild) {\n return;\n }\n\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n\n if (tr.doc.eq(beforeInsert)) {\n return;\n }\n\n const $pos = tr.doc.resolve(pos);\n\n tr.setSelection(new NodeSelection($pos));\n\n if (sourceCellId) {\n const sourceLayoutNode = findLayoutOfCell(view.state.doc, sourceCellId);\n if (sourceLayoutNode) {\n // If cell was moved to another layout, balance the cells in the source layout\n const sourceLayoutInNewTr = findNodeById(tr, sourceLayoutNode.node.attrs.id).pop();\n if (sourceLayoutInNewTr && isCellMovedToOtherLayout) {\n balanceLayoutCells(tr, sourceLayoutInNewTr.node, sourceLayoutInNewTr.pos);\n }\n }\n\n // If cell was moved to another layout, balance the cells in the target layout\n const targetLayoutNode = findLayoutOfCell(tr.doc, sourceCellId);\n if (targetLayoutNode && isCellMovedToOtherLayout) {\n balanceLayoutCells(tr, targetLayoutNode.node, targetLayoutNode.pos);\n }\n }\n\n view.focus();\n view.dispatch(tr);\n };\n\n const onDragOver = (event: DragEvent) => {\n setState({\n isDraggingOver: true,\n });\n\n if (!isDraggingCell(editor)) {\n // Not a cell reorder — let the event bubble unclaimed so the editor's own\n // handlers resolve it (the block drag handle or ProseMirror's built-in dragover,\n // either of which calls preventDefault itself to keep the drop allowed).\n // preventDefault() here would mark the event defaultPrevented, and ProseMirror's\n // eventBelongsToView() drops any such event — starving those handlers and leaving\n // their last published drop-cursor position stale.\n return;\n }\n\n event.preventDefault();\n\n const layout = event.currentTarget as HTMLElement;\n const layoutWrapper = layout.closest('[data-layout-wrapper]');\n\n if (!layoutWrapper) {\n return;\n }\n\n const scale = getElementScale(layout);\n const layoutWrapperRect = layoutWrapper.getBoundingClientRect();\n const cellDropAreas = [...layout.querySelectorAll('[data-layout-cell]')].reduce(\n (acc, cell, index) => {\n const rect = cell.getBoundingClientRect();\n const prevCell = acc[acc.length - 1];\n const left = rect.left - layoutWrapperRect.left;\n return [\n ...acc,\n {\n left: index === 0 ? left : left - (left - prevCell.right) / 2,\n right: rect.right - layoutWrapperRect.left,\n width: rect.width,\n },\n ];\n },\n [] as { left: number; right: number; width: number }[]\n );\n const mouseXInLayout = event.clientX - layoutWrapperRect.left;\n const cellInsideIndex = cellDropAreas.findIndex(cell => {\n return mouseXInLayout > cell.left && mouseXInLayout < cell.right;\n });\n\n if (cellInsideIndex === -1) {\n return;\n }\n\n const cellInside = cellDropAreas[cellInsideIndex];\n const dropIndex =\n mouseXInLayout < cellInside.left + cellInside.width / 2\n ? cellInsideIndex\n : cellInsideIndex + 1;\n\n setState({\n dropCursorPosition:\n (dropIndex >= cellDropAreas.length\n ? cellDropAreas[cellDropAreas.length - 1].right\n : cellDropAreas[dropIndex].left) / scale.scaleX,\n });\n };\n\n const onDragLeave = (event: DragEvent) => {\n if ((event.currentTarget as HTMLElement).contains(event.relatedTarget as HTMLElement)) {\n return;\n }\n\n setState({\n dropCursorPosition: null,\n isDraggingOver: false,\n });\n };\n\n layoutElement.addEventListener('dragstart', onDragStart);\n layoutElement.addEventListener('drop', onDrop);\n layoutElement.addEventListener('dragover', onDragOver);\n layoutElement.addEventListener('dragleave', onDragLeave);\n\n return () => {\n layoutElement.removeEventListener('dragstart', onDragStart);\n layoutElement.removeEventListener('drop', onDrop);\n layoutElement.removeEventListener('dragover', onDragOver);\n layoutElement.removeEventListener('dragleave', onDragLeave);\n };\n};\n\nconst attachLayoutEventHandlers = ({\n layoutWrapper,\n layoutElement,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutWrapper: HTMLElement;\n layoutElement: HTMLElement;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onClick = (event: MouseEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n if (\n element?.closest('[data-layout-cell]') ||\n element?.closest('[data-layout-drag-handle-wrapper]') ||\n element?.closest('[data-resize-handle]')\n ) {\n return;\n }\n const layoutId = layoutElement.getAttribute('data-layout-container');\n if (layoutId) {\n editor.chain().selectLayout(layoutId).focus().run();\n }\n };\n\n const onDragStart = (event: DragEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n const cell = element?.closest('[data-layout-cell]');\n const layoutId = layoutElement.getAttribute('data-layout-container');\n\n if (cell) {\n return;\n }\n\n // Prevent dragging banner layouts - they should stay at their edge\n if (layoutWrapper.hasAttribute('data-layout-banner')) {\n event.preventDefault();\n return;\n }\n\n if (layoutId) {\n editor.commands.selectLayout(layoutId);\n }\n event.dataTransfer?.setDragImage(layoutElement, 0, 0);\n setState({ isDragging: true });\n\n const removeDragging = () => {\n setState({ isDragging: false });\n window.removeEventListener('pointerup', removeDragging);\n };\n\n window.addEventListener('pointerup', removeDragging);\n };\n\n layoutWrapper.addEventListener('click', onClick);\n layoutWrapper.addEventListener('dragstart', onDragStart);\n\n return () => {\n layoutWrapper.removeEventListener('click', onClick);\n layoutWrapper.removeEventListener('dragstart', onDragStart);\n };\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import classNames from 'classnames';\nimport type { Node as ProseMirrorNode } from 'prosemirror-model';\n\nimport {\n getLayoutWrapperDataHook,\n LAYOUT_HANDLE,\n PAYWALL_DIVIDER,\n} from './../../ricos-common-plugins/layout/data-hooks.js';\nimport { createResizeHandler } from './../../ricos-common-plugins/resizable/create-resize-handler.js';\nimport { TIPTAP_LAYOUT_CELL_TYPE, TIPTAP_LAYOUT_TYPE } from './../../ricos-content/index.js';\nimport type { ModalService } from './../../ricos-modals/index.js';\nimport type { Node as NodeOld } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/next-schema/index.js';\nimport type { Gradient } from './../../ricos-types/color-palette-types.js';\nimport type { RicosPalette } from './../../ricos-types/index.js';\nimport type { ExtensionProps } from './../../ricos-types/tiptap.js';\nimport { buildResponsiveCss } from './../../_shared/build-responsive-css.js';\nimport { TRANSPARENT_HEX_COLOR } from './../../_shared/colors.js';\nimport { getMoveIcon } from './../../_shared/drag-handle-icons.js';\nimport { getElementScale } from './../../_shared/get-element-scale.js';\nimport { getLockIcon } from './../../_shared/get-lock-icon.js';\nimport { isEdgeBanner } from './../../_shared/is-edge-banner.js';\nimport { logInvariant } from './../../_shared/log-invariant.js';\nimport { isPaywallLayoutNode } from './../../_shared/paywall/paywall-selection.js';\nimport type { PmLayoutNode } from './../../_shared/pm-node-types.js';\nimport { resolveBackwardCompatOverlay } from './../../_shared/resolve-backward-compat-overlay.js';\nimport { schemaGradientToCss } from './../../_shared/schema-gradient-to-css.js';\nimport { resolveDocumentColorToCss } from './../../_shared/theme-color-token.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../tiptap/index.js';\nimport { findParentNodeClosestToPos } from './../../tiptap/index.js';\nimport type { Node as PmNode, ResolvedPos } from './../../tiptap/pm/model.js';\nimport { NodeSelection } from './../../tiptap/pm/state.js';\nimport { getContrastYIQ } from './../../wix-rich-content-common/Utils/color-utils.js';\nimport { findNodeById } from './../../tiptap-editor/helpers/index.js';\n\nimport staticsStyles from '../statics/styles-scss.js';\nimport { setAttr, setChild, setClass, setStyleVar, setText } from './idempotent-dom.js';\nimport { isEditorOrModalActive } from './is-editor-or-modal-active.js';\nimport { layoutConverter } from './layout-converter.js';\nimport { getResolvedLayoutFillColor, getResolvedLayoutFillGradient } from './layout-fill.js';\nimport styles from './layouts-scss.js';\nimport { DIVIDER_PRESETS, getDividerLayers } from './section-dividers/divider-presets.js';\nimport {\n LAYOUT_DEFAULTS,\n MAX_CELLS,\n MAX_COLUMNS,\n MAX_VERTICAL_MARGIN,\n MIN_COL_SPAN,\n} from './shared-with-viewer.js';\nimport type { LayoutExtensionStorage } from './shared.js';\nimport { balanceLayoutCells, findLayoutOfCell, getImageUrl } from './shared.js';\n\ntype LayoutNodeViewState = {\n columnTemplate: number[];\n isResizing: boolean;\n isDragging: boolean;\n invalid: 'none' | 'left' | 'right';\n dropCursorPosition: null | number;\n isDraggingOver: boolean;\n};\n\ntype LayoutNodeViewOptions = {\n disableInteractions: boolean;\n breakoutRule: ExtensionProps['breakoutRule'];\n isMobile: boolean;\n suppressDragHandle?: boolean;\n colorPalette?: RicosPalette;\n modals?: ModalService;\n t: (key: string) => string;\n};\n\nexport const layoutNodeView =\n ({\n disableInteractions,\n breakoutRule,\n isMobile,\n suppressDragHandle,\n colorPalette,\n modals,\n t,\n }: LayoutNodeViewOptions): NodeViewRenderer =>\n ({ node, getPos, editor }) => {\n const state: LayoutNodeViewState = {\n columnTemplate: getGridTemplateColumns(node),\n isResizing: false,\n isDragging: false,\n invalid: 'none',\n dropCursorPosition: null,\n isDraggingOver: false,\n };\n const resizableHandlerCleanups: (() => void)[] = [];\n const layoutWrapper = document.createElement('div');\n layoutWrapper.setAttribute('data-layout-wrapper', '');\n layoutWrapper.setAttribute('data-hook', getLayoutWrapperDataHook(node.attrs.id));\n layoutWrapper.classList.add(styles.layoutWrapper);\n\n if (disableInteractions) {\n layoutWrapper.classList.add(styles.disabled);\n }\n\n const layoutStyle = document.createElement('style');\n layoutStyle.setAttribute('data-layout-style', node.attrs.id);\n layoutWrapper.append(layoutStyle);\n\n const layoutElement = document.createElement('div');\n\n // Wrap layoutElement in a container that will hold resize handles.\n // ProseMirror only manages contentDOM (layoutElement), so handles\n // attached to layoutContainer won't be removed during DOM reconciliation.\n const layoutContainer = document.createElement('div');\n layoutContainer.setAttribute('data-resize-container', '');\n layoutContainer.classList.add(styles.layoutContainer);\n layoutContainer.append(layoutElement);\n\n const hasBreakout = breakoutRule\n ? breakoutRule({\n node: layoutConverter.fromPm.convert(node.toJSON()) as NodeOld,\n }) === 'fullWidth'\n : false;\n\n if (hasBreakout) {\n layoutWrapper.classList.add(styles.breakoutMargin);\n }\n\n const breakoutWrapper = document.createElement('div');\n breakoutWrapper.setAttribute('data-breakout', 'normal');\n // The layout's root carries no inline padding — this wrapper's box is what bounds\n // the visible content. Declare that for geometry consumers (see\n // _shared/get-content-edge-element.ts).\n breakoutWrapper.setAttribute('data-content-edge', '');\n breakoutWrapper.append(layoutContainer);\n\n layoutWrapper.append(breakoutWrapper);\n\n const dropCursorElement = document.createElement('div');\n dropCursorElement.classList.add(styles.dropCursor);\n\n // Built on first use and then kept: most layouts are not paywalls.\n let paywallDivider: HTMLDivElement | undefined;\n const syncPaywallDivider = (wrapper: HTMLElement, show: boolean) => {\n if (!show && !paywallDivider) {\n return;\n }\n const divider = (paywallDivider ??= createPaywallDivider(t));\n setChild(wrapper, divider, show);\n };\n\n const setState = (newState: Partial<LayoutNodeViewState>) => {\n // We need to keep ref to state object as updates can be triggered by ProseMirror and by us manually. We also we\n // need to keep latest state values in event listeners avoiding closure issues\n const isStateEqual = Object.entries(newState).every(\n ([key, value]) => state[key as keyof LayoutNodeViewState] === value\n );\n if (isStateEqual) {\n return;\n }\n Object.assign(state, newState);\n\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n };\n\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n\n const runLayoutUpdate = () =>\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n const onFocus = () => {\n runLayoutUpdate();\n };\n const onBlur = ({ event }: { event: FocusEvent }) => {\n // Skip update when focus moves to an element within the layout (e.g. cell handle, resize handle)\n if (event.relatedTarget && layoutWrapper.contains(event.relatedTarget as Node)) {\n return;\n }\n runLayoutUpdate();\n };\n editor.on('selectionUpdate', runLayoutUpdate);\n editor.on('focus', onFocus);\n editor.on('blur', onBlur);\n\n // Refresh chrome when a modal opens/closes — opening a settings modal blurs\n // the editor before the modal mount, and we want the selection to stay\n // visible while the modal is up. The modal service's pub/sub wiring is\n // attached after the editor is constructed, so defer to a microtask.\n let modalSubsCancelled = false;\n let modalSubs: { cancel: () => void }[] = [];\n queueMicrotask(() => {\n if (modalSubsCancelled || !modals) {\n return;\n }\n modalSubs = [modals.onModalOpened(runLayoutUpdate), modals.onModalClosed(runLayoutUpdate)];\n });\n\n const removeFocusListeners = () => {\n editor.off('selectionUpdate', runLayoutUpdate);\n editor.off('focus', onFocus);\n editor.off('blur', onBlur);\n modalSubsCancelled = true;\n modalSubs.forEach(s => s.cancel());\n };\n\n const cleanups = disableInteractions\n ? [removeFocusListeners]\n : [\n removeFocusListeners,\n attachCellResizeHandler({ layoutElement, state, editor, setState }),\n attachCellDragHandler({ layoutElement, editor, setState }),\n attachLayoutEventHandlers({\n layoutWrapper,\n layoutElement,\n editor,\n setState,\n }),\n ];\n\n return {\n dom: layoutWrapper,\n contentDOM: layoutElement,\n update: (newNode: PmNode) => {\n if (newNode.type !== node.type) {\n return false;\n }\n if (!state.isResizing) {\n state.columnTemplate = getGridTemplateColumns(newNode);\n }\n // oxlint-disable-next-line no-param-reassign\n node = newNode;\n updateLayoutView({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node: newNode,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n });\n return true;\n },\n ignoreMutation: (mutation: MutationRecord | { type: 'selection'; target: Node }) => {\n const isMutatingLayoutStyle = mutation.target === layoutStyle;\n const isMutatingDataAttribute =\n mutation.type === 'attributes' && mutation.attributeName?.startsWith('data-');\n const isMutatingLayoutAttribute =\n mutation.target === layoutElement && mutation.type === 'attributes';\n const isMutatingLayoutWrapperAttribute =\n mutation.target === layoutWrapper && mutation.type === 'attributes';\n const isMutatingLayoutWrapperChildren =\n mutation.target === layoutWrapper && mutation.type === 'childList';\n // Divider elements are fully owned by applySectionDivider — a real\n // style change (e.g. dragging the height slider while the layout is\n // selected) must not make ProseMirror reparse the node view, which\n // would drop the layout's NodeSelection.\n const isMutatingSectionDivider =\n mutation.target instanceof Element &&\n (mutation.target.hasAttribute('data-layout-divider') ||\n mutation.target.hasAttribute('data-layout-dividers-clip'));\n const isMutatingDropCursor = mutation.target === dropCursorElement;\n // Ignore mutations to breakout wrapper\n const isMutatingBreakoutWrapper = mutation.target === breakoutWrapper;\n // Ignore mutations to layout container (resize handles are attached here)\n const isMutatingLayoutContainer = mutation.target === layoutContainer;\n\n return (\n isMutatingLayoutStyle ||\n isMutatingDataAttribute ||\n isMutatingLayoutAttribute ||\n isMutatingLayoutWrapperAttribute ||\n isMutatingLayoutWrapperChildren ||\n isMutatingSectionDivider ||\n isMutatingDropCursor ||\n isMutatingBreakoutWrapper ||\n isMutatingLayoutContainer\n );\n },\n destroy: () => {\n cleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.length = 0;\n },\n };\n };\n\nconst attachResizeHandlers = ({\n layoutContainer,\n layoutWrapper,\n editor,\n node,\n resizableHandlerCleanups,\n}: Pick<NodeViewRendererProps, 'editor' | 'node'> & {\n layoutContainer: HTMLDivElement;\n layoutWrapper: HTMLDivElement;\n resizableHandlerCleanups: (() => void)[];\n}) => {\n const minWidth = 200;\n\n const cleanupHorizontalResizeHandler = createResizeHandler({\n resizeElement: layoutContainer,\n isEnabled: true,\n getMinWidth: () => minWidth,\n getMaxWidth: () => {\n const nodeContainer = layoutContainer.closest('[data-breakout=\"normal\"]') as HTMLElement;\n const nodeContentStyles = window.getComputedStyle(nodeContainer);\n const paddingStart = parseInt(nodeContentStyles.paddingInlineStart) || 0;\n const paddingEnd = parseInt(nodeContentStyles.paddingInlineEnd) || 0;\n\n return Math.max(minWidth, nodeContainer.clientWidth - paddingStart - paddingEnd);\n },\n enable: { left: true, right: true },\n lockAspectRatio: false,\n setMaxWidthAsPercentage: true,\n alignment: 'CENTER',\n onResize: () => {\n // Visual update during resize is handled by CSS variable --ricos-internal-resize-width\n // Editor state is updated only in onResizeStop to avoid lag\n },\n onResizeStop: ({ width, isMaxWidth }) => {\n editor\n .chain()\n .setContainerWidth(node.attrs.id, isMaxWidth ? null : width)\n .run();\n },\n });\n resizableHandlerCleanups.push(cleanupHorizontalResizeHandler);\n\n // Create vertical resize handler. Both top and bottom margins are linked\n // (change together). The handle sits on the layout's \"free\" edge:\n // - footer banner (BOTTOM) → top edge (where it meets the content above)\n // - top banner / regular layout → bottom edge\n const isFooterBanner = node.attrs.banner?.position === 'BOTTOM';\n const cleanupVerticalResize = createVerticalMarginResizeHandler({\n layoutWrapper,\n position: isFooterBanner ? 'top' : 'bottom',\n minPadding: 0,\n onResize: (newPadding: number) => {\n editor\n .chain()\n .updateNodeAttrsById(node.attrs.id, {\n backdropPaddingTop: newPadding,\n backdropPaddingBottom: newPadding,\n })\n .run();\n },\n });\n resizableHandlerCleanups.push(cleanupVerticalResize);\n};\n\nconst updateLayoutView = ({\n layoutWrapper,\n layoutStyle,\n layoutElement,\n layoutContainer,\n breakoutWrapper,\n dropCursorElement,\n syncPaywallDivider,\n state,\n node,\n getPos,\n editor,\n resizableHandlerCleanups,\n isMobile,\n suppressDragHandle,\n disableInteractions,\n colorPalette,\n modals,\n}: Pick<NodeViewRendererProps, 'node' | 'getPos' | 'editor'> & {\n layoutWrapper: HTMLDivElement;\n layoutStyle: HTMLStyleElement;\n layoutElement: HTMLDivElement;\n layoutContainer: HTMLDivElement;\n breakoutWrapper: HTMLDivElement;\n dropCursorElement: HTMLDivElement;\n syncPaywallDivider: (wrapper: HTMLElement, show: boolean) => void;\n state: LayoutNodeViewState;\n resizableHandlerCleanups: (() => void)[];\n isMobile: boolean;\n suppressDragHandle?: boolean;\n disableInteractions: boolean;\n colorPalette?: RicosPalette;\n modals?: ModalService;\n}) => {\n const { $to, $from } = editor.state.selection;\n const pos = getPos();\n const layoutEnd = pos + node.nodeSize;\n const isSelected = pos === $from.pos && layoutEnd === $to.pos;\n const isInSelection = pos >= $from.pos && layoutEnd <= $to.pos;\n const inLayout = isInLayout($to, node.attrs.id);\n const isCellSelected = isCellInLayoutSelected($to, $from, node.attrs.id, editor);\n // A NodeSelection on a block inside a cell, or on a container holding this layout, owns\n // the drag affordance: the layout's grips and resize handles next to it would read as\n // more handles for that node.\n const isOtherNodeSelected =\n editor.state.selection instanceof NodeSelection &&\n !isSelected &&\n !isCellSelected &&\n (inLayout || isInSelection);\n // While a modal is open the editor blurs, but the user is still acting on\n // this layout — keep chrome visible only when it is the strict NodeSelection\n // target. Cursor-in-layout / range-covers-layout / cell-selected chrome\n // requires real editor focus.\n const shouldShowActiveLayoutStyles =\n editor.view.hasFocus() || (isEditorOrModalActive(editor.view, modals) && isSelected);\n const scopeValue = `${node.attrs.id}-${node.attrs.responsivenessBreakpoint}-${node.attrs.responsivenessBehaviour}`;\n const isWrapping = node.attrs.responsivenessBehaviour === 'WRAP';\n const isBanner = isEdgeBanner(node.attrs.banner);\n // Show side resize handles when layout is selected, a cell is selected, cursor is inside the layout, or during column resize\n const shouldShowResize =\n shouldShowActiveLayoutStyles &&\n !isOtherNodeSelected &&\n (isSelected || isInSelection || isCellSelected || inLayout || state.isResizing);\n\n // Resize handler lifecycle (transition-only).\n const hasResizeHandlers = resizableHandlerCleanups.length > 0;\n if (hasResizeHandlers && !shouldShowResize) {\n resizableHandlerCleanups.forEach(cleanup => cleanup());\n resizableHandlerCleanups.length = 0;\n } else if (shouldShowResize && !hasResizeHandlers && !disableInteractions) {\n attachResizeHandlers({\n layoutContainer,\n layoutWrapper,\n editor,\n node,\n resizableHandlerCleanups,\n });\n }\n\n // Drag handle (creation-only; subsequent runs just update its data-hook).\n const existingDragHandleWrapper = breakoutWrapper.querySelector(\n '[data-layout-drag-handle-wrapper]'\n ) as HTMLDivElement | null;\n if (!isBanner && !suppressDragHandle && !existingDragHandleWrapper) {\n createLayoutDragHandle({ breakoutWrapper, layoutElement, nodeId: node.attrs.id, editor });\n } else if ((isBanner || suppressDragHandle) && existingDragHandleWrapper) {\n existingDragHandleWrapper.remove();\n } else if (!isBanner && existingDragHandleWrapper) {\n const existingDragHandle = existingDragHandleWrapper.querySelector(\n '[data-layout-handle]'\n ) as HTMLButtonElement | null;\n if (existingDragHandle) {\n setAttr(existingDragHandle, 'data-hook', `${LAYOUT_HANDLE}-${node.attrs.id}`);\n }\n }\n\n // layoutWrapper: classes, data attributes.\n layoutWrapper.classList.toggle(styles.withVerticalResize, shouldShowResize);\n const isPaywall = isPaywallLayoutNode(node);\n layoutWrapper.classList.toggle(styles.paywall, isPaywall);\n // Gated on an editable editor as well as paywall-ness, so the divider never shows in the\n // viewer. Appended last in the wrapper and absolutely positioned by layouts.scss.\n syncPaywallDivider(layoutWrapper, isPaywall && editor.isEditable);\n setAttr(\n layoutWrapper,\n 'data-layout-banner',\n isBanner ? (node.attrs.banner?.position === 'BOTTOM' ? 'bottom' : 'top') : null\n );\n\n // layoutWrapper: refresh data-hook so it tracks the node id across updates.\n setAttr(layoutWrapper, 'data-hook', getLayoutWrapperDataHook(node.attrs.id));\n\n // layoutElement: data attributes, class set, column template var.\n setAttr(layoutElement, 'data-layout-container', node.attrs.id);\n setAttr(layoutElement, 'data-layout-scope', scopeValue);\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-column-template',\n formatGridTemplateColumns(state.columnTemplate)\n );\n setClass(\n layoutElement,\n classNames({\n [styles.layout]: true,\n [styles.designOnLayout]: !node.attrs.designTarget || node.attrs.designTarget === 'LAYOUT',\n [styles.designOnCell]: node.attrs.designTarget === 'CELL',\n [styles.mobile]: isMobile,\n [styles.draggingOver]: state.isDraggingOver || state.dropCursorPosition !== null,\n [styles.invalidLeft]: state.invalid === 'left',\n [styles.invalidRight]: state.invalid === 'right',\n [styles.resizing]: state.isResizing,\n [styles.dragging]: state.isDragging,\n [styles.layoutSelected]: shouldShowActiveLayoutStyles && isInSelection,\n [styles.inLayout]: shouldShowActiveLayoutStyles && inLayout,\n [styles.bannerMargin]: isEdgeBanner(node.attrs.banner),\n })\n );\n\n // layoutContainer: custom width.\n const customWidth = node.attrs.containerData?.width?.custom;\n setStyleVar(\n layoutContainer,\n '--ricos-internal-layout-width',\n customWidth ? `${customWidth}px` : null\n );\n\n // layoutStyle: responsive container query CSS.\n const maxWidth = node.attrs.responsivenessBreakpoint\n ? parseInt(node.attrs.responsivenessBreakpoint, 10)\n : LAYOUT_DEFAULTS.responsivenessBreakpoint;\n const responsiveRules = [\n {\n selector: `[data-layout-scope=\"${scopeValue}\"].${styles.layout}`,\n declarations: `\n --ricos-internal-layout-display: ${isWrapping ? 'flex' : 'grid'};\n --ricos-internal-layout-justify-content: ${isWrapping ? 'center' : 'auto'};\n --ricos-internal-layout-grid-template: grid-template-columns: minmax(0, 1fr);\n --ricos-internal-layout-cell-min-width: ${\n isWrapping\n ? `${Math.floor(node.attrs.responsivenessBreakpoint / node.childCount)}px`\n : '100%'\n };\n --ricos-internal-layout-cell-height: ${isWrapping ? 'auto' : '100%'};\n `,\n },\n {\n selector: `[data-layout-scope=\"${scopeValue}\"] .${styles.resizeHandler}`,\n declarations: 'display: none;',\n },\n ];\n setText(\n layoutStyle,\n `\n @supports not (contain: inline-size) {\n @media only screen and (max-width: ${maxWidth}px) {\n ${responsiveRules.map(({ selector, declarations }) => `${selector} {${declarations}}`).join('\\n')}\n }\n }\n ${buildResponsiveCss(`(width < ${maxWidth}px)`, responsiveRules)}\n `\n );\n\n // dropCursor: presence + position.\n const showDropCursor = state.dropCursorPosition !== null;\n setStyleVar(\n dropCursorElement,\n '--ricos-internal-layout-drop-cursor-position',\n showDropCursor ? `${state.dropCursorPosition}px` : null\n );\n setChild(layoutWrapper, dropCursorElement, showDropCursor);\n\n // Background fill (gradient OR color OR none).\n const backgroundGradient = getResolvedLayoutFillGradient(\n node.attrs.background,\n node.attrs.backgroundColor\n );\n const backgroundColorValue = getResolvedLayoutFillColor(\n node.attrs.background,\n node.attrs.backgroundColor\n );\n applyFill(layoutElement, {\n gradient: backgroundGradient,\n color: backgroundColorValue,\n gradientVar: '--ricos-internal-layout-background-gradient',\n colorVar: '--ricos-internal-layout-background-color',\n colorPalette,\n });\n\n // Background image.\n applyImage(layoutElement, node.attrs.backgroundImage, '--ricos-internal-layout-background-image');\n\n // Background image overlay (only visible when image present): gradient > color-with-opacity.\n applyImageOverlay(layoutElement, {\n image: node.attrs.backgroundImage,\n gradient: backgroundGradient,\n color: backgroundColorValue,\n overlayVar: '--ricos-internal-layout-background-overlay',\n });\n\n // Border + radius + gap on layoutElement.\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-color',\n node.attrs.borderColor\n ? (resolveDocumentColorToCss(node.attrs.borderColor) ?? node.attrs.borderColor)\n : null\n );\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-width',\n node.attrs.borderColor ? `${node.attrs.borderWidth}px` : null\n );\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-border-radius',\n node.attrs.borderRadius ? `${node.attrs.borderRadius}px` : null\n );\n // NB: existing code wrote `--ricos-internal-layout-vertical-gap` only on removal,\n // and `--ricos-internal-layout-gap` only on set. Preserved as-is to avoid behavior change.\n setStyleVar(\n layoutElement,\n '--ricos-internal-layout-gap',\n typeof node.attrs.gap === 'number' ? `${node.attrs.gap}px` : null\n );\n if (typeof node.attrs.gap !== 'number') {\n setStyleVar(layoutElement, '--ricos-internal-layout-vertical-gap', null);\n }\n\n // Backdrop fill (gradient OR color OR none).\n const backdropGradient = getResolvedLayoutFillGradient(\n node.attrs.backdrop,\n node.attrs.backdropColor\n );\n const backdropColorValue = getResolvedLayoutFillColor(\n node.attrs.backdrop,\n node.attrs.backdropColor\n );\n applyFill(layoutWrapper, {\n gradient: backdropGradient,\n color: backdropColorValue,\n gradientVar: '--ricos-internal-layout-backdrop-gradient',\n colorVar: '--ricos-internal-layout-backdrop-color',\n colorPalette,\n });\n\n // Backdrop image.\n applyImage(layoutWrapper, node.attrs.backdropImage, '--ricos-internal-layout-backdrop-image');\n\n // Backdrop padding.\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-backdrop-padding-top',\n node.attrs.backdropPaddingTop ? `${node.attrs.backdropPaddingTop}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-backdrop-padding-bottom',\n node.attrs.backdropPaddingBottom ? `${node.attrs.backdropPaddingBottom}px` : null\n );\n\n // Backdrop image overlay (only visible when image present): gradient > color-with-opacity.\n applyImageOverlay(layoutWrapper, {\n image: node.attrs.backdropImage,\n gradient: backdropGradient,\n color: backdropColorValue,\n overlayVar: '--ricos-internal-layout-backdrop-overlay',\n });\n\n // Cell padding (4-side, with css-shorthand-style fallbacks: cellPadding[i] || [i-2] || [0]).\n const cellPadding =\n node.attrs.cellPadding && node.attrs.cellPadding.length > 0 ? node.attrs.cellPadding : null;\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-top',\n cellPadding ? `${cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-right',\n cellPadding ? `${cellPadding[1] ?? cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-bottom',\n cellPadding ? `${cellPadding[2] ?? cellPadding[0]}px` : null\n );\n setStyleVar(\n layoutWrapper,\n '--ricos-internal-layout-cell-padding-left',\n cellPadding ? `${cellPadding[3] ?? cellPadding[1] ?? cellPadding[0]}px` : null\n );\n\n // Section dividers (decorative shape bands at the layout's top/bottom edge).\n applySectionDivider(layoutWrapper, node.attrs.topDivider, 'top');\n applySectionDivider(layoutWrapper, node.attrs.bottomDivider, 'bottom');\n\n // Cell vertical alignment.\n const verticalAlignment =\n node.attrs.cellVerticalAlignment === 'TOP'\n ? 'flex-start'\n : node.attrs.cellVerticalAlignment === 'BOTTOM'\n ? 'flex-end'\n : node.attrs.cellVerticalAlignment\n ? 'center'\n : null;\n setStyleVar(layoutWrapper, '--ricos-internal-layout-cell-vertical-alignment', verticalAlignment);\n};\n\n// Create/update/remove the divider band for one layout edge. A divider is one\n// element per layer (base shape + optional stacked copies) inside a clip\n// element that both edges share — a direct child of layoutWrapper (ProseMirror\n// only manages contentDOM, and ignoreMutation covers the divider elements) —\n// anchored to the wrapper's edges so the shape touches the layout box on all\n// sides and bands taller than the layout crop instead of escaping it. Heights\n// scale only the shapes, never the layout box. Per-layer presentation is\n// inline styles (fully-owned elements, overwritten wholesale each pass); only\n// the edge-wide color/flip flow through CSS variables on layoutWrapper.\nconst appliedDividers = new WeakMap<HTMLElement, { top?: unknown; bottom?: unknown }>();\n\nconst applySectionDivider = (\n layoutWrapper: HTMLElement,\n divider: PmLayoutNode['attrs']['topDivider'],\n edge: 'top' | 'bottom'\n) => {\n // updateLayoutView runs on every selection update, and divider attrs are\n // immutable PM objects — reference equality means the masks and styles below\n // are already applied, so skip the SVG data-URI recomputation and selector\n // queries entirely.\n const applied = appliedDividers.get(layoutWrapper) ?? {};\n if (applied[edge] === divider) {\n return;\n }\n applied[edge] = divider;\n appliedDividers.set(layoutWrapper, applied);\n\n const varPrefix = `--ricos-internal-layout-${edge}-divider`;\n let clipElement = layoutWrapper.querySelector<HTMLElement>(\n ':scope > [data-layout-dividers-clip]'\n );\n const existing = clipElement\n ? Array.from(\n clipElement.querySelectorAll<HTMLElement>(`:scope > [data-layout-divider=\"${edge}\"]`)\n )\n : [];\n // Paint order: DOM order = array order, base shape last (on top).\n const layers = divider ? getDividerLayers(divider) : [];\n\n existing.slice(layers.length).forEach(el => el.remove());\n\n if (layers.length && !clipElement) {\n clipElement = document.createElement('div');\n clipElement.setAttribute('contenteditable', 'false');\n clipElement.setAttribute('data-layout-dividers-clip', '');\n clipElement.classList.add(styles.sectionDividerClip);\n layoutWrapper.append(clipElement);\n }\n\n // Both edges' layers share the clip element, so DOM order decides cross-edge\n // paint order. The viewer always renders top layers before bottom (bottom\n // paints above top) — anchor new top-edge elements before any bottom-edge\n // ones so the stacking matches regardless of which divider the user applied\n // first.\n const insertBeforeElement =\n edge === 'top' && clipElement\n ? clipElement.querySelector(':scope > [data-layout-divider=\"bottom\"]')\n : null;\n\n layers.forEach((layer, index) => {\n let el = existing[index];\n if (!el) {\n el = document.createElement('div');\n el.setAttribute('contenteditable', 'false');\n el.setAttribute('data-layout-divider', edge);\n el.classList.add(\n styles.sectionDivider,\n edge === 'top' ? styles.sectionDividerTop : styles.sectionDividerBottom\n );\n clipElement!.insertBefore(el, insertBeforeElement);\n }\n setAttr(el, 'data-divider-layer', String(index));\n setAttr(\n el,\n 'style',\n `height:${layer.height};opacity:${layer.opacity};` +\n `mask-image:${layer.mask};-webkit-mask-image:${layer.mask};` +\n `mask-size:${layer.maskSize};-webkit-mask-size:${layer.maskSize};` +\n `mask-repeat:${layer.maskRepeat};-webkit-mask-repeat:${layer.maskRepeat};` +\n (layer.maskPosition\n ? `mask-position:${layer.maskPosition};-webkit-mask-position:${layer.maskPosition};`\n : '')\n );\n });\n\n setStyleVar(\n layoutWrapper,\n `${varPrefix}-color`,\n divider?.color ? (resolveDocumentColorToCss(divider.color) ?? divider.color) : null\n );\n setStyleVar(\n layoutWrapper,\n `${varPrefix}-flip`,\n divider && (divider.flipped ?? DIVIDER_PRESETS[divider.type].defaultFlipped) ? '-1' : null\n );\n};\n\ntype ApplyFillArgs = {\n gradient: ReturnType<typeof getResolvedLayoutFillGradient>;\n color: ReturnType<typeof getResolvedLayoutFillColor>;\n gradientVar: string;\n colorVar: string;\n colorPalette?: RicosPalette;\n};\n\n// Apply a fill (gradient OR solid color) to an element via CSS variables.\n// Mirrors the original three-way precedence: gradient > color > none.\nconst applyFill = (\n el: HTMLElement,\n { gradient, color, gradientVar, colorVar, colorPalette }: ApplyFillArgs\n) => {\n setStyleVar(el, gradientVar, gradient ? schemaGradientToCss(gradient as Gradient) : null);\n setStyleVar(\n el,\n colorVar,\n !gradient && color ? (resolveDocumentColorToCss(color) ?? color) : null\n );\n setStyleVar(\n el,\n '--ricos-internal-selection-color-tuple',\n !gradient && color && color !== TRANSPARENT_HEX_COLOR\n ? getContrastYIQ(color, colorPalette) === 'black'\n ? '0, 0, 0'\n : '255, 255, 255'\n : null\n );\n};\n\n// Apply an optional background/backdrop image to an element via CSS variables.\nconst applyImage = (\n el: HTMLElement,\n image: PmNode['attrs']['backgroundImage'] | undefined,\n varPrefix: string\n) => {\n const imageUrl = image\n ? (image.media?.src.url ?? (image.media?.src.id && getImageUrl(image.media)))\n : null;\n setStyleVar(el, `${varPrefix}-src`, imageUrl ? `url(${imageUrl})` : null);\n setStyleVar(el, `${varPrefix}-opacity`, image?.opacity ? `${image.opacity}%` : null);\n setStyleVar(el, `${varPrefix}-scaling`, image?.scaling ? image.scaling.toLowerCase() : null);\n setStyleVar(\n el,\n `${varPrefix}-position`,\n image?.position ? image.position.toLowerCase().split('_').join(' ') : null\n );\n // Blur is independent of any color overlay — both layers stack.\n setStyleVar(el, `${varPrefix}-blur`, image?.blur ? `blur(${image.blur}px)` : null);\n};\n\ntype ApplyImageOverlayArgs = {\n image: PmNode['attrs']['backgroundImage'] | undefined;\n gradient: ReturnType<typeof getResolvedLayoutFillGradient>;\n color: ReturnType<typeof getResolvedLayoutFillColor>;\n overlayVar: string;\n};\n\n// Apply a color/gradient overlay to a background/backdrop image. Only set when an image is present.\n// `image.overlay` (new model) is authoritative when present; otherwise the legacy `background`/\n// `backdrop` fill is rendered through the image's opacity. Gradient takes precedence over color.\nconst applyImageOverlay = (\n el: HTMLElement,\n { image, gradient, color, overlayVar }: ApplyImageOverlayArgs\n) => {\n let overlay: string | null = null;\n if (image) {\n if (image.overlay) {\n overlay =\n image.overlay.type === 'GRADIENT'\n ? schemaGradientToCss(image.overlay.gradient as Gradient)\n : (resolveDocumentColorToCss(image.overlay.color) ?? image.overlay.color);\n } else if (gradient) {\n overlay = schemaGradientToCss(gradient as Gradient);\n } else if (color) {\n overlay = resolveBackwardCompatOverlay(\n resolveDocumentColorToCss(color) ?? color,\n image.opacity ?? 100,\n 100\n );\n }\n }\n setStyleVar(el, overlayVar, overlay);\n};\n\n// The editor-only marker of the free/paid cut. Pure chrome — it adds no document node.\n// Built once per view, so its translated labels are fixed for the view's lifetime.\nconst createPaywallDivider = (t: (key: string) => string): HTMLDivElement => {\n const divider = document.createElement('div');\n divider.className = styles.paywallDivider;\n divider.setAttribute('data-hook', PAYWALL_DIVIDER);\n divider.setAttribute('aria-hidden', 'true');\n divider.setAttribute('contenteditable', 'false');\n\n const label = document.createElement('span');\n label.className = styles.paywallDividerLabel;\n label.innerHTML = getLockIcon(styles.paywallDividerIcon);\n label.append(document.createTextNode(t('GatedContent_Divider_SubscribersOnlyBelow')));\n divider.append(label);\n return divider;\n};\n\nconst getGridTemplateColumns = (node: PmNode) => {\n const cols: number[] = [];\n\n node.content.forEach(cell => {\n if ((cell.type.name as unknown as Node_Type) === Node_Type.LAYOUT_CELL) {\n cols.push(cell.attrs.colSpan);\n }\n });\n\n return cols;\n};\n\nconst formatGridTemplateColumns = (colSpans: number[]) => {\n return colSpans.map(col => `minmax(0, ${col}fr)`).join(' ');\n};\n\ntype LayoutDragHandleProps = {\n breakoutWrapper: HTMLElement;\n layoutElement: HTMLElement;\n nodeId: string;\n editor: NodeViewRendererProps['editor'];\n};\n\nconst createLayoutDragHandle = ({\n breakoutWrapper,\n layoutElement,\n nodeId,\n editor,\n}: LayoutDragHandleProps): (() => void) => {\n // Create drag handle wrapper with contenteditable=false to prevent selection\n const layoutDragHandleWrapper = document.createElement('div');\n layoutDragHandleWrapper.setAttribute('contenteditable', 'false');\n layoutDragHandleWrapper.setAttribute('data-layout-drag-handle-wrapper', '');\n layoutDragHandleWrapper.classList.add(styles.layoutHandlerWrapper);\n\n // Create the drag handle button\n const layoutDragHandle = document.createElement('button');\n layoutDragHandle.setAttribute('data-drag-handle', '');\n layoutDragHandle.setAttribute('data-layout-handle', '');\n layoutDragHandle.setAttribute('data-hook', `${LAYOUT_HANDLE}-${nodeId}`);\n layoutDragHandle.setAttribute('type', 'button');\n layoutDragHandle.classList.add(styles.layoutHandler);\n layoutDragHandle.innerHTML = getMoveIcon();\n\n // Click handler for selecting layout\n const handleClick = () => {\n const layoutId = layoutElement.getAttribute('data-layout-container');\n if (layoutId) {\n editor.chain().selectLayout(layoutId).focus().run();\n }\n };\n\n layoutDragHandle.addEventListener('click', handleClick);\n layoutDragHandleWrapper.append(layoutDragHandle);\n breakoutWrapper.append(layoutDragHandleWrapper);\n\n // Return cleanup function\n return () => {\n layoutDragHandle.removeEventListener('click', handleClick);\n if (layoutDragHandleWrapper.parentNode === breakoutWrapper) {\n breakoutWrapper.removeChild(layoutDragHandleWrapper);\n }\n };\n};\n\ntype VerticalMarginResizeHandlerProps = {\n layoutWrapper: HTMLElement;\n position: 'top' | 'bottom';\n minPadding: number;\n onResize: (newPadding: number) => void;\n};\n\nconst createVerticalMarginResizeHandler = ({\n layoutWrapper,\n position,\n minPadding,\n onResize,\n}: VerticalMarginResizeHandlerProps): (() => void) => {\n // Create the resize handle element\n const handle = document.createElement('div');\n handle.className = position === 'top' ? staticsStyles.handlerTop : staticsStyles.handlerBottom;\n handle.setAttribute('data-hook', `ricos-resize-handler-${position}`);\n\n // Ensure layoutWrapper has position: relative for absolute positioning\n const originalPosition = layoutWrapper.style.position;\n if (!originalPosition || originalPosition === 'static') {\n layoutWrapper.style.position = 'relative';\n }\n\n layoutWrapper.appendChild(handle);\n\n let startY = 0;\n let startPadding = 0;\n let currentPointerId: number | null = null;\n\n const removePointerListeners = () => {\n handle.removeEventListener('pointermove', handlePointerMove);\n handle.removeEventListener('pointerup', handlePointerUp);\n handle.removeEventListener('pointercancel', handlePointerUp);\n handle.removeEventListener('lostpointercapture', handleLostPointerCapture);\n };\n\n /**\n * End the resize: release capture, remove listeners, commit final padding, clear state.\n * When clientY is provided (normal pointerup), final padding is computed from delta.\n * When not provided (lostpointercapture or pointerId mismatch), padding is read from current computed style.\n */\n const finishResize = (clientY?: number) => {\n if (currentPointerId === null) {\n return;\n }\n\n if (handle.hasPointerCapture(currentPointerId)) {\n handle.releasePointerCapture(currentPointerId);\n }\n\n removePointerListeners();\n\n let newPadding: number;\n if (clientY !== undefined) {\n const deltaY = clientY - startY;\n const adjustedDelta = position === 'top' ? -deltaY : deltaY;\n newPadding = Math.round(\n Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, startPadding + adjustedDelta * 0.55))\n );\n } else {\n const computedStyle = window.getComputedStyle(layoutWrapper);\n const paddingProp = position === 'top' ? 'paddingTop' : 'paddingBottom';\n const computed = parseInt(computedStyle[paddingProp], 10);\n newPadding = !isNaN(computed)\n ? Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, computed))\n : minPadding;\n }\n\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-top',\n `${newPadding}px`\n );\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-bottom',\n `${newPadding}px`\n );\n\n onResize(newPadding);\n currentPointerId = null;\n };\n\n const handleLostPointerCapture = (event: PointerEvent) => {\n if (currentPointerId === null || event.pointerId !== currentPointerId) {\n return;\n }\n finishResize();\n };\n\n const handlePointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n currentPointerId = event.pointerId;\n startY = event.clientY;\n\n // Read current padding from computed style - this always reflects the actual rendered value\n const computedStyle = window.getComputedStyle(layoutWrapper);\n const paddingProp = position === 'top' ? 'paddingTop' : 'paddingBottom';\n const computed = parseInt(computedStyle[paddingProp], 10);\n startPadding = !isNaN(computed) ? computed : 0;\n\n handle.setPointerCapture(event.pointerId);\n handle.addEventListener('pointermove', handlePointerMove);\n handle.addEventListener('pointerup', handlePointerUp);\n handle.addEventListener('pointercancel', handlePointerUp);\n handle.addEventListener('lostpointercapture', handleLostPointerCapture);\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (currentPointerId === null || currentPointerId !== event.pointerId) {\n return;\n }\n\n const deltaY = event.clientY - startY;\n // For top handle, dragging up (negative deltaY) should increase padding\n // For bottom handle, dragging down (positive deltaY) should increase padding\n const adjustedDelta = position === 'top' ? -deltaY : deltaY;\n const newPadding = Math.round(\n Math.max(minPadding, Math.min(MAX_VERTICAL_MARGIN, startPadding + adjustedDelta * 0.55))\n );\n\n // Update visual feedback immediately via CSS variables (both top and bottom for linked margins)\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-top',\n `${newPadding}px`\n );\n layoutWrapper.style.setProperty(\n '--ricos-internal-layout-backdrop-padding-bottom',\n `${newPadding}px`\n );\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n if (currentPointerId === null) {\n return;\n }\n if (currentPointerId !== event.pointerId) {\n // Mismatch: still clean up so we don't leave capture/listeners stuck\n finishResize();\n return;\n }\n\n finishResize(event.clientY);\n };\n\n handle.addEventListener('pointerdown', handlePointerDown);\n\n // Return cleanup function\n return () => {\n if (currentPointerId !== null && handle.hasPointerCapture(currentPointerId)) {\n handle.releasePointerCapture(currentPointerId);\n }\n removePointerListeners();\n handle.removeEventListener('pointerdown', handlePointerDown);\n\n if (handle.parentNode === layoutWrapper) {\n layoutWrapper.removeChild(handle);\n }\n\n if (!originalPosition || originalPosition === 'static') {\n layoutWrapper.style.position = originalPosition || '';\n }\n };\n};\n\nconst isInLayout = ($pos: ResolvedPos, nodeId: string) => {\n const layoutNode = findParentNodeClosestToPos(\n $pos,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n return layoutNode?.attrs.id === nodeId;\n};\n\nconst isCellInLayoutSelected = (\n $to: ResolvedPos,\n $from: ResolvedPos,\n layoutId: string,\n editor: NodeViewRendererProps['editor']\n): boolean => {\n // Check if a cell node is selected (NodeSelection)\n const selection = editor.state.selection;\n if (!(selection instanceof NodeSelection)) {\n return false;\n }\n\n const selectedNode = selection.node;\n if (selectedNode?.type.name !== TIPTAP_LAYOUT_CELL_TYPE) {\n return false;\n }\n\n // Check if this cell belongs to this layout\n const layoutNode = findParentNodeClosestToPos(\n $from,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n return layoutNode?.attrs.id === layoutId;\n};\n\nconst getCellParent = (node: ProseMirrorNode, cellId: string): ProseMirrorNode | null => {\n let parent: ProseMirrorNode | null = null;\n node.descendants((child, _pos, par) => {\n if (child.attrs.id === cellId) {\n parent = par;\n }\n });\n\n return parent;\n};\n\nconst getCellIndex = (node: PmNode, cellId: string) => {\n let index = -1;\n\n node.content.forEach((cell, _offset, i) => {\n if (cell.attrs.id === cellId) {\n index = i;\n }\n });\n\n return index;\n};\n\nconst isDraggingCell = (editor: NodeViewRendererProps['editor']) => {\n const slice = editor.view.dragging?.slice;\n\n if (!slice) {\n return false;\n }\n\n return (\n slice.openStart === 0 &&\n slice.openEnd === 0 &&\n slice.content.childCount === 1 &&\n editor.view.dragging?.slice.content.firstChild?.type.name === TIPTAP_LAYOUT_CELL_TYPE\n );\n};\n\nconst attachCellResizeHandler = ({\n layoutElement,\n state,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutElement: HTMLElement;\n state: LayoutNodeViewState;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n const dragHandle: HTMLElement | null = (event.target as HTMLElement)?.closest(\n '[data-layout-cell-resize-handle]'\n );\n\n if (!dragHandle || !event.currentTarget) {\n return;\n }\n\n const cellNodeId = dragHandle.dataset.layoutCellResizeHandle;\n\n if (!cellNodeId) {\n logInvariant(\n Error(\n 'Cell resize prevented. No cell id found! Make sure to add the data-layout-cell-resize-handle attribute to the drag handle'\n )\n );\n return;\n }\n event.preventDefault();\n\n // Set resizing state immediately to hide the blue selection overlay\n setState({ isResizing: true });\n\n const layoutNode = getCellParent(editor.state.doc, cellNodeId);\n\n if (!layoutNode) {\n logInvariant(Error('Cell resize prevented. Draggable cell has no parent!'));\n return;\n }\n\n const index = getCellIndex(layoutNode, cellNodeId);\n const currentOffset = event.clientX;\n const parentRect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const fractionInPixels = parentRect.width / MAX_COLUMNS;\n const minColumnWidth = fractionInPixels * MIN_COL_SPAN;\n const columnTemplateInFractionsByPixel = state.columnTemplate.map(\n col => col * fractionInPixels\n );\n\n // Clear any existing selection when starting resize\n window.getSelection()?.removeAllRanges();\n\n // Prevent any selection from starting during resize\n const preventSelection = (e: Event) => {\n e.preventDefault();\n };\n document.addEventListener('selectstart', preventSelection);\n\n setState({\n columnTemplate: columnTemplateInFractionsByPixel,\n isResizing: true,\n });\n\n const onDrag = (event: PointerEvent) => {\n event.preventDefault();\n let invalid: 'none' | 'left' | 'right' = 'none';\n\n const offset = currentOffset - event.clientX;\n\n const newTemplate = [...columnTemplateInFractionsByPixel];\n newTemplate[index] = columnTemplateInFractionsByPixel[index] + offset;\n newTemplate[index - 1] = columnTemplateInFractionsByPixel[index - 1] - offset;\n\n if (newTemplate[index] < minColumnWidth) {\n const diff = minColumnWidth - newTemplate[index];\n newTemplate[index] = minColumnWidth;\n newTemplate[index - 1] -= diff;\n invalid = 'right';\n }\n\n if (newTemplate[index - 1] < minColumnWidth) {\n const diff = minColumnWidth - newTemplate[index - 1];\n newTemplate[index - 1] = minColumnWidth;\n newTemplate[index] -= diff;\n invalid = 'left';\n }\n\n if (newTemplate.some(col => col < minColumnWidth)) {\n setState({ invalid });\n return;\n }\n\n setState({\n columnTemplate: newTemplate,\n invalid,\n });\n };\n\n const stopDrag = (event: PointerEvent) => {\n event.preventDefault();\n\n // Remove selection prevention listener\n document.removeEventListener('selectstart', preventSelection);\n\n // Clear any text selection that occurred during resize\n window.getSelection()?.removeAllRanges();\n\n const templateInFractions = state.columnTemplate.map(col => {\n return Math.round(col / fractionInPixels);\n });\n\n const diff = MAX_COLUMNS - templateInFractions.reduce((acc, val) => acc + val, 0);\n templateInFractions[index] += diff;\n\n editor\n .chain()\n .setCellsColSpan(layoutNode.attrs.id, templateInFractions)\n .selectLayout(layoutNode.attrs.id)\n .focus()\n .run();\n\n setState({\n invalid: 'none',\n isResizing: false,\n columnTemplate: templateInFractions,\n });\n\n window.removeEventListener('pointerup', stopDrag);\n window.removeEventListener('pointermove', onDrag);\n };\n\n window.addEventListener('pointerup', stopDrag);\n window.addEventListener('pointermove', onDrag);\n };\n\n layoutElement.addEventListener('pointerdown', onPointerDown);\n\n return () => {\n layoutElement.removeEventListener('pointerdown', onPointerDown);\n };\n};\n\nconst attachCellDragHandler = ({\n layoutElement,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutElement: HTMLElement;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onDragStart = (event: DragEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n if (!element) {\n return;\n }\n\n if (element.closest('[data-block-drag-handle]')) {\n return;\n }\n\n const cellElement = element.closest('[data-layout-cell]') as HTMLElement | null;\n const cellNodeId = cellElement?.getAttribute('data-layout-cell');\n if (!cellNodeId || !cellElement) {\n return;\n }\n\n // Drags from inner draggable nodes (buttons, images, etc.) bubble through here too.\n // Only treat this as a cell drag when the cell itself is the closest draggable element.\n const draggableAncestor = element.closest('[draggable=\"true\"]');\n if (draggableAncestor !== cellElement) {\n return;\n }\n\n editor.commands.selectCell(cellNodeId);\n event.dataTransfer?.setDragImage(cellElement, 0, 0);\n\n // Capture the source layout now, while the cell is still inside it. When the\n // cell is dropped outside any layout it ends up orphaned; cell-normalizing\n // uses this to re-wrap it in a layout that keeps the source styling and to\n // remove the now-drained source layout. Keyed by layout id (preserved across\n // the drop) rather than cell id (regenerated on the card-paste path).\n const sourceLayout = findLayoutOfCell(editor.state.doc, cellNodeId);\n (editor.storage[TIPTAP_LAYOUT_TYPE] as LayoutExtensionStorage).draggedCellSourceLayout =\n sourceLayout\n ? {\n layoutId: sourceLayout.node.attrs.id,\n attrs: sourceLayout.node.attrs,\n // Only the source layout that held this cell *alone* should be removed\n // after the drop. A multi-cell source keeps its remaining cell(s).\n wasOnlyCell: sourceLayout.node.childCount === 1,\n }\n : null;\n };\n\n // This is heavily based on prosemirror-view `drop` event. We only need this because PM-View can't\n // handle position resolving for vertical content.\n // https://github.com/ProseMirror/prosemirror-view/blob/0954f523ee0a193f7db3992702e6a3979ade89b8/src/input.ts#L702\n const onDrop = (event: DragEvent) => {\n if (!isDraggingCell(editor)) {\n // Non-cell drops are not this node view's business — the editor's own handlers\n // (block drag handle, PM's built-in drop) resolve them.\n setState({ dropCursorPosition: null, isDraggingOver: false });\n return;\n }\n if (!event.target) {\n return;\n }\n event.stopPropagation();\n setState({ dropCursorPosition: null, isDraggingOver: false });\n const view = editor.view;\n const dragging = view.dragging;\n const slice = dragging?.slice;\n view.dragging = null;\n\n if (!slice) {\n logInvariant(Error('Cell Drag prevented. PM view has no dragging slice'));\n return;\n }\n\n const sourceCell = slice.content.firstChild;\n const sourceCellId = sourceCell?.attrs.id;\n const eventPos = view.posAtDOM(event.target as HTMLElement, 0);\n const $eventPos = view.state.doc.resolve(eventPos);\n if (!eventPos || !sourceCellId) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve event position or source cell id'));\n return;\n }\n\n const layoutNode = findParentNodeClosestToPos(\n $eventPos,\n node => node.type?.name === TIPTAP_LAYOUT_TYPE\n )?.node;\n\n if (!layoutNode) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve target layout node'));\n return;\n }\n\n const cellIndexInSourceLayout = getCellIndex(layoutNode, sourceCellId);\n const isCellMovedToOtherLayout = cellIndexInSourceLayout === -1;\n if (layoutNode.childCount >= MAX_CELLS && isCellMovedToOtherLayout) {\n return;\n }\n\n const { node: cellNode, pos: cellPos } = findParentNodeClosestToPos(\n $eventPos,\n node => node.type?.name === TIPTAP_LAYOUT_CELL_TYPE\n ) ?? { node: null, pos: -1 };\n\n if (!cellNode || (layoutNode.childCount === 1 && layoutNode.firstChild === sourceCell)) {\n return;\n }\n\n const layout = event.currentTarget as HTMLElement;\n const layoutRect = layout.getBoundingClientRect();\n const cell = (event.target as HTMLElement).closest('[data-layout-cell]');\n\n if (!cell) {\n logInvariant(Error('Cell Drag prevented. Cannot find cell element'));\n return;\n }\n\n const mouseXInLayout = event.clientX - layoutRect.left;\n const cellRect = cell.getBoundingClientRect();\n\n const insertPos =\n mouseXInLayout < cellRect.left - layoutRect.left + cellRect.width / 2\n ? cellPos\n : cellPos + cellNode?.nodeSize;\n\n if (!insertPos) {\n logInvariant(Error('Cell Drag prevented. Cannot resolve insert position'));\n return;\n }\n\n event.preventDefault();\n\n const tr = view.state.tr;\n // @ts-expect-error\n const { node } = dragging;\n\n if (node) {\n node.replace(tr);\n } else {\n tr.deleteSelection();\n }\n\n const pos = tr.mapping.map(insertPos);\n const beforeInsert = tr.doc;\n\n if (!slice.content.firstChild) {\n return;\n }\n\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n\n if (tr.doc.eq(beforeInsert)) {\n return;\n }\n\n const $pos = tr.doc.resolve(pos);\n\n tr.setSelection(new NodeSelection($pos));\n\n if (sourceCellId) {\n const sourceLayoutNode = findLayoutOfCell(view.state.doc, sourceCellId);\n if (sourceLayoutNode) {\n // If cell was moved to another layout, balance the cells in the source layout\n const sourceLayoutInNewTr = findNodeById(tr, sourceLayoutNode.node.attrs.id).pop();\n if (sourceLayoutInNewTr && isCellMovedToOtherLayout) {\n balanceLayoutCells(tr, sourceLayoutInNewTr.node, sourceLayoutInNewTr.pos);\n }\n }\n\n // If cell was moved to another layout, balance the cells in the target layout\n const targetLayoutNode = findLayoutOfCell(tr.doc, sourceCellId);\n if (targetLayoutNode && isCellMovedToOtherLayout) {\n balanceLayoutCells(tr, targetLayoutNode.node, targetLayoutNode.pos);\n }\n }\n\n view.focus();\n view.dispatch(tr);\n };\n\n const onDragOver = (event: DragEvent) => {\n setState({\n isDraggingOver: true,\n });\n\n if (!isDraggingCell(editor)) {\n // Not a cell reorder — let the event bubble unclaimed so the editor's own\n // handlers resolve it (the block drag handle or ProseMirror's built-in dragover,\n // either of which calls preventDefault itself to keep the drop allowed).\n // preventDefault() here would mark the event defaultPrevented, and ProseMirror's\n // eventBelongsToView() drops any such event — starving those handlers and leaving\n // their last published drop-cursor position stale.\n return;\n }\n\n event.preventDefault();\n\n const layout = event.currentTarget as HTMLElement;\n const layoutWrapper = layout.closest('[data-layout-wrapper]');\n\n if (!layoutWrapper) {\n return;\n }\n\n const scale = getElementScale(layout);\n const layoutWrapperRect = layoutWrapper.getBoundingClientRect();\n const cellDropAreas = [...layout.querySelectorAll('[data-layout-cell]')].reduce(\n (acc, cell, index) => {\n const rect = cell.getBoundingClientRect();\n const prevCell = acc[acc.length - 1];\n const left = rect.left - layoutWrapperRect.left;\n return [\n ...acc,\n {\n left: index === 0 ? left : left - (left - prevCell.right) / 2,\n right: rect.right - layoutWrapperRect.left,\n width: rect.width,\n },\n ];\n },\n [] as { left: number; right: number; width: number }[]\n );\n const mouseXInLayout = event.clientX - layoutWrapperRect.left;\n const cellInsideIndex = cellDropAreas.findIndex(cell => {\n return mouseXInLayout > cell.left && mouseXInLayout < cell.right;\n });\n\n if (cellInsideIndex === -1) {\n return;\n }\n\n const cellInside = cellDropAreas[cellInsideIndex];\n const dropIndex =\n mouseXInLayout < cellInside.left + cellInside.width / 2\n ? cellInsideIndex\n : cellInsideIndex + 1;\n\n setState({\n dropCursorPosition:\n (dropIndex >= cellDropAreas.length\n ? cellDropAreas[cellDropAreas.length - 1].right\n : cellDropAreas[dropIndex].left) / scale.scaleX,\n });\n };\n\n const onDragLeave = (event: DragEvent) => {\n if ((event.currentTarget as HTMLElement).contains(event.relatedTarget as HTMLElement)) {\n return;\n }\n\n setState({\n dropCursorPosition: null,\n isDraggingOver: false,\n });\n };\n\n layoutElement.addEventListener('dragstart', onDragStart);\n layoutElement.addEventListener('drop', onDrop);\n layoutElement.addEventListener('dragover', onDragOver);\n layoutElement.addEventListener('dragleave', onDragLeave);\n\n return () => {\n layoutElement.removeEventListener('dragstart', onDragStart);\n layoutElement.removeEventListener('drop', onDrop);\n layoutElement.removeEventListener('dragover', onDragOver);\n layoutElement.removeEventListener('dragleave', onDragLeave);\n };\n};\n\nconst attachLayoutEventHandlers = ({\n layoutWrapper,\n layoutElement,\n editor,\n setState,\n}: Pick<NodeViewRendererProps, 'editor'> & {\n layoutWrapper: HTMLElement;\n layoutElement: HTMLElement;\n setState: (state: Partial<LayoutNodeViewState>) => void;\n}) => {\n const onClick = (event: MouseEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n if (\n element?.closest('[data-layout-cell]') ||\n element?.closest('[data-layout-drag-handle-wrapper]') ||\n element?.closest('[data-resize-handle]')\n ) {\n return;\n }\n const layoutId = layoutElement.getAttribute('data-layout-container');\n if (layoutId) {\n editor.chain().selectLayout(layoutId).focus().run();\n }\n };\n\n const onDragStart = (event: DragEvent) => {\n const raw = event.target;\n const element = raw instanceof Element ? raw : raw instanceof Text ? raw.parentElement : null;\n const cell = element?.closest('[data-layout-cell]');\n const layoutId = layoutElement.getAttribute('data-layout-container');\n\n if (cell) {\n return;\n }\n\n // Prevent dragging banner layouts - they should stay at their edge\n if (layoutWrapper.hasAttribute('data-layout-banner')) {\n event.preventDefault();\n return;\n }\n\n if (layoutId) {\n editor.commands.selectLayout(layoutId);\n }\n event.dataTransfer?.setDragImage(layoutElement, 0, 0);\n setState({ isDragging: true });\n\n const removeDragging = () => {\n setState({ isDragging: false });\n window.removeEventListener('pointerup', removeDragging);\n };\n\n window.addEventListener('pointerup', removeDragging);\n };\n\n layoutWrapper.addEventListener('click', onClick);\n layoutWrapper.addEventListener('dragstart', onDragStart);\n\n return () => {\n layoutWrapper.removeEventListener('click', onClick);\n layoutWrapper.removeEventListener('dragstart', onDragStart);\n };\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["styles", "classNames", "staticsStyles", "event", "node"]
7
7
  }
@@ -22,38 +22,38 @@ __export(layouts_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(layouts_exports);
24
24
  var layouts_default = {
25
- "sectionDividerClip": "f59vw",
26
- "sectionDivider": "DJvki",
27
- "sectionDividerTop": "Lk2Zl",
28
- "sectionDividerBottom": "gmfta",
29
- "layoutWrapper": "tzUyb",
30
- "withVerticalResize": "rVegB",
31
- "cell": "Th5Qv",
32
- "cellContent": "e-GQi",
33
- "breakoutMargin": "Mwc0C",
34
- "layoutHandlerWrapper": "DAmni",
35
- "layoutContainer": "qUMnk",
36
- "layout": "IMBJV",
37
- "layoutSelected": "_1y686",
38
- "dragging": "zLikw",
39
- "resizing": "f32V7",
40
- "inLayout": "dFvzr",
41
- "layoutHandler": "_5Rk0w",
42
- "bannerMargin": "ZtY2E",
43
- "dropCursor": "dcHN4",
44
- "disabled": "OCOC6",
45
- "resizeHandler": "_6x9CG",
46
- "columnHandlerContainer": "EXu-O",
47
- "paywall": "zIraS",
48
- "paywallDivider": "u25wo",
49
- "paywallDividerLabel": "F44-l",
50
- "paywallDividerArrow": "IFPMS",
51
- "designOnLayout": "_5O8cq",
52
- "designOnCell": "dmF7z",
53
- "mobile": "MzG21",
54
- "invalidLeft": "DN-AN",
55
- "invalidRight": "j-y0V",
56
- "draggingOver": "WIu8j",
57
- "cellSelected": "ibCSA"
25
+ "sectionDividerClip": "XnqbN",
26
+ "sectionDivider": "FJ2o2",
27
+ "sectionDividerTop": "YzDVk",
28
+ "sectionDividerBottom": "_9M9-e",
29
+ "layoutWrapper": "lbJZD",
30
+ "withVerticalResize": "_7DpwN",
31
+ "cell": "_2OK0H",
32
+ "cellContent": "mG-TF",
33
+ "breakoutMargin": "b76rF",
34
+ "layoutHandlerWrapper": "maASb",
35
+ "layoutContainer": "kEPVG",
36
+ "layout": "vFqyI",
37
+ "layoutSelected": "aSPix",
38
+ "dragging": "rvlBg",
39
+ "resizing": "e0HX7",
40
+ "inLayout": "stc-b",
41
+ "layoutHandler": "aEVXa",
42
+ "bannerMargin": "_9WTa2",
43
+ "dropCursor": "beiI4",
44
+ "disabled": "_9TGqk",
45
+ "resizeHandler": "UmseW",
46
+ "columnHandlerContainer": "KBkco",
47
+ "paywall": "h-sxX",
48
+ "paywallDivider": "q0Izd",
49
+ "paywallDividerLabel": "p-d-Y",
50
+ "paywallDividerIcon": "_4A3jr",
51
+ "designOnLayout": "UJmee",
52
+ "designOnCell": "_5aihr",
53
+ "mobile": "peemS",
54
+ "invalidLeft": "hLNkt",
55
+ "invalidRight": "_0PwEd",
56
+ "draggingOver": "_2Jbm1",
57
+ "cellSelected": "a9eWl"
58
58
  };
59
59
  //# sourceMappingURL=layouts-scss.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/ricos-common-plugins/layout/layouts.scss"],
4
- "sourcesContent": ["export default {\n \"sectionDividerClip\": \"f59vw\",\n \"sectionDivider\": \"DJvki\",\n \"sectionDividerTop\": \"Lk2Zl\",\n \"sectionDividerBottom\": \"gmfta\",\n \"layoutWrapper\": \"tzUyb\",\n \"withVerticalResize\": \"rVegB\",\n \"cell\": \"Th5Qv\",\n \"cellContent\": \"e-GQi\",\n \"breakoutMargin\": \"Mwc0C\",\n \"layoutHandlerWrapper\": \"DAmni\",\n \"layoutContainer\": \"qUMnk\",\n \"layout\": \"IMBJV\",\n \"layoutSelected\": \"_1y686\",\n \"dragging\": \"zLikw\",\n \"resizing\": \"f32V7\",\n \"inLayout\": \"dFvzr\",\n \"layoutHandler\": \"_5Rk0w\",\n \"bannerMargin\": \"ZtY2E\",\n \"dropCursor\": \"dcHN4\",\n \"disabled\": \"OCOC6\",\n \"resizeHandler\": \"_6x9CG\",\n \"columnHandlerContainer\": \"EXu-O\",\n \"paywall\": \"zIraS\",\n \"paywallDivider\": \"u25wo\",\n \"paywallDividerLabel\": \"F44-l\",\n \"paywallDividerArrow\": \"IFPMS\",\n \"designOnLayout\": \"_5O8cq\",\n \"designOnCell\": \"dmF7z\",\n \"mobile\": \"MzG21\",\n \"invalidLeft\": \"DN-AN\",\n \"invalidRight\": \"j-y0V\",\n \"draggingOver\": \"WIu8j\",\n \"cellSelected\": \"ibCSA\"\n};"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,kBAAQ;AAAA,EACb,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;",
4
+ "sourcesContent": ["export default {\n \"sectionDividerClip\": \"XnqbN\",\n \"sectionDivider\": \"FJ2o2\",\n \"sectionDividerTop\": \"YzDVk\",\n \"sectionDividerBottom\": \"_9M9-e\",\n \"layoutWrapper\": \"lbJZD\",\n \"withVerticalResize\": \"_7DpwN\",\n \"cell\": \"_2OK0H\",\n \"cellContent\": \"mG-TF\",\n \"breakoutMargin\": \"b76rF\",\n \"layoutHandlerWrapper\": \"maASb\",\n \"layoutContainer\": \"kEPVG\",\n \"layout\": \"vFqyI\",\n \"layoutSelected\": \"aSPix\",\n \"dragging\": \"rvlBg\",\n \"resizing\": \"e0HX7\",\n \"inLayout\": \"stc-b\",\n \"layoutHandler\": \"aEVXa\",\n \"bannerMargin\": \"_9WTa2\",\n \"dropCursor\": \"beiI4\",\n \"disabled\": \"_9TGqk\",\n \"resizeHandler\": \"UmseW\",\n \"columnHandlerContainer\": \"KBkco\",\n \"paywall\": \"h-sxX\",\n \"paywallDivider\": \"q0Izd\",\n \"paywallDividerLabel\": \"p-d-Y\",\n \"paywallDividerIcon\": \"_4A3jr\",\n \"designOnLayout\": \"UJmee\",\n \"designOnCell\": \"_5aihr\",\n \"mobile\": \"peemS\",\n \"invalidLeft\": \"hLNkt\",\n \"invalidRight\": \"_0PwEd\",\n \"draggingOver\": \"_2Jbm1\",\n \"cellSelected\": \"a9eWl\"\n};"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,kBAAQ;AAAA,EACb,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,7 @@ __export(section_dividers_panel_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(section_dividers_panel_exports);
24
24
  var section_dividers_panel_default = {
25
- "topEdgeThumbnail": "zWffk",
26
- "customizeHeader": "jHBpl"
25
+ "topEdgeThumbnail": "GGzfy",
26
+ "customizeHeader": "cf9VA"
27
27
  };
28
28
  //# sourceMappingURL=section-dividers-panel-scss.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/ricos-common-plugins/layout/section-dividers/section-dividers-panel.scss"],
4
- "sourcesContent": ["export default {\n \"topEdgeThumbnail\": \"zWffk\",\n \"customizeHeader\": \"jHBpl\"\n};"],
4
+ "sourcesContent": ["export default {\n \"topEdgeThumbnail\": \"GGzfy\",\n \"customizeHeader\": \"cf9VA\"\n};"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,iCAAQ;AAAA,EACb,oBAAoB;AAAA,EACpB,mBAAmB;AACrB;",
6
6
  "names": []
7
7
  }
@@ -22,9 +22,9 @@ __export(section_dividers_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(section_dividers_exports);
24
24
  var section_dividers_default = {
25
- "sectionDividerClip": "t882s",
26
- "sectionDivider": "-V8p-",
27
- "sectionDividerTop": "gSFon",
28
- "sectionDividerBottom": "zyMuz"
25
+ "sectionDividerClip": "CrdPO",
26
+ "sectionDivider": "sPl2w",
27
+ "sectionDividerTop": "teb7M",
28
+ "sectionDividerBottom": "Th5Z7"
29
29
  };
30
30
  //# sourceMappingURL=section-dividers-scss.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/ricos-common-plugins/layout/section-dividers/section-dividers.scss"],
4
- "sourcesContent": ["export default {\n \"sectionDividerClip\": \"t882s\",\n \"sectionDivider\": \"-V8p-\",\n \"sectionDividerTop\": \"gSFon\",\n \"sectionDividerBottom\": \"zyMuz\"\n};"],
4
+ "sourcesContent": ["export default {\n \"sectionDividerClip\": \"CrdPO\",\n \"sectionDivider\": \"sPl2w\",\n \"sectionDividerTop\": \"teb7M\",\n \"sectionDividerBottom\": \"Th5Z7\"\n};"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,2BAAQ;AAAA,EACb,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,wBAAwB;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,7 @@ __export(modal_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(modal_exports);
24
24
  var modal_default = {
25
- "quickActionsModal": "_5-uoP",
26
- "mobileContent": "gK76k"
25
+ "quickActionsModal": "o1NG3",
26
+ "mobileContent": "t86S4"
27
27
  };
28
28
  //# sourceMappingURL=modal-scss.js.map