@prolibu-suite/cobalt-core 0.10.4 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/custom-elements.json +4362 -388
  2. package/dist/cjs/co-accordion.cjs.entry.js +3 -3
  3. package/dist/cjs/co-action-bar.cjs.entry.js +3 -3
  4. package/dist/cjs/co-app-shell.cjs.entry.js +3 -3
  5. package/dist/cjs/co-audio-player.cjs.entry.js +4 -4
  6. package/dist/cjs/co-autocomplete.cjs.entry.js +2 -2
  7. package/dist/cjs/co-avatar-group.cjs.entry.js +1 -1
  8. package/dist/cjs/co-avatar.cjs.entry.js +7 -4
  9. package/dist/cjs/co-badge.cjs.entry.js +2 -2
  10. package/dist/cjs/co-bottom-sheet.cjs.entry.js +5 -5
  11. package/dist/cjs/co-breadcrumb-item.cjs.entry.js +3 -3
  12. package/dist/cjs/co-breadcrumb.cjs.entry.js +2 -2
  13. package/dist/cjs/co-button-group.cjs.entry.js +3 -3
  14. package/dist/cjs/co-button.cjs.entry.js +9 -7
  15. package/dist/cjs/co-calendar-month_2.cjs.entry.js +4 -4
  16. package/dist/cjs/co-calendar_3.cjs.entry.js +72 -27
  17. package/dist/cjs/co-card.cjs.entry.js +3 -3
  18. package/dist/cjs/co-carousel-item.cjs.entry.js +2 -2
  19. package/dist/cjs/co-carousel.cjs.entry.js +3 -3
  20. package/dist/cjs/co-checkbox-group.cjs.entry.js +1 -1
  21. package/dist/cjs/co-checkbox.cjs.entry.js +13 -5
  22. package/dist/cjs/co-chip_2.cjs.entry.js +9 -6
  23. package/dist/cjs/co-color-area.cjs.entry.js +169 -0
  24. package/dist/cjs/co-color-picker.cjs.entry.js +5 -5
  25. package/dist/cjs/co-color-slider.cjs.entry.js +189 -0
  26. package/dist/cjs/co-column-picker.cjs.entry.js +3 -3
  27. package/dist/cjs/co-combobox.cjs.entry.js +5 -5
  28. package/dist/cjs/co-command-search.cjs.entry.js +5 -5
  29. package/dist/cjs/co-data-table-pagination.cjs.entry.js +5 -5
  30. package/dist/cjs/co-data-table.cjs.entry.js +3 -3
  31. package/dist/cjs/co-date-picker.cjs.entry.js +2 -2
  32. package/dist/cjs/co-date-range-picker.cjs.entry.js +2 -2
  33. package/dist/cjs/co-date-range.cjs.entry.js +2 -2
  34. package/dist/cjs/co-date-time-picker.cjs.entry.js +4 -4
  35. package/dist/cjs/co-document-editor.cjs.entry.js +1161 -0
  36. package/dist/cjs/co-drive-card.cjs.entry.js +2 -2
  37. package/dist/cjs/co-drop-zone.cjs.entry.js +2 -2
  38. package/dist/cjs/co-emoji-picker.cjs.entry.js +3 -3
  39. package/dist/cjs/co-empty-state.cjs.entry.js +3 -3
  40. package/dist/cjs/co-event-calendar.cjs.entry.js +3 -3
  41. package/dist/cjs/co-event-popover.cjs.entry.js +3 -3
  42. package/dist/cjs/co-fab.cjs.entry.js +3 -3
  43. package/dist/cjs/co-file-field.cjs.entry.js +8 -8
  44. package/dist/cjs/co-file-type-tile.cjs.entry.js +3 -3
  45. package/dist/cjs/co-gradient-bar.cjs.entry.js +220 -0
  46. package/dist/cjs/co-helper-text.cjs.entry.js +3 -3
  47. package/dist/cjs/co-icon-button.cjs.entry.js +49 -9
  48. package/dist/cjs/co-icon.cjs.entry.js +3 -3
  49. package/dist/cjs/co-input.cjs.entry.js +14 -8
  50. package/dist/cjs/co-json-field.cjs.entry.js +5 -5
  51. package/dist/cjs/{co-tooltip.cjs.entry.js → co-kbd_2.cjs.entry.js} +194 -6
  52. package/dist/cjs/co-lightbox.cjs.entry.js +5 -5
  53. package/dist/cjs/co-list-footer.cjs.entry.js +2 -2
  54. package/dist/cjs/co-list-item.cjs.entry.js +5 -5
  55. package/dist/cjs/co-loader.cjs.entry.js +1 -1
  56. package/dist/cjs/co-media-thumb.cjs.entry.js +3 -3
  57. package/dist/cjs/co-menu-divider.cjs.entry.js +3 -3
  58. package/dist/cjs/co-menu-item.cjs.entry.js +41 -43
  59. package/dist/cjs/co-menu.cjs.entry.js +81 -5
  60. package/dist/cjs/co-modal.cjs.entry.js +350 -7
  61. package/dist/cjs/co-navbar.cjs.entry.js +3 -3
  62. package/dist/cjs/co-number-field.cjs.entry.js +5 -5
  63. package/dist/cjs/co-overlay.cjs.entry.js +8 -4
  64. package/dist/cjs/co-page-header.cjs.entry.js +2 -2
  65. package/dist/cjs/co-phone-field.cjs.entry.js +3 -3
  66. package/dist/cjs/co-popover.cjs.entry.js +67 -6
  67. package/dist/cjs/co-progress-bar.cjs.entry.js +3 -3
  68. package/dist/cjs/co-progress-circle.cjs.entry.js +3 -3
  69. package/dist/cjs/co-provider-logo_2.cjs.entry.js +2 -2
  70. package/dist/cjs/co-radio-group.cjs.entry.js +4 -4
  71. package/dist/cjs/co-radio.cjs.entry.js +4 -4
  72. package/dist/cjs/co-rating.cjs.entry.js +4 -4
  73. package/dist/cjs/co-ref-field.cjs.entry.js +5 -5
  74. package/dist/cjs/co-rich-text-editor.cjs.entry.js +26 -92
  75. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +79 -20
  76. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +9 -2
  77. package/dist/cjs/co-row.cjs.entry.js +3 -3
  78. package/dist/cjs/co-segmented-bar.cjs.entry.js +3 -3
  79. package/dist/cjs/co-select.cjs.entry.js +158 -29
  80. package/dist/cjs/co-separator.cjs.entry.js +2 -2
  81. package/dist/cjs/co-sidebar-nav.cjs.entry.js +20 -5
  82. package/dist/cjs/co-sidebar.cjs.entry.js +3 -3
  83. package/dist/cjs/co-slider.cjs.entry.js +203 -23
  84. package/dist/cjs/co-swatch-grid.cjs.entry.js +121 -0
  85. package/dist/cjs/co-switch.cjs.entry.js +5 -5
  86. package/dist/cjs/co-tab-group.cjs.entry.js +113 -4
  87. package/dist/cjs/co-tab.cjs.entry.js +15 -5
  88. package/dist/cjs/co-tags-field.cjs.entry.js +8 -8
  89. package/dist/cjs/co-textarea.cjs.entry.js +6 -6
  90. package/dist/cjs/co-tile.cjs.entry.js +61 -0
  91. package/dist/cjs/co-time-field.cjs.entry.js +2 -2
  92. package/dist/cjs/co-toast.cjs.entry.js +3 -3
  93. package/dist/cjs/co-toggle-button-group.cjs.entry.js +26 -5
  94. package/dist/cjs/co-toggle-button.cjs.entry.js +67 -6
  95. package/dist/cjs/co-transfer-list.cjs.entry.js +3 -3
  96. package/dist/cjs/co-tree-item.cjs.entry.js +110 -0
  97. package/dist/cjs/co-video.cjs.entry.js +3 -3
  98. package/dist/cjs/cobalt.cjs.js +2 -2
  99. package/dist/cjs/{color-CML2Cfdh.js → color-DQVrQGi0.js} +10 -5
  100. package/dist/cjs/{fieldChip-B6YIGU1V.js → fieldChip-C7MxxBVO.js} +1 -1
  101. package/dist/cjs/gradientStops-CMpH4fB_.js +153 -0
  102. package/dist/cjs/hsv-DpfSF3M2.js +95 -0
  103. package/dist/cjs/{index-MDAnKsze.js → index-bHoidDwv.js} +67 -27
  104. package/dist/cjs/index-oMHzCXm6.js +144 -0
  105. package/dist/cjs/loader.cjs.js +2 -2
  106. package/dist/cjs/{index-2kMmd5-a.js → pagination-DV43TRj9.js} +1780 -297
  107. package/dist/cjs/{positioning-CyatXeT_.js → positioning-CILo5esi.js} +45 -18
  108. package/dist/cjs/{requiredMark-D-t-IPN0.js → requiredMark-21yHvvZS.js} +1 -1
  109. package/dist/cjs/rich-text-host-ueFSfW-6.js +119 -0
  110. package/dist/cjs/{richTextI18n-B28uAhh4.js → richTextI18n-DXGIv5w1.js} +45 -0
  111. package/dist/cjs/submenu-RlaX6irw.js +65 -0
  112. package/dist/cjs/{toolbar-config-CYACt9hh.js → toolbar-config-DczL6C4W.js} +32 -0
  113. package/dist/cobalt/cobalt.css +1 -1
  114. package/dist/cobalt/cobalt.esm.js +1 -1
  115. package/dist/cobalt/{p-ee149fd2.entry.js → p-05000ef3.entry.js} +1 -1
  116. package/dist/cobalt/p-06689166.entry.js +1 -0
  117. package/dist/cobalt/{p-1dc55e43.entry.js → p-0a5cfed0.entry.js} +1 -1
  118. package/dist/cobalt/p-1289131f.entry.js +1 -0
  119. package/dist/cobalt/{p-c7d7d7f7.entry.js → p-136beb2c.entry.js} +1 -1
  120. package/dist/cobalt/{p-b437eff6.entry.js → p-1693b614.entry.js} +1 -1
  121. package/dist/cobalt/p-1bfb69ae.entry.js +1 -0
  122. package/dist/cobalt/{p-2c9dba2f.entry.js → p-1f3d5313.entry.js} +1 -1
  123. package/dist/cobalt/{p-b821d9de.entry.js → p-22233b31.entry.js} +1 -1
  124. package/dist/cobalt/{p-c30b4cb5.entry.js → p-26fa36f8.entry.js} +1 -1
  125. package/dist/cobalt/p-2794c500.entry.js +1 -0
  126. package/dist/cobalt/p-297b55cd.entry.js +1 -0
  127. package/dist/cobalt/{p-17244412.entry.js → p-2a2b0c7a.entry.js} +1 -1
  128. package/dist/cobalt/{p-2636b7eb.entry.js → p-2e5702a0.entry.js} +1 -1
  129. package/dist/cobalt/p-3011c84f.entry.js +1 -0
  130. package/dist/cobalt/{p-4d65e713.entry.js → p-30760f77.entry.js} +1 -1
  131. package/dist/cobalt/{p-6dd220e0.entry.js → p-3b9a8e86.entry.js} +1 -1
  132. package/dist/cobalt/p-4111fefa.entry.js +1 -0
  133. package/dist/cobalt/{p-a32b20eb.entry.js → p-44edde81.entry.js} +1 -1
  134. package/dist/cobalt/{p-292b0389.entry.js → p-45007758.entry.js} +1 -1
  135. package/dist/cobalt/p-48c23310.entry.js +1 -0
  136. package/dist/cobalt/p-4b327483.entry.js +1 -0
  137. package/dist/cobalt/p-4c6caa41.entry.js +1 -0
  138. package/dist/cobalt/{p-000a15b8.entry.js → p-5534a64f.entry.js} +1 -1
  139. package/dist/cobalt/p-5573985a.entry.js +1 -0
  140. package/dist/cobalt/p-57d250ad.entry.js +1 -0
  141. package/dist/cobalt/{p-826ee074.entry.js → p-59d3e8fc.entry.js} +1 -1
  142. package/dist/cobalt/{p-4592ca00.entry.js → p-5a32b9a2.entry.js} +1 -1
  143. package/dist/cobalt/p-5b2aa70e.entry.js +1 -0
  144. package/dist/cobalt/{p-d29bb0fa.entry.js → p-5d6e02dd.entry.js} +1 -1
  145. package/dist/cobalt/{p-623cc195.entry.js → p-608d251d.entry.js} +1 -1
  146. package/dist/cobalt/{p-011dc80b.entry.js → p-66fc1528.entry.js} +1 -1
  147. package/dist/cobalt/{p-11c5ce78.entry.js → p-67ad9544.entry.js} +1 -1
  148. package/dist/cobalt/{p-290066ef.entry.js → p-6c157ea2.entry.js} +1 -1
  149. package/dist/cobalt/{p-a2462d7a.entry.js → p-6d541199.entry.js} +1 -1
  150. package/dist/cobalt/{p-58d9b650.entry.js → p-7376f4ed.entry.js} +1 -1
  151. package/dist/cobalt/{p-39a50e7f.entry.js → p-7569375a.entry.js} +1 -1
  152. package/dist/cobalt/{p-7b5c555c.entry.js → p-763698b3.entry.js} +1 -1
  153. package/dist/cobalt/{p-f57dffca.entry.js → p-7675cebe.entry.js} +1 -1
  154. package/dist/cobalt/p-78a20284.entry.js +1 -0
  155. package/dist/cobalt/{p-aa9400bf.entry.js → p-7f3523ce.entry.js} +1 -1
  156. package/dist/cobalt/{p-24196410.entry.js → p-86b6fd81.entry.js} +1 -1
  157. package/dist/cobalt/{p-996f4e38.entry.js → p-889563d5.entry.js} +1 -1
  158. package/dist/cobalt/{p-eadfd661.entry.js → p-8ab5b396.entry.js} +1 -1
  159. package/dist/cobalt/{p-c91d4fc6.entry.js → p-8b2e4579.entry.js} +1 -1
  160. package/dist/cobalt/p-8cd3acaa.entry.js +1 -0
  161. package/dist/cobalt/{p-23ab0cc5.entry.js → p-8f701eac.entry.js} +1 -1
  162. package/dist/cobalt/p-90fad0f9.entry.js +1 -0
  163. package/dist/cobalt/{p-76249983.entry.js → p-97a4fbba.entry.js} +1 -1
  164. package/dist/cobalt/p-9b46a8fe.entry.js +1 -0
  165. package/dist/cobalt/{p-ee2023da.entry.js → p-9bee9dc8.entry.js} +1 -1
  166. package/dist/cobalt/{p-2f9cbbd5.entry.js → p-9cf10331.entry.js} +1 -1
  167. package/dist/cobalt/p-9dc01092.entry.js +1 -0
  168. package/dist/cobalt/p-9e406172.entry.js +1 -0
  169. package/dist/cobalt/p-B1JT7us1.js +1 -0
  170. package/dist/cobalt/{p-BRbgGqLw.js → p-BVGGRfNG.js} +1 -1
  171. package/dist/cobalt/p-BmdKHBZP.js +1 -0
  172. package/dist/cobalt/p-BtliEQAT.js +1 -0
  173. package/dist/cobalt/p-COJdaKBU.js +1 -0
  174. package/dist/cobalt/{p-BAYo-RBt.js → p-CRxTFT_z.js} +1 -1
  175. package/dist/cobalt/p-CYN5B3IQ.js +1 -0
  176. package/dist/cobalt/p-DJkaRtbb.js +2 -0
  177. package/dist/cobalt/p-DU-KOQ8L.js +1 -0
  178. package/dist/cobalt/p-DXLeDZvr.js +1 -0
  179. package/dist/cobalt/{p-D_zA1Pv4.js → p-DgJovDdy.js} +1 -1
  180. package/dist/cobalt/p-RVQJEYxa.js +1 -0
  181. package/dist/cobalt/{p-1861fe41.entry.js → p-a07dedd1.entry.js} +1 -1
  182. package/dist/cobalt/{p-08e42e00.entry.js → p-a336178b.entry.js} +1 -1
  183. package/dist/cobalt/{p-f9a7b7c6.entry.js → p-a52ed6ff.entry.js} +1 -1
  184. package/dist/cobalt/{p-aaca6dab.entry.js → p-a930cdd7.entry.js} +1 -1
  185. package/dist/cobalt/{p-eb82358d.entry.js → p-b1994bb4.entry.js} +1 -1
  186. package/dist/cobalt/p-b2b13da8.entry.js +1 -0
  187. package/dist/cobalt/{p-c2ebf0ec.entry.js → p-b5ec4286.entry.js} +1 -1
  188. package/dist/cobalt/p-b9401dd7.entry.js +1 -0
  189. package/dist/cobalt/p-b9dfb333.entry.js +1 -0
  190. package/dist/cobalt/p-bc3ba0cd.entry.js +1 -0
  191. package/dist/cobalt/{p-d375014b.entry.js → p-bc4fbfa6.entry.js} +1 -1
  192. package/dist/cobalt/{p-d0b2c418.entry.js → p-c109a1e1.entry.js} +1 -1
  193. package/dist/cobalt/{p-ee9a623d.entry.js → p-c1caa112.entry.js} +1 -1
  194. package/dist/cobalt/p-c9990662.entry.js +1 -0
  195. package/dist/cobalt/p-cc4b51fa.entry.js +1 -0
  196. package/dist/cobalt/p-cc5989e9.entry.js +1 -0
  197. package/dist/cobalt/{p-e4264532.entry.js → p-ce2b2048.entry.js} +1 -1
  198. package/dist/cobalt/p-d1c378ff.entry.js +1 -0
  199. package/dist/cobalt/p-d1e83525.entry.js +1 -0
  200. package/dist/cobalt/{p-59963937.entry.js → p-d1f47915.entry.js} +1 -1
  201. package/dist/cobalt/{p-28764b8e.entry.js → p-d4979025.entry.js} +1 -1
  202. package/dist/cobalt/p-d6e7c258.entry.js +1 -0
  203. package/dist/cobalt/p-d75d2f3d.entry.js +1 -0
  204. package/dist/cobalt/p-db42c4ab.entry.js +1 -0
  205. package/dist/cobalt/{p-44c4e4a3.entry.js → p-e4ff2fcb.entry.js} +1 -1
  206. package/dist/cobalt/p-e6116149.entry.js +1 -0
  207. package/dist/cobalt/{p-0c004735.entry.js → p-e99ddf9c.entry.js} +1 -1
  208. package/dist/cobalt/{p-1cc818ca.entry.js → p-ea24eea8.entry.js} +1 -1
  209. package/dist/cobalt/{p-07416e31.entry.js → p-ea564148.entry.js} +1 -1
  210. package/dist/cobalt/{p-8471abe2.entry.js → p-ec7a6bf2.entry.js} +1 -1
  211. package/dist/cobalt/{p-fb2d1144.entry.js → p-ee42dca6.entry.js} +1 -1
  212. package/dist/cobalt/{p-49834b8e.entry.js → p-ee88ec40.entry.js} +1 -1
  213. package/dist/cobalt/p-eeb114da.entry.js +1 -0
  214. package/dist/cobalt/{p-f6691108.entry.js → p-f0898e21.entry.js} +1 -1
  215. package/dist/cobalt/p-f246946a.entry.js +1 -0
  216. package/dist/cobalt/{p-b90d41e4.entry.js → p-f5934cd9.entry.js} +1 -1
  217. package/dist/cobalt/p-f5e1873d.entry.js +1 -0
  218. package/dist/cobalt/p-f60bd4d6.entry.js +1 -0
  219. package/dist/cobalt/p-f813569c.entry.js +1 -0
  220. package/dist/cobalt/{p-f7eb1a40.entry.js → p-f8c7941f.entry.js} +1 -1
  221. package/dist/cobalt/{p-44ea675f.entry.js → p-f8d3c71e.entry.js} +1 -1
  222. package/dist/cobalt/{p-91e73a92.entry.js → p-ffbe955a.entry.js} +1 -1
  223. package/dist/cobalt/p-xnrKkNWQ.js +1 -0
  224. package/dist/collection/collection-manifest.json +8 -0
  225. package/dist/collection/components/co-accordion/co-accordion.js +2 -2
  226. package/dist/collection/components/co-action-bar/co-action-bar.js +2 -2
  227. package/dist/collection/components/co-app-shell/co-app-shell.js +2 -2
  228. package/dist/collection/components/co-audio-player/co-audio-player.js +3 -3
  229. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  230. package/dist/collection/components/co-avatar/co-avatar.css +11 -2
  231. package/dist/collection/components/co-avatar/co-avatar.js +7 -4
  232. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  233. package/dist/collection/components/co-badge/co-badge.js +1 -1
  234. package/dist/collection/components/co-bottom-sheet/co-bottom-sheet.js +4 -4
  235. package/dist/collection/components/co-breadcrumb/co-breadcrumb.js +1 -1
  236. package/dist/collection/components/co-breadcrumb-item/co-breadcrumb-item.js +2 -2
  237. package/dist/collection/components/co-button/co-button.css +73 -6
  238. package/dist/collection/components/co-button/co-button.js +33 -11
  239. package/dist/collection/components/co-button-group/co-button-group.js +2 -2
  240. package/dist/collection/components/co-calendar/calendarMarks.js +40 -0
  241. package/dist/collection/components/co-calendar/co-calendar.css +11 -1
  242. package/dist/collection/components/co-calendar/co-calendar.js +82 -20
  243. package/dist/collection/components/co-calendar-month/co-calendar-month.js +1 -1
  244. package/dist/collection/components/co-calendar-timegrid/co-calendar-timegrid.js +2 -2
  245. package/dist/collection/components/co-card/co-card.js +2 -2
  246. package/dist/collection/components/co-carousel/co-carousel.js +2 -2
  247. package/dist/collection/components/co-carousel-item/co-carousel-item.js +1 -1
  248. package/dist/collection/components/co-checkbox/co-checkbox.css +43 -1
  249. package/dist/collection/components/co-checkbox/co-checkbox.js +31 -3
  250. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  251. package/dist/collection/components/co-chip/co-chip.js +2 -2
  252. package/dist/collection/components/co-color-area/co-color-area.css +83 -0
  253. package/dist/collection/components/co-color-area/co-color-area.js +341 -0
  254. package/dist/collection/components/co-color-picker/co-color-picker.js +2 -2
  255. package/dist/collection/components/co-color-slider/co-color-slider.css +115 -0
  256. package/dist/collection/components/co-color-slider/co-color-slider.js +353 -0
  257. package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
  258. package/dist/collection/components/co-combobox/co-combobox.js +4 -4
  259. package/dist/collection/components/co-command-search/co-command-search.js +5 -5
  260. package/dist/collection/components/co-data-table/co-data-table.js +3 -3
  261. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.js +4 -4
  262. package/dist/collection/components/co-date-field/co-date-field.js +4 -4
  263. package/dist/collection/components/co-date-range/co-date-range.js +1 -1
  264. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
  265. package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +3 -3
  266. package/dist/collection/components/co-document-editor/change-throttle.js +30 -0
  267. package/dist/collection/components/co-document-editor/co-document-editor.css +438 -0
  268. package/dist/collection/components/co-document-editor/co-document-editor.js +1542 -0
  269. package/dist/collection/components/co-document-editor/document-props.js +40 -0
  270. package/dist/collection/components/co-document-editor/header-tools.js +11 -0
  271. package/dist/collection/components/co-document-editor/image-bar.js +66 -0
  272. package/dist/collection/components/co-document-editor/page-styles.js +90 -0
  273. package/dist/collection/components/co-document-editor/zoom.js +45 -0
  274. package/dist/collection/components/co-drive-card/co-drive-card.js +1 -1
  275. package/dist/collection/components/co-drop-zone/co-drop-zone.js +1 -1
  276. package/dist/collection/components/co-emoji-picker/co-emoji-picker.js +2 -2
  277. package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
  278. package/dist/collection/components/co-event-calendar/co-event-calendar.js +2 -2
  279. package/dist/collection/components/co-event-popover/co-event-popover.js +1 -1
  280. package/dist/collection/components/co-fab/co-fab.js +2 -2
  281. package/dist/collection/components/co-file-field/co-file-field.js +6 -6
  282. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +2 -2
  283. package/dist/collection/components/co-gradient-bar/co-gradient-bar.css +138 -0
  284. package/dist/collection/components/co-gradient-bar/co-gradient-bar.js +407 -0
  285. package/dist/collection/components/co-helper-text/co-helper-text.js +2 -2
  286. package/dist/collection/components/co-icon/co-icon.js +2 -2
  287. package/dist/collection/components/co-icon-button/co-icon-button.css +95 -19
  288. package/dist/collection/components/co-icon-button/co-icon-button.js +120 -10
  289. package/dist/collection/components/co-input/co-input.css +122 -0
  290. package/dist/collection/components/co-input/co-input.js +37 -11
  291. package/dist/collection/components/co-json-field/co-json-field.js +3 -3
  292. package/dist/collection/components/co-kbd/co-kbd.css +99 -0
  293. package/dist/collection/components/co-kbd/co-kbd.js +291 -0
  294. package/dist/collection/components/co-lightbox/co-lightbox.js +4 -4
  295. package/dist/collection/components/co-list-footer/co-list-footer.js +1 -1
  296. package/dist/collection/components/co-list-item/co-list-item.js +4 -4
  297. package/dist/collection/components/co-media-thumb/co-media-thumb.js +2 -2
  298. package/dist/collection/components/co-menu/co-menu.css +60 -0
  299. package/dist/collection/components/co-menu/co-menu.js +143 -3
  300. package/dist/collection/components/co-menu-divider/co-menu-divider.css +17 -0
  301. package/dist/collection/components/co-menu-divider/co-menu-divider.js +1 -1
  302. package/dist/collection/components/co-menu-item/co-menu-item.css +42 -6
  303. package/dist/collection/components/co-menu-item/co-menu-item.js +58 -4
  304. package/dist/collection/components/co-modal/co-modal.css +212 -1
  305. package/dist/collection/components/co-modal/co-modal.js +339 -9
  306. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  307. package/dist/collection/components/co-number-field/co-number-field.js +3 -3
  308. package/dist/collection/components/co-option-list/co-option-list.css +64 -21
  309. package/dist/collection/components/co-option-list/co-option-list.js +6 -2
  310. package/dist/collection/components/co-overlay/co-overlay.js +7 -3
  311. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  312. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  313. package/dist/collection/components/co-popover/co-popover.css +15 -2
  314. package/dist/collection/components/co-popover/co-popover.js +130 -5
  315. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  316. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  317. package/dist/collection/components/co-radio/co-radio.js +3 -3
  318. package/dist/collection/components/co-radio-group/co-radio-group.js +4 -4
  319. package/dist/collection/components/co-rating/co-rating.js +3 -3
  320. package/dist/collection/components/co-ref-field/co-ref-field.js +5 -5
  321. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +23 -90
  322. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +12 -0
  323. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.js +123 -18
  324. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.js +8 -1
  325. package/dist/collection/components/co-row/co-row.js +2 -2
  326. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +3 -3
  327. package/dist/collection/components/co-select/co-select.css +194 -10
  328. package/dist/collection/components/co-select/co-select.js +163 -32
  329. package/dist/collection/components/co-select/virtualRows.js +57 -0
  330. package/dist/collection/components/co-separator/co-separator.js +1 -1
  331. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  332. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.css +10 -0
  333. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +19 -4
  334. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  335. package/dist/collection/components/co-slider/co-slider.css +148 -5
  336. package/dist/collection/components/co-slider/co-slider.js +240 -21
  337. package/dist/collection/components/co-swatch-grid/co-swatch-grid.css +56 -0
  338. package/dist/collection/components/co-swatch-grid/co-swatch-grid.js +292 -0
  339. package/dist/collection/components/co-switch/co-switch.js +3 -3
  340. package/dist/collection/components/co-tab/co-tab.css +60 -0
  341. package/dist/collection/components/co-tab/co-tab.js +36 -6
  342. package/dist/collection/components/co-tab-group/co-tab-group.css +24 -0
  343. package/dist/collection/components/co-tab-group/co-tab-group.js +124 -2
  344. package/dist/collection/components/co-tab-group/revealTab.js +26 -0
  345. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  346. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  347. package/dist/collection/components/co-tile/co-tile.css +63 -0
  348. package/dist/collection/components/co-tile/co-tile.js +162 -0
  349. package/dist/collection/components/co-time-field/co-time-field.js +1 -1
  350. package/dist/collection/components/co-toast/co-toast.js +4 -4
  351. package/dist/collection/components/co-toggle-button/co-toggle-button.css +101 -0
  352. package/dist/collection/components/co-toggle-button/co-toggle-button.js +80 -8
  353. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.css +21 -0
  354. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +28 -7
  355. package/dist/collection/components/co-tooltip/co-tooltip.css +36 -0
  356. package/dist/collection/components/co-tooltip/co-tooltip.js +51 -3
  357. package/dist/collection/components/co-transfer-list/co-transfer-list.js +3 -3
  358. package/dist/collection/components/co-tree-item/co-tree-item.css +226 -0
  359. package/dist/collection/components/co-tree-item/co-tree-item.js +353 -0
  360. package/dist/collection/components/co-tree-item/treeItemI18n.js +16 -0
  361. package/dist/collection/components/co-video/co-video.js +2 -2
  362. package/dist/collection/utils/color.js +9 -5
  363. package/dist/collection/utils/dragMove.js +95 -0
  364. package/dist/collection/utils/gradientBarI18n.js +24 -0
  365. package/dist/collection/utils/gradientStops.js +142 -0
  366. package/dist/collection/utils/hsv.js +114 -0
  367. package/dist/collection/utils/kbdI18n.js +29 -0
  368. package/dist/collection/utils/positioning.js +44 -18
  369. package/dist/collection/utils/rich-text-host.js +109 -0
  370. package/dist/collection/utils/richTextI18n.js +45 -0
  371. package/dist/collection/utils/submenu.js +23 -3
  372. package/dist/collection/utils/swatchGridI18n.js +14 -0
  373. package/dist/collection/utils/test/fake-block-layout.js +41 -0
  374. package/dist/collection/utils/test/prosemirror-dom-shim.js +17 -0
  375. package/dist/collection/utils/test/shared-contract-css.js +9 -0
  376. package/dist/components/co-accordion.js +1 -1
  377. package/dist/components/co-action-bar.js +1 -1
  378. package/dist/components/co-app-shell.js +1 -1
  379. package/dist/components/co-audio-player.js +1 -1
  380. package/dist/components/co-autocomplete.js +1 -1
  381. package/dist/components/co-avatar-group.js +1 -1
  382. package/dist/components/co-avatar.js +1 -1
  383. package/dist/components/co-badge.js +1 -1
  384. package/dist/components/co-bottom-sheet.js +1 -1
  385. package/dist/components/co-breadcrumb-item.js +1 -1
  386. package/dist/components/co-breadcrumb.js +1 -1
  387. package/dist/components/co-button-group.js +1 -1
  388. package/dist/components/co-button.js +1 -1
  389. package/dist/components/co-calendar-month.js +1 -1
  390. package/dist/components/co-calendar-timegrid.js +1 -1
  391. package/dist/components/co-calendar.js +1 -1
  392. package/dist/components/co-card.js +1 -1
  393. package/dist/components/co-carousel-item.js +1 -1
  394. package/dist/components/co-carousel.js +1 -1
  395. package/dist/components/co-checkbox-group.js +1 -1
  396. package/dist/components/co-checkbox.js +1 -1
  397. package/dist/components/co-chip.js +1 -1
  398. package/dist/components/co-color-area.d.ts +11 -0
  399. package/dist/components/co-color-area.js +1 -0
  400. package/dist/components/co-color-picker.js +1 -1
  401. package/dist/components/co-color-slider.d.ts +11 -0
  402. package/dist/components/co-color-slider.js +1 -0
  403. package/dist/components/co-column-picker.js +1 -1
  404. package/dist/components/co-combobox.js +1 -1
  405. package/dist/components/co-command-search.js +1 -1
  406. package/dist/components/co-data-table-pagination.js +1 -1
  407. package/dist/components/co-data-table.js +1 -1
  408. package/dist/components/co-date-field.js +1 -1
  409. package/dist/components/co-date-picker.js +1 -1
  410. package/dist/components/co-date-range-picker.js +1 -1
  411. package/dist/components/co-date-range.js +1 -1
  412. package/dist/components/co-date-time-picker.js +1 -1
  413. package/dist/components/co-document-editor.d.ts +11 -0
  414. package/dist/components/co-document-editor.js +1 -0
  415. package/dist/components/co-drawer.js +1 -1
  416. package/dist/components/co-drive-card.js +1 -1
  417. package/dist/components/co-drop-zone.js +1 -1
  418. package/dist/components/co-emoji-picker.js +1 -1
  419. package/dist/components/co-empty-state.js +1 -1
  420. package/dist/components/co-event-calendar.js +1 -1
  421. package/dist/components/co-event-popover.js +1 -1
  422. package/dist/components/co-fab.js +1 -1
  423. package/dist/components/co-file-field.js +1 -1
  424. package/dist/components/co-file-type-tile.js +1 -1
  425. package/dist/components/co-gradient-bar.d.ts +11 -0
  426. package/dist/components/co-gradient-bar.js +1 -0
  427. package/dist/components/co-helper-text.js +1 -1
  428. package/dist/components/co-icon-button.js +1 -1
  429. package/dist/components/co-icon.js +1 -1
  430. package/dist/components/co-input.js +1 -1
  431. package/dist/components/co-json-field.js +1 -1
  432. package/dist/components/co-kbd.d.ts +11 -0
  433. package/dist/components/co-kbd.js +1 -0
  434. package/dist/components/co-lightbox.js +1 -1
  435. package/dist/components/co-list-footer.js +1 -1
  436. package/dist/components/co-list-item.js +1 -1
  437. package/dist/components/co-media-thumb.js +1 -1
  438. package/dist/components/co-menu-divider.js +1 -1
  439. package/dist/components/co-menu-item.js +1 -1
  440. package/dist/components/co-menu.js +1 -1
  441. package/dist/components/co-modal.js +1 -1
  442. package/dist/components/co-navbar.js +1 -1
  443. package/dist/components/co-number-field.js +1 -1
  444. package/dist/components/co-option-list.js +1 -1
  445. package/dist/components/co-overlay.js +1 -1
  446. package/dist/components/co-page-header.js +1 -1
  447. package/dist/components/co-phone-field.js +1 -1
  448. package/dist/components/co-popover.js +1 -1
  449. package/dist/components/co-progress-bar.js +1 -1
  450. package/dist/components/co-progress-circle.js +1 -1
  451. package/dist/components/co-radio-group.js +1 -1
  452. package/dist/components/co-radio.js +1 -1
  453. package/dist/components/co-rating.js +1 -1
  454. package/dist/components/co-ref-field.js +1 -1
  455. package/dist/components/co-rich-text-editor.js +1 -1
  456. package/dist/components/co-rich-text-toolbar.js +1 -1
  457. package/dist/components/co-rich-text-viewer.js +1 -1
  458. package/dist/components/co-row.js +1 -1
  459. package/dist/components/co-segmented-bar.js +1 -1
  460. package/dist/components/co-select.js +1 -1
  461. package/dist/components/co-separator.js +1 -1
  462. package/dist/components/co-sidebar-nav.js +1 -1
  463. package/dist/components/co-sidebar.js +1 -1
  464. package/dist/components/co-skeleton.js +1 -1
  465. package/dist/components/co-slider.js +1 -1
  466. package/dist/components/co-swatch-grid.d.ts +11 -0
  467. package/dist/components/co-swatch-grid.js +1 -0
  468. package/dist/components/co-switch.js +1 -1
  469. package/dist/components/co-tab-group.js +1 -1
  470. package/dist/components/co-tab.js +1 -1
  471. package/dist/components/co-tags-field.js +1 -1
  472. package/dist/components/co-textarea.js +1 -1
  473. package/dist/components/co-tile.d.ts +11 -0
  474. package/dist/components/co-tile.js +1 -0
  475. package/dist/components/co-time-field.js +1 -1
  476. package/dist/components/co-toast.js +1 -1
  477. package/dist/components/co-toggle-button-group.js +1 -1
  478. package/dist/components/co-toggle-button.js +1 -1
  479. package/dist/components/co-tooltip.js +1 -1
  480. package/dist/components/co-transfer-list.js +1 -1
  481. package/dist/components/co-tree-item.d.ts +11 -0
  482. package/dist/components/co-tree-item.js +1 -0
  483. package/dist/components/co-video.js +1 -1
  484. package/dist/components/index.js +1 -1
  485. package/dist/components/p-B1JT7us1.js +1 -0
  486. package/dist/components/{p-Nt4JJxbL.js → p-B20o5exO.js} +1 -1
  487. package/dist/components/{p-DNJAIVfI.js → p-B3kKOgsA.js} +1 -1
  488. package/dist/components/{p-P4HlMBlL.js → p-BIDSDP05.js} +1 -1
  489. package/dist/components/p-BOqtnWTJ.js +1 -0
  490. package/dist/components/p-BQltjDw5.js +1 -0
  491. package/dist/components/p-BR0LYW9v.js +1 -0
  492. package/dist/components/{p-BRbgGqLw.js → p-BVGGRfNG.js} +1 -1
  493. package/dist/components/p-BZDl9aFl.js +1 -0
  494. package/dist/components/p-BcXdId8y.js +1 -0
  495. package/dist/components/p-BmdKHBZP.js +1 -0
  496. package/dist/components/{p-NNxjElcX.js → p-BraiMwgs.js} +1 -1
  497. package/dist/components/p-BtliEQAT.js +1 -0
  498. package/dist/components/p-Bymi-A7C.js +1 -0
  499. package/dist/components/p-C-f8wTqe.js +1 -0
  500. package/dist/components/{p-BhCVadcA.js → p-C1jZYtUS.js} +1 -1
  501. package/dist/components/{p-CT2enQ6h.js → p-C3G8oPgU.js} +1 -1
  502. package/dist/components/{p-B56LX2SH.js → p-CGH3E8uK.js} +1 -1
  503. package/dist/components/p-COJdaKBU.js +1 -0
  504. package/dist/components/{p-BAYo-RBt.js → p-CRxTFT_z.js} +1 -1
  505. package/dist/components/{p-Du_CgT5E.js → p-CfJgypOl.js} +1 -1
  506. package/dist/components/{p-uxdXViMV.js → p-ChwSnCFf.js} +1 -1
  507. package/dist/components/{p-Dc_Kbari.js → p-CpGEV0iM.js} +1 -1
  508. package/dist/components/{p-DvR45CLa.js → p-D9or2g4j.js} +1 -1
  509. package/dist/components/{p-e5KibEs8.js → p-DJ468fPu.js} +1 -1
  510. package/dist/components/{p-DFlJMEJ-.js → p-DKXCr-hE.js} +1 -1
  511. package/dist/components/p-DU-KOQ8L.js +1 -0
  512. package/dist/components/p-DXLeDZvr.js +1 -0
  513. package/dist/components/{p-BGDqldEg.js → p-DfcPGitr.js} +1 -1
  514. package/dist/components/p-Dg-Ti_Bf.js +1 -0
  515. package/dist/components/p-Dh_eRYKu.js +1 -0
  516. package/dist/components/p-Dp650Gpp.js +1 -0
  517. package/dist/components/p-FA1kBmZ-.js +1 -0
  518. package/dist/components/p-RVQJEYxa.js +1 -0
  519. package/dist/components/p-d4rf3H8p.js +1 -0
  520. package/dist/components/{p-Dxa7c4Ap.js → p-dnaee7fS.js} +1 -1
  521. package/dist/components/p-f2xwcrXa.js +1 -0
  522. package/dist/esm/co-accordion.entry.js +3 -3
  523. package/dist/esm/co-action-bar.entry.js +3 -3
  524. package/dist/esm/co-app-shell.entry.js +3 -3
  525. package/dist/esm/co-audio-player.entry.js +4 -4
  526. package/dist/esm/co-autocomplete.entry.js +2 -2
  527. package/dist/esm/co-avatar-group.entry.js +1 -1
  528. package/dist/esm/co-avatar.entry.js +7 -4
  529. package/dist/esm/co-badge.entry.js +2 -2
  530. package/dist/esm/co-bottom-sheet.entry.js +5 -5
  531. package/dist/esm/co-breadcrumb-item.entry.js +3 -3
  532. package/dist/esm/co-breadcrumb.entry.js +2 -2
  533. package/dist/esm/co-button-group.entry.js +3 -3
  534. package/dist/esm/co-button.entry.js +9 -7
  535. package/dist/esm/co-calendar-month_2.entry.js +4 -4
  536. package/dist/esm/co-calendar_3.entry.js +72 -27
  537. package/dist/esm/co-card.entry.js +3 -3
  538. package/dist/esm/co-carousel-item.entry.js +2 -2
  539. package/dist/esm/co-carousel.entry.js +3 -3
  540. package/dist/esm/co-checkbox-group.entry.js +1 -1
  541. package/dist/esm/co-checkbox.entry.js +13 -5
  542. package/dist/esm/co-chip_2.entry.js +9 -6
  543. package/dist/esm/co-color-area.entry.js +167 -0
  544. package/dist/esm/co-color-picker.entry.js +5 -5
  545. package/dist/esm/co-color-slider.entry.js +187 -0
  546. package/dist/esm/co-column-picker.entry.js +3 -3
  547. package/dist/esm/co-combobox.entry.js +5 -5
  548. package/dist/esm/co-command-search.entry.js +5 -5
  549. package/dist/esm/co-data-table-pagination.entry.js +5 -5
  550. package/dist/esm/co-data-table.entry.js +3 -3
  551. package/dist/esm/co-date-picker.entry.js +2 -2
  552. package/dist/esm/co-date-range-picker.entry.js +2 -2
  553. package/dist/esm/co-date-range.entry.js +2 -2
  554. package/dist/esm/co-date-time-picker.entry.js +4 -4
  555. package/dist/esm/co-document-editor.entry.js +1159 -0
  556. package/dist/esm/co-drive-card.entry.js +2 -2
  557. package/dist/esm/co-drop-zone.entry.js +2 -2
  558. package/dist/esm/co-emoji-picker.entry.js +3 -3
  559. package/dist/esm/co-empty-state.entry.js +3 -3
  560. package/dist/esm/co-event-calendar.entry.js +3 -3
  561. package/dist/esm/co-event-popover.entry.js +3 -3
  562. package/dist/esm/co-fab.entry.js +3 -3
  563. package/dist/esm/co-file-field.entry.js +8 -8
  564. package/dist/esm/co-file-type-tile.entry.js +3 -3
  565. package/dist/esm/co-gradient-bar.entry.js +218 -0
  566. package/dist/esm/co-helper-text.entry.js +3 -3
  567. package/dist/esm/co-icon-button.entry.js +49 -9
  568. package/dist/esm/co-icon.entry.js +3 -3
  569. package/dist/esm/co-input.entry.js +14 -8
  570. package/dist/esm/co-json-field.entry.js +5 -5
  571. package/dist/esm/{co-tooltip.entry.js → co-kbd_2.entry.js} +194 -7
  572. package/dist/esm/co-lightbox.entry.js +5 -5
  573. package/dist/esm/co-list-footer.entry.js +2 -2
  574. package/dist/esm/co-list-item.entry.js +5 -5
  575. package/dist/esm/co-loader.entry.js +1 -1
  576. package/dist/esm/co-media-thumb.entry.js +3 -3
  577. package/dist/esm/co-menu-divider.entry.js +3 -3
  578. package/dist/esm/co-menu-item.entry.js +39 -41
  579. package/dist/esm/co-menu.entry.js +81 -5
  580. package/dist/esm/co-modal.entry.js +350 -7
  581. package/dist/esm/co-navbar.entry.js +3 -3
  582. package/dist/esm/co-number-field.entry.js +5 -5
  583. package/dist/esm/co-overlay.entry.js +8 -4
  584. package/dist/esm/co-page-header.entry.js +2 -2
  585. package/dist/esm/co-phone-field.entry.js +3 -3
  586. package/dist/esm/co-popover.entry.js +67 -6
  587. package/dist/esm/co-progress-bar.entry.js +3 -3
  588. package/dist/esm/co-progress-circle.entry.js +3 -3
  589. package/dist/esm/co-provider-logo_2.entry.js +2 -2
  590. package/dist/esm/co-radio-group.entry.js +4 -4
  591. package/dist/esm/co-radio.entry.js +4 -4
  592. package/dist/esm/co-rating.entry.js +4 -4
  593. package/dist/esm/co-ref-field.entry.js +5 -5
  594. package/dist/esm/co-rich-text-editor.entry.js +26 -92
  595. package/dist/esm/co-rich-text-toolbar.entry.js +79 -20
  596. package/dist/esm/co-rich-text-viewer.entry.js +9 -2
  597. package/dist/esm/co-row.entry.js +3 -3
  598. package/dist/esm/co-segmented-bar.entry.js +3 -3
  599. package/dist/esm/co-select.entry.js +158 -29
  600. package/dist/esm/co-separator.entry.js +2 -2
  601. package/dist/esm/co-sidebar-nav.entry.js +20 -5
  602. package/dist/esm/co-sidebar.entry.js +3 -3
  603. package/dist/esm/co-slider.entry.js +203 -23
  604. package/dist/esm/co-swatch-grid.entry.js +119 -0
  605. package/dist/esm/co-switch.entry.js +5 -5
  606. package/dist/esm/co-tab-group.entry.js +113 -4
  607. package/dist/esm/co-tab.entry.js +15 -5
  608. package/dist/esm/co-tags-field.entry.js +8 -8
  609. package/dist/esm/co-textarea.entry.js +6 -6
  610. package/dist/esm/co-tile.entry.js +59 -0
  611. package/dist/esm/co-time-field.entry.js +2 -2
  612. package/dist/esm/co-toast.entry.js +3 -3
  613. package/dist/esm/co-toggle-button-group.entry.js +26 -5
  614. package/dist/esm/co-toggle-button.entry.js +67 -6
  615. package/dist/esm/co-transfer-list.entry.js +3 -3
  616. package/dist/esm/co-tree-item.entry.js +108 -0
  617. package/dist/esm/co-video.entry.js +3 -3
  618. package/dist/esm/cobalt.js +3 -3
  619. package/dist/esm/{color-BRbgGqLw.js → color-BVGGRfNG.js} +10 -6
  620. package/dist/esm/{fieldChip-uyggU8VV.js → fieldChip-B2ctp2m6.js} +1 -1
  621. package/dist/esm/gradientStops-DDK0y8ra.js +145 -0
  622. package/dist/esm/hsv-COJdaKBU.js +90 -0
  623. package/dist/esm/index-Cpo8HTwr.js +142 -0
  624. package/dist/esm/{index-DH5lfRNj.js → index-DJkaRtbb.js} +67 -28
  625. package/dist/esm/loader.js +3 -3
  626. package/dist/esm/{index-BBIYyvq-.js → pagination-D9OfZUnY.js} +1728 -297
  627. package/dist/esm/{positioning-DFHRS9cJ.js → positioning-BtliEQAT.js} +45 -19
  628. package/dist/esm/{requiredMark-BCJUuZvC.js → requiredMark-D5C5NzOE.js} +1 -1
  629. package/dist/esm/rich-text-host-BmdKHBZP.js +111 -0
  630. package/dist/esm/{richTextI18n-BYKAgwq3.js → richTextI18n-xnrKkNWQ.js} +45 -0
  631. package/dist/esm/submenu-DU-KOQ8L.js +57 -0
  632. package/dist/esm/{toolbar-config-BAYo-RBt.js → toolbar-config-CRxTFT_z.js} +32 -0
  633. package/dist/types/components/co-avatar/co-avatar.d.ts +4 -2
  634. package/dist/types/components/co-button/co-button.d.ts +6 -4
  635. package/dist/types/components/co-calendar/calendarMarks.d.ts +15 -0
  636. package/dist/types/components/co-calendar/co-calendar.d.ts +16 -0
  637. package/dist/types/components/co-checkbox/co-checkbox.d.ts +7 -0
  638. package/dist/types/components/co-color-area/co-color-area.d.ts +64 -0
  639. package/dist/types/components/co-color-slider/co-color-slider.d.ts +61 -0
  640. package/dist/types/components/co-date-time-picker/co-date-time-picker.d.ts +1 -1
  641. package/dist/types/components/co-document-editor/change-throttle.d.ts +9 -0
  642. package/dist/types/components/co-document-editor/co-document-editor.d.ts +276 -0
  643. package/dist/types/components/co-document-editor/document-props.d.ts +6 -0
  644. package/dist/types/components/co-document-editor/header-tools.d.ts +11 -0
  645. package/dist/types/components/co-document-editor/image-bar.d.ts +50 -0
  646. package/dist/types/components/co-document-editor/page-styles.d.ts +1 -0
  647. package/dist/types/components/co-document-editor/zoom.d.ts +26 -0
  648. package/dist/types/components/co-gradient-bar/co-gradient-bar.d.ts +72 -0
  649. package/dist/types/components/co-icon-button/co-icon-button.d.ts +34 -2
  650. package/dist/types/components/co-input/co-input.d.ts +14 -5
  651. package/dist/types/components/co-kbd/co-kbd.d.ts +43 -0
  652. package/dist/types/components/co-menu/co-menu.d.ts +40 -1
  653. package/dist/types/components/co-menu-item/co-menu-item.d.ts +17 -0
  654. package/dist/types/components/co-modal/co-modal.d.ts +111 -2
  655. package/dist/types/components/co-option-list/co-option-list.d.ts +1 -0
  656. package/dist/types/components/co-option-list/optionListLogic.d.ts +3 -0
  657. package/dist/types/components/co-popover/co-popover.d.ts +36 -0
  658. package/dist/types/components/co-rich-text-editor/co-rich-text-editor.d.ts +2 -5
  659. package/dist/types/components/co-rich-text-toolbar/co-rich-text-toolbar.d.ts +17 -2
  660. package/dist/types/components/co-select/co-select.d.ts +47 -5
  661. package/dist/types/components/co-select/virtualRows.d.ts +44 -0
  662. package/dist/types/components/co-slider/co-slider.d.ts +143 -1
  663. package/dist/types/components/co-swatch-grid/co-swatch-grid.d.ts +37 -0
  664. package/dist/types/components/co-tab/co-tab.d.ts +12 -2
  665. package/dist/types/components/co-tab-group/co-tab-group.d.ts +37 -0
  666. package/dist/types/components/co-tab-group/revealTab.d.ts +29 -0
  667. package/dist/types/components/co-tile/co-tile.d.ts +40 -0
  668. package/dist/types/components/co-toggle-button/co-toggle-button.d.ts +37 -2
  669. package/dist/types/components/co-toggle-button-group/co-toggle-button-group.d.ts +20 -2
  670. package/dist/types/components/co-tooltip/co-tooltip.d.ts +12 -0
  671. package/dist/types/components/co-tree-item/co-tree-item.d.ts +73 -0
  672. package/dist/types/components/co-tree-item/treeItemI18n.d.ts +6 -0
  673. package/dist/types/components.d.ts +1744 -88
  674. package/dist/types/utils/color.d.ts +9 -1
  675. package/dist/types/utils/dragMove.d.ts +63 -0
  676. package/dist/types/utils/gradientBarI18n.d.ts +8 -0
  677. package/dist/types/utils/gradientStops.d.ts +63 -0
  678. package/dist/types/utils/hsv.d.ts +44 -0
  679. package/dist/types/utils/kbdI18n.d.ts +25 -0
  680. package/dist/types/utils/positioning.d.ts +24 -0
  681. package/dist/types/utils/rich-text-host.d.ts +41 -0
  682. package/dist/types/utils/richTextI18n.d.ts +15 -0
  683. package/dist/types/utils/submenu.d.ts +16 -2
  684. package/dist/types/utils/swatchGridI18n.d.ts +6 -0
  685. package/dist/types/utils/test/fake-block-layout.d.ts +7 -0
  686. package/dist/types/utils/test/prosemirror-dom-shim.d.ts +1 -0
  687. package/dist/types/utils/test/shared-contract-css.d.ts +9 -0
  688. package/package.json +5 -5
  689. package/dist/cobalt/p-0678c797.entry.js +0 -1
  690. package/dist/cobalt/p-1d3a79af.entry.js +0 -1
  691. package/dist/cobalt/p-216a63ee.entry.js +0 -1
  692. package/dist/cobalt/p-3d31c575.entry.js +0 -1
  693. package/dist/cobalt/p-416795f5.entry.js +0 -1
  694. package/dist/cobalt/p-56551580.entry.js +0 -1
  695. package/dist/cobalt/p-58137c9e.entry.js +0 -1
  696. package/dist/cobalt/p-5a3e4c81.entry.js +0 -1
  697. package/dist/cobalt/p-5c756787.entry.js +0 -1
  698. package/dist/cobalt/p-67f3b9d6.entry.js +0 -1
  699. package/dist/cobalt/p-6a4f3179.entry.js +0 -1
  700. package/dist/cobalt/p-71cbc53c.entry.js +0 -1
  701. package/dist/cobalt/p-72e52af7.entry.js +0 -1
  702. package/dist/cobalt/p-8530ad16.entry.js +0 -1
  703. package/dist/cobalt/p-8a74bf7d.entry.js +0 -1
  704. package/dist/cobalt/p-8e05b979.entry.js +0 -1
  705. package/dist/cobalt/p-8ebc0c12.entry.js +0 -1
  706. package/dist/cobalt/p-8f2199ff.entry.js +0 -1
  707. package/dist/cobalt/p-9246e09c.entry.js +0 -1
  708. package/dist/cobalt/p-99a655f6.entry.js +0 -1
  709. package/dist/cobalt/p-BYKAgwq3.js +0 -1
  710. package/dist/cobalt/p-CJW9H3Gi.js +0 -1
  711. package/dist/cobalt/p-DFHRS9cJ.js +0 -1
  712. package/dist/cobalt/p-DH5lfRNj.js +0 -2
  713. package/dist/cobalt/p-a1b422ca.entry.js +0 -1
  714. package/dist/cobalt/p-ade07307.entry.js +0 -1
  715. package/dist/cobalt/p-b0762fd8.entry.js +0 -1
  716. package/dist/cobalt/p-b698188c.entry.js +0 -1
  717. package/dist/cobalt/p-bde32f8b.entry.js +0 -1
  718. package/dist/cobalt/p-db805569.entry.js +0 -1
  719. package/dist/cobalt/p-e3aae282.entry.js +0 -1
  720. package/dist/cobalt/p-e49a564c.entry.js +0 -1
  721. package/dist/cobalt/p-ef301976.entry.js +0 -1
  722. package/dist/cobalt/p-f4e1c3c3.entry.js +0 -1
  723. package/dist/cobalt/p-fMqVDypp.js +0 -1
  724. package/dist/components/p-2EOI1nrz.js +0 -1
  725. package/dist/components/p-7TncUlLN.js +0 -1
  726. package/dist/components/p-B4NCaKrR.js +0 -1
  727. package/dist/components/p-BJh68Jqe.js +0 -1
  728. package/dist/components/p-BrAFTkAn.js +0 -1
  729. package/dist/components/p-Bsh0JMGf.js +0 -1
  730. package/dist/components/p-CJW9H3Gi.js +0 -1
  731. package/dist/components/p-CWCYYQrF.js +0 -1
  732. package/dist/components/p-D9T7zKeL.js +0 -1
  733. package/dist/components/p-DFHRS9cJ.js +0 -1
  734. package/dist/components/p-DTPYZwaZ.js +0 -1
  735. package/dist/components/p-Dcg4krSX.js +0 -1
  736. package/dist/components/p-Dh8ffSjK.js +0 -1
@@ -1,8 +1,10 @@
1
- import { r as registerInstance, c as createEvent, h, a as getElement } from './index-DH5lfRNj.js';
2
- import { R as RichText } from './index-BBIYyvq-.js';
3
- import { g as getRichTextStrings } from './richTextI18n-BYKAgwq3.js';
1
+ import { r as registerInstance, c as createEvent, h, a as getElement } from './index-DJkaRtbb.js';
2
+ import { R as RichText } from './index-Cpo8HTwr.js';
3
+ import { g as getRichTextStrings } from './richTextI18n-xnrKkNWQ.js';
4
+ import { E as EchoGuard, p as parseEditorValue, a as applyExternalValue, b as parseFeatures, c as buildOutput, s as syncToolbarEditor, d as syncImageLayouts } from './rich-text-host-BmdKHBZP.js';
5
+ import './pagination-D9OfZUnY.js';
4
6
  import './purify.es-B2QLgWrz.js';
5
- import './toolbar-config-BAYo-RBt.js';
7
+ import './toolbar-config-CRxTFT_z.js';
6
8
 
7
9
  const coRichTextEditorCss = () => `co-rich-text-editor{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14);letter-spacing:var(--co-font-letter-spacing-body)}.co-rich-text-editor{display:flex;flex-direction:column;gap:var(--co-spacing-sm2, 6px)}.co-rich-text-editor__labels{display:flex;align-items:center;justify-content:space-between;padding:0 var(--co-spacing-xs);gap:var(--co-spacing-sm2, 6px)}.co-rich-text-editor__label,.co-rich-text-editor__secondary-label{color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-14);font-weight:400;line-height:1}.co-rich-text-editor__frame{display:flex;flex-direction:column;background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);min-height:0;flex:1;position:relative;overflow:visible}.co-rich-text-editor__box{display:flex;flex-direction:column;min-height:0;flex:1;position:relative;overflow-y:auto;overflow-x:hidden}.co-rich-text-editor--flat .co-rich-text-editor__frame{background:transparent;border-color:transparent}.co-rich-text-editor--focused .co-rich-text-editor__frame{border-color:var(--co-semantic-border-focus, var(--co-color-base-negro, #1a1a1a));box-shadow:0 0 0 3px var(--co-semantic-border-focus-ring, rgba(37, 99, 235, 0.15))}.co-rich-text-editor--error .co-rich-text-editor__frame{border-color:var(--co-color-status-error)}.co-rich-text-editor--success .co-rich-text-editor__frame{border-color:var(--co-color-status-success)}.co-rich-text-editor--disabled .co-rich-text-editor__frame,.co-rich-text-editor--readonly .co-rich-text-editor__frame{opacity:0.7;cursor:not-allowed}.co-rich-text-editor--loading .co-rte-content{min-height:96px;background:linear-gradient(90deg, var(--co-semantic-surface-secondary) 0%, var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04)) 50%, var(--co-semantic-surface-secondary) 100%);background-size:200% 100%;animation:co-rte-skeleton 1.2s ease-in-out infinite}@keyframes co-rte-skeleton{0%{background-position:200% 0}100%{background-position:-200% 0}}.co-rich-text-editor__toolbar{position:relative;flex-shrink:0;z-index:60;border-top-left-radius:calc(var(--co-border-radius-xs) - 1px);border-top-right-radius:calc(var(--co-border-radius-xs) - 1px)}.co-rich-text-editor__toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-md);flex-shrink:0;min-width:0;border-top:1px solid var(--co-semantic-border-subtle)}.co-rich-text-editor--toolbar-bottom .co-rich-text-editor__toolbar{border-top-left-radius:0;border-top-right-radius:0;min-width:0}.co-rte-content{min-height:96px;color:var(--co-semantic-text-default);flex:1 0 auto;display:flex;flex-direction:column}.co-rte-content .ProseMirror{outline:none;flex:1 0 auto;line-height:1.5;padding:var(--co-spacing-md);box-sizing:border-box}.co-rte-content .ProseMirror p{margin:0 0 var(--co-spacing-sm) 0}.co-rte-content .ProseMirror p:last-child{margin-bottom:0}.co-rte-content .ProseMirror>p{margin-bottom:var(--co-spacing-sm) !important}.co-rte-content .ProseMirror>p:last-child{margin-bottom:0 !important}.co-rte-content .ProseMirror [style*="text-align: justify"]{text-align-last:left}.co-rte-content .ProseMirror [style*="text-align: center"]{text-align:center}.co-rte-content .ProseMirror [style*="text-align: right"]{text-align:right}.co-rte-content .ProseMirror h1,.co-rte-content .ProseMirror h2,.co-rte-content .ProseMirror h3,.co-rte-content .ProseMirror h4{margin:var(--co-spacing-md) 0 var(--co-spacing-sm);font-weight:600;line-height:1.3}.co-rte-content .ProseMirror h1{font-size:var(--co-font-size-28, 28px)}.co-rte-content .ProseMirror h2{font-size:var(--co-font-size-20, 20px)}.co-rte-content .ProseMirror h3{font-size:var(--co-font-size-16, 16px)}.co-rte-content .ProseMirror ul,.co-rte-content .ProseMirror ol{padding-left:var(--co-spacing-xl);margin:0 0 var(--co-spacing-sm) 0}.co-rte-content .ProseMirror ul[data-type="taskList"]{list-style:none;padding-left:0;margin:0 0 var(--co-spacing-sm) 0}.co-rte-content .ProseMirror ul[data-type="taskList"] li{display:flex;align-items:flex-start;gap:var(--co-spacing-sm, 8px)}.co-rte-content .ProseMirror ul[data-type="taskList"] li>label{flex:0 0 auto;margin-top:0.15em;user-select:none}.co-rte-content .ProseMirror ul[data-type="taskList"] li>div{flex:1 1 auto;min-width:0}.co-rte-content .ProseMirror ul[data-type="taskList"] li>div>p{margin:0}.co-rte-content .ProseMirror ul[data-type="taskList"] input[type="checkbox"]{width:16px;height:16px;cursor:pointer;accent-color:var(--co-color-base-negro, #1a1a1a)}.co-rte-content .ProseMirror ul[data-type="taskList"][data-variant="strike"] li[data-checked="true"]>div{text-decoration:line-through;color:var(--co-semantic-text-muted, #999)}.co-rte-content .ProseMirror ul[data-type="taskList"][data-variant="plain"] li[data-checked="true"]>div{text-decoration:none}.co-rte-content .ProseMirror blockquote{border-left:3px solid var(--co-semantic-border-default, var(--co-semantic-border-subtle));padding-left:var(--co-spacing-md);margin:0 0 var(--co-spacing-sm) 0;color:var(--co-semantic-text-secondary)}.co-rte-content .ProseMirror a{color:var(--co-color-base-negro, #1a1a1a);text-decoration:underline;text-underline-offset:2px}.co-rte-content .ProseMirror img{max-width:100%;height:auto;border-radius:var(--co-border-radius-xs);margin:var(--co-spacing-sm) 0;cursor:default;-webkit-user-drag:none;user-select:none}.co-rte-content .ProseMirror img.ProseMirror-selectednode{outline:2px solid var(--co-color-base-negro, #1a1a1a)}.co-rte-content [data-resize-container].ProseMirror-selectednode{outline:2px solid var(--co-color-base-negro, #1a1a1a);outline-offset:0px;border-radius:0}.co-rte-content [data-resize-container]{position:relative;display:inline-block;width:fit-content;max-width:100%;margin:var(--co-spacing-sm) 0;line-height:0}.co-rte-content [data-resize-container][data-resize-state="true"]{outline:2px solid var(--co-color-base-negro, #1a1a1a);outline-offset:0px;border-radius:0}.co-rte-content [data-resize-wrapper]{position:relative;display:inline-block;line-height:0}.co-rte-content [data-resize-handle]{width:10px;height:10px;background:var(--co-color-base-negro, #1a1a1a);border:1.5px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0, 0, 0, 0.3);z-index:5;opacity:0;pointer-events:none}.co-rte-content [data-resize-container][data-resize-state="true"] [data-resize-handle],.co-rte-content [data-resize-container].ProseMirror-selectednode [data-resize-handle]{opacity:1;pointer-events:auto}.co-rte-content [data-resize-handle="top-left"]{cursor:nw-resize}.co-rte-content [data-resize-handle="top-right"]{cursor:ne-resize}.co-rte-content [data-resize-handle="bottom-left"]{cursor:sw-resize}.co-rte-content [data-resize-handle="bottom-right"]{cursor:se-resize}.co-rte-content [data-resize-handle="top"],.co-rte-content [data-resize-handle="bottom"]{width:30px;height:6px;border-radius:3px;left:50% !important;transform:translateX(-50%)}.co-rte-content [data-resize-handle="top"]{cursor:n-resize}.co-rte-content [data-resize-handle="bottom"]{cursor:s-resize}.co-rte-content [data-resize-handle="left"],.co-rte-content [data-resize-handle="right"]{width:6px;height:30px;border-radius:3px;top:50% !important;transform:translateY(-50%)}.co-rte-content [data-resize-handle="left"]{cursor:w-resize}.co-rte-content [data-resize-handle="right"]{cursor:e-resize}.co-rte-content [data-resize-container] img{max-width:100%;display:block;border-radius:0;margin:0}.co-rte-content .ProseMirror hr{border:none;border-top:1px solid var(--co-semantic-border-default, #e0e0e0);margin:var(--co-spacing-lg) 0}.co-rte-content .ProseMirror code{font-family:var(--co-font-family-mono);font-size:0.9em;background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));padding:0.1em 0.3em;border-radius:var(--co-border-radius-xxs)}.co-rte-content .ProseMirror pre{font-family:var(--co-font-family-mono);font-size:0.9em;background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));padding:var(--co-spacing-md);border-radius:var(--co-border-radius-xs);overflow-x:auto;margin:var(--co-spacing-sm) 0}.co-rte-content .ProseMirror pre code{background:none;padding:0;border-radius:0}.co-rte-content .ProseMirror p.is-editor-empty:first-child::before{content:attr(data-placeholder);color:var(--co-semantic-text-muted);float:left;height:0;pointer-events:none}.co-rte-content .co-rte-variable,.co-rte-content .co-rte-mention{display:inline-block;padding:0.05em 0.4em;border-radius:var(--co-border-radius-xxs);background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff);font-size:0.9em;white-space:nowrap}.co-rte-content .co-rte-mention{background:var(--co-color-azul-200);color:var(--co-color-azul-800)}.co-rich-text-editor__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm);padding:0 var(--co-spacing-xs);min-height:0}.co-rich-text-editor__helper{display:flex;align-items:center;gap:var(--co-spacing-xs);color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-12, 12px)}.co-rich-text-editor__helper--error{color:var(--co-color-status-error)}.co-rich-text-editor__helper--success{color:var(--co-color-status-success)}.co-rich-text-editor__count{margin-left:auto;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12, 12px)}.co-rte-bubble.co-rte-bubble--suppressed{display:none !important}.co-rte-bubble{position:absolute;z-index:50;display:flex;flex-direction:row;align-items:center;gap:2px;padding:var(--co-spacing-xs, 4px) var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);user-select:none;white-space:nowrap;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.co-rte-bubble__drag-handle{display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--co-semantic-text-muted, #999);width:18px;height:28px;margin:0 2px 0 0;flex-shrink:0}.co-rte-bubble__drag-handle:hover{color:var(--co-semantic-text-secondary, #555)}.co-rte-bubble__drag-handle:active{cursor:grabbing}.co-rte-bubble__row{display:flex;align-items:center;gap:2px;flex-wrap:wrap;max-width:100%;min-width:0}.co-rte-bubble__btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer}.co-rte-bubble__btn:hover:not(.co-rte-bubble__btn--active){background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06))}.co-rte-bubble__btn--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rte-bubble__btn--active:hover{background:var(--co-color-base-negro, #333)}.co-rte-bubble__sep{display:inline-block;width:1px;height:18px;margin:0 4px;background:var(--co-semantic-border-default, rgba(0, 0, 0, 0.12));flex-shrink:0}.co-rte-bubble__select{position:relative}.co-rte-bubble__select-trigger{display:flex;align-items:center;gap:2px;height:28px;padding:0 6px;border:1px solid transparent;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:11px;cursor:pointer;white-space:nowrap;transition:background var(--co-motion-duration-fast), border-color var(--co-motion-duration-fast)}.co-rte-bubble__select-trigger:hover{background:var(--co-semantic-surface-hover, #f5f5f5);border-color:var(--co-semantic-border-default, #e0e0e0)}.co-rte-bubble__select-label{max-width:72px;overflow:hidden;text-overflow:ellipsis}.co-rte-bubble__select--font .co-rte-bubble__select-label{max-width:110px}.co-rte-bubble__select-dropdown{position:absolute;bottom:100%;left:0;z-index:120;min-width:100px;max-height:260px;overflow-y:auto;padding:var(--co-spacing-xxs, 2px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xxs, 4px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-bottom:4px;white-space:normal}.co-rte-bubble__select-dropdown[data-position="above"]{bottom:100%;top:auto;margin-bottom:4px;margin-top:0}.co-rte-bubble__select-dropdown[data-position="below"]{top:100%;bottom:auto;margin-top:4px;margin-bottom:0}.co-rte-bubble__select-option{display:block;width:100%;padding:4px 8px;border:none;border-radius:3px;background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:12px;text-align:left;cursor:pointer;white-space:nowrap}.co-rte-bubble__select-option:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rte-bubble__select-dropdown--font{min-width:200px;max-height:320px;overflow:hidden;overflow-y:auto;display:flex;flex-direction:column;white-space:normal}.co-rte-bubble__font-search{padding:6px 6px 4px;flex-shrink:0}.co-rte-bubble__font-search-input{width:100%;padding:4px 8px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:4px;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:12px;outline:none;box-sizing:border-box}.co-rte-bubble__font-search-input:focus{border-color:var(--co-color-base-negro, #1a1a1a)}.co-rte-bubble__font-list{max-height:260px;overflow-y:auto;padding:0 var(--co-spacing-xxs, 2px) var(--co-spacing-xxs, 2px)}.co-rte-bubble__font-section-header{padding:6px 8px 2px;font-size:11px;font-weight:600;color:var(--co-semantic-text-muted, #888);text-transform:uppercase;letter-spacing:0.5px}.co-rte-bubble__font-empty{padding:12px 8px;text-align:center;color:var(--co-semantic-text-muted, #888);font-size:12px}.co-rte-bubble__color{position:relative}.co-rte-bubble__color-dropdown{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);z-index:120;width:224px;padding:var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-bottom:4px;white-space:normal;max-width:calc(100vw - 16px)}.co-rte-bubble__color-dropdown[data-position="above"]{bottom:100%;top:auto;margin-bottom:4px;margin-top:0}.co-rte-bubble__color-dropdown[data-position="below"]{top:100%;bottom:auto;margin-top:4px;margin-bottom:0}.co-rte-bubble__color-grid{display:grid;grid-template-columns:repeat(10, 1fr);gap:2px}.co-rte-bubble__color-swatch{width:20px;height:20px;padding:0;border:none;border-radius:3px;cursor:pointer;transition:transform var(--co-motion-duration-fast), box-shadow var(--co-motion-duration-fast)}.co-rte-bubble__color-swatch:hover{transform:scale(1.2);box-shadow:0 0 0 2px var(--co-color-base-negro, #1a1a1a)}.co-rte-bubble__color-hex{display:flex;align-items:center;gap:4px;margin-top:6px}.co-rte-bubble__color-hex-input{width:100%;padding:3px 6px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:3px;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-mono, monospace);font-size:11px;outline:none}.co-rte-bubble__color-hex-input:focus{border-color:var(--co-color-base-negro, #1a1a1a)}.co-rte-bubble__color-clear{display:flex;align-items:center;gap:4px;width:100%;padding:3px 6px;margin-top:4px;border:none;background:transparent;color:var(--co-semantic-text-secondary, #666);font-family:var(--co-font-family-primary);font-size:11px;cursor:pointer;border-radius:3px}.co-rte-bubble__color-clear:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rte-bubble__link-form{display:flex;align-items:center;gap:4px;margin-left:4px}.co-rte-bubble__link-input{width:160px;padding:3px 8px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:4px;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:12px;outline:none}.co-rte-bubble__link-input::placeholder{color:var(--co-semantic-text-muted, #999)}.co-rte-bubble__link-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}.co-rte-bubble__link-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:var(--co-color-base-negro, #1a1a1a);color:#fff;cursor:pointer}.co-rte-bubble__link-btn:hover{opacity:0.9}.co-rte-bubble__link-unlink{background:var(--co-semantic-status-error, #aa2e1b)}.co-rte-bubble__panel{position:absolute;z-index:140;width:230px;background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);overflow:hidden;user-select:none}.co-rte-bubble__panel-header{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--co-semantic-border-subtle, #eee)}.co-rte-bubble__panel-drag{cursor:grab;display:flex;align-items:center;justify-content:center;color:var(--co-semantic-text-muted, #999);flex-shrink:0}.co-rte-bubble__panel-drag:active{cursor:grabbing}.co-rte-bubble__panel-title{flex:1;font-size:12px;font-weight:600;color:var(--co-semantic-text-default, #333);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.co-rte-bubble__panel-close{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:3px;background:transparent;color:var(--co-semantic-text-muted, #999);cursor:pointer;flex-shrink:0}.co-rte-bubble__panel-close:hover{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));color:var(--co-semantic-text-default, #333)}.co-rte-bubble__panel-input-wrap{padding:6px 8px}.co-rte-bubble__panel-input{width:100%;padding:4px 8px;border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:4px;font-size:12px;font-family:inherit;outline:none;box-sizing:border-box;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333)}.co-rte-bubble__panel-input:focus{border-color:var(--co-color-base-negro, #1a1a1a)}.co-rte-bubble__panel-options{max-height:280px;overflow-y:auto;padding:2px 4px 4px}.co-rte-bubble__panel-option{display:block;width:100%;padding:5px 8px;border:none;border-radius:3px;background:transparent;cursor:pointer;text-align:left;font-family:inherit;color:var(--co-semantic-text-default, #333)}.co-rte-bubble__panel-option:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rte-bubble__panel-sep{height:1px;background:var(--co-semantic-border-subtle, #eee);margin:4px 8px}.co-rte-bubble__panel-opt-row{display:flex;justify-content:space-between;align-items:center;width:100%}.co-rte-bubble__panel-opt-value{color:var(--co-semantic-text-muted, #999);font-size:11px;font-weight:400 !important;min-width:28px;text-align:right}.co-rte-bubble__panel[data-position="above"]{bottom:100%;top:auto;margin-bottom:4px}.co-rte-bubble__panel[data-position="below"]{top:100%;bottom:auto;margin-top:4px}.co-rte-bubble__overflow{position:relative}.co-rte-bubble__overflow-menu{position:absolute;bottom:100%;right:0;z-index:130;min-width:230px;padding:4px;background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-bottom:4px}.co-rte-bubble__overflow-menu[data-position="below"]{top:100%;bottom:auto;margin-top:4px;margin-bottom:0}.co-rte-bubble__overflow-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:4px;background:transparent;font-family:inherit;font-size:13px;color:var(--co-semantic-text-default, #333);cursor:pointer;text-align:left;white-space:nowrap}.co-rte-bubble__overflow-item:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rte-bubble__overflow-item--active{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));color:var(--co-color-base-negro, #1a1a1a);font-weight:600}.co-rte-bubble__overflow-value{margin-left:auto;color:var(--co-semantic-text-muted, #999);font-size:11px}.co-rte-bubble__overflow-sep{height:1px;background:var(--co-semantic-border-subtle, #eee);margin:3px 8px}.co-rte-bubble__overflow-section-title{padding:6px 8px 2px;font-size:11px;font-weight:600;color:var(--co-semantic-text-muted, #888);letter-spacing:0.5px}.co-rte-bubble__overflow-item--danger{color:var(--co-color-status-error, #aa2e1b)}.co-rte-bubble__overflow-item--danger:hover{background:rgba(170, 46, 27, 0.06)}.co-rte-bubble__color-indicator{display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1}.co-rte-bubble__color-letter{font-family:var(--co-font-family-primary);font-size:14px;font-weight:700;color:var(--co-semantic-text-default, #333);line-height:1}.co-rte-bubble__color-bar{width:14px;height:3px;border-radius:1px}.co-rte-content .callout{display:flex;gap:0.75rem;padding:1rem;border-radius:var(--co-border-radius-xs, 8px);border:2px solid;margin:1rem 0}.co-rte-content .callout--info{background:#eff6ff;border-color:#bfdbfe}.co-rte-content .callout--warning{background:#fffbeb;border-color:#fde68a}.co-rte-content .callout--success{background:#f0fdf4;border-color:#bbf7d0}.co-rte-content .callout--error{background:#fef2f2;border-color:#fecaca}.co-rte-content .callout__icon{flex-shrink:0;font-size:1.2em}.co-rte-content .callout__content{flex:1}.co-rte-content .callout__content p{margin:0}.co-rte-content table{border-collapse:collapse;table-layout:auto;width:100%;margin:1rem 0;overflow:hidden}.co-rte-content .tableWrapper{overflow-x:auto;max-width:100%}.co-rte-content td,.co-rte-content th{min-width:1em;border:1px solid var(--co-semantic-border-default, #e0e0e0);padding:0.5rem;vertical-align:top;box-sizing:border-box;position:relative}.co-rte-content th{font-weight:600;text-align:left;background-color:#e3e3e3;color:var(--co-semantic-text-default, #333)}.co-rte-content .ProseMirror table th{background-color:#e3e3e3}.co-rte-content .selectedCell{background:rgba(0, 0, 0, 0.06)}.co-rte-content .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;background-color:var(--co-color-base-negro, #1a1a1a);pointer-events:none}.co-rte-content .ProseMirror.resize-cursor,.co-rte-content .ProseMirror.resize-cursor *{cursor:col-resize}.co-rte-content iframe{border-radius:var(--co-border-radius-xs, 8px);max-width:100%;aspect-ratio:16 / 9;width:100%;height:auto;display:block;margin:0}.co-rte-content .co-rte-embed{position:relative;display:block;max-width:100%;margin:1rem 0;line-height:0}.co-rte-content .co-rte-embed::before{content:'';position:absolute;inset:0;z-index:1}.co-rte-content .co-rte-embed.ProseMirror-selectednode,.co-rte-content .co-rte-embed--selected{outline:2px solid var(--co-color-base-negro, #1a1a1a);outline-offset:2px;border-radius:var(--co-border-radius-xs, 8px)}.co-rte-content .co-rte-embed__handle{position:absolute;width:12px;height:12px;background:var(--co-color-base-negro, #1a1a1a);border:1.5px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0, 0, 0, 0.3);z-index:3;opacity:0;pointer-events:none}.co-rte-content .co-rte-embed.ProseMirror-selectednode .co-rte-embed__handle,.co-rte-content .co-rte-embed--selected .co-rte-embed__handle{opacity:1;pointer-events:auto}.co-rte-content .co-rte-embed__handle--bottom-right{right:-6px;bottom:-6px;cursor:nwse-resize}.co-rte-content .co-rte-embed__handle--bottom-left{left:-6px;bottom:-6px;cursor:nesw-resize}.co-rte-content .co-rte-embed--resizing{outline:2px dashed var(--co-color-base-negro, #1a1a1a);outline-offset:2px}.co-rich-text-editor--readonly .co-rte-embed::before,.co-rich-text-editor--disabled .co-rte-embed::before{display:none}.co-rich-text-editor--readonly .co-rte-embed.ProseMirror-selectednode,.co-rich-text-editor--readonly .co-rte-embed--selected,.co-rich-text-editor--disabled .co-rte-embed.ProseMirror-selectednode,.co-rich-text-editor--disabled .co-rte-embed--selected{outline:none !important}.co-rte-img-layout{position:absolute;z-index:50;display:flex;align-items:center;gap:2px;padding:4px;background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 2px 12px rgba(0, 0, 0, 0.12);pointer-events:auto}.co-rte-img-layout__btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid transparent;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer;transition:background var(--co-motion-duration-fast), border-color var(--co-motion-duration-fast)}.co-rte-img-layout__btn:hover{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06))}.co-rte-img-layout__btn--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rte-img-layout__btn--active:hover{background:var(--co-color-base-negro, #333)}.co-rte-img-layout__btn[data-tooltip]{position:relative}.co-rte-img-layout__btn[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);padding:4px 8px;background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff);font-family:var(--co-font-family-primary);font-size:11px;font-weight:500;line-height:1.3;white-space:nowrap;border-radius:4px;pointer-events:none;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);z-index:100}.co-rte-img-layout__btn[data-tooltip]:hover::after{opacity:1;transition-delay:0.3s}.co-rte-content [data-resize-container][data-image-layout="wrap-left"]{float:left;max-width:50%;margin:4px 16px 8px 0}.co-rte-content [data-resize-container][data-image-layout="wrap-right"]{float:right;max-width:50%;margin:4px 0 8px 16px}.co-rte-content [data-resize-container][data-image-layout="center"]{display:block;margin:12px auto}.co-rte-content [data-resize-container][data-image-layout="full-width"]{display:block;width:100%;margin:12px 0}.co-rte-content [data-resize-container][data-image-layout="full-width"] [data-resize-wrapper],.co-rte-content [data-resize-container][data-image-layout="full-width"] img{width:100%}@media (max-width: 768px){.co-rte-content [data-resize-container][data-image-layout="wrap-left"],.co-rte-content [data-resize-container][data-image-layout="wrap-right"]{float:none;max-width:100%;display:block;margin:12px 0}}.co-rte-content--site .ProseMirror{width:var(--co-rte-content-width, 80%);max-width:100%;margin:0 auto}@media (max-width: 768px){.co-rte-content--site .ProseMirror{width:100%}}.co-rich-text-editor--readonly [data-resize-handle],.co-rich-text-editor--disabled [data-resize-handle]{display:none !important}.co-rich-text-editor--readonly [data-resize-container].ProseMirror-selectednode,.co-rich-text-editor--disabled [data-resize-container].ProseMirror-selectednode,.co-rich-text-editor--readonly img.ProseMirror-selectednode,.co-rich-text-editor--disabled img.ProseMirror-selectednode{outline:none !important}`;
8
10
 
@@ -65,10 +67,8 @@ const CoRichTextEditor = class {
65
67
  this._loadedAccountFonts = [];
66
68
  this._fontLoaderCalled = false;
67
69
  this._fontLoaderLoading = false;
68
- /** Last emitted JSON string — guards the value Watch against feedback loops. */
69
- this.lastEmittedJson = null;
70
- /** Last emitted HTML string — parents often send HTML back via value prop. */
71
- this.lastEmittedHtml = '';
70
+ /** Guarda anti-eco compartida (utils/rich-text-host). */
71
+ this.echo = new EchoGuard();
72
72
  /** True while applying an external value (suppresses emit). */
73
73
  this.applyingExternal = false;
74
74
  this.rt = RichText;
@@ -78,15 +78,10 @@ const CoRichTextEditor = class {
78
78
  if (this.applyingExternal)
79
79
  return;
80
80
  const out = this.buildOutput(editor);
81
- // Track both JSON and HTML forms to prevent feedback loops.
82
- // The parent may send back either format via the value prop.
83
- this.lastEmittedJson = out.json ? JSON.stringify(out.json) : null;
84
- this.lastEmittedHtml = out.html;
85
- // Do NOT set this.value here — it triggers unnecessary Stencil re-renders
86
- // and the Watch cycle. The parent is the source of truth for the value prop.
81
+ this.echo.markEmitted(out);
82
+ // No se asigna this.value: dispararía re-renders y el Watch. El padre es la fuente de verdad.
87
83
  this.coInput.emit(out);
88
- // In readonly mode there's no blur cycle, so commit immediately
89
- // (e.g. task-list checkbox toggled by onReadOnlyChecked).
84
+ // En readonly no hay ciclo de blur: se confirma en el acto (p. ej. checkbox de task-list).
90
85
  if (this.readonly)
91
86
  this.coChange.emit(out);
92
87
  };
@@ -125,7 +120,7 @@ const CoRichTextEditor = class {
125
120
  this.editor = this.rt.createEditor({
126
121
  preset: this.preset,
127
122
  element: this.contentEl,
128
- content: this.parseValue(this.value),
123
+ content: parseEditorValue(this.value),
129
124
  editable: !this.disabled && !this.readonly,
130
125
  placeholder: this.placeholder,
131
126
  maxLength: this.maxLength,
@@ -178,7 +173,7 @@ const CoRichTextEditor = class {
178
173
  this.suppressBubble(!!open);
179
174
  });
180
175
  }
181
- this.lastEmittedJson = (_b = this.value) !== null && _b !== void 0 ? _b : null;
176
+ this.echo.seed((_b = this.value) !== null && _b !== void 0 ? _b : null);
182
177
  this.ready = true;
183
178
  this.refreshCharCount();
184
179
  this.syncToolbar();
@@ -220,24 +215,17 @@ const CoRichTextEditor = class {
220
215
  if (!this.editor || this.applyingExternal)
221
216
  return;
222
217
  const incoming = next !== null && next !== void 0 ? next : null;
223
- // Skip if this value matches what we last emitted (JSON or HTML form).
224
- // This prevents the destructive feedback loop where the parent sends
225
- // back our own output and setContent resets the editor on every keystroke.
226
- if (incoming === this.lastEmittedJson || incoming === this.lastEmittedHtml)
218
+ // El padre suele devolver nuestro propio output (JSON o HTML): re-aplicarlo
219
+ // reinicia el editor en cada tecla.
220
+ if (this.echo.isEcho(incoming))
227
221
  return;
228
222
  this.applyingExternal = true;
229
223
  try {
230
- if (incoming === '' || incoming === null) {
231
- this.editor.commands.clearContent(false);
232
- }
233
- else {
234
- this.editor.commands.setContent(this.parseValue(next), { emitUpdate: false });
235
- }
224
+ applyExternalValue(this.editor, incoming);
236
225
  }
237
226
  finally {
238
227
  this.applyingExternal = false;
239
- this.lastEmittedJson = incoming;
240
- this.lastEmittedHtml = '';
228
+ this.echo.seed(incoming);
241
229
  this.refreshCharCount();
242
230
  }
243
231
  }
@@ -282,27 +270,7 @@ const CoRichTextEditor = class {
282
270
  return (_a = f === null || f === void 0 ? void 0 : f.image) !== null && _a !== void 0 ? _a : this.preset === 'document';
283
271
  }
284
272
  get parsedFeatures() {
285
- if (!this.features)
286
- return undefined;
287
- if (typeof this.features === 'string') {
288
- try {
289
- return JSON.parse(this.features);
290
- }
291
- catch (_a) {
292
- return undefined;
293
- }
294
- }
295
- return this.features;
296
- }
297
- parseValue(v) {
298
- if (!v)
299
- return '';
300
- try {
301
- return JSON.parse(v);
302
- }
303
- catch (_a) {
304
- return v; // tolerate an HTML string
305
- }
273
+ return parseFeatures(this.features);
306
274
  }
307
275
  sanitizeHtml(html) {
308
276
  // Con las MISMAS features que cargaron el schema: sin ellas, un <img> con
@@ -311,12 +279,7 @@ const CoRichTextEditor = class {
311
279
  return this.rt.sanitize(html, this.preset, this.parsedFeatures);
312
280
  }
313
281
  buildOutput(editor) {
314
- const empty = editor.isEmpty;
315
- return {
316
- json: empty ? null : editor.getJSON(),
317
- html: empty ? '' : this.sanitizeHtml(editor.getHTML()),
318
- text: editor.getText(),
319
- };
282
+ return buildOutput(editor, (html) => this.sanitizeHtml(html));
320
283
  }
321
284
  /** Lock the bubble position so floating-ui doesn't reposition it. */
322
285
  lockBubblePosition(durationMs = 1000) {
@@ -425,12 +388,7 @@ const CoRichTextEditor = class {
425
388
  }
426
389
  }
427
390
  syncToolbar() {
428
- if (this.toolbarEl && this.editor && this.toolbarEl.editor !== this.editor) {
429
- this.toolbarEl.editor = this.editor;
430
- }
431
- if (this.toolbarEl) {
432
- this.toolbarEl.imageUpload = this.imageUpload;
433
- }
391
+ syncToolbarEditor(this.toolbarEl, this.editor, this.imageUpload);
434
392
  }
435
393
  get resolvedToolbar() {
436
394
  if (this.toolbar !== 'auto')
@@ -1983,32 +1941,8 @@ const CoRichTextEditor = class {
1983
1941
  * from state and write the attribute imperatively to the container.
1984
1942
  */
1985
1943
  syncImageLayouts() {
1986
- if (!this.editor)
1987
- return;
1988
- const view = this.editor.view;
1989
- this.editor.state.doc.descendants((node, pos) => {
1990
- var _a;
1991
- if (node.type.name !== 'image')
1992
- return true;
1993
- const dom = view.nodeDOM(pos);
1994
- const c = (((_a = dom === null || dom === void 0 ? void 0 : dom.closest) === null || _a === void 0 ? void 0 : _a.call(dom, '[data-resize-container]')) || dom);
1995
- if (!c)
1996
- return true;
1997
- const layout = node.attrs.imageLayout || 'inline';
1998
- c.dataset.imageLayout = layout;
1999
- // Neutralise any absolute positioning baked by the old fixed-page model.
2000
- c.style.position = '';
2001
- c.style.left = '';
2002
- c.style.top = '';
2003
- c.style.zIndex = '';
2004
- // The resize NodeView pins `display: inline-flex` INLINE on the container, which
2005
- // beats the stylesheet's `display: block` for `center` / `full-width`: the editor
2006
- // showed those images inline-left while the viewer (and the sent email) centred
2007
- // them (2026-09-17). Clear it for block layouts so the CSS rule can apply; the
2008
- // inline value is restored for flow layouts so the resize handles keep working.
2009
- c.style.display = layout === 'center' || layout === 'full-width' ? '' : 'inline-flex';
2010
- return true;
2011
- });
1944
+ if (this.editor)
1945
+ syncImageLayouts(this.editor);
2012
1946
  }
2013
1947
  /** Reposition only the layout bar (used during drag for performance). */
2014
1948
  updateImageLayoutBarPosition() {
@@ -2049,11 +1983,11 @@ const CoRichTextEditor = class {
2049
1983
  const showToolbar = this.resolvedToolbar !== 'none' && !this.readonly && !this.disabled;
2050
1984
  const showCount = this.showCharacterCount || this.maxLength != null;
2051
1985
  const bottom = this.toolbarPosition === 'bottom';
2052
- const toolbar = showToolbar && (h("co-rich-text-toolbar", { key: '0df30a57a843cbcd967ffd254ae0e54bee448902', class: "co-rich-text-editor__toolbar", part: "toolbar", variant: this.resolvedToolbar, position: this.toolbarPosition, disabled: this.disabled || this.readonly, locale: this.locale, attachmentsEnabled: this.attachmentsEnabled, attachmentAccept: this.attachmentAccept, onCoAttachmentsSelected: (e) => {
1986
+ const toolbar = showToolbar && (h("co-rich-text-toolbar", { key: '8d13314a23cc3b290d5a2ac8a2ef1b68f55b9574', class: "co-rich-text-editor__toolbar", part: "toolbar", variant: this.resolvedToolbar, position: this.toolbarPosition, disabled: this.disabled || this.readonly, locale: this.locale, attachmentsEnabled: this.attachmentsEnabled, attachmentAccept: this.attachmentAccept, onCoAttachmentsSelected: (e) => {
2053
1987
  e.stopPropagation();
2054
1988
  this.coAttachmentsSelected.emit(e.detail);
2055
1989
  }, ref: (el) => (this.toolbarEl = el) }));
2056
- return (h("div", { key: '03be9df0d50d00a3cf889b3404c4f347626aa27c', class: {
1990
+ return (h("div", { key: '65401af712fa511cf2f30761d4b2ff753dc75a6f', class: {
2057
1991
  'co-rich-text-editor': true,
2058
1992
  'co-rich-text-editor--focused': this.hasFocus,
2059
1993
  'co-rich-text-editor--disabled': this.disabled,
@@ -2062,7 +1996,7 @@ const CoRichTextEditor = class {
2062
1996
  [`co-rich-text-editor--${this.status}`]: this.status !== 'default',
2063
1997
  'co-rich-text-editor--flat': this.variant === 'flat',
2064
1998
  'co-rich-text-editor--toolbar-bottom': bottom,
2065
- }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: 'ae732219465a376af19e771e63589c955be37c4b', class: "co-rich-text-editor__labels" }, this.label && h("label", { key: 'd316724c4f4bcbf55adf582b8ad40c6c45fba407', class: "co-rich-text-editor__label", part: "label" }, this.label), this.secondaryLabel && (h("span", { key: '3cca63f6dfa2335dcd7122eb734205d4fd86a90f', class: "co-rich-text-editor__secondary-label" }, this.secondaryLabel)))), h("div", { key: '620bd101dd94684f7b2d533401717eeb7421593c', class: "co-rich-text-editor__frame" }, !bottom && toolbar, h("div", { key: 'a20f163022dd1c6e23dfc222786ddf0fc6f9b3ac', class: "co-rich-text-editor__box" }, h("div", { key: 'd678e095ae36610895cb466c1a15c722b46d4483', class: "co-rte-content", part: "content", role: "textbox", "aria-multiline": "true", "aria-label": this.label, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.status === 'error' ? 'true' : undefined, ref: (el) => (this.contentEl = el) })), h("slot", { key: '62127cb0a34e7f43ceadcb20ef724aba0524fa69', name: "content-end" }), bottom && (h("div", { key: '99d574e7cbb2a115a243288b770cb03f1892ff93', class: "co-rich-text-editor__toolbar-row", part: "toolbar-row" }, toolbar, h("slot", { key: 'b9b971930ddda8d118c8b6d204fad8d41d25468e', name: "toolbar-end" })))), h("div", { key: 'caafa3f153192eee6efa7679dafa376dea69b150', class: "co-rich-text-editor__footer" }, this.helperText && (h("div", { key: '8d2ab21ababab2c14c912f8ffd6945001fca62f7', class: `co-rich-text-editor__helper co-rich-text-editor__helper--${this.status}`, part: "helper" }, h("co-icon", { key: 'b60df4c320b9356a87df39179c75360f91e858bf', name: this.helperIcon, size: 14 }), h("span", { key: 'd56108257c9bba2332e434d6240f4f387e2411f6' }, this.helperText))), showCount && (h("span", { key: '7973c2996e24ec991115fe4932915a9aefc1b495', class: "co-rich-text-editor__count", ref: (el) => (this.charCountEl = el) }, this.charCount, this.maxLength != null ? ` / ${this.maxLength}` : '')))));
1999
+ }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: '012dc50c67d9ca53896a8ffc329a32909685994e', class: "co-rich-text-editor__labels" }, this.label && h("label", { key: '23b54b1f9556bc1e6ad1a3b3dd0ed9e26a5e7500', class: "co-rich-text-editor__label", part: "label" }, this.label), this.secondaryLabel && (h("span", { key: '534941598c650f1262f046c16a3f30817b0c2d88', class: "co-rich-text-editor__secondary-label" }, this.secondaryLabel)))), h("div", { key: 'f14dbd62014625638da4b209d6f083d3ca16e184', class: "co-rich-text-editor__frame" }, !bottom && toolbar, h("div", { key: '98d5e7aa68b73a51da6a74512ac8a08e6dbb9df0', class: "co-rich-text-editor__box" }, h("div", { key: '16b7aaa9773290a58122595ad188ab6f9db3354b', class: "co-rte-content", part: "content", role: "textbox", "aria-multiline": "true", "aria-label": this.label, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.status === 'error' ? 'true' : undefined, ref: (el) => (this.contentEl = el) })), h("slot", { key: '0f90fc0c30ee03ec2023f229348debab6e734ade', name: "content-end" }), bottom && (h("div", { key: '68d646dbe5d37c7ebebe105b8ada3584684340e1', class: "co-rich-text-editor__toolbar-row", part: "toolbar-row" }, toolbar, h("slot", { key: '48ec89359f8a6957bf0451384602cabd37a99019', name: "toolbar-end" })))), h("div", { key: '932083b9360e7abbede76a10a3a7eeec1dc88a84', class: "co-rich-text-editor__footer" }, this.helperText && (h("div", { key: '6be15e0e151e9548e2d5a964f864992687113393', class: `co-rich-text-editor__helper co-rich-text-editor__helper--${this.status}`, part: "helper" }, h("co-icon", { key: '456f73c7afec3eb8bd88dc13c2b6942021d31b78', name: this.helperIcon, size: 14 }), h("span", { key: '666d8db7d19a1559f392b2cfea76c393080c2d98' }, this.helperText))), showCount && (h("span", { key: '2d561825e0bc7790407750de52242c87b1515e8c', class: "co-rich-text-editor__count", ref: (el) => (this.charCountEl = el) }, this.charCount, this.maxLength != null ? ` / ${this.maxLength}` : '')))));
2066
2000
  }
2067
2001
  get el() { return getElement(this); }
2068
2002
  static get watchers() { return {
@@ -1,8 +1,8 @@
1
- import { r as registerInstance, c as createEvent, h, a as getElement } from './index-DH5lfRNj.js';
2
- import { g as getRichTextStrings } from './richTextI18n-BYKAgwq3.js';
3
- import { C as COLOR_PALETTE, T as TABLE_CONTEXT_ITEMS, t as toolbarItems } from './toolbar-config-BAYo-RBt.js';
1
+ import { r as registerInstance, c as createEvent, h, a as getElement } from './index-DJkaRtbb.js';
2
+ import { g as getRichTextStrings } from './richTextI18n-xnrKkNWQ.js';
3
+ import { C as COLOR_PALETTE, T as TABLE_CONTEXT_ITEMS, t as toolbarItems } from './toolbar-config-CRxTFT_z.js';
4
4
 
5
- const coRichTextToolbarCss = () => `:host{display:block;font-family:var(--co-font-family-primary);z-index:10;flex-shrink:0;background:var(--co-semantic-surface-secondary, #fff);overflow:visible}.co-rich-text-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--co-spacing-xxs, 2px);padding:var(--co-spacing-xs) var(--co-spacing-sm);border-bottom:1px solid var(--co-semantic-border-subtle);background:var(--co-semantic-surface-secondary);border-top-left-radius:inherit;border-top-right-radius:inherit}.co-rich-text-toolbar__btn-wrap,.co-rich-text-toolbar__split-wrap{overflow:visible}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);padding:4px 8px;background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff);font-size:11px;font-weight:500;line-height:1.3;white-space:nowrap;border-radius:4px;pointer-events:none;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);z-index:9999}[data-tooltip]:hover::after{opacity:1;transition-delay:0.4s}[data-tooltip]:active::after,[data-tooltip][aria-expanded="true"]::after{opacity:0 !important;transition-delay:0s}.co-rich-text-toolbar__btn-wrap{position:relative;display:inline-flex}.co-rich-text-toolbar__btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:var(--co-border-radius-xxs);background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-rich-text-toolbar__btn:hover:not(:disabled):not(.co-rich-text-toolbar__btn--active){background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.08));color:var(--co-semantic-text-default, #1a1a1a)}.co-rich-text-toolbar__btn--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__btn--active:hover{background:var(--co-color-base-negro, #333);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__btn:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__btn:focus-visible{outline:2px solid var(--co-semantic-border-focus, var(--co-color-base-negro, #1a1a1a));outline-offset:1px}.co-rich-text-toolbar__select-btn{display:inline-flex;align-items:center;gap:2px;height:30px;padding:0 6px;border:1px solid transparent;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;white-space:nowrap;transition:background var(--co-motion-duration-fast), border-color var(--co-motion-duration-fast)}.co-rich-text-toolbar__select-btn:hover:not(:disabled){background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));border-color:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__select-btn--open{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));border-color:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__select-btn:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__select-label{max-width:100px;overflow:hidden;text-overflow:ellipsis}.co-rich-text-toolbar__sep{display:inline-block;width:1px;height:20px;margin:0 var(--co-spacing-xs, 4px);background:var(--co-semantic-border-subtle, rgba(0, 0, 0, 0.12))}.co-rich-text-toolbar__popover{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;gap:var(--co-spacing-xs, 4px);min-width:280px;padding:var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__popover-input{width:100%;padding:6px 10px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:var(--co-border-radius-xxs, 4px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);outline:none;box-sizing:border-box}.co-rich-text-toolbar__popover-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}.co-rich-text-toolbar__popover-actions{display:flex;gap:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__popover-btn{padding:4px 12px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:var(--co-border-radius-xxs, 4px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__popover-btn:hover:not(.co-rich-text-toolbar__popover-btn--primary){background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__popover-btn--primary{background:var(--co-color-base-negro, #1a1a1a);color:#fff;border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__popover-btn--primary:hover{background:var(--co-color-base-negro, #333);color:#fff}.co-rich-text-toolbar__popover-btn--danger{color:var(--co-color-status-error, #aa2e1b);border-color:var(--co-color-status-error, #aa2e1b)}.co-rich-text-toolbar__popover-option{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);width:100%;padding:8px 10px;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);cursor:pointer;text-align:left;transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__popover-option:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__dropdown{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;min-width:180px;max-height:360px;overflow-y:auto;padding:var(--co-spacing-xs, 4px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__dropdown-item{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);padding:6px 10px;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);cursor:pointer;text-align:left;transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__dropdown-item:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__dropdown-sep{height:1px;margin:4px 0;background:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__dropdown-sep-label{padding:6px 10px 2px;font-family:var(--co-font-family-primary);font-size:11px;font-weight:600;color:var(--co-semantic-text-muted, #999);letter-spacing:0.03em;border-top:1px solid var(--co-semantic-border-default, #e0e0e0);margin-top:2px}.co-rich-text-toolbar__dropdown-input-wrap{padding:6px 8px;border-bottom:1px solid var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__dropdown-input{width:100%;padding:4px 8px;border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:4px;font-size:13px;font-family:var(--co-font-family-primary);outline:none;box-sizing:border-box}.co-rich-text-toolbar__dropdown-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}.co-rich-text-toolbar__color-picker{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;gap:var(--co-spacing-xs, 4px);padding:var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__color-grid{display:grid;grid-template-columns:repeat(10, 1fr);gap:2px}.co-rich-text-toolbar__color-swatch{width:22px;height:22px;padding:0;border:none;border-radius:3px;cursor:pointer;transition:transform var(--co-motion-duration-fast), box-shadow var(--co-motion-duration-fast)}.co-rich-text-toolbar__color-swatch:hover{transform:scale(1.2);box-shadow:0 0 0 2px var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__color-clear{display:flex;align-items:center;gap:var(--co-spacing-xs, 4px);padding:4px 8px;border:none;background:transparent;color:var(--co-semantic-text-secondary, #666);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;border-radius:var(--co-border-radius-xxs, 4px);margin-top:var(--co-spacing-xxs, 2px)}.co-rich-text-toolbar__color-clear:hover{background:var(--co-semantic-surface-hover, #f5f5f5);color:var(--co-semantic-text-default, #333)}.co-rich-text-toolbar__table-picker{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;width:280px;padding:var(--co-spacing-lg, 16px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 8px 24px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__table-header{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-title{flex:1;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);font-weight:600;letter-spacing:0.06em;color:var(--co-semantic-text-secondary, #666)}.co-rich-text-toolbar__table-close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-secondary, #666);cursor:pointer}.co-rich-text-toolbar__table-close:hover{background:var(--co-semantic-surface-hover, #f0f0f0)}.co-rich-text-toolbar__table-tabs{display:flex;gap:0;margin-bottom:var(--co-spacing-md, 12px);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xxs, 4px);overflow:hidden}.co-rich-text-toolbar__table-tab{flex:1;padding:var(--co-spacing-sm, 8px) var(--co-spacing-md, 12px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-13, 13px);font-weight:500;border:none;background:transparent;color:var(--co-semantic-text-secondary, #666);cursor:pointer;transition:background var(--co-motion-duration-fast), color var(--co-motion-duration-fast)}.co-rich-text-toolbar__table-tab:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__table-tab--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__grid-container{display:flex;flex-direction:column;gap:var(--co-spacing-sm, 8px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__grid{display:grid;gap:3px}.co-rich-text-toolbar__grid-cell{width:24px;height:24px;border:1px solid var(--co-semantic-border-default, #d0d0d0);border-radius:3px;background:transparent;cursor:pointer;transition:background var(--co-motion-duration-instant), border-color var(--co-motion-duration-instant)}.co-rich-text-toolbar__grid-cell:hover,.co-rich-text-toolbar__grid-cell--active{background:var(--co-color-base-negro, #1a1a1a);border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__grid-footer{display:flex;align-items:center;justify-content:space-between}.co-rich-text-toolbar__grid-label{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);color:var(--co-semantic-text-muted, #999)}.co-rich-text-toolbar__grid-reset{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);color:var(--co-semantic-text-default, #333);text-decoration:underline;border:none;background:transparent;cursor:pointer;padding:0}.co-rich-text-toolbar__table-manual{display:flex;flex-direction:column;gap:var(--co-spacing-md, 12px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-field{display:flex;align-items:center;gap:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-field label{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);color:var(--co-semantic-text-default, #333);min-width:70px}.co-rich-text-toolbar__table-field input{flex:1;padding:var(--co-spacing-sm, 8px) var(--co-spacing-md, 12px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xxs, 4px);background:var(--co-semantic-surface-secondary, #fff);outline:none}.co-rich-text-toolbar__table-field input:focus{border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__table-check{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);color:var(--co-semantic-text-default, #333);cursor:pointer;margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-check input{width:18px;height:18px;cursor:pointer;accent-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__table-actions{display:flex;gap:var(--co-spacing-sm, 8px);justify-content:flex-end}.co-rich-text-toolbar__table-btn{padding:var(--co-spacing-sm, 8px) var(--co-spacing-lg, 16px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-13, 13px);font-weight:500;border:none;border-radius:var(--co-border-radius-xxs, 4px);cursor:pointer;transition:opacity var(--co-motion-duration-fast)}.co-rich-text-toolbar__table-btn--primary{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__table-btn--primary:hover{opacity:0.85}.co-rich-text-toolbar__table-btn--secondary{background:transparent;color:var(--co-semantic-text-default, #333)}.co-rich-text-toolbar__table-btn--secondary:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__split-wrap{position:relative;display:inline-flex;align-items:center}.co-rich-text-toolbar__split-main{border-top-right-radius:0;border-bottom-right-radius:0;width:28px}.co-rich-text-toolbar__split-caret{display:inline-flex;align-items:center;justify-content:center;width:16px;height:30px;padding:0;border:none;border-radius:var(--co-border-radius-xxs);border-top-left-radius:0;border-bottom-left-radius:0;background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-rich-text-toolbar__split-caret:hover:not(:disabled),.co-rich-text-toolbar__split-caret--open{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.08))}.co-rich-text-toolbar__split-caret:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__listpicker{position:absolute;top:100%;left:0;z-index:100;display:grid;grid-template-columns:repeat(3, 1fr);gap:14px;padding:16px;background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 8px 24px rgba(0, 0, 0, 0.14);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__listpicker-item{display:flex;align-items:center;justify-content:flex-start;width:76px;height:60px;padding:0;border:1px solid var(--co-semantic-border-default, #e3e3e3);border-radius:8px;background:var(--co-semantic-surface-secondary, #fff);cursor:pointer;transition:border-color var(--co-motion-duration-fast), box-shadow var(--co-motion-duration-fast), background var(--co-motion-duration-fast)}.co-rich-text-toolbar__listpicker-item:hover{border-color:var(--co-color-base-negro, #1a1a1a);background:var(--co-semantic-surface-hover, #fafafa)}.co-rich-text-toolbar__listpicker-item--active{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 1.5px var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__listpicker-preview{margin:0;padding:0 0 0 22px;list-style-position:outside;pointer-events:none}.co-rich-text-toolbar__listpicker-preview li{height:3px;width:30px;margin:7px 0;background:var(--co-semantic-border-default, #cfcfcf);border-radius:2px}.co-rich-text-toolbar__listpicker-preview li::marker{color:var(--co-color-base-negro, #1a1a1a);font-size:11px;font-weight:600}.co-rich-text-toolbar__listpicker--task{grid-template-columns:repeat(2, 1fr)}.co-rich-text-toolbar__listpicker-item--task{width:92px;justify-content:center}.co-rich-text-toolbar__taskpreview{display:flex;flex-direction:column;gap:9px}.co-rich-text-toolbar__taskpreview-row{display:flex;align-items:center;gap:7px}.co-rich-text-toolbar__taskpreview-box{flex:0 0 auto;width:11px;height:11px;border:1.5px solid var(--co-color-base-negro, #1a1a1a);border-radius:3px;box-sizing:border-box}.co-rich-text-toolbar__taskpreview-box--checked{position:relative;background:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__taskpreview-box--checked::after{content:'';position:absolute;left:3px;top:0.5px;width:3px;height:6px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.co-rich-text-toolbar__taskpreview-line{position:relative;width:34px;height:3px;background:var(--co-semantic-border-default, #cfcfcf);border-radius:2px}.co-rich-text-toolbar__taskpreview[data-variant="strike"] .co-rich-text-toolbar__taskpreview-row--checked .co-rich-text-toolbar__taskpreview-line::after{content:'';position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:1.5px;background:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__dropdown-check{display:inline-flex;align-items:center;justify-content:center;width:18px;flex-shrink:0}.co-rich-text-toolbar__dropdown-item--active{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04));font-weight:600}.co-rich-text-toolbar__align-group{display:inline-flex;align-items:center;gap:0}.co-rich-text-toolbar__color-indicator{display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1}.co-rich-text-toolbar__color-letter{font-family:var(--co-font-family-primary);font-size:14px;font-weight:700;color:var(--co-semantic-text-default, #333);line-height:1}.co-rich-text-toolbar__color-bar{width:14px;height:3px;border-radius:1px}.co-rich-text-toolbar__color-hex{display:flex;align-items:center;gap:4px;margin-top:6px}.co-rich-text-toolbar__color-hex-input{width:100%;padding:3px 6px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:3px;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-mono, monospace);font-size:11px;outline:none;box-sizing:border-box}.co-rich-text-toolbar__color-hex-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}:host([position="bottom"]){background:transparent}:host([position="bottom"]) .co-rich-text-toolbar{border-bottom:0;background:transparent;border-radius:0}:host([position="bottom"]) .co-rich-text-toolbar__popover{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__color-picker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__table-picker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__listpicker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}`;
5
+ const coRichTextToolbarCss = () => `:host{display:block;font-family:var(--co-font-family-primary);z-index:10;flex-shrink:0;background:var(--co-semantic-surface-secondary, #fff);overflow:visible}.co-rich-text-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--co-spacing-xxs, 2px);padding:var(--co-spacing-xs) var(--co-spacing-sm);border-bottom:1px solid var(--co-semantic-border-subtle);background:var(--co-semantic-surface-secondary);border-top-left-radius:inherit;border-top-right-radius:inherit}.co-rich-text-toolbar__btn-wrap,.co-rich-text-toolbar__split-wrap{overflow:visible}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);padding:4px 8px;background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff);font-size:11px;font-weight:500;line-height:1.3;white-space:nowrap;border-radius:4px;pointer-events:none;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);z-index:9999}[data-tooltip]:hover::after{opacity:1;transition-delay:0.4s}[data-tooltip]:active::after,[data-tooltip][aria-expanded="true"]::after{opacity:0 !important;transition-delay:0s}.co-rich-text-toolbar__btn-wrap{position:relative;display:inline-flex}.co-rich-text-toolbar__btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:var(--co-border-radius-xxs);background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-rich-text-toolbar__btn:hover:not(:disabled):not(.co-rich-text-toolbar__btn--active){background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.08));color:var(--co-semantic-text-default, #1a1a1a)}.co-rich-text-toolbar__btn--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__btn--active:hover{background:var(--co-color-base-negro, #333);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__btn:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__btn:focus-visible{outline:2px solid var(--co-semantic-border-focus, var(--co-color-base-negro, #1a1a1a));outline-offset:1px}.co-rich-text-toolbar__select-btn{display:inline-flex;align-items:center;gap:2px;height:30px;padding:0 6px;border:1px solid transparent;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;white-space:nowrap;transition:background var(--co-motion-duration-fast), border-color var(--co-motion-duration-fast)}.co-rich-text-toolbar__select-btn:hover:not(:disabled){background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));border-color:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__select-btn--open{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));border-color:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__select-btn:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__select-label{max-width:100px;overflow:hidden;text-overflow:ellipsis}.co-rich-text-toolbar__sep{display:inline-block;width:1px;height:20px;margin:0 var(--co-spacing-xs, 4px);background:var(--co-semantic-border-subtle, rgba(0, 0, 0, 0.12))}.co-rich-text-toolbar__popover{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;gap:var(--co-spacing-xs, 4px);min-width:280px;padding:var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__popover-input{width:100%;padding:6px 10px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:var(--co-border-radius-xxs, 4px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);outline:none;box-sizing:border-box}.co-rich-text-toolbar__popover-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}.co-rich-text-toolbar__popover-actions{display:flex;gap:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__popover-btn{padding:4px 12px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:var(--co-border-radius-xxs, 4px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__popover-btn:hover:not(.co-rich-text-toolbar__popover-btn--primary){background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__popover-btn--primary{background:var(--co-color-base-negro, #1a1a1a);color:#fff;border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__popover-btn--primary:hover{background:var(--co-color-base-negro, #333);color:#fff}.co-rich-text-toolbar__popover-btn--danger{color:var(--co-color-status-error, #aa2e1b);border-color:var(--co-color-status-error, #aa2e1b)}.co-rich-text-toolbar__popover-option{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);width:100%;padding:8px 10px;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);cursor:pointer;text-align:left;transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__popover-option:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__dropdown{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;min-width:180px;max-height:360px;overflow-y:auto;padding:var(--co-spacing-xs, 4px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__dropdown-item{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);padding:6px 10px;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);cursor:pointer;text-align:left;transition:background var(--co-motion-duration-fast)}.co-rich-text-toolbar__dropdown-item:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__dropdown-sep{height:1px;margin:4px 0;background:var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__dropdown-sep-label{padding:6px 10px 2px;font-family:var(--co-font-family-primary);font-size:11px;font-weight:600;color:var(--co-semantic-text-muted, #999);letter-spacing:0.03em;border-top:1px solid var(--co-semantic-border-default, #e0e0e0);margin-top:2px}.co-rich-text-toolbar__dropdown-input-wrap{padding:6px 8px;border-bottom:1px solid var(--co-semantic-border-default, #e0e0e0)}.co-rich-text-toolbar__dropdown-input{width:100%;padding:4px 8px;border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:4px;font-size:13px;font-family:var(--co-font-family-primary);outline:none;box-sizing:border-box}.co-rich-text-toolbar__dropdown-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}.co-rich-text-toolbar__color-picker{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;gap:var(--co-spacing-xs, 4px);padding:var(--co-spacing-sm, 8px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 4px 16px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__color-grid{display:grid;grid-template-columns:repeat(10, 1fr);gap:2px}.co-rich-text-toolbar__color-swatch{width:22px;height:22px;padding:0;border:none;border-radius:3px;cursor:pointer;transition:transform var(--co-motion-duration-fast), box-shadow var(--co-motion-duration-fast)}.co-rich-text-toolbar__color-swatch:hover{transform:scale(1.2);box-shadow:0 0 0 2px var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__color-clear{display:flex;align-items:center;gap:var(--co-spacing-xs, 4px);padding:4px 8px;border:none;background:transparent;color:var(--co-semantic-text-secondary, #666);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);cursor:pointer;border-radius:var(--co-border-radius-xxs, 4px);margin-top:var(--co-spacing-xxs, 2px)}.co-rich-text-toolbar__color-clear:hover{background:var(--co-semantic-surface-hover, #f5f5f5);color:var(--co-semantic-text-default, #333)}.co-rich-text-toolbar__table-picker{position:absolute;top:100%;left:0;z-index:100;display:flex;flex-direction:column;width:280px;padding:var(--co-spacing-lg, 16px);background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 8px 24px rgba(0, 0, 0, 0.12);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__table-header{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-title{flex:1;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);font-weight:600;letter-spacing:0.06em;color:var(--co-semantic-text-secondary, #666)}.co-rich-text-toolbar__table-close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--co-border-radius-xxs, 4px);background:transparent;color:var(--co-semantic-text-secondary, #666);cursor:pointer}.co-rich-text-toolbar__table-close:hover{background:var(--co-semantic-surface-hover, #f0f0f0)}.co-rich-text-toolbar__table-tabs{display:flex;gap:0;margin-bottom:var(--co-spacing-md, 12px);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xxs, 4px);overflow:hidden}.co-rich-text-toolbar__table-tab{flex:1;padding:var(--co-spacing-sm, 8px) var(--co-spacing-md, 12px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-13, 13px);font-weight:500;border:none;background:transparent;color:var(--co-semantic-text-secondary, #666);cursor:pointer;transition:background var(--co-motion-duration-fast), color var(--co-motion-duration-fast)}.co-rich-text-toolbar__table-tab:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__table-tab--active{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__grid-container{display:flex;flex-direction:column;gap:var(--co-spacing-sm, 8px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__grid{display:grid;gap:3px}.co-rich-text-toolbar__grid-cell{width:24px;height:24px;border:1px solid var(--co-semantic-border-default, #d0d0d0);border-radius:3px;background:transparent;cursor:pointer;transition:background var(--co-motion-duration-instant), border-color var(--co-motion-duration-instant)}.co-rich-text-toolbar__grid-cell:hover,.co-rich-text-toolbar__grid-cell--active{background:var(--co-color-base-negro, #1a1a1a);border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__grid-footer{display:flex;align-items:center;justify-content:space-between}.co-rich-text-toolbar__grid-label{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);color:var(--co-semantic-text-muted, #999)}.co-rich-text-toolbar__grid-reset{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12, 12px);color:var(--co-semantic-text-default, #333);text-decoration:underline;border:none;background:transparent;cursor:pointer;padding:0}.co-rich-text-toolbar__table-manual{display:flex;flex-direction:column;gap:var(--co-spacing-md, 12px);margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-field{display:flex;align-items:center;gap:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-field label{font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);color:var(--co-semantic-text-default, #333);min-width:70px}.co-rich-text-toolbar__table-field input{flex:1;padding:var(--co-spacing-sm, 8px) var(--co-spacing-md, 12px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xxs, 4px);background:var(--co-semantic-surface-secondary, #fff);outline:none}.co-rich-text-toolbar__table-field input:focus{border-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__table-check{display:flex;align-items:center;gap:var(--co-spacing-sm, 8px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14, 14px);color:var(--co-semantic-text-default, #333);cursor:pointer;margin-bottom:var(--co-spacing-md, 12px)}.co-rich-text-toolbar__table-check input{width:18px;height:18px;cursor:pointer;accent-color:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__table-actions{display:flex;gap:var(--co-spacing-sm, 8px);justify-content:flex-end}.co-rich-text-toolbar__table-btn{padding:var(--co-spacing-sm, 8px) var(--co-spacing-lg, 16px);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-13, 13px);font-weight:500;border:none;border-radius:var(--co-border-radius-xxs, 4px);cursor:pointer;transition:opacity var(--co-motion-duration-fast)}.co-rich-text-toolbar__table-btn--primary{background:var(--co-color-base-negro, #1a1a1a);color:var(--co-color-base-blanco, #fff)}.co-rich-text-toolbar__table-btn--primary:hover{opacity:0.85}.co-rich-text-toolbar__table-btn--secondary{background:transparent;color:var(--co-semantic-text-default, #333)}.co-rich-text-toolbar__table-btn--secondary:hover{background:var(--co-semantic-surface-hover, #f5f5f5)}.co-rich-text-toolbar__split-wrap{position:relative;display:inline-flex;align-items:center}.co-rich-text-toolbar__split-main{border-top-right-radius:0;border-bottom-right-radius:0;width:28px}.co-rich-text-toolbar__split-caret{display:inline-flex;align-items:center;justify-content:center;width:16px;height:30px;padding:0;border:none;border-radius:var(--co-border-radius-xxs);border-top-left-radius:0;border-bottom-left-radius:0;background:transparent;color:var(--co-semantic-text-default, #333);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-rich-text-toolbar__split-caret:hover:not(:disabled),.co-rich-text-toolbar__split-caret--open{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.08))}.co-rich-text-toolbar__split-caret:disabled{opacity:0.4;cursor:not-allowed}.co-rich-text-toolbar__listpicker{position:absolute;top:100%;left:0;z-index:100;display:grid;grid-template-columns:repeat(3, 1fr);gap:14px;padding:16px;background:var(--co-semantic-surface-secondary, #fff);border:1px solid var(--co-semantic-border-default, #e0e0e0);border-radius:var(--co-border-radius-xs, 8px);box-shadow:0 8px 24px rgba(0, 0, 0, 0.14);margin-top:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__listpicker-item{display:flex;align-items:center;justify-content:flex-start;width:76px;height:60px;padding:0;border:1px solid var(--co-semantic-border-default, #e3e3e3);border-radius:8px;background:var(--co-semantic-surface-secondary, #fff);cursor:pointer;transition:border-color var(--co-motion-duration-fast), box-shadow var(--co-motion-duration-fast), background var(--co-motion-duration-fast)}.co-rich-text-toolbar__listpicker-item:hover{border-color:var(--co-color-base-negro, #1a1a1a);background:var(--co-semantic-surface-hover, #fafafa)}.co-rich-text-toolbar__listpicker-item--active{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 1.5px var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__listpicker-preview{margin:0;padding:0 0 0 22px;list-style-position:outside;pointer-events:none}.co-rich-text-toolbar__listpicker-preview li{height:3px;width:30px;margin:7px 0;background:var(--co-semantic-border-default, #cfcfcf);border-radius:2px}.co-rich-text-toolbar__listpicker-preview li::marker{color:var(--co-color-base-negro, #1a1a1a);font-size:11px;font-weight:600}.co-rich-text-toolbar__listpicker--task{grid-template-columns:repeat(2, 1fr)}.co-rich-text-toolbar__listpicker-item--task{width:92px;justify-content:center}.co-rich-text-toolbar__taskpreview{display:flex;flex-direction:column;gap:9px}.co-rich-text-toolbar__taskpreview-row{display:flex;align-items:center;gap:7px}.co-rich-text-toolbar__taskpreview-box{flex:0 0 auto;width:11px;height:11px;border:1.5px solid var(--co-color-base-negro, #1a1a1a);border-radius:3px;box-sizing:border-box}.co-rich-text-toolbar__taskpreview-box--checked{position:relative;background:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__taskpreview-box--checked::after{content:'';position:absolute;left:3px;top:0.5px;width:3px;height:6px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.co-rich-text-toolbar__taskpreview-line{position:relative;width:34px;height:3px;background:var(--co-semantic-border-default, #cfcfcf);border-radius:2px}.co-rich-text-toolbar__taskpreview[data-variant="strike"] .co-rich-text-toolbar__taskpreview-row--checked .co-rich-text-toolbar__taskpreview-line::after{content:'';position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:1.5px;background:var(--co-color-base-negro, #1a1a1a)}.co-rich-text-toolbar__dropdown-check{display:inline-flex;align-items:center;justify-content:center;width:18px;flex-shrink:0}.co-rich-text-toolbar__dropdown-item--active{background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04));font-weight:600}.co-rich-text-toolbar__align-group{display:inline-flex;align-items:center;gap:0}.co-rich-text-toolbar__color-indicator{display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1}.co-rich-text-toolbar__color-letter{font-family:var(--co-font-family-primary);font-size:14px;font-weight:700;color:var(--co-semantic-text-default, #333);line-height:1}.co-rich-text-toolbar__color-bar{width:14px;height:3px;border-radius:1px}.co-rich-text-toolbar__color-hex{display:flex;align-items:center;gap:4px;margin-top:6px}.co-rich-text-toolbar__color-hex-input{width:100%;padding:3px 6px;border:1px solid var(--co-semantic-border-default, #ccc);border-radius:3px;background:var(--co-semantic-surface-secondary, #fff);color:var(--co-semantic-text-default, #333);font-family:var(--co-font-family-mono, monospace);font-size:11px;outline:none;box-sizing:border-box}.co-rich-text-toolbar__color-hex-input:focus{border-color:var(--co-color-base-negro, #1a1a1a);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1)}:host([position="bottom"]){background:transparent}:host([position="bottom"]) .co-rich-text-toolbar{border-bottom:0;background:transparent;border-radius:0}:host([position="bottom"]) .co-rich-text-toolbar__popover{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__color-picker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__table-picker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}:host([position="bottom"]) .co-rich-text-toolbar__listpicker{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--co-spacing-xs, 4px)}.co-rich-text-toolbar__btn--extra{width:auto;gap:var(--co-spacing-xs);padding-inline:var(--co-spacing-sm2)}.co-rich-text-toolbar__extra-label{font-size:var(--co-font-size-13);white-space:nowrap}`;
6
6
 
7
7
  const CoRichTextToolbar = class {
8
8
  constructor(hostRef) {
@@ -21,6 +21,8 @@ const CoRichTextToolbar = class {
21
21
  /** Shows the attachment button (compact-assets variant). The editor never
22
22
  * owns the attachment list — it only emits the picked files. */
23
23
  this.attachmentsEnabled = false;
24
+ /** Muestra «Encabezado» (variante document). co-document-editor lo apaga mientras se edita la banda. */
25
+ this.documentHeaderEnabled = false;
24
26
  this.items = [];
25
27
  /** Bumped on every editor transaction to refresh active state. */
26
28
  this.tick = 0;
@@ -174,10 +176,18 @@ const CoRichTextToolbar = class {
174
176
  chain.outdent().run();
175
177
  }
176
178
  break;
179
+ case 'signature':
180
+ chain.insertSignatureSlot().run();
181
+ break;
182
+ case 'documentHeader':
183
+ // El editor de documento abre la banda: la barra solo avisa.
184
+ this.coAction.emit({ action: 'documentHeader' });
185
+ return;
177
186
  case 'attachment':
178
187
  this.triggerAttachmentFileUpload();
179
188
  return; // no editor command — the host owns the files
180
189
  case 'link':
190
+ case 'field':
181
191
  case 'image':
182
192
  case 'youtube':
183
193
  case 'iframe':
@@ -224,6 +234,7 @@ const CoRichTextToolbar = class {
224
234
  addRowBefore: s.addRowBefore, deleteRow: s.deleteRow,
225
235
  deleteTable: s.deleteTable, mergeCells: s.mergeCells,
226
236
  splitCell: s.splitCell, toggleHeaderRow: s.headerRow,
237
+ field: s.field, signature: s.signature, documentHeader: s.documentHeader,
227
238
  };
228
239
  return (_a = map[item.action]) !== null && _a !== void 0 ? _a : item.label;
229
240
  }
@@ -242,6 +253,8 @@ const CoRichTextToolbar = class {
242
253
  return s.subtitle;
243
254
  if (level === 3)
244
255
  return s.heading3;
256
+ if (level === 4)
257
+ return s.heading4;
245
258
  }
246
259
  if (opt.action === 'bulletStyle') {
247
260
  const m = { disc: s.disc, circle: s.circle, square: s.square };
@@ -278,6 +291,9 @@ const CoRichTextToolbar = class {
278
291
  document.addEventListener('click', this.handleDocumentClick, true);
279
292
  }
280
293
  componentWillLoad() {
294
+ // H3: el harness de specs no aplica los defaults de clase de @State; en
295
+ // producción es neutro (mismo valor inicial).
296
+ this.tableContextItems = [];
281
297
  this.items = this.resolveItems(this.variant);
282
298
  this.colorPalette = COLOR_PALETTE;
283
299
  this._tableContextItems = TABLE_CONTEXT_ITEMS;
@@ -288,6 +304,23 @@ const CoRichTextToolbar = class {
288
304
  onAttachmentsEnabledChange() {
289
305
  this.items = this.resolveItems(this.variant);
290
306
  }
307
+ onDocumentHeaderEnabledChange() {
308
+ this.items = this.resolveItems(this.variant);
309
+ }
310
+ get parsedExtraItems() {
311
+ const raw = this.extraItems;
312
+ if (!raw)
313
+ return [];
314
+ if (typeof raw !== 'string')
315
+ return raw;
316
+ try {
317
+ const v = JSON.parse(raw);
318
+ return Array.isArray(v) ? v : [];
319
+ }
320
+ catch (_a) {
321
+ return [];
322
+ }
323
+ }
291
324
  onEditorChange(next, prev) {
292
325
  prev === null || prev === void 0 ? void 0 : prev.off('transaction', this.onTransaction);
293
326
  next === null || next === void 0 ? void 0 : next.on('transaction', this.onTransaction);
@@ -318,13 +351,16 @@ const CoRichTextToolbar = class {
318
351
  }
319
352
  };
320
353
  const kept = base.filter((entry) => {
354
+ var _a;
321
355
  if (this.isSeparator(entry))
322
356
  return true;
323
357
  const action = entry.action;
324
358
  // attachment has no editor command — visibility is host opt-in.
325
359
  if (action === 'attachment')
326
360
  return this.attachmentsEnabled;
327
- const cmd = CoRichTextToolbar.ITEM_COMMAND[action];
361
+ if (action === 'documentHeader')
362
+ return this.documentHeaderEnabled;
363
+ const cmd = (_a = CoRichTextToolbar.ITEM_COMMAND[action]) !== null && _a !== void 0 ? _a : (variant === 'document' ? CoRichTextToolbar.DOCUMENT_ITEM_COMMAND[action] : undefined);
328
364
  return cmd ? available(cmd) : true;
329
365
  });
330
366
  // Drop separators that ended up leading, trailing, or doubled-up.
@@ -449,6 +485,9 @@ const CoRichTextToolbar = class {
449
485
  case 'link':
450
486
  chain.setLink({ href: url }).run();
451
487
  break;
488
+ case 'field':
489
+ chain.insertField(url).run();
490
+ break;
452
491
  case 'image':
453
492
  chain.setImage({ src: url }).run();
454
493
  break;
@@ -594,6 +633,7 @@ const CoRichTextToolbar = class {
594
633
  }
595
634
  }
596
635
  getDropdownLabel(item) {
636
+ var _a, _b;
597
637
  if (!this.editor)
598
638
  return null;
599
639
  const s = this.s;
@@ -604,12 +644,15 @@ const CoRichTextToolbar = class {
604
644
  return s.subtitle;
605
645
  if (this.editor.isActive('heading', { level: 3 }))
606
646
  return s.headingAbbr3;
647
+ if (this.editor.isActive('heading', { level: 4 }))
648
+ return s.headingAbbr4;
607
649
  return s.normal;
608
650
  }
609
651
  if (item.action === 'fontSize') {
610
- const attrs = this.editor.getAttributes('textStyle');
611
- const fs = attrs === null || attrs === void 0 ? void 0 : attrs.fontSize;
612
- return fs ? fs.replace('px', '') : '16';
652
+ // Preset print: el tamaño es la marca `printFontSize` (forma de V1); el resto lo guarda en textStyle.
653
+ const printSize = (_a = this.editor.getAttributes('printFontSize')) === null || _a === void 0 ? void 0 : _a.size;
654
+ const fs = printSize !== null && printSize !== void 0 ? printSize : (_b = this.editor.getAttributes('textStyle')) === null || _b === void 0 ? void 0 : _b.fontSize;
655
+ return fs ? String(fs).replace('px', '') : '16';
613
656
  }
614
657
  if (item.action === 'fontFamily') {
615
658
  const attrs = this.editor.getAttributes('textStyle');
@@ -771,16 +814,19 @@ const CoRichTextToolbar = class {
771
814
  const isLink = item.action === 'link';
772
815
  const isIframe = item.action === 'iframe';
773
816
  const hasExisting = (isLink && ((_a = this.editor) === null || _a === void 0 ? void 0 : _a.isActive('link'))) || (isIframe && ((_b = this.editor) === null || _b === void 0 ? void 0 : _b.isActive('iframe')));
774
- const placeholder = item.action === 'iframe'
775
- ? this.s.iframeUrlPlaceholder
776
- : item.action === 'link'
777
- ? 'https://...'
778
- : this.s.youtubeUrlPlaceholder;
817
+ const isField = item.action === 'field';
818
+ const placeholder = isField
819
+ ? this.s.fieldNamePlaceholder
820
+ : item.action === 'iframe'
821
+ ? this.s.iframeUrlPlaceholder
822
+ : item.action === 'link'
823
+ ? 'https://...'
824
+ : this.s.youtubeUrlPlaceholder;
779
825
  return (h("div", { class: "co-rich-text-toolbar__popover", onMouseDown: (e) => {
780
826
  if (e.target.tagName !== 'INPUT')
781
827
  e.preventDefault();
782
828
  e.stopPropagation();
783
- } }, h("input", { type: "url", class: "co-rich-text-toolbar__popover-input", placeholder: placeholder, value: this.popoverInput, onInput: (e) => { this.popoverInput = e.target.value; }, onKeyDown: (e) => {
829
+ } }, h("input", { type: isField ? 'text' : 'url', class: "co-rich-text-toolbar__popover-input", placeholder: placeholder, "aria-label": placeholder, value: this.popoverInput, onInput: (e) => { this.popoverInput = e.target.value; }, onKeyDown: (e) => {
784
830
  if (e.key === 'Enter')
785
831
  this.submitPopover(item.action);
786
832
  if (e.key === 'Escape') {
@@ -1091,12 +1137,9 @@ const CoRichTextToolbar = class {
1091
1137
  render() {
1092
1138
  if (this.variant === 'none' || this.items.length === 0)
1093
1139
  return null;
1094
- return (h("div", { class: "co-rich-text-toolbar", role: "toolbar", "aria-label": "Formatting", part: "toolbar" }, this.items.map((entry) => {
1095
- if (this.isSeparator(entry)) {
1096
- return h("span", { class: "co-rich-text-toolbar__sep" });
1097
- }
1098
- return this.renderButton(entry);
1099
- })));
1140
+ const extras = this.parsedExtraItems;
1141
+ const renderEntry = (entry) => this.isSeparator(entry) ? h("span", { class: "co-rich-text-toolbar__sep" }) : this.renderButton(entry);
1142
+ return (h("div", { class: "co-rich-text-toolbar", role: "toolbar", "aria-label": "Formatting", part: "toolbar" }, this.items.map(renderEntry), this.variant === 'document' && this.tableContextItems.map(renderEntry), extras.length > 0 && h("span", { class: "co-rich-text-toolbar__sep" }), extras.map((x) => (h("button", { type: "button", key: `extra-${x.id}`, class: "co-rich-text-toolbar__btn co-rich-text-toolbar__btn--extra", part: "button", disabled: this.disabled, onMouseDown: (e) => e.preventDefault(), onClick: () => this.coAction.emit({ action: x.id, payload: { extra: true } }) }, x.icon && h("co-icon", { name: x.icon, size: 18 }), h("span", { class: "co-rich-text-toolbar__extra-label" }, x.label))))));
1100
1143
  }
1101
1144
  get el() { return getElement(this); }
1102
1145
  static get watchers() { return {
@@ -1106,6 +1149,9 @@ const CoRichTextToolbar = class {
1106
1149
  "attachmentsEnabled": [{
1107
1150
  "onAttachmentsEnabledChange": 0
1108
1151
  }],
1152
+ "documentHeaderEnabled": [{
1153
+ "onDocumentHeaderEnabledChange": 0
1154
+ }],
1109
1155
  "editor": [{
1110
1156
  "onEditorChange": 0
1111
1157
  }],
@@ -1140,6 +1186,19 @@ CoRichTextToolbar.ITEM_COMMAND = {
1140
1186
  bulletListMenu: 'toggleBulletList',
1141
1187
  orderedListMenu: 'toggleOrderedList',
1142
1188
  };
1189
+ /**
1190
+ * Filtro por schema SOLO de la variante `document` (co-document-editor): el editor
1191
+ * del encabezado (preset print-header) no tiene links, títulos, listas ni firmas.
1192
+ * Las demás variantes resuelven exactamente como antes (spec: el RTE no cambia).
1193
+ */
1194
+ CoRichTextToolbar.DOCUMENT_ITEM_COMMAND = {
1195
+ link: 'setLink',
1196
+ headingStyle: 'toggleHeading',
1197
+ bulletList: 'toggleBulletList',
1198
+ orderedList: 'toggleOrderedList',
1199
+ field: 'insertField',
1200
+ signature: 'insertSignatureSlot',
1201
+ };
1143
1202
  CoRichTextToolbar.style = coRichTextToolbarCss();
1144
1203
 
1145
1204
  export { CoRichTextToolbar as co_rich_text_toolbar };
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h } from './index-DH5lfRNj.js';
1
+ import { r as registerInstance, h } from './index-DJkaRtbb.js';
2
2
  import { p as purify } from './purify.es-B2QLgWrz.js';
3
3
 
4
4
  const coRichTextViewerCss = () => `:host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14);color:var(--co-semantic-text-default);line-height:1.5}.co-rich-text-viewer{padding:var(--co-spacing-md) 0}.co-rich-text-viewer--compact{padding:var(--co-spacing-sm) 0}.co-rich-text-viewer--empty{color:var(--co-semantic-text-muted);font-style:italic}.co-rich-text-viewer p{margin:0 0 var(--co-spacing-sm)}.co-rich-text-viewer p:last-child{margin-bottom:0}.co-rich-text-viewer h1,.co-rich-text-viewer h2,.co-rich-text-viewer h3,.co-rich-text-viewer h4{margin:var(--co-spacing-md) 0 var(--co-spacing-sm);font-weight:600;line-height:1.3}.co-rich-text-viewer h1{font-size:var(--co-font-size-28, 28px)}.co-rich-text-viewer h2{font-size:var(--co-font-size-20, 20px)}.co-rich-text-viewer h3{font-size:var(--co-font-size-16, 16px)}.co-rich-text-viewer ul,.co-rich-text-viewer ol{padding-left:var(--co-spacing-xl);margin:0 0 var(--co-spacing-sm)}.co-rich-text-viewer blockquote{border-left:3px solid var(--co-semantic-border-subtle);padding-left:var(--co-spacing-md);margin:0 0 var(--co-spacing-sm);color:var(--co-semantic-text-secondary)}.co-rich-text-viewer a{color:var(--co-color-primary-azul);text-decoration:underline}.co-rich-text-viewer img{max-width:100%;height:auto;border-radius:var(--co-border-radius-xs);margin:var(--co-spacing-sm) 0}.co-rich-text-viewer img[data-image-layout="wrap-left"]{float:left;max-width:50%;margin:4px 16px 8px 0}.co-rich-text-viewer img[data-image-layout="wrap-right"]{float:right;max-width:50%;margin:4px 0 8px 16px}.co-rich-text-viewer img[data-image-layout="center"]{display:block;margin:12px auto}.co-rich-text-viewer img[data-image-layout="full-width"]{display:block;width:100%;margin:12px 0}@media (max-width: 768px){.co-rich-text-viewer img[data-image-layout="wrap-left"],.co-rich-text-viewer img[data-image-layout="wrap-right"]{float:none;max-width:100%;display:block;margin:12px 0}}.co-rich-text-viewer img[style*="position:absolute"],.co-rich-text-viewer img[style*="position: absolute"]{position:static !important;left:auto !important;top:auto !important;z-index:auto !important}.co-rich-text-viewer iframe{width:100%;max-width:100%;aspect-ratio:16 / 9;height:auto;display:block;border:0;border-radius:var(--co-border-radius-xs);margin:0}.co-rich-text-viewer .co-rte-iframe,.co-rich-text-viewer [data-youtube-video]{display:block;max-width:100%;margin:var(--co-spacing-sm) 0}.co-rich-text-viewer code{font-family:var(--co-font-family-mono);font-size:0.9em;background:var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.06));padding:0.1em 0.3em;border-radius:var(--co-border-radius-xxs)}.co-rich-text-viewer .co-rte-variable,.co-rich-text-viewer [data-variable]{display:inline-block;padding:0.05em 0.4em;border-radius:var(--co-border-radius-xxs);background:var(--co-color-primary-azul);color:var(--co-color-base-blanco, #fff);font-size:0.9em}.co-rich-text-viewer [data-mention-id],.co-rich-text-viewer [data-denotation-char='@'][data-id]{display:inline-block;padding:0.05em 0.4em;border-radius:var(--co-border-radius-xxs);background:var(--co-color-azul-200);color:var(--co-color-azul-800);font-size:0.9em;white-space:nowrap}.co-rich-text-viewer #userMentionsTracker{display:none}.co-rich-text-viewer--site{width:var(--co-rte-content-width, 80%);max-width:100%;margin:0 auto}@media (max-width: 768px){.co-rich-text-viewer--site{width:100%}}`;
@@ -23,6 +23,13 @@ const ALLOWED_TAGS = {
23
23
  email: ['p', 'br', 'strong', 'em', 'a', 'span', 'u', 's', 'code', 'ul', 'ol', 'li', 'blockquote', 'h2', 'h3', 'div', 'img'],
24
24
  document: ['p', 'br', 'strong', 'em', 'a', 'span', 'u', 's', 'code', 'ul', 'ol', 'li', 'blockquote', 'h1', 'h2', 'h3', 'h4', 'hr', 'div', 'mark', 'img', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'iframe'],
25
25
  'block-email': ['p', 'br', 'strong', 'em', 'a', 'span', 'u', 's', 'code', 'ul', 'ol', 'li', 'blockquote', 'h2', 'h3', 'div', 'img'],
26
+ // Espejo de SANITIZE_CONFIGS.print / 'print-header' (rich-text/sanitizer.ts).
27
+ // Solo TAGS: la lista de atributos del viewer (sin class, containerstyle,
28
+ // wrapperstyle ni data-*) no se amplió, así que un HTML de impresión pintado
29
+ // acá pierde campos, firmas y modos de imagen. Nadie lo consume hoy (H14);
30
+ // para pintarlo fiel hay que completar también los atributos.
31
+ print: ['p', 'br', 'strong', 'em', 's', 'code', 'a', 'span', 'mark', 'h1', 'h2', 'h3', 'h4', 'ul', 'ol', 'li', 'blockquote', 'pre', 'hr', 'img', 'div', 'table', 'colgroup', 'col', 'thead', 'tbody', 'tr', 'th', 'td'],
32
+ 'print-header': ['p', 'br', 'strong', 'em', 's', 'code', 'span', 'mark', 'img'],
26
33
  };
27
34
  /** iframes are permitted only with an https: source (blocks javascript:/data:/http:). */
28
35
  const SAFE_IFRAME_SRC_RE = /^https:\/\/[^\s"'<>]+$/i;
@@ -126,7 +133,7 @@ const CoRichTextViewer = class {
126
133
  // JSON mode — lazily import the serializer (pulls Tiptap on demand only).
127
134
  try {
128
135
  const doc = JSON.parse(this.value);
129
- const rt = await import('./index-BBIYyvq-.js').then(function (n) { return n.R; });
136
+ const rt = await import('./index-Cpo8HTwr.js').then(function (n) { return n.R; });
130
137
  this.html = rt.jsonToHtml(doc, this.preset);
131
138
  }
132
139
  catch (_a) {