@heartlandone/vega 2.71.0-RTE-table-preview → 2.72.0-RTE-table-preview

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 (1625) hide show
  1. package/dist/cjs/app-globals-4d077e56.js +433 -0
  2. package/dist/cjs/child-nodes-event-prevent-slimmer-871855df.js +158 -0
  3. package/dist/cjs/code-block-bf3642ef.js +4436 -0
  4. package/dist/cjs/column-operation-1cac8386.js +1325 -0
  5. package/dist/cjs/component-value-history-controller-slimmer.abstract-ebecb74a.js +757 -0
  6. package/dist/cjs/date-required-rule-99cca681.js +92 -0
  7. package/dist/cjs/design-token-ac429fe9.js +402 -0
  8. package/dist/cjs/dom-node-subject-observer-factory-1c8f7880.js +305 -0
  9. package/dist/cjs/dto-renderer-manager-04428a77.js +3930 -0
  10. package/dist/cjs/element-appender-slimmer-1b062054.js +1508 -0
  11. package/dist/cjs/event-emit-slimmer-f7255138.js +267 -0
  12. package/dist/cjs/form-field-controller-slimmer-57525f26.js +1267 -0
  13. package/dist/cjs/image-annotation-action-7fa5d30d.js +312 -0
  14. package/dist/cjs/index-58ea899e.js +4 -4
  15. package/dist/cjs/index-c7fbf32b.js +43 -0
  16. package/dist/cjs/index.cjs.js +17 -19
  17. package/dist/cjs/inject-keyboard-manager-a6101379.js +37 -0
  18. package/dist/cjs/internal-vega-event-manager-0e1ba774.js +487 -0
  19. package/dist/cjs/keyboard-manager-d8adb0ed.js +140 -0
  20. package/dist/cjs/keyboard-manager-slimmer-15e65357.js +39 -0
  21. package/dist/cjs/language-extension-6ad0b5a0.js +210 -0
  22. package/dist/cjs/loader.cjs.js +14 -14
  23. package/dist/cjs/month-view-generator-706c5477.js +102 -0
  24. package/dist/cjs/public-rules-76bcf49c.js +47 -0
  25. package/dist/cjs/range-449bcdd0.js +178 -0
  26. package/dist/cjs/responsive-format-facade-e61c7f7e.js +925 -0
  27. package/dist/cjs/rich-text-editor-required-rule-40216fee.js +64 -0
  28. package/dist/cjs/string-format-strategy.abstract-a8264fca.js +60 -0
  29. package/dist/cjs/string-input-formatter-slimmer-4332d1c7.js +230 -0
  30. package/dist/cjs/string-mask-strategy-4e7d3780.js +172 -0
  31. package/dist/cjs/style-formatter-e2a0ad27.js +34 -0
  32. package/dist/cjs/sub-state-notify-slimmer-9fe1ab65.js +81 -0
  33. package/dist/cjs/sub-state-observer-slimmer-2f6f4d28.js +134 -0
  34. package/dist/cjs/table-extension-1f162c4c.js +4836 -0
  35. package/dist/cjs/time-required-rule-9d39a620.js +141 -0
  36. package/dist/cjs/type-guard-69d2cf01.js +1965 -0
  37. package/dist/cjs/valid-credit-card-number-rule-9f40d1d9.js +173 -0
  38. package/dist/cjs/vega-accordion.cjs.entry.js +12 -13
  39. package/dist/cjs/vega-app-header-button.cjs.entry.js +17 -18
  40. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-box.cjs.entry.js +16 -17
  42. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  43. package/dist/cjs/vega-button-circle.cjs.entry.js +16 -17
  44. package/dist/cjs/vega-button-group_2.cjs.entry.js +60 -10
  45. package/dist/cjs/vega-button-link.cjs.entry.js +5 -5
  46. package/dist/cjs/vega-button.cjs.entry.js +16 -16
  47. package/dist/cjs/vega-calendar_4.cjs.entry.js +87 -909
  48. package/dist/cjs/vega-card.cjs.entry.js +15 -16
  49. package/dist/cjs/vega-carousel.cjs.entry.js +15 -15
  50. package/dist/cjs/vega-checkbox_2.cjs.entry.js +7 -7
  51. package/dist/cjs/vega-chip.cjs.entry.js +17 -18
  52. package/dist/cjs/vega-code-block.cjs.entry.js +13 -13
  53. package/dist/cjs/vega-color-picker.cjs.entry.js +6 -6
  54. package/dist/cjs/vega-combo-box.cjs.entry.js +13 -13
  55. package/dist/cjs/vega-date-picker_2.cjs.entry.js +1758 -1568
  56. package/dist/cjs/vega-dialog_2.cjs.entry.js +14 -15
  57. package/dist/cjs/vega-divider.cjs.entry.js +11 -12
  58. package/dist/cjs/vega-dropdown_5.cjs.entry.js +18 -29
  59. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  60. package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
  61. package/dist/cjs/vega-file-uploader.cjs.entry.js +6 -6
  62. package/dist/cjs/vega-flag-icon.cjs.entry.js +11 -12
  63. package/dist/cjs/vega-flex.cjs.entry.js +16 -17
  64. package/dist/cjs/vega-font.cjs.entry.js +15 -16
  65. package/dist/cjs/vega-form.cjs.entry.js +9 -9
  66. package/dist/cjs/vega-grid.cjs.entry.js +15 -16
  67. package/dist/cjs/vega-icon.cjs.entry.js +15 -16
  68. package/dist/cjs/vega-image-uploader.cjs.entry.js +16 -16
  69. package/dist/cjs/vega-input-credit-card.cjs.entry.js +14 -14
  70. package/dist/cjs/vega-input-numeric.cjs.entry.js +13 -13
  71. package/dist/cjs/vega-input-passcode.cjs.entry.js +12 -12
  72. package/dist/cjs/vega-input-phone-number.cjs.entry.js +14 -14
  73. package/dist/cjs/vega-input-range.cjs.entry.js +7 -7
  74. package/dist/cjs/vega-input-select.cjs.entry.js +14 -14
  75. package/dist/cjs/vega-input.cjs.entry.js +11 -11
  76. package/dist/cjs/vega-internal-event-id-a5ef414b.js +112 -0
  77. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  78. package/dist/cjs/vega-left-nav_5.cjs.entry.js +15 -16
  79. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +10 -10
  80. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  81. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +4 -4
  82. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  83. package/dist/cjs/vega-pagination.cjs.entry.js +13 -13
  84. package/dist/cjs/vega-popover_2.cjs.entry.js +21 -21
  85. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +905 -0
  86. package/dist/cjs/vega-radio_2.cjs.entry.js +10 -10
  87. package/dist/cjs/vega-rich-text-content.cjs.entry.js +9 -8
  88. package/dist/cjs/vega-rich-text-editor_5.cjs.entry.js +20 -20
  89. package/dist/cjs/vega-rich-text-table-selection-widget.cjs.entry.js +8 -3
  90. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  91. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +17 -17
  92. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +8 -8
  93. package/dist/cjs/vega-sidenav_3.cjs.entry.js +13 -13
  94. package/dist/cjs/vega-signature-capture.cjs.entry.js +14 -15
  95. package/dist/cjs/vega-stepper.cjs.entry.js +7 -7
  96. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  97. package/dist/cjs/vega-table_11.cjs.entry.js +13 -13
  98. package/dist/cjs/vega-textarea.cjs.entry.js +7 -7
  99. package/dist/cjs/vega-time-picker_2.cjs.entry.js +39 -40
  100. package/dist/cjs/vega-toggle-switch.cjs.entry.js +6 -6
  101. package/dist/cjs/vega-tooltip_2.cjs.entry.js +15 -15
  102. package/dist/cjs/vega.cjs.js +14 -14
  103. package/dist/collection/collection-manifest.json +7 -5
  104. package/dist/collection/components/vega-button/vega-button.css +4 -0
  105. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.js +7 -0
  106. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +25 -2
  107. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.js +31 -2
  108. package/dist/collection/components/vega-button-group/vega-button-group.js +37 -0
  109. package/dist/collection/components/vega-button-link/vega-button-link.css +4 -0
  110. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +149 -0
  111. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-format-controller.js +3 -1
  112. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-keyboard-controller.js +1 -1
  113. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-value-controller.js +10 -26
  114. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.js +107 -445
  115. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-input-renderer-base.abstract.js +5 -1
  116. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-range-input-renderer.js +24 -17
  117. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-renderer.js +15 -20
  118. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-single-input-renderer.js +6 -17
  119. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/constants.js +14 -0
  120. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/dto/calendar-selection.js +126 -0
  121. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-allow-repick-controller.js +70 -0
  122. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.js +204 -0
  123. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-min-max-date-controller.js +56 -0
  124. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +191 -0
  125. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-state-base.abstract.js +54 -0
  126. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-today-controller.js +37 -0
  127. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +76 -0
  128. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +192 -0
  129. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +168 -0
  130. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +669 -278
  131. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +667 -3
  132. package/dist/collection/components/vega-date-picker/vega-date-picker.css +0 -11
  133. package/dist/collection/components/vega-date-picker/vega-date-picker.js +23 -40
  134. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +3 -15
  135. package/dist/collection/components/vega-input/vega-input.js +1 -1
  136. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -1
  137. package/dist/collection/components/vega-input-select/vega-input-select.js +1 -1
  138. package/dist/collection/components/vega-popover/vega-popover.js +14 -4
  139. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/dto/internal-progress-tracker-step.js +75 -0
  140. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-direction-controller.js +88 -0
  141. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.js +153 -0
  142. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.js +125 -0
  143. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-render-mode-controller.js +40 -0
  144. package/dist/collection/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.js +94 -0
  145. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker-step/slimmers/controllers/vega-progress-tracker-step-state-controller.js +43 -0
  146. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker-step/vega-progress-tracker-step.css +79 -0
  147. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker-step/vega-progress-tracker-step.js +84 -0
  148. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.css +69 -153
  149. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +88 -85
  150. package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-annotation.js +11 -63
  151. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/insert-token-node-strategy.js +5 -1
  152. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +12 -1
  153. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +16 -10
  154. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +1 -1
  155. package/dist/collection/components/vega-rich-text-editor/test/dto/annotation-style.test.js +2 -1
  156. package/dist/collection/components/vega-rich-text-editor/test/dto/annotations.test.js +9 -0
  157. package/dist/collection/components/vega-rich-text-editor/test/dto/blocks/text-block.test.js +1 -1
  158. package/dist/collection/components/vega-rich-text-editor/test/dto/content-state.test.js +15 -15
  159. package/dist/collection/constants/regex.js +1 -0
  160. package/dist/collection/constants/ui.js +3 -0
  161. package/dist/collection/helpers/calendar/calendar-date.js +273 -1
  162. package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +9 -0
  163. package/dist/collection/helpers/calendar/calendar-period/month-period.js +16 -4
  164. package/dist/collection/helpers/calendar/test/calendar-date.test.js +73 -0
  165. package/dist/collection/helpers/calendar/test/calendar-period/day-period.test.js +9 -0
  166. package/dist/collection/helpers/calendar/test/calendar-period/month-period.test.js +41 -0
  167. package/dist/collection/helpers/calendar/test/calendar-period/week-period.test.js +11 -0
  168. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +3 -2
  169. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +3 -1
  170. package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +5 -2
  171. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +2 -1
  172. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +7 -0
  173. package/dist/collection/helpers/ui/element-appender.js +35 -5
  174. package/dist/collection/types/type-guard.js +10 -0
  175. package/dist/collection/utils/date.js +14 -3
  176. package/dist/collection/utils/e2e-utils.js +8 -2
  177. package/dist/collection/utils/test/date.test.js +2 -0
  178. package/dist/esm/app-globals-e7a8d0cc.js +431 -0
  179. package/dist/esm/child-nodes-event-prevent-slimmer-9ae34332.js +156 -0
  180. package/dist/esm/code-block-3d3a9030.js +4378 -0
  181. package/dist/esm/column-operation-4a93bf52.js +1300 -0
  182. package/dist/esm/component-value-history-controller-slimmer.abstract-d84e7bab.js +751 -0
  183. package/dist/esm/date-required-rule-a9980386.js +90 -0
  184. package/dist/esm/design-token-1575f6d9.js +388 -0
  185. package/dist/esm/dom-node-subject-observer-factory-f81f215f.js +248 -0
  186. package/dist/esm/dto-renderer-manager-23784148.js +3910 -0
  187. package/dist/esm/element-appender-slimmer-1a50e184.js +1506 -0
  188. package/dist/esm/event-emit-slimmer-966716fa.js +265 -0
  189. package/dist/esm/form-field-controller-slimmer-0020997d.js +1265 -0
  190. package/dist/esm/image-annotation-action-dba16587.js +306 -0
  191. package/dist/esm/index-090d31ca.js +4 -4
  192. package/dist/esm/index-d72e7fb3.js +40 -0
  193. package/dist/esm/index.js +19 -21
  194. package/dist/esm/inject-keyboard-manager-9241968c.js +35 -0
  195. package/dist/esm/internal-vega-event-manager-4f51b17c.js +483 -0
  196. package/dist/esm/keyboard-manager-89acac79.js +138 -0
  197. package/dist/esm/keyboard-manager-slimmer-e303cb7d.js +37 -0
  198. package/dist/esm/language-extension-710fe56d.js +207 -0
  199. package/dist/esm/loader.js +16 -16
  200. package/dist/esm/month-view-generator-4bec99fd.js +98 -0
  201. package/dist/esm/page-resize-observer-slimmer-8744cb44.js +171 -0
  202. package/dist/esm/public-rules-522ba4b1.js +32 -0
  203. package/dist/esm/range-cdd85d30.js +176 -0
  204. package/dist/esm/responsive-format-facade-405f90d2.js +921 -0
  205. package/dist/esm/rich-text-editor-required-rule-7d2d9615.js +62 -0
  206. package/dist/esm/string-format-strategy.abstract-75540c16.js +58 -0
  207. package/dist/esm/string-input-formatter-slimmer-96ccc8cf.js +228 -0
  208. package/dist/esm/string-mask-strategy-4a18ed1a.js +170 -0
  209. package/dist/esm/style-formatter-52cd20f7.js +32 -0
  210. package/dist/esm/sub-state-notify-slimmer-97953a87.js +79 -0
  211. package/dist/esm/sub-state-observer-slimmer-3f2b954f.js +132 -0
  212. package/dist/esm/table-extension-164b0d6c.js +4816 -0
  213. package/dist/esm/time-required-rule-8ec1faf5.js +138 -0
  214. package/dist/esm/type-guard-b48aec98.js +1894 -0
  215. package/dist/esm/ui-28fd4193.js +38 -0
  216. package/dist/esm/valid-credit-card-number-rule-96eaf9b1.js +171 -0
  217. package/dist/esm/vega-accordion.entry.js +14 -15
  218. package/dist/esm/vega-app-header-button.entry.js +19 -20
  219. package/dist/esm/vega-banner.entry.js +3 -3
  220. package/dist/esm/vega-box.entry.js +18 -19
  221. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  222. package/dist/esm/vega-button-circle.entry.js +18 -19
  223. package/dist/esm/vega-button-group_2.entry.js +60 -10
  224. package/dist/esm/vega-button-link.entry.js +5 -5
  225. package/dist/esm/vega-button.entry.js +18 -18
  226. package/dist/esm/vega-calendar_4.entry.js +46 -868
  227. package/dist/esm/vega-card.entry.js +17 -18
  228. package/dist/esm/vega-carousel.entry.js +17 -17
  229. package/dist/esm/vega-checkbox_2.entry.js +9 -9
  230. package/dist/esm/vega-chip.entry.js +19 -20
  231. package/dist/esm/vega-code-block.entry.js +14 -14
  232. package/dist/esm/vega-color-picker.entry.js +8 -8
  233. package/dist/esm/vega-combo-box.entry.js +15 -15
  234. package/dist/esm/vega-date-picker_2.entry.js +1745 -1555
  235. package/dist/esm/vega-dialog_2.entry.js +16 -17
  236. package/dist/esm/vega-divider.entry.js +13 -14
  237. package/dist/esm/vega-dropdown_5.entry.js +20 -31
  238. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  239. package/dist/esm/vega-field-label.entry.js +3 -3
  240. package/dist/esm/vega-file-uploader.entry.js +8 -8
  241. package/dist/esm/vega-flag-icon.entry.js +13 -14
  242. package/dist/esm/vega-flex.entry.js +18 -19
  243. package/dist/esm/vega-font.entry.js +17 -18
  244. package/dist/esm/vega-form.entry.js +11 -11
  245. package/dist/esm/vega-grid.entry.js +17 -18
  246. package/dist/esm/vega-icon.entry.js +17 -18
  247. package/dist/esm/vega-image-uploader.entry.js +18 -18
  248. package/dist/esm/vega-input-credit-card.entry.js +16 -16
  249. package/dist/esm/vega-input-numeric.entry.js +15 -15
  250. package/dist/esm/vega-input-passcode.entry.js +14 -14
  251. package/dist/esm/vega-input-phone-number.entry.js +16 -16
  252. package/dist/esm/vega-input-range.entry.js +9 -9
  253. package/dist/esm/vega-input-select.entry.js +16 -16
  254. package/dist/esm/vega-input.entry.js +13 -13
  255. package/dist/esm/vega-internal-event-id-54ce7562.js +66 -0
  256. package/dist/esm/vega-item-toggle.entry.js +4 -4
  257. package/dist/esm/vega-left-nav_5.entry.js +17 -18
  258. package/dist/esm/vega-loader-wrapper_2.entry.js +12 -12
  259. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  260. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +4 -4
  261. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  262. package/dist/esm/vega-pagination.entry.js +15 -15
  263. package/dist/esm/vega-popover_2.entry.js +23 -23
  264. package/dist/esm/vega-progress-tracker_2.entry.js +900 -0
  265. package/dist/esm/vega-radio_2.entry.js +12 -12
  266. package/dist/esm/vega-rich-text-content.entry.js +10 -9
  267. package/dist/esm/vega-rich-text-editor_5.entry.js +22 -22
  268. package/dist/esm/vega-rich-text-table-selection-widget.entry.js +9 -4
  269. package/dist/esm/vega-segment-control.entry.js +5 -5
  270. package/dist/esm/vega-selection-chip_2.entry.js +19 -19
  271. package/dist/esm/vega-selection-tile_2.entry.js +10 -10
  272. package/dist/esm/vega-sidenav_3.entry.js +15 -15
  273. package/dist/esm/vega-signature-capture.entry.js +16 -17
  274. package/dist/esm/vega-stepper.entry.js +9 -9
  275. package/dist/esm/vega-tab-group_2.entry.js +6 -6
  276. package/dist/esm/vega-table_11.entry.js +15 -15
  277. package/dist/esm/vega-text.entry.js +2 -2
  278. package/dist/esm/vega-textarea.entry.js +9 -9
  279. package/dist/esm/vega-time-picker_2.entry.js +20 -21
  280. package/dist/esm/vega-toggle-switch.entry.js +8 -8
  281. package/dist/esm/vega-tooltip_2.entry.js +17 -17
  282. package/dist/esm/vega.js +16 -16
  283. package/dist/sri/vega-sri-manifest.json +349 -357
  284. package/dist/types/components/vega-button-group/types.d.ts +2 -1
  285. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.d.ts +1 -0
  286. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.d.ts +11 -0
  287. package/dist/types/components/vega-button-group/vega-button-group-item/vega-button-group-item.d.ts +7 -0
  288. package/dist/types/components/vega-button-group/vega-button-group.d.ts +8 -0
  289. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +60 -0
  290. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-value-controller.d.ts +3 -4
  291. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +29 -124
  292. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-input-renderer-base.abstract.d.ts +1 -0
  293. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-range-input-renderer.d.ts +5 -5
  294. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-renderer.d.ts +2 -3
  295. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-single-input-renderer.d.ts +1 -4
  296. package/dist/types/components/vega-date-picker/types.d.ts +9 -0
  297. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/constants.d.ts +1 -0
  298. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/dto/calendar-selection.d.ts +62 -0
  299. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-allow-repick-controller.d.ts +31 -0
  300. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.d.ts +78 -0
  301. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-min-max-date-controller.d.ts +20 -0
  302. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +75 -0
  303. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-state-base.abstract.d.ts +29 -0
  304. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-today-controller.d.ts +15 -0
  305. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +18 -0
  306. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.d.ts +40 -0
  307. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +32 -0
  308. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +182 -0
  309. package/dist/types/components/vega-date-picker/vega-date-picker.d.ts +6 -14
  310. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +0 -4
  311. package/dist/types/components/vega-input/vega-input.d.ts +1 -1
  312. package/dist/types/components/vega-popover/vega-popover.d.ts +2 -1
  313. package/dist/types/components/vega-progress-tracker/slimmers/controllers/dto/internal-progress-tracker-step.d.ts +55 -0
  314. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-direction-controller.d.ts +27 -0
  315. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.d.ts +63 -0
  316. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.d.ts +39 -0
  317. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-render-mode-controller.d.ts +21 -0
  318. package/dist/types/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.d.ts +21 -0
  319. package/dist/types/components/vega-progress-tracker/type.d.ts +1 -0
  320. package/dist/types/components/vega-progress-tracker/vega-progress-tracker-step/slimmers/controllers/vega-progress-tracker-step-state-controller.d.ts +12 -0
  321. package/dist/types/components/vega-progress-tracker/vega-progress-tracker-step/vega-progress-tracker-step.d.ts +22 -0
  322. package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +24 -10
  323. package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-annotation.d.ts +7 -0
  324. package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +7 -0
  325. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -1
  326. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +7 -0
  327. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +2 -2
  328. package/dist/types/components/vega-rich-text-editor/interface.d.ts +6 -1
  329. package/dist/types/components.d.ts +224 -8
  330. package/dist/types/constants/regex.d.ts +1 -0
  331. package/dist/types/constants/ui.d.ts +1 -1
  332. package/dist/types/helpers/calendar/calendar-date.d.ts +86 -2
  333. package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +7 -0
  334. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +3 -1
  335. package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +5 -2
  336. package/dist/types/helpers/ui/element-appender.d.ts +14 -0
  337. package/dist/types/types/components.type.d.ts +4 -0
  338. package/dist/types/types/type-guard.d.ts +8 -0
  339. package/dist/types/utils/date.d.ts +11 -2
  340. package/dist/types/utils/e2e-utils.d.ts +7 -0
  341. package/dist/vega/index.esm.js +1 -1
  342. package/dist/vega/p-09561e90.entry.js +1 -0
  343. package/dist/vega/p-095c778c.entry.js +1 -0
  344. package/dist/vega/p-0bca50ab.entry.js +1 -0
  345. package/dist/vega/p-10ac8b57.js +1 -0
  346. package/dist/vega/p-11a7daad.entry.js +1 -0
  347. package/dist/vega/p-1282b67e.js +1 -0
  348. package/dist/vega/p-137e5c70.entry.js +1 -0
  349. package/dist/vega/p-161b9c5b.js +1 -0
  350. package/dist/vega/p-174db33b.js +1 -0
  351. package/dist/vega/p-1815e753.entry.js +1 -0
  352. package/dist/vega/p-18bcfd7a.js +1 -0
  353. package/dist/vega/p-194722fe.entry.js +1 -0
  354. package/dist/vega/p-1be7c6c4.js +1 -0
  355. package/dist/vega/p-1c33d25e.entry.js +1 -0
  356. package/dist/vega/p-1dd07d64.entry.js +1 -0
  357. package/dist/vega/p-1e0d8228.entry.js +1 -0
  358. package/dist/vega/p-207cfa6a.js +1 -0
  359. package/dist/vega/p-218e29c2.js +1 -0
  360. package/dist/vega/p-2249b040.entry.js +1 -0
  361. package/dist/vega/p-23183d4d.js +1 -0
  362. package/dist/vega/p-238ec2b9.entry.js +1 -0
  363. package/dist/vega/p-2428457e.entry.js +1 -0
  364. package/dist/vega/p-263ad7b6.js +1 -0
  365. package/dist/vega/p-2688bc6f.entry.js +1 -0
  366. package/dist/vega/p-26a43b4c.js +1 -0
  367. package/dist/vega/p-285815b5.entry.js +1 -0
  368. package/dist/vega/p-2c07b213.entry.js +1 -0
  369. package/dist/vega/p-31a65402.entry.js +1 -0
  370. package/dist/vega/p-34a1a0c5.entry.js +1 -0
  371. package/dist/vega/p-3d85411d.js +1 -0
  372. package/dist/vega/p-3f561dd5.entry.js +1 -0
  373. package/dist/vega/p-40f39194.js +1 -0
  374. package/dist/vega/p-475f7bda.js +1 -0
  375. package/dist/vega/p-4785203e.entry.js +1 -0
  376. package/dist/vega/p-5051f0c1.entry.js +1 -0
  377. package/dist/vega/p-529daab4.entry.js +1 -0
  378. package/dist/vega/p-53c6ce54.entry.js +1 -0
  379. package/dist/vega/p-5504ebdf.js +1 -0
  380. package/dist/vega/p-5585d2b5.js +1 -0
  381. package/dist/vega/p-56ce0c4b.entry.js +1 -0
  382. package/dist/vega/p-58f5da43.js +1 -0
  383. package/dist/vega/p-596895ec.js +1 -0
  384. package/dist/vega/p-5b472921.js +1 -0
  385. package/dist/vega/p-5d7e908a.entry.js +1 -0
  386. package/dist/vega/p-5f377954.js +1 -1
  387. package/dist/vega/p-5fb6a3b5.js +1 -0
  388. package/dist/vega/p-63c84ff6.entry.js +1 -0
  389. package/dist/vega/p-6961fac0.entry.js +1 -0
  390. package/dist/vega/p-699e46d1.entry.js +1 -0
  391. package/dist/vega/p-6aa7ace9.js +1 -0
  392. package/dist/vega/p-6b631ff1.entry.js +1 -0
  393. package/dist/vega/p-6c1ef2ed.js +1 -0
  394. package/dist/vega/p-6ee3b103.js +1 -0
  395. package/dist/vega/p-71f2235e.js +1 -0
  396. package/dist/vega/p-776b2f3d.entry.js +1 -0
  397. package/dist/vega/p-7ac32e71.js +1 -0
  398. package/dist/vega/p-7e6c5eb8.entry.js +1 -0
  399. package/dist/vega/p-7eaa8ac0.entry.js +1 -0
  400. package/dist/vega/p-8014cb45.entry.js +1 -0
  401. package/dist/vega/p-877b36ae.entry.js +1 -0
  402. package/dist/vega/p-883c5174.entry.js +1 -0
  403. package/dist/vega/p-8b969a71.entry.js +1 -0
  404. package/dist/vega/p-8f6d42b0.entry.js +1 -0
  405. package/dist/vega/p-8feb1298.entry.js +1 -0
  406. package/dist/vega/p-95188267.entry.js +1 -0
  407. package/dist/vega/p-96aa0f3b.js +1 -0
  408. package/dist/vega/p-9a83a6b0.js +1 -0
  409. package/dist/vega/p-9e2cf904.entry.js +1 -0
  410. package/dist/vega/p-9e545fde.entry.js +1 -0
  411. package/dist/vega/p-9f4364ec.entry.js +1 -0
  412. package/dist/vega/p-a33dc7eb.entry.js +1 -0
  413. package/dist/vega/p-a3a80712.js +1 -0
  414. package/dist/vega/p-a4ec6575.js +1 -0
  415. package/dist/vega/p-a8dad05d.js +1 -0
  416. package/dist/vega/p-b47df664.js +1 -0
  417. package/dist/vega/p-b737b93a.entry.js +1 -0
  418. package/dist/vega/p-baa44cf5.entry.js +1 -0
  419. package/dist/vega/p-badc14cc.entry.js +1 -0
  420. package/dist/vega/p-bc2451f7.entry.js +1 -0
  421. package/dist/vega/p-bdb5362c.entry.js +1 -0
  422. package/dist/vega/p-be33db7b.js +1 -0
  423. package/dist/vega/p-bfe01850.js +1 -0
  424. package/dist/vega/p-c141b10e.entry.js +1 -0
  425. package/dist/vega/p-c465b6dd.entry.js +1 -0
  426. package/dist/vega/p-d1d0f08a.js +1 -0
  427. package/dist/vega/p-d6032515.entry.js +1 -0
  428. package/dist/vega/p-d69a6454.entry.js +1 -0
  429. package/dist/vega/p-d6cc786a.entry.js +1 -0
  430. package/dist/vega/p-d85d7862.entry.js +1 -0
  431. package/dist/vega/p-d991fb11.js +1 -0
  432. package/dist/vega/p-da77d71f.entry.js +1 -0
  433. package/dist/vega/p-de70aac1.js +1 -0
  434. package/dist/vega/p-e47ae7bc.entry.js +1 -0
  435. package/dist/vega/p-e8495b6c.entry.js +1 -0
  436. package/dist/vega/p-e8654ab5.entry.js +1 -0
  437. package/dist/vega/p-e94701e2.entry.js +1 -0
  438. package/dist/vega/p-e9e1293a.entry.js +1 -0
  439. package/dist/vega/p-ef48178e.entry.js +1 -0
  440. package/dist/vega/p-f729743c.entry.js +9 -0
  441. package/dist/vega/p-fb6b3b98.js +1 -0
  442. package/dist/vega/p-fca7c998.entry.js +1 -0
  443. package/dist/vega/vega.esm.js +1 -1
  444. package/package.json +2 -3
  445. package/style/vega-icons.css +17266 -0
  446. package/dist/cjs/app-globals-246e5160.js +0 -432
  447. package/dist/cjs/child-nodes-event-prevent-slimmer-f8840f1b.js +0 -158
  448. package/dist/cjs/code-block-36fb0e69.js +0 -4488
  449. package/dist/cjs/column-operation-aa0673f6.js +0 -1325
  450. package/dist/cjs/component-value-history-controller-slimmer.abstract-eec38ad7.js +0 -757
  451. package/dist/cjs/date-0a6bb035.js +0 -95
  452. package/dist/cjs/date-required-rule-4e1f84fd.js +0 -92
  453. package/dist/cjs/design-token-6f95b09f.js +0 -403
  454. package/dist/cjs/dom-node-subject-observer-factory-f040608b.js +0 -301
  455. package/dist/cjs/dto-renderer-manager-fbc93cb5.js +0 -3930
  456. package/dist/cjs/element-appender-slimmer-ec537994.js +0 -1470
  457. package/dist/cjs/event-emit-slimmer-7afe8d78.js +0 -267
  458. package/dist/cjs/form-field-controller-slimmer-f865d397.js +0 -1267
  459. package/dist/cjs/image-annotation-action-ae1310ef.js +0 -312
  460. package/dist/cjs/index-4b896e76.js +0 -43
  461. package/dist/cjs/inject-keyboard-manager-13c66257.js +0 -37
  462. package/dist/cjs/internal-vega-event-manager-45d451de.js +0 -486
  463. package/dist/cjs/keyboard-manager-af0d08a6.js +0 -140
  464. package/dist/cjs/keyboard-manager-slimmer-62f072cd.js +0 -39
  465. package/dist/cjs/language-extension-2df8cfd3.js +0 -210
  466. package/dist/cjs/mobilefriendly-aa2e50e9.js +0 -13
  467. package/dist/cjs/public-rules-6432194e.js +0 -47
  468. package/dist/cjs/range-d24916d7.js +0 -178
  469. package/dist/cjs/responsive-format-facade-0b610205.js +0 -925
  470. package/dist/cjs/rich-text-editor-required-rule-eb34a576.js +0 -64
  471. package/dist/cjs/state-background-color-formatter-aa5570f6.js +0 -85
  472. package/dist/cjs/string-format-strategy.abstract-07a95352.js +0 -60
  473. package/dist/cjs/string-input-formatter-slimmer-8236b5e1.js +0 -230
  474. package/dist/cjs/string-mask-strategy-6bdad95e.js +0 -172
  475. package/dist/cjs/style-formatter-1450a252.js +0 -34
  476. package/dist/cjs/sub-state-notify-slimmer-78682046.js +0 -81
  477. package/dist/cjs/sub-state-observer-slimmer-73aecfff.js +0 -134
  478. package/dist/cjs/table-extension-3b713932.js +0 -4815
  479. package/dist/cjs/time-required-rule-ccf178e7.js +0 -141
  480. package/dist/cjs/type-guard-f12b5bae.js +0 -742
  481. package/dist/cjs/valid-credit-card-number-rule-ce5c9147.js +0 -173
  482. package/dist/cjs/vega-internal-event-id-6d4a2c53.js +0 -110
  483. package/dist/cjs/vega-progress-tracker.cjs.entry.js +0 -252
  484. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-controller.js +0 -282
  485. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.js +0 -35
  486. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-mobile-controller.js +0 -53
  487. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-month-year-change-event-controller.js +0 -139
  488. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-zindex-controller.js +0 -49
  489. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-month-year-dropdown-renderer.js +0 -341
  490. package/dist/esm/app-globals-e3ba8241.js +0 -430
  491. package/dist/esm/child-nodes-event-prevent-slimmer-66a11e63.js +0 -156
  492. package/dist/esm/code-block-f2f0cff5.js +0 -4430
  493. package/dist/esm/column-operation-9805e482.js +0 -1300
  494. package/dist/esm/component-value-history-controller-slimmer.abstract-400e0bd2.js +0 -751
  495. package/dist/esm/date-c55b97f0.js +0 -87
  496. package/dist/esm/date-required-rule-8944f3bf.js +0 -90
  497. package/dist/esm/design-token-6f4086a9.js +0 -389
  498. package/dist/esm/dom-node-subject-observer-factory-4401eb10.js +0 -246
  499. package/dist/esm/dto-renderer-manager-8b93cc6f.js +0 -3910
  500. package/dist/esm/element-appender-slimmer-cc465622.js +0 -1468
  501. package/dist/esm/event-emit-slimmer-7fade5b2.js +0 -265
  502. package/dist/esm/form-field-controller-slimmer-d88dc81a.js +0 -1265
  503. package/dist/esm/image-annotation-action-f62cfec3.js +0 -306
  504. package/dist/esm/index-e7660797.js +0 -40
  505. package/dist/esm/inject-keyboard-manager-ffd351b9.js +0 -35
  506. package/dist/esm/internal-vega-event-manager-c171f709.js +0 -482
  507. package/dist/esm/keyboard-manager-5d8f3582.js +0 -138
  508. package/dist/esm/keyboard-manager-slimmer-f39214e4.js +0 -37
  509. package/dist/esm/language-extension-87abdcf0.js +0 -207
  510. package/dist/esm/mobilefriendly-c5d0573d.js +0 -11
  511. package/dist/esm/page-resize-observer-slimmer-0bf7fbf3.js +0 -171
  512. package/dist/esm/public-rules-b6ad63e6.js +0 -32
  513. package/dist/esm/range-686c5d0c.js +0 -176
  514. package/dist/esm/responsive-format-facade-603dddd7.js +0 -921
  515. package/dist/esm/rich-text-editor-required-rule-4d14da42.js +0 -62
  516. package/dist/esm/state-background-color-formatter-0f01d27a.js +0 -82
  517. package/dist/esm/string-format-strategy.abstract-452f4398.js +0 -58
  518. package/dist/esm/string-input-formatter-slimmer-47305317.js +0 -228
  519. package/dist/esm/string-mask-strategy-6232a1c1.js +0 -170
  520. package/dist/esm/style-formatter-d76a67cb.js +0 -32
  521. package/dist/esm/sub-state-notify-slimmer-0a927f34.js +0 -79
  522. package/dist/esm/sub-state-observer-slimmer-33e0dd73.js +0 -132
  523. package/dist/esm/table-extension-5da1a8db.js +0 -4795
  524. package/dist/esm/time-required-rule-a01163b5.js +0 -138
  525. package/dist/esm/type-guard-12f7654b.js +0 -692
  526. package/dist/esm/ui-8424715a.js +0 -38
  527. package/dist/esm/valid-credit-card-number-rule-81443274.js +0 -171
  528. package/dist/esm/vega-internal-event-id-49fef150.js +0 -65
  529. package/dist/esm/vega-progress-tracker.entry.js +0 -248
  530. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-controller.d.ts +0 -96
  531. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.d.ts +0 -12
  532. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-mobile-controller.d.ts +0 -18
  533. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-month-year-change-event-controller.d.ts +0 -46
  534. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-zindex-controller.d.ts +0 -15
  535. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-month-year-dropdown-renderer.d.ts +0 -97
  536. package/dist/vega/p-0492fb42.entry.js +0 -1
  537. package/dist/vega/p-06840396.entry.js +0 -1
  538. package/dist/vega/p-06bc02cb.entry.js +0 -1
  539. package/dist/vega/p-070c3970.js +0 -1
  540. package/dist/vega/p-07c1a2a2.entry.js +0 -1
  541. package/dist/vega/p-08835909.js +0 -1
  542. package/dist/vega/p-10e142f1.js +0 -1
  543. package/dist/vega/p-12faf818.entry.js +0 -1
  544. package/dist/vega/p-1546855d.entry.js +0 -1
  545. package/dist/vega/p-18711501.js +0 -1
  546. package/dist/vega/p-194e32a2.js +0 -1
  547. package/dist/vega/p-19522949.js +0 -1
  548. package/dist/vega/p-197affbe.entry.js +0 -1
  549. package/dist/vega/p-1a282bfa.entry.js +0 -9
  550. package/dist/vega/p-1e5c2206.entry.js +0 -1
  551. package/dist/vega/p-1fb466db.js +0 -1
  552. package/dist/vega/p-24e66056.entry.js +0 -1
  553. package/dist/vega/p-26bde99c.entry.js +0 -1
  554. package/dist/vega/p-2762e4a7.entry.js +0 -1
  555. package/dist/vega/p-2b079386.entry.js +0 -1
  556. package/dist/vega/p-2c88b9c9.js +0 -1
  557. package/dist/vega/p-2de37a60.entry.js +0 -1
  558. package/dist/vega/p-2f866855.entry.js +0 -1
  559. package/dist/vega/p-3185b22d.entry.js +0 -1
  560. package/dist/vega/p-33cb78bd.entry.js +0 -1
  561. package/dist/vega/p-35609e2d.entry.js +0 -1
  562. package/dist/vega/p-36753b56.entry.js +0 -1
  563. package/dist/vega/p-37fd6859.entry.js +0 -1
  564. package/dist/vega/p-388953e4.entry.js +0 -1
  565. package/dist/vega/p-3925c16b.js +0 -1
  566. package/dist/vega/p-3ae691a0.entry.js +0 -1
  567. package/dist/vega/p-3ce90ecd.entry.js +0 -1
  568. package/dist/vega/p-4115d58a.entry.js +0 -1
  569. package/dist/vega/p-4a895707.js +0 -1
  570. package/dist/vega/p-502b7062.entry.js +0 -1
  571. package/dist/vega/p-532ff2d2.entry.js +0 -13
  572. package/dist/vega/p-5e1e91db.entry.js +0 -1
  573. package/dist/vega/p-5f53c228.entry.js +0 -1
  574. package/dist/vega/p-61519b5c.entry.js +0 -1
  575. package/dist/vega/p-62bf35fd.entry.js +0 -1
  576. package/dist/vega/p-64994265.entry.js +0 -1
  577. package/dist/vega/p-651ac54f.entry.js +0 -1
  578. package/dist/vega/p-67f159c3.js +0 -1
  579. package/dist/vega/p-70c898c6.entry.js +0 -1
  580. package/dist/vega/p-71f9c4d4.js +0 -1
  581. package/dist/vega/p-71fc7286.js +0 -1
  582. package/dist/vega/p-74168615.js +0 -1
  583. package/dist/vega/p-78d6dead.js +0 -1
  584. package/dist/vega/p-7d083222.entry.js +0 -1
  585. package/dist/vega/p-7d397c32.js +0 -1
  586. package/dist/vega/p-7d9cd9c8.js +0 -1
  587. package/dist/vega/p-7edd4b79.js +0 -1
  588. package/dist/vega/p-824a06ba.js +0 -1
  589. package/dist/vega/p-84d34816.js +0 -1
  590. package/dist/vega/p-853abdfd.entry.js +0 -1
  591. package/dist/vega/p-867a4970.js +0 -1
  592. package/dist/vega/p-8da8c2cf.entry.js +0 -1
  593. package/dist/vega/p-8daadaf3.entry.js +0 -1
  594. package/dist/vega/p-8eefbd15.entry.js +0 -1
  595. package/dist/vega/p-8fae8f9e.js +0 -1
  596. package/dist/vega/p-9112f67d.js +0 -1
  597. package/dist/vega/p-924b4e24.js +0 -1
  598. package/dist/vega/p-932c3efc.entry.js +0 -1
  599. package/dist/vega/p-9443c292.js +0 -1
  600. package/dist/vega/p-96c941d5.entry.js +0 -1
  601. package/dist/vega/p-9939e407.entry.js +0 -1
  602. package/dist/vega/p-99c52315.entry.js +0 -1
  603. package/dist/vega/p-99c6df1e.entry.js +0 -1
  604. package/dist/vega/p-9ce249a9.js +0 -1
  605. package/dist/vega/p-9f6632cc.entry.js +0 -1
  606. package/dist/vega/p-a10b9f2e.js +0 -12
  607. package/dist/vega/p-a6010b93.entry.js +0 -1
  608. package/dist/vega/p-a996636d.js +0 -1
  609. package/dist/vega/p-ae0edda4.entry.js +0 -1
  610. package/dist/vega/p-afe7bb0b.entry.js +0 -1
  611. package/dist/vega/p-b06ceb0f.entry.js +0 -1
  612. package/dist/vega/p-b1faebe0.js +0 -1
  613. package/dist/vega/p-b390be9d.entry.js +0 -1
  614. package/dist/vega/p-b555b253.js +0 -1
  615. package/dist/vega/p-baaf9264.js +0 -1
  616. package/dist/vega/p-bbc12975.js +0 -1
  617. package/dist/vega/p-bc749d3f.entry.js +0 -1
  618. package/dist/vega/p-c0b986af.js +0 -1
  619. package/dist/vega/p-c11c0d61.js +0 -1
  620. package/dist/vega/p-c4f6e01c.entry.js +0 -1
  621. package/dist/vega/p-c6ee2d47.entry.js +0 -1
  622. package/dist/vega/p-c8b76028.entry.js +0 -1
  623. package/dist/vega/p-cad733c8.js +0 -1
  624. package/dist/vega/p-d54a1453.entry.js +0 -1
  625. package/dist/vega/p-d94f149a.entry.js +0 -1
  626. package/dist/vega/p-de44727f.entry.js +0 -1
  627. package/dist/vega/p-e2a0f7ae.js +0 -1
  628. package/dist/vega/p-e6879699.entry.js +0 -1
  629. package/dist/vega/p-ec7bc15a.js +0 -1
  630. package/dist/vega/p-f14578ee.entry.js +0 -1
  631. package/dist/vega/p-f2de3d76.entry.js +0 -1
  632. package/dist/vega/p-f2f6f24d.entry.js +0 -1
  633. package/dist/vega/p-f41ef9e2.entry.js +0 -1
  634. package/dist/vega/p-f782a531.js +0 -1
  635. package/dist/vega/p-fc6617cb.entry.js +0 -1
  636. package/dist/vega/p-fc79b3c3.entry.js +0 -1
  637. package/dist/vega/p-ff67a25f.js +0 -1
  638. package/style/vega_min.css +0 -1
  639. package/style/visual-screenshots (1)/builds/master.json +0 -13385
  640. package/style/visual-screenshots (1)/compare.html +0 -26
  641. package/style/visual-screenshots (1)/connector.js +0 -10
  642. package/style/visual-screenshots (1)/images/00c9dbc329ca6b1ad78ea743b91ee0bc.png +0 -0
  643. package/style/visual-screenshots (1)/images/00deb6ff94de798b3fcc6414aedc040c.png +0 -0
  644. package/style/visual-screenshots (1)/images/014c955d050d2ebb917fd03590730572.png +0 -0
  645. package/style/visual-screenshots (1)/images/0182583c546dba469600a0251240cf21.png +0 -0
  646. package/style/visual-screenshots (1)/images/01a0575c0db1270ea83316b5c6c20601.png +0 -0
  647. package/style/visual-screenshots (1)/images/027defd97df9a5b4a7653be56ccdb0ac.png +0 -0
  648. package/style/visual-screenshots (1)/images/02ba6083bbf1c0e01a725f1f9f92aff9.png +0 -0
  649. package/style/visual-screenshots (1)/images/036795373db4daaf365beee11d8c25a7.png +0 -0
  650. package/style/visual-screenshots (1)/images/04a8eee512eeb23c1c2b87cda93a6776.png +0 -0
  651. package/style/visual-screenshots (1)/images/04bb561662f78f189085275de6678f41.png +0 -0
  652. package/style/visual-screenshots (1)/images/04eef932b78ca112212112ce585f27ab.png +0 -0
  653. package/style/visual-screenshots (1)/images/050cba57fa9a35e3803c85fbb59b4024.png +0 -0
  654. package/style/visual-screenshots (1)/images/051edd1219d1ddca517459b788cc9d2b.png +0 -0
  655. package/style/visual-screenshots (1)/images/0528ddc76f74747fa440e96db6907a43.png +0 -0
  656. package/style/visual-screenshots (1)/images/05395d74d64a1da223fb94b2874f2d66.png +0 -0
  657. package/style/visual-screenshots (1)/images/0545ef2f0796fa5f1d878254825adaf4.png +0 -0
  658. package/style/visual-screenshots (1)/images/0582c1933e54f696b632a1e1659073b2.png +0 -0
  659. package/style/visual-screenshots (1)/images/059772f121132ead0d6fa0a48168338b.png +0 -0
  660. package/style/visual-screenshots (1)/images/05feee4ecb06f066f3dafb653f33b6fb.png +0 -0
  661. package/style/visual-screenshots (1)/images/0640963c7a9fddb30a953c2624ba42eb.png +0 -0
  662. package/style/visual-screenshots (1)/images/065795600809ccab42d0f13ba71eb633.png +0 -0
  663. package/style/visual-screenshots (1)/images/0666dfce480647c3cb8857d2bb059847.png +0 -0
  664. package/style/visual-screenshots (1)/images/0700cef6f6f83545e2e7d3ecedc042d4.png +0 -0
  665. package/style/visual-screenshots (1)/images/0723f0263fa389ae876735ff57f46681.png +0 -0
  666. package/style/visual-screenshots (1)/images/073c1445dacdaac8c0aa6480212492f9.png +0 -0
  667. package/style/visual-screenshots (1)/images/073d4f053baf4c24d6af8de20eeae2aa.png +0 -0
  668. package/style/visual-screenshots (1)/images/076e14b0ccac0c02052e66256be50d47.png +0 -0
  669. package/style/visual-screenshots (1)/images/0775b2b66ba608e1677bb4bd032f707e.png +0 -0
  670. package/style/visual-screenshots (1)/images/078f2e93590c93c74f514e02ac05e4a3.png +0 -0
  671. package/style/visual-screenshots (1)/images/080f0f2d3f06372a9302e80f14aeb74e.png +0 -0
  672. package/style/visual-screenshots (1)/images/08872613981eb5e038fd62286300c583.png +0 -0
  673. package/style/visual-screenshots (1)/images/08cfa8c87053192e64e3b0b448d0dfaa.png +0 -0
  674. package/style/visual-screenshots (1)/images/08fc2250530bdc6b684a493406e75dcb.png +0 -0
  675. package/style/visual-screenshots (1)/images/0918181ef6fad9b51bbf411785719c7f.png +0 -0
  676. package/style/visual-screenshots (1)/images/091c16a1900c15eaf442677f7b7712a4.png +0 -0
  677. package/style/visual-screenshots (1)/images/09271a89642f3deb1534537363d82adf.png +0 -0
  678. package/style/visual-screenshots (1)/images/0968ada1c88a12c121d7e4cd9d1a4c31.png +0 -0
  679. package/style/visual-screenshots (1)/images/098cf2d4feb36daa5935d431b4cc2af9.png +0 -0
  680. package/style/visual-screenshots (1)/images/098ee2f12b7cd94ed7e3d9678dca8d9d.png +0 -0
  681. package/style/visual-screenshots (1)/images/09afb7f891103d16ca4e69cced183010.png +0 -0
  682. package/style/visual-screenshots (1)/images/0a8740f45dfa3ef686362af82744d0f8.png +0 -0
  683. package/style/visual-screenshots (1)/images/0aecce7dd5c65d8a1cd2bc3007aa039c.png +0 -0
  684. package/style/visual-screenshots (1)/images/0afce1548cbbf477be056364879ed645.png +0 -0
  685. package/style/visual-screenshots (1)/images/0b0e6917a067495e267dea6d4f1d2c89.png +0 -0
  686. package/style/visual-screenshots (1)/images/0b422eacde0c1264cc993d15ce94f3f2.png +0 -0
  687. package/style/visual-screenshots (1)/images/0b462aed27368fadffaf4042b4bf124f.png +0 -0
  688. package/style/visual-screenshots (1)/images/0bd41559a47131117d6b5d48f9384e2b.png +0 -0
  689. package/style/visual-screenshots (1)/images/0cdf8442f9e597e7782a97d05b9f0167.png +0 -0
  690. package/style/visual-screenshots (1)/images/0ce13d831ed54f898c0ddc60c7a3bfe9.png +0 -0
  691. package/style/visual-screenshots (1)/images/0d7e570e1a0f76d5114975280c8e36dc.png +0 -0
  692. package/style/visual-screenshots (1)/images/0dd901512ef46e6320b55ebb543c7a38.png +0 -0
  693. package/style/visual-screenshots (1)/images/0de77d7c6aedecc1948bf82730e77f9b.png +0 -0
  694. package/style/visual-screenshots (1)/images/0e588e87d0e0617c6fefe1e8203ceaf5.png +0 -0
  695. package/style/visual-screenshots (1)/images/0eb8a80ddc22191daad2b765098af978.png +0 -0
  696. package/style/visual-screenshots (1)/images/0ee82b520727d5a484ae47df46170f6b.png +0 -0
  697. package/style/visual-screenshots (1)/images/0ef7219055c2204179e5a87ce6393ecd.png +0 -0
  698. package/style/visual-screenshots (1)/images/0f20d9909852d49d83662e354d774330.png +0 -0
  699. package/style/visual-screenshots (1)/images/0fe5e32a6e5d62baa9eb9e9ef32b8ac0.png +0 -0
  700. package/style/visual-screenshots (1)/images/101fe127c73e1204c7b0a9532ddf5f33.png +0 -0
  701. package/style/visual-screenshots (1)/images/10dc76469583d7bb071c415b4c2500f5.png +0 -0
  702. package/style/visual-screenshots (1)/images/111ceb449af342ffefc9bf18313e9f2d.png +0 -0
  703. package/style/visual-screenshots (1)/images/116f44589ef708d63b88f72c07020d65.png +0 -0
  704. package/style/visual-screenshots (1)/images/11809d0dd4f56bd7e75c1ee424ea6049.png +0 -0
  705. package/style/visual-screenshots (1)/images/11e8c569dc91a4263915d38d41797b7c.png +0 -0
  706. package/style/visual-screenshots (1)/images/11f644637e7bf9e488c92e597243b372.png +0 -0
  707. package/style/visual-screenshots (1)/images/11f85d78db6278a0b9309de5e1971968.png +0 -0
  708. package/style/visual-screenshots (1)/images/126484246367b441a4874bf1c80eb701.png +0 -0
  709. package/style/visual-screenshots (1)/images/12b7614a6bca5fba19b2c207c9399eec.png +0 -0
  710. package/style/visual-screenshots (1)/images/12f9db657f5f215db4fd81d60e61ac05.png +0 -0
  711. package/style/visual-screenshots (1)/images/12fd30dca14bdb10e138bf9957cb67d6.png +0 -0
  712. package/style/visual-screenshots (1)/images/12ff293bb7a3fb35ba9e71b36d1ede58.png +0 -0
  713. package/style/visual-screenshots (1)/images/132fad75fe05d0c78d642c7d18b36364.png +0 -0
  714. package/style/visual-screenshots (1)/images/133df50a253039a25dc23c11be89ceb7.png +0 -0
  715. package/style/visual-screenshots (1)/images/13b9e970f1e6fc8dde0c10722f66bb73.png +0 -0
  716. package/style/visual-screenshots (1)/images/13d533f8842a49a2a160723a46eb8a32.png +0 -0
  717. package/style/visual-screenshots (1)/images/14391d1ca80560f5e01b72b0a32a2e43.png +0 -0
  718. package/style/visual-screenshots (1)/images/14b81ce49feb5c4033d2b6bf9ce8b584.png +0 -0
  719. package/style/visual-screenshots (1)/images/16548b7507dad1afa018cf73f656e123.png +0 -0
  720. package/style/visual-screenshots (1)/images/16bbd810a35c9542672c143620dd124b.png +0 -0
  721. package/style/visual-screenshots (1)/images/17f1ac08aef0b15a2a93576bd0c69a8b.png +0 -0
  722. package/style/visual-screenshots (1)/images/1823fb8764090e5f139555434673b999.png +0 -0
  723. package/style/visual-screenshots (1)/images/184a290d2680a6b9ed5fd3e875866f6c.png +0 -0
  724. package/style/visual-screenshots (1)/images/1853b22c2e9f57c3c0465f1ad677fd02.png +0 -0
  725. package/style/visual-screenshots (1)/images/1917b4c75462018e96fd444a55f92fdb.png +0 -0
  726. package/style/visual-screenshots (1)/images/19cb20f82a883631ec08e6fce09c9346.png +0 -0
  727. package/style/visual-screenshots (1)/images/19d6ef3f0f09ad264bd4565a890f4de3.png +0 -0
  728. package/style/visual-screenshots (1)/images/19f0f11a1678b49278906815b94aa63b.png +0 -0
  729. package/style/visual-screenshots (1)/images/1a334e822ac119215ecd18f1289048cf.png +0 -0
  730. package/style/visual-screenshots (1)/images/1a396fba8af913178a057a63bc2812ef.png +0 -0
  731. package/style/visual-screenshots (1)/images/1a4712761391165e44e0399e574800c7.png +0 -0
  732. package/style/visual-screenshots (1)/images/1a6407989995cf5d9451432c30bd8af5.png +0 -0
  733. package/style/visual-screenshots (1)/images/1a66f2485b63b12007df9713afc7abbd.png +0 -0
  734. package/style/visual-screenshots (1)/images/1a9961bc790f0e542d0e1df7ec61162c.png +0 -0
  735. package/style/visual-screenshots (1)/images/1aad56b95fdc16ee9739410e31f4b04b.png +0 -0
  736. package/style/visual-screenshots (1)/images/1ab773baf811c86dcc3fd48c486b948e.png +0 -0
  737. package/style/visual-screenshots (1)/images/1acd824e815dd8290f73aa3eac0e9aa7.png +0 -0
  738. package/style/visual-screenshots (1)/images/1b7e059b6e4adb5f3a15dc7737195bef.png +0 -0
  739. package/style/visual-screenshots (1)/images/1b83910bbcff965492bf79d17f7f3952.png +0 -0
  740. package/style/visual-screenshots (1)/images/1b8acd3ed0bb87d0b41963d3c4566324.png +0 -0
  741. package/style/visual-screenshots (1)/images/1bcb2ad6de61cbc5cb2bfbc40dcf3c75.png +0 -0
  742. package/style/visual-screenshots (1)/images/1c01fa461439431ed056e345914504aa.png +0 -0
  743. package/style/visual-screenshots (1)/images/1c1622f4ff1c0169e2efe5af5fab7238.png +0 -0
  744. package/style/visual-screenshots (1)/images/1c2ae0a43c9aea9e17e639f2486ad76c.png +0 -0
  745. package/style/visual-screenshots (1)/images/1c2c279749b3bab613be5efd8411a9fb.png +0 -0
  746. package/style/visual-screenshots (1)/images/1cdb0dbdb6a4398f94988e3d40162f2c.png +0 -0
  747. package/style/visual-screenshots (1)/images/1cfacd6c8ac80ee3c4a7f8584bd1441c.png +0 -0
  748. package/style/visual-screenshots (1)/images/1d1444203dac3cbe71c951d381126d03.png +0 -0
  749. package/style/visual-screenshots (1)/images/1d73f593bed08ad694e2b573a39ae06f.png +0 -0
  750. package/style/visual-screenshots (1)/images/1dac4a7712234a30253ab6f9160d50a6.png +0 -0
  751. package/style/visual-screenshots (1)/images/1ebaf53fb8db94bb9a8154e86a3e5ed2.png +0 -0
  752. package/style/visual-screenshots (1)/images/1ec0c1febc3f0dd1786eea003e0dee38.png +0 -0
  753. package/style/visual-screenshots (1)/images/1ec3bebcdac3683aad4e93ea70ee4a1e.png +0 -0
  754. package/style/visual-screenshots (1)/images/1f7f87a3bfb22d7b6d5489170a691439.png +0 -0
  755. package/style/visual-screenshots (1)/images/217dca423214acf6733443967bd4bb91.png +0 -0
  756. package/style/visual-screenshots (1)/images/21a4579340bd071933dc4222aca885e8.png +0 -0
  757. package/style/visual-screenshots (1)/images/21e702dbfac3ae3c84ad5cf4a3a5fd33.png +0 -0
  758. package/style/visual-screenshots (1)/images/2205a5e15323173cf82e53036b89f3d2.png +0 -0
  759. package/style/visual-screenshots (1)/images/2239056187956d81a9a7a3ff086123ec.png +0 -0
  760. package/style/visual-screenshots (1)/images/22a392ca2f7b01e9145de8a1d16d8ac1.png +0 -0
  761. package/style/visual-screenshots (1)/images/2395e15caf0facec892a787fbf1baa61.png +0 -0
  762. package/style/visual-screenshots (1)/images/2430226e2b211252d8793d0b24bd105b.png +0 -0
  763. package/style/visual-screenshots (1)/images/249af52548a661890ebb3990c81e7bec.png +0 -0
  764. package/style/visual-screenshots (1)/images/24adff266f0ccc120bbab22610a7afef.png +0 -0
  765. package/style/visual-screenshots (1)/images/250d4d8b44fd5e3f83114560684c7a33.png +0 -0
  766. package/style/visual-screenshots (1)/images/2517969a2f9a119f248ef574ce68957a.png +0 -0
  767. package/style/visual-screenshots (1)/images/251e0de35a82707d6372ae27e6a28f19.png +0 -0
  768. package/style/visual-screenshots (1)/images/25596d87f964d9e9e48bcdcb815d97b0.png +0 -0
  769. package/style/visual-screenshots (1)/images/257aafcb25e5c45c1fdb794c500845af.png +0 -0
  770. package/style/visual-screenshots (1)/images/25eeda071a6e8ec33338f621edfccce7.png +0 -0
  771. package/style/visual-screenshots (1)/images/260117a8a096031e2d4a00137e1fb6e7.png +0 -0
  772. package/style/visual-screenshots (1)/images/2609faace1c9661a650574dcc408030d.png +0 -0
  773. package/style/visual-screenshots (1)/images/2613cd2759c32063cc30bd0bd33358dc.png +0 -0
  774. package/style/visual-screenshots (1)/images/2694ff3a617c6cf218bdd37a19c83b8a.png +0 -0
  775. package/style/visual-screenshots (1)/images/26e2f8a3530bb0e0ea2384f2bdc9a81a.png +0 -0
  776. package/style/visual-screenshots (1)/images/2729771eeefd444ff898c491f1273357.png +0 -0
  777. package/style/visual-screenshots (1)/images/27f11a528d6b5f15d45f2c420edc00fb.png +0 -0
  778. package/style/visual-screenshots (1)/images/2818dab1bc771c7ed5eb71d561228863.png +0 -0
  779. package/style/visual-screenshots (1)/images/28cf1d93f7722430ee1437df8a14127f.png +0 -0
  780. package/style/visual-screenshots (1)/images/2939e1e89e29a3b71f5be665edf472c2.png +0 -0
  781. package/style/visual-screenshots (1)/images/2a3e1613614fa6bf58ebcb820d6fc84f.png +0 -0
  782. package/style/visual-screenshots (1)/images/2a8fce144b32ae297bcc8650d13cdb1c.png +0 -0
  783. package/style/visual-screenshots (1)/images/2aa7766d32787734fc8a534acc98bf77.png +0 -0
  784. package/style/visual-screenshots (1)/images/2ae27049402468e5e2baf2b664365f8a.png +0 -0
  785. package/style/visual-screenshots (1)/images/2b1b3ff73541c559ff4f0f22f70db3d1.png +0 -0
  786. package/style/visual-screenshots (1)/images/2b3af1d887b41d5123e82575fbfa3958.png +0 -0
  787. package/style/visual-screenshots (1)/images/2b8c160de3305bb7deef1bd108bd0850.png +0 -0
  788. package/style/visual-screenshots (1)/images/2b8df5a2aa5bea6bb21551b1ea4a5fe3.png +0 -0
  789. package/style/visual-screenshots (1)/images/2bb42f7f640cb97e6ddd996cc4bdf0da.png +0 -0
  790. package/style/visual-screenshots (1)/images/2c0ab17426c134629732d0a71b6a0745.png +0 -0
  791. package/style/visual-screenshots (1)/images/2c20e396014f9b12f047545579b878ca.png +0 -0
  792. package/style/visual-screenshots (1)/images/2c2c8816739b979c0a3dbdcbea9c8f98.png +0 -0
  793. package/style/visual-screenshots (1)/images/2c532e1252a0775b10aed847a4f06e4a.png +0 -0
  794. package/style/visual-screenshots (1)/images/2cdd6aee7de3219ce296baef83119f45.png +0 -0
  795. package/style/visual-screenshots (1)/images/2cebfc565448f890d0a3fa2de61cfd61.png +0 -0
  796. package/style/visual-screenshots (1)/images/2d76b6c335af030ecc073359d3565529.png +0 -0
  797. package/style/visual-screenshots (1)/images/2d7f41ff4f3900f029adbcdbdfdef905.png +0 -0
  798. package/style/visual-screenshots (1)/images/2d8b857c7a81cd7e90b75c9fcb974e09.png +0 -0
  799. package/style/visual-screenshots (1)/images/2e1f9e506e8e09a191c0d86899e8975a.png +0 -0
  800. package/style/visual-screenshots (1)/images/2e8755615c5b55dfeb5ced872b9b89f6.png +0 -0
  801. package/style/visual-screenshots (1)/images/2efe3ccdf954982fb10f12ceb79cc902.png +0 -0
  802. package/style/visual-screenshots (1)/images/2f2a4fe573c824c9c651ae5fb24e26f6.png +0 -0
  803. package/style/visual-screenshots (1)/images/2f426e5f71eae6eaf7bb54b4aafa88d6.png +0 -0
  804. package/style/visual-screenshots (1)/images/2f4e9578c9f11b5c8e2d034824689dce.png +0 -0
  805. package/style/visual-screenshots (1)/images/2f5ec86f7334a79914c09ee94eae2f8d.png +0 -0
  806. package/style/visual-screenshots (1)/images/2f76ed17b978cfa3e663760d5c651b0f.png +0 -0
  807. package/style/visual-screenshots (1)/images/2f8832e36833e875c53bdf68ac53de11.png +0 -0
  808. package/style/visual-screenshots (1)/images/2fe54d475ff814eaf2b323bfa6990a25.png +0 -0
  809. package/style/visual-screenshots (1)/images/30423ab0c5ce8c26a9b4e30fb4ad50b5.png +0 -0
  810. package/style/visual-screenshots (1)/images/3079876e71da7c207489af4b38314ca3.png +0 -0
  811. package/style/visual-screenshots (1)/images/30ac31802c8421ee59c2b0e64fdd40d1.png +0 -0
  812. package/style/visual-screenshots (1)/images/30efef6537f882daf60ba808d25ab35c.png +0 -0
  813. package/style/visual-screenshots (1)/images/3111d7bc39ef23e1d19a8022f2f78d4f.png +0 -0
  814. package/style/visual-screenshots (1)/images/3155c15ead85acf928e71fc4958b1e65.png +0 -0
  815. package/style/visual-screenshots (1)/images/317b0753146b2d6c57ef618e2d6c9aff.png +0 -0
  816. package/style/visual-screenshots (1)/images/31bb19c3949134774cce7f0af132f001.png +0 -0
  817. package/style/visual-screenshots (1)/images/32009df7a0440dc1227d6c59fcdc22a8.png +0 -0
  818. package/style/visual-screenshots (1)/images/3205ce4d4ec27524cb360e23cb250a2e.png +0 -0
  819. package/style/visual-screenshots (1)/images/3221fe82f718cdb8d3a013e35e75d966.png +0 -0
  820. package/style/visual-screenshots (1)/images/322755f4d634ab3e62663c98413cf4bb.png +0 -0
  821. package/style/visual-screenshots (1)/images/3263cb4ecdc16ecec1cf03d96c1d83d1.png +0 -0
  822. package/style/visual-screenshots (1)/images/329d69f11e6409b7e7855c3e576057f6.png +0 -0
  823. package/style/visual-screenshots (1)/images/32b3faa4eb5356a1ac8b30c722b7f282.png +0 -0
  824. package/style/visual-screenshots (1)/images/332160dde332162d8e3b9e12dd376546.png +0 -0
  825. package/style/visual-screenshots (1)/images/33519a891e6922542f2b3fc18ab26670.png +0 -0
  826. package/style/visual-screenshots (1)/images/33a7eaf167f347d52bc910511d2fc029.png +0 -0
  827. package/style/visual-screenshots (1)/images/33b0ac3141f5f2ea19f81d742269bcab.png +0 -0
  828. package/style/visual-screenshots (1)/images/343327cf17cc3b6a5e451c4d86577491.png +0 -0
  829. package/style/visual-screenshots (1)/images/3474b54aac010b234998e46521894bde.png +0 -0
  830. package/style/visual-screenshots (1)/images/34a84ed26a53ffb27dbcdabeaf10c665.png +0 -0
  831. package/style/visual-screenshots (1)/images/34efd6c9f4e5031eeb8c1f1a51bd3eaa.png +0 -0
  832. package/style/visual-screenshots (1)/images/3531a86fca237cc6d8764eb9eeb8e394.png +0 -0
  833. package/style/visual-screenshots (1)/images/3598a332200dbe7f32ab86015e6cd61e.png +0 -0
  834. package/style/visual-screenshots (1)/images/35a2ea7b24e787bdea1313703512d37f.png +0 -0
  835. package/style/visual-screenshots (1)/images/35ea4500d8a65ff3e52c0404ded68018.png +0 -0
  836. package/style/visual-screenshots (1)/images/363f015a5323e01c8f7c421607ba7a85.png +0 -0
  837. package/style/visual-screenshots (1)/images/365a47a407c464a973116590d1280542.png +0 -0
  838. package/style/visual-screenshots (1)/images/3666d49f301336a1d92abe8c48811dd0.png +0 -0
  839. package/style/visual-screenshots (1)/images/36a3aa27abb0e8fb45cbe4e842bb793b.png +0 -0
  840. package/style/visual-screenshots (1)/images/36be2d1cc4bbea216ebfa024f2b5d9d3.png +0 -0
  841. package/style/visual-screenshots (1)/images/36d5ce3a43f8a8bbaddb83a756174e09.png +0 -0
  842. package/style/visual-screenshots (1)/images/3715717d75b5ec943086b9392d05747a.png +0 -0
  843. package/style/visual-screenshots (1)/images/3718308a2535e0badb74e0ed39da3e98.png +0 -0
  844. package/style/visual-screenshots (1)/images/376d9c365f202b555efc6152eb4dbb7a.png +0 -0
  845. package/style/visual-screenshots (1)/images/37ff2d44fb6261e53203d05e1d130b48.png +0 -0
  846. package/style/visual-screenshots (1)/images/3829933c4a23d7033a63119484708ab4.png +0 -0
  847. package/style/visual-screenshots (1)/images/38c924efe546ddde14e0cb343a2ed551.png +0 -0
  848. package/style/visual-screenshots (1)/images/390f5b1f49dc988e023255d1878b769a.png +0 -0
  849. package/style/visual-screenshots (1)/images/394ab2b92eacbc9f634b3d0618b877d0.png +0 -0
  850. package/style/visual-screenshots (1)/images/3961f21e98b5d1f616215c9588f0c8ea.png +0 -0
  851. package/style/visual-screenshots (1)/images/396af4eab814a3a2dc1429581b3452b3.png +0 -0
  852. package/style/visual-screenshots (1)/images/3a3ec2d1cafe6685d14ef24be74aace4.png +0 -0
  853. package/style/visual-screenshots (1)/images/3ae1c7c33ebd96fe70ad90acc7b1d693.png +0 -0
  854. package/style/visual-screenshots (1)/images/3b19874ff7c8b2b92d6e200634b760c5.png +0 -0
  855. package/style/visual-screenshots (1)/images/3b4f2951c9cbd00ad924a358e0f24304.png +0 -0
  856. package/style/visual-screenshots (1)/images/3bc5adf4dec1f65342d09fa825073ee7.png +0 -0
  857. package/style/visual-screenshots (1)/images/3be29fbf67e05c10ef9effda5b0d1b9c.png +0 -0
  858. package/style/visual-screenshots (1)/images/3bfdd784ff28564271d8067439c72fb2.png +0 -0
  859. package/style/visual-screenshots (1)/images/3c101349056155ee16f6d40d67566bb2.png +0 -0
  860. package/style/visual-screenshots (1)/images/3c24263abc9fe6f48efe83953f33d38f.png +0 -0
  861. package/style/visual-screenshots (1)/images/3c4b7cb9bc584cc8d417763e4e332cad.png +0 -0
  862. package/style/visual-screenshots (1)/images/3cb9028699d3dc4a5ff9ed62acf26f38.png +0 -0
  863. package/style/visual-screenshots (1)/images/3d5e1f1170e3c54f19f3966925138df0.png +0 -0
  864. package/style/visual-screenshots (1)/images/3d7ee9ac11ff5492525a094beaa220b1.png +0 -0
  865. package/style/visual-screenshots (1)/images/3d82c97ab6d96c4026d0f3ca072b02ae.png +0 -0
  866. package/style/visual-screenshots (1)/images/3ec93ead42526589356ac0b756d043ec.png +0 -0
  867. package/style/visual-screenshots (1)/images/3f1b42c8f0cb41c374b0893eb31f2fda.png +0 -0
  868. package/style/visual-screenshots (1)/images/3ff96bd3c1034fe2a3af47eb4f729eeb.png +0 -0
  869. package/style/visual-screenshots (1)/images/400b3fe6558f8ae340d796c834456f82.png +0 -0
  870. package/style/visual-screenshots (1)/images/404d5c7fe65c1df1162feb7af57adadd.png +0 -0
  871. package/style/visual-screenshots (1)/images/4060b53b47c6e063d1770980ecb101b2.png +0 -0
  872. package/style/visual-screenshots (1)/images/40dd05574156c243449caad139d9b9a2.png +0 -0
  873. package/style/visual-screenshots (1)/images/40f479e6d12eaa5687a4ac9784aa717e.png +0 -0
  874. package/style/visual-screenshots (1)/images/40f48b85da52ec3ef05fa4696c72f7ff.png +0 -0
  875. package/style/visual-screenshots (1)/images/4169f0823fcd903e16d7c3f9344cc491.png +0 -0
  876. package/style/visual-screenshots (1)/images/419a4e8e4b8708b8e6ff45f643a7cf5d.png +0 -0
  877. package/style/visual-screenshots (1)/images/41c7990e66fbed660d2b55e76fd2ea25.png +0 -0
  878. package/style/visual-screenshots (1)/images/423ae4e26846f800ea31ed24d79e7472.png +0 -0
  879. package/style/visual-screenshots (1)/images/427c562ebb511d853cd3437eb8c73c0f.png +0 -0
  880. package/style/visual-screenshots (1)/images/428ec68c1c5771403f8939976018c14e.png +0 -0
  881. package/style/visual-screenshots (1)/images/4291cb1eaed75fba4800f0033b689208.png +0 -0
  882. package/style/visual-screenshots (1)/images/42ed1e77d86bf5e0d7a8f90acf2ab6b2.png +0 -0
  883. package/style/visual-screenshots (1)/images/4313e10ac1318b7526eed35c0d704f05.png +0 -0
  884. package/style/visual-screenshots (1)/images/438f453be7d1213a8e2872e4608a410c.png +0 -0
  885. package/style/visual-screenshots (1)/images/439f69b339c6f6ca820a4b62382ca877.png +0 -0
  886. package/style/visual-screenshots (1)/images/43f6607e4b8ff0d5f6c4c5d323c96677.png +0 -0
  887. package/style/visual-screenshots (1)/images/44caefac207b436ffeffdef86eaae21a.png +0 -0
  888. package/style/visual-screenshots (1)/images/44eaf11aa4495c9d8d76941a1254dcb0.png +0 -0
  889. package/style/visual-screenshots (1)/images/453742c5e578099953f9bff69e3982ef.png +0 -0
  890. package/style/visual-screenshots (1)/images/459214ef33a21425f776796767256e3c.png +0 -0
  891. package/style/visual-screenshots (1)/images/45a13beb6b9356d7b1b4690370914252.png +0 -0
  892. package/style/visual-screenshots (1)/images/45a569fd48a72db5047a02e192c35363.png +0 -0
  893. package/style/visual-screenshots (1)/images/45c1ac110c0dc20d35d2c2be1e469e49.png +0 -0
  894. package/style/visual-screenshots (1)/images/466d83d9df37025413fcc77e2528d150.png +0 -0
  895. package/style/visual-screenshots (1)/images/46ffc37786e06461d5ffc3c101841ea6.png +0 -0
  896. package/style/visual-screenshots (1)/images/4708081357611e1ad1adb36ea5f91ebe.png +0 -0
  897. package/style/visual-screenshots (1)/images/4799a82b4f5b3242bcf158dc12aeb8da.png +0 -0
  898. package/style/visual-screenshots (1)/images/47a4ae1ed1de0348708e630718bf58e0.png +0 -0
  899. package/style/visual-screenshots (1)/images/47cd6b92f4697a387f4392729f019da0.png +0 -0
  900. package/style/visual-screenshots (1)/images/47d36e03c0973961a65d47f31bbce64d.png +0 -0
  901. package/style/visual-screenshots (1)/images/48812bb1c24cf4529f36152c045aefe4.png +0 -0
  902. package/style/visual-screenshots (1)/images/48b348f52bcf73e7b84273b59414d9c0.png +0 -0
  903. package/style/visual-screenshots (1)/images/48ccc273160dcf8a8eee6caa44dacdd1.png +0 -0
  904. package/style/visual-screenshots (1)/images/4946b39b68b5cf6879cab368a43dde2d.png +0 -0
  905. package/style/visual-screenshots (1)/images/494f07c31c273d35487cbacefb179211.png +0 -0
  906. package/style/visual-screenshots (1)/images/495c33cb81b92e71a59064b036deacb3.png +0 -0
  907. package/style/visual-screenshots (1)/images/4988de5d9c64f2451adb83cc9781f31d.png +0 -0
  908. package/style/visual-screenshots (1)/images/4a5c84ab5b32f8b3652f31aca7f82547.png +0 -0
  909. package/style/visual-screenshots (1)/images/4abedbcd1f3c2b3cb5af44393cc4edd3.png +0 -0
  910. package/style/visual-screenshots (1)/images/4ac246764de2e6eaea78d1eee8fa0680.png +0 -0
  911. package/style/visual-screenshots (1)/images/4b49f29e64109f5d844bae574d9368e9.png +0 -0
  912. package/style/visual-screenshots (1)/images/4ba5027ab476151e2ba4f16cade9a316.png +0 -0
  913. package/style/visual-screenshots (1)/images/4be038b7049b5639096cdf45dc0166d5.png +0 -0
  914. package/style/visual-screenshots (1)/images/4be0509c9e49770d5d3ab93a9d824c0c.png +0 -0
  915. package/style/visual-screenshots (1)/images/4c007d54467c97735191d53b1b89700a.png +0 -0
  916. package/style/visual-screenshots (1)/images/4c04913dd6ac89f9c03580ffcfc9dce2.png +0 -0
  917. package/style/visual-screenshots (1)/images/4c39dc9b5530f8cfa389453f323f2562.png +0 -0
  918. package/style/visual-screenshots (1)/images/4cf7eb7fbbfcbad4194ef321b793a243.png +0 -0
  919. package/style/visual-screenshots (1)/images/4d34a53adeaf6b96b5f910e0e57f91f7.png +0 -0
  920. package/style/visual-screenshots (1)/images/4d3538775024b65cc11c656ee312bfb7.png +0 -0
  921. package/style/visual-screenshots (1)/images/4d614a3bd7821f52b699427abf3440e2.png +0 -0
  922. package/style/visual-screenshots (1)/images/4d85b89464845f56b18d7e329f1394a4.png +0 -0
  923. package/style/visual-screenshots (1)/images/4d9140a7a2defdf17daec4df653cccb8.png +0 -0
  924. package/style/visual-screenshots (1)/images/4e52657b6cd66fa0e8da6225c3923833.png +0 -0
  925. package/style/visual-screenshots (1)/images/4eb94875d887dfece7a7e2cc00425848.png +0 -0
  926. package/style/visual-screenshots (1)/images/4f3481e7bcab3c6a115931bdc7bde793.png +0 -0
  927. package/style/visual-screenshots (1)/images/4f736b3787086298b179837d13ea2e27.png +0 -0
  928. package/style/visual-screenshots (1)/images/4f7e9c28d6d15df090c3857fe8172a90.png +0 -0
  929. package/style/visual-screenshots (1)/images/4f831bf4925c85ef517fd84fed27cefc.png +0 -0
  930. package/style/visual-screenshots (1)/images/4f8cc269620de9911fba4dff6724c7a5.png +0 -0
  931. package/style/visual-screenshots (1)/images/4f9cf3ca13066408925b4d1cdc856337.png +0 -0
  932. package/style/visual-screenshots (1)/images/4fe4b5357ee618b9ca1265408d74ad97.png +0 -0
  933. package/style/visual-screenshots (1)/images/5018ce083222fefeb9e4686ed2e1edaf.png +0 -0
  934. package/style/visual-screenshots (1)/images/5022d94c55bd146ad125a05b5c9f15dd.png +0 -0
  935. package/style/visual-screenshots (1)/images/503a0b5aa58f32f0892efbb58b46b996.png +0 -0
  936. package/style/visual-screenshots (1)/images/50a9c832d93ea3ba546abb94fd08af87.png +0 -0
  937. package/style/visual-screenshots (1)/images/5118ecf3e50d06897080ed1b2bafcef3.png +0 -0
  938. package/style/visual-screenshots (1)/images/5158dd83988845a3839627ad959dbb01.png +0 -0
  939. package/style/visual-screenshots (1)/images/51923db19fef9e029f0893a8a2003614.png +0 -0
  940. package/style/visual-screenshots (1)/images/51f5169578f81f7fb04205fa02f761c6.png +0 -0
  941. package/style/visual-screenshots (1)/images/52525fe087784b1fdffe1cfc03eed02d.png +0 -0
  942. package/style/visual-screenshots (1)/images/5266c70656af2dd7ea757c126c555489.png +0 -0
  943. package/style/visual-screenshots (1)/images/5273adef332dbb60fac11c48a989c42d.png +0 -0
  944. package/style/visual-screenshots (1)/images/52cfe294a3f7300731ce4dbe4717bdea.png +0 -0
  945. package/style/visual-screenshots (1)/images/5328d69dc10bb02003c30fed0e25a64b.png +0 -0
  946. package/style/visual-screenshots (1)/images/53e6290d0b3f1294543ba28828558bae.png +0 -0
  947. package/style/visual-screenshots (1)/images/53eeaa26642fb7b44a83b9bf5d285b1a.png +0 -0
  948. package/style/visual-screenshots (1)/images/540524e243acf3f3f5bfa8c392ffba52.png +0 -0
  949. package/style/visual-screenshots (1)/images/5436543a753e26c1c2224e9b8ed3f30c.png +0 -0
  950. package/style/visual-screenshots (1)/images/54c4e2aa7af0622b71ab1b91e0216497.png +0 -0
  951. package/style/visual-screenshots (1)/images/54cf609aa15fa2609c3079a322e9f60a.png +0 -0
  952. package/style/visual-screenshots (1)/images/54e4e6b63e13d2f360b1bd0d1ade4ebd.png +0 -0
  953. package/style/visual-screenshots (1)/images/5505895e66a4d80a8eb40be714de2da1.png +0 -0
  954. package/style/visual-screenshots (1)/images/554637773a92e812811d95933b06d047.png +0 -0
  955. package/style/visual-screenshots (1)/images/55b1e1c7415f8f22ab377f2e4fd5a91d.png +0 -0
  956. package/style/visual-screenshots (1)/images/55c30ec12d513e3c365e94ef76330703.png +0 -0
  957. package/style/visual-screenshots (1)/images/5737582ac302d9b30b549c875dc0e823.png +0 -0
  958. package/style/visual-screenshots (1)/images/5838b2544ecf964a999cab746d5bd97d.png +0 -0
  959. package/style/visual-screenshots (1)/images/58b847761ee38a8c47f208aeb558e0a9.png +0 -0
  960. package/style/visual-screenshots (1)/images/58cae6127379fa56b766c6c3528a286a.png +0 -0
  961. package/style/visual-screenshots (1)/images/58cd807e8212d20223020a0c6404765b.png +0 -0
  962. package/style/visual-screenshots (1)/images/5909df37c419a947f3725ea71a9680c3.png +0 -0
  963. package/style/visual-screenshots (1)/images/590d2d0fa1c7e1204816f4badda94716.png +0 -0
  964. package/style/visual-screenshots (1)/images/592abe77a6d530f6d9c77c1fe68d1315.png +0 -0
  965. package/style/visual-screenshots (1)/images/593cacdf991a89066c6887dda6214279.png +0 -0
  966. package/style/visual-screenshots (1)/images/597612a74ca61e8e3cee1183251cac24.png +0 -0
  967. package/style/visual-screenshots (1)/images/59b59b3d221c4be96d27770926f6eb7c.png +0 -0
  968. package/style/visual-screenshots (1)/images/59d0c2dc9de3c7ca52811e6d03005db0.png +0 -0
  969. package/style/visual-screenshots (1)/images/59e20e58e24364f8ea8e94f2708de92f.png +0 -0
  970. package/style/visual-screenshots (1)/images/5a0638a95840412ad0883e0e14dd22f4.png +0 -0
  971. package/style/visual-screenshots (1)/images/5a251791db123f6cf0fc8207cd34d605.png +0 -0
  972. package/style/visual-screenshots (1)/images/5a8cf1ada7ead3e071e59c233e45d826.png +0 -0
  973. package/style/visual-screenshots (1)/images/5a98898f2c6c913e34e6370769a2e419.png +0 -0
  974. package/style/visual-screenshots (1)/images/5aa02d6e18a0fa7b46ad23263f5372f9.png +0 -0
  975. package/style/visual-screenshots (1)/images/5ab4fc80d22b19429b70cd3a6ab8bb05.png +0 -0
  976. package/style/visual-screenshots (1)/images/5acd13c49bb19fc300b6a7c2460945db.png +0 -0
  977. package/style/visual-screenshots (1)/images/5add1e2e0f9c785f9e969cce0b11e0a6.png +0 -0
  978. package/style/visual-screenshots (1)/images/5aeed5c2ec2ca7b5ae286bae76bb6f72.png +0 -0
  979. package/style/visual-screenshots (1)/images/5b2591966426d8c77601565dfa914b5c.png +0 -0
  980. package/style/visual-screenshots (1)/images/5b424b673e5f6814bbcc687a2f5ba7ff.png +0 -0
  981. package/style/visual-screenshots (1)/images/5bd4d4b7e0890bcb1d81ede114ee4b72.png +0 -0
  982. package/style/visual-screenshots (1)/images/5beea7f2f00f4db6f09fcf15bd6b73de.png +0 -0
  983. package/style/visual-screenshots (1)/images/5c02af94f4d5ed86c881612dcfb31b02.png +0 -0
  984. package/style/visual-screenshots (1)/images/5c0c0f1dbdb3aca383c35ec0cb67c599.png +0 -0
  985. package/style/visual-screenshots (1)/images/5c520e4228567e2374f5d96b7f15c0d9.png +0 -0
  986. package/style/visual-screenshots (1)/images/5cb10edf424ba13d586e83e60ac14a2d.png +0 -0
  987. package/style/visual-screenshots (1)/images/5cca63b3d493de7befd4382f24a2aabd.png +0 -0
  988. package/style/visual-screenshots (1)/images/5d5ef2d78f31c874edb28ebdfbfbd8f9.png +0 -0
  989. package/style/visual-screenshots (1)/images/5d8110526b6ba5e9621d0f2fa57aa132.png +0 -0
  990. package/style/visual-screenshots (1)/images/5d8f7a0eff0b6d546331f921490f25b9.png +0 -0
  991. package/style/visual-screenshots (1)/images/5eab49b89384ab1f74be37d4e905021a.png +0 -0
  992. package/style/visual-screenshots (1)/images/5ebfae0149ca72238011292fa3e486cb.png +0 -0
  993. package/style/visual-screenshots (1)/images/5ecd509cfe196a8262a7e85d3d4c64b0.png +0 -0
  994. package/style/visual-screenshots (1)/images/5f153464c343cd768216633b852073e7.png +0 -0
  995. package/style/visual-screenshots (1)/images/5f69e3fcc20bdb527e040185048788e4.png +0 -0
  996. package/style/visual-screenshots (1)/images/5fb4421e5a6d1eaef21a54bb431bdacb.png +0 -0
  997. package/style/visual-screenshots (1)/images/5fd1665ddd85bf70339a29ddf3a98915.png +0 -0
  998. package/style/visual-screenshots (1)/images/602fb4d5d2c9707f008b0d6a1a0487a7.png +0 -0
  999. package/style/visual-screenshots (1)/images/604007e0cd1142f4e425d57ad9a1c5ef.png +0 -0
  1000. package/style/visual-screenshots (1)/images/605d581f35cd72dc9d7083dcc8066af1.png +0 -0
  1001. package/style/visual-screenshots (1)/images/6188b93026521a32345a4319fb10271e.png +0 -0
  1002. package/style/visual-screenshots (1)/images/621e7fcf64cbb08d121b599a81acb46a.png +0 -0
  1003. package/style/visual-screenshots (1)/images/626302e61eedc90d62298f66f46b8ec0.png +0 -0
  1004. package/style/visual-screenshots (1)/images/6289549bdd1f3ba4ee0ffa76fa3a8636.png +0 -0
  1005. package/style/visual-screenshots (1)/images/62a7d5f3d5afe23177d5dbab5f1e4c79.png +0 -0
  1006. package/style/visual-screenshots (1)/images/6355a9180ed5c4dd8df56c9ead71b0c8.png +0 -0
  1007. package/style/visual-screenshots (1)/images/63981d8aaadcbe9b9e73af3669b3c180.png +0 -0
  1008. package/style/visual-screenshots (1)/images/63bd485372b912309753349358f50eda.png +0 -0
  1009. package/style/visual-screenshots (1)/images/6415c0bc3637ea962fb1761ae69b5dda.png +0 -0
  1010. package/style/visual-screenshots (1)/images/64174556b9d8b4d18b7b8cfd531987a7.png +0 -0
  1011. package/style/visual-screenshots (1)/images/64443c554e8813c1fff9032b53c52b76.png +0 -0
  1012. package/style/visual-screenshots (1)/images/6478d52ea2380b15c4b549d9a1f77bac.png +0 -0
  1013. package/style/visual-screenshots (1)/images/649745ba63be2d7bf9d4f766d7b8ca38.png +0 -0
  1014. package/style/visual-screenshots (1)/images/64f2a771825679d512c73923c1bd5184.png +0 -0
  1015. package/style/visual-screenshots (1)/images/65147f30150f68dd99a34e3de9adb4a2.png +0 -0
  1016. package/style/visual-screenshots (1)/images/651e96edc124365985fcf260c7695452.png +0 -0
  1017. package/style/visual-screenshots (1)/images/6542deed80a8908b2ba2e40b482a5829.png +0 -0
  1018. package/style/visual-screenshots (1)/images/6548c65bf55806aa5acde87bc4d2017e.png +0 -0
  1019. package/style/visual-screenshots (1)/images/65be34b043114b668dad4ce359310ad3.png +0 -0
  1020. package/style/visual-screenshots (1)/images/65f1fc5ed87fb18c756988c6719c3b05.png +0 -0
  1021. package/style/visual-screenshots (1)/images/6618ae614b5a59f18f1f9f627b81f0ba.png +0 -0
  1022. package/style/visual-screenshots (1)/images/6710405c63cd71667e3533429bc8ac74.png +0 -0
  1023. package/style/visual-screenshots (1)/images/675177ec55467292992f6c641b44352e.png +0 -0
  1024. package/style/visual-screenshots (1)/images/679ff4b5301290556ec91463a47cf018.png +0 -0
  1025. package/style/visual-screenshots (1)/images/67d9619b97865d42f5617413a025f62a.png +0 -0
  1026. package/style/visual-screenshots (1)/images/686cdd39835b173225bd0b6ce4448b88.png +0 -0
  1027. package/style/visual-screenshots (1)/images/6874ed35cef726f65cda16ed1d544b35.png +0 -0
  1028. package/style/visual-screenshots (1)/images/68a92328d49b056ca74e3abe51c91d76.png +0 -0
  1029. package/style/visual-screenshots (1)/images/68b78b4cec15c23fa5e7d0148bead95f.png +0 -0
  1030. package/style/visual-screenshots (1)/images/68bca5cfcf4cb2cf91bbae3869730a14.png +0 -0
  1031. package/style/visual-screenshots (1)/images/68c9260329ceafbae03b1cf59a2dc832.png +0 -0
  1032. package/style/visual-screenshots (1)/images/698a7f9c8600bee3c0154879e8642fb8.png +0 -0
  1033. package/style/visual-screenshots (1)/images/698be3296b927df039453c078d8c5e90.png +0 -0
  1034. package/style/visual-screenshots (1)/images/69995300e1755ca4f61767ebb603e28d.png +0 -0
  1035. package/style/visual-screenshots (1)/images/69b579e4e3d21f8d7c6bb64fa7dec383.png +0 -0
  1036. package/style/visual-screenshots (1)/images/69c6368a387225497235ea4cabbbe05d.png +0 -0
  1037. package/style/visual-screenshots (1)/images/69cdde73ed1979a49fa379514fb747ea.png +0 -0
  1038. package/style/visual-screenshots (1)/images/69d4879c64376442acf44968fb02d9a6.png +0 -0
  1039. package/style/visual-screenshots (1)/images/6a152f420237560d826a59b1ba95c6e8.png +0 -0
  1040. package/style/visual-screenshots (1)/images/6a1e34197166e3475343c3ba9a4ce398.png +0 -0
  1041. package/style/visual-screenshots (1)/images/6a2d5d8d6ff350c3b22a97e221506c72.png +0 -0
  1042. package/style/visual-screenshots (1)/images/6a7102578dc5e69e6eed2dd81169959d.png +0 -0
  1043. package/style/visual-screenshots (1)/images/6a76062bfc3391871480fbaed258138f.png +0 -0
  1044. package/style/visual-screenshots (1)/images/6a98dfe1e3633e72cf1fc24d6f6b641b.png +0 -0
  1045. package/style/visual-screenshots (1)/images/6abbbe132416f98c6a1cb3a1897cc551.png +0 -0
  1046. package/style/visual-screenshots (1)/images/6b443b374cbe7fd349b21cd82a439dd6.png +0 -0
  1047. package/style/visual-screenshots (1)/images/6bb098fcece5553a617d03e539e2b14d.png +0 -0
  1048. package/style/visual-screenshots (1)/images/6bcde51c95aafa27fed83fd83b8f0397.png +0 -0
  1049. package/style/visual-screenshots (1)/images/6c156cba7e8245e73aefe4afbd35276d.png +0 -0
  1050. package/style/visual-screenshots (1)/images/6c569ef8ad97932e1a82ac1ed9e30960.png +0 -0
  1051. package/style/visual-screenshots (1)/images/6c91461ed0c3153c9c403d1ab687dbe5.png +0 -0
  1052. package/style/visual-screenshots (1)/images/6cae73cd2745b0af1530ae4e9cb9ebfa.png +0 -0
  1053. package/style/visual-screenshots (1)/images/6d470bf081f9dfcf72f63d5ef93e627e.png +0 -0
  1054. package/style/visual-screenshots (1)/images/6d6fcb40cbe35f57b4a2caced4ab52c1.png +0 -0
  1055. package/style/visual-screenshots (1)/images/6d8758b4434c1abb115eb61256323a84.png +0 -0
  1056. package/style/visual-screenshots (1)/images/6d8bd755e87330765b74bce670116692.png +0 -0
  1057. package/style/visual-screenshots (1)/images/6e42402b7dd8bc3a23292b766284e384.png +0 -0
  1058. package/style/visual-screenshots (1)/images/6e9e15b49f9bd7e2b60f666b85f4c3b7.png +0 -0
  1059. package/style/visual-screenshots (1)/images/6ecd70c7e06430c86fd514a412dcc6f4.png +0 -0
  1060. package/style/visual-screenshots (1)/images/6f3b3334cd7e0046e583348aa29babcf.png +0 -0
  1061. package/style/visual-screenshots (1)/images/6f5da1c8d233cf9d5e8e88fd2ef3ec0a.png +0 -0
  1062. package/style/visual-screenshots (1)/images/6fa2cf8bec030e4a0749e769ba026482.png +0 -0
  1063. package/style/visual-screenshots (1)/images/6fe1a8093050cb06ea5b1c3334503e24.png +0 -0
  1064. package/style/visual-screenshots (1)/images/7005941c708d4fec5abcdc7e6e10bab8.png +0 -0
  1065. package/style/visual-screenshots (1)/images/700ade8610923958d3f90d68dfa4e05b.png +0 -0
  1066. package/style/visual-screenshots (1)/images/7038ca0faeb969aa8e7e62cd4f626e6f.png +0 -0
  1067. package/style/visual-screenshots (1)/images/706755c17ed932b4bef33524f6daa4f5.png +0 -0
  1068. package/style/visual-screenshots (1)/images/706dfb70e1074e2aad57ab8526b0f360.png +0 -0
  1069. package/style/visual-screenshots (1)/images/70a28845b5c345c56575b55667b70da1.png +0 -0
  1070. package/style/visual-screenshots (1)/images/70b41db21992f19bda5e6b0f70c1fc09.png +0 -0
  1071. package/style/visual-screenshots (1)/images/70bdf7355dba6c76a2d79bde106e6d1d.png +0 -0
  1072. package/style/visual-screenshots (1)/images/70be87330902c743947ed9e77285f871.png +0 -0
  1073. package/style/visual-screenshots (1)/images/70c8dce297f073384a4e8079bff68adf.png +0 -0
  1074. package/style/visual-screenshots (1)/images/7129b9342de7f5e37c6eeeb9e174e2de.png +0 -0
  1075. package/style/visual-screenshots (1)/images/715b51ef2b67f378bba07e7ad9343754.png +0 -0
  1076. package/style/visual-screenshots (1)/images/71efbcd39c9d1ace0e25003ceb0db23e.png +0 -0
  1077. package/style/visual-screenshots (1)/images/7245e631025f99f3554df69b14a843fa.png +0 -0
  1078. package/style/visual-screenshots (1)/images/7268f09b0b1a0e124434eca4bbd818fa.png +0 -0
  1079. package/style/visual-screenshots (1)/images/7329d3d684fa7430845616c496c3e3d5.png +0 -0
  1080. package/style/visual-screenshots (1)/images/73ff7a530dde350815d23ff6a24031a0.png +0 -0
  1081. package/style/visual-screenshots (1)/images/743a4ff37dbc8c26ed1379fad764407d.png +0 -0
  1082. package/style/visual-screenshots (1)/images/745ce91134a9c726aee22be8e5dfcd28.png +0 -0
  1083. package/style/visual-screenshots (1)/images/7476eb8a4b6b6c21d7366cd7b839cd8e.png +0 -0
  1084. package/style/visual-screenshots (1)/images/74a5d110629e8bed44951ecc69d46e37.png +0 -0
  1085. package/style/visual-screenshots (1)/images/74d2a451e8fe666e4cdd4ee104e3fbcb.png +0 -0
  1086. package/style/visual-screenshots (1)/images/76dcdcc9887459636f81578fa8e72f0d.png +0 -0
  1087. package/style/visual-screenshots (1)/images/772fd7072ade47ddd50f5daf9fe78b06.png +0 -0
  1088. package/style/visual-screenshots (1)/images/77555003b57945e07b81f4bbc8da45a5.png +0 -0
  1089. package/style/visual-screenshots (1)/images/7845c6559ae2b8cfa3eec51d52e628c1.png +0 -0
  1090. package/style/visual-screenshots (1)/images/784772bde66cc378572a46b681b6cafe.png +0 -0
  1091. package/style/visual-screenshots (1)/images/791f88fcb8a69681a876b21c6059e038.png +0 -0
  1092. package/style/visual-screenshots (1)/images/7a14e2ed34311c3ddd03ab2b7e8b57e5.png +0 -0
  1093. package/style/visual-screenshots (1)/images/7a5376f8127ccbce92efa2dc7d6e434a.png +0 -0
  1094. package/style/visual-screenshots (1)/images/7b05dd84aacb821c812f835a0580c001.png +0 -0
  1095. package/style/visual-screenshots (1)/images/7b11547ab77114942b3590f5274ccb36.png +0 -0
  1096. package/style/visual-screenshots (1)/images/7b6676b606f3fd4fa89d824c97473517.png +0 -0
  1097. package/style/visual-screenshots (1)/images/7b6e5af31520f5e8813017dd4f98c8d6.png +0 -0
  1098. package/style/visual-screenshots (1)/images/7b89bf68bb12f5cee6947bd5af2520d7.png +0 -0
  1099. package/style/visual-screenshots (1)/images/7b90db4c1dcaeed7cf71f5bae65d327a.png +0 -0
  1100. package/style/visual-screenshots (1)/images/7bb540ca4abee17cdffe6944c8ff0948.png +0 -0
  1101. package/style/visual-screenshots (1)/images/7c01812ede9c4d58571ccf59904bb1b1.png +0 -0
  1102. package/style/visual-screenshots (1)/images/7c096666a0954392e0d657c8759963eb.png +0 -0
  1103. package/style/visual-screenshots (1)/images/7c7593da4f5a9d04f800284023edb554.png +0 -0
  1104. package/style/visual-screenshots (1)/images/7c82ecbc586641289f31f0cc27b017cd.png +0 -0
  1105. package/style/visual-screenshots (1)/images/7c8e1def6b12da12f07536140e2b88b3.png +0 -0
  1106. package/style/visual-screenshots (1)/images/7c916534306207f114d952bfe9340e5e.png +0 -0
  1107. package/style/visual-screenshots (1)/images/7d3331d3cf93defe00a04cd10c57c6c6.png +0 -0
  1108. package/style/visual-screenshots (1)/images/7da3d1c71e1e4b088f77e751a940b6a2.png +0 -0
  1109. package/style/visual-screenshots (1)/images/7da65ded5bfe4c858e0c24ff1e1aa22d.png +0 -0
  1110. package/style/visual-screenshots (1)/images/7daca2b5b705d27e8d5090f7dbb8acac.png +0 -0
  1111. package/style/visual-screenshots (1)/images/7e8b4c9c2ac796fd5c5c730a430ef2e4.png +0 -0
  1112. package/style/visual-screenshots (1)/images/7f06654399aca40b333099bec24468af.png +0 -0
  1113. package/style/visual-screenshots (1)/images/7f8ae3d8e54291115e892c51d485df16.png +0 -0
  1114. package/style/visual-screenshots (1)/images/7fb8ddb922c39be025d60076f51efcbd.png +0 -0
  1115. package/style/visual-screenshots (1)/images/7fc57b3e4c1d14d0a86891a6c80ff12f.png +0 -0
  1116. package/style/visual-screenshots (1)/images/8062b189081773e44a640a8d067046a0.png +0 -0
  1117. package/style/visual-screenshots (1)/images/8083c957effa18fb290a5b0bdf2ad6cb.png +0 -0
  1118. package/style/visual-screenshots (1)/images/80bbb318ca9792a3f16de017ea346d0c.png +0 -0
  1119. package/style/visual-screenshots (1)/images/81c89f3dbeafdd793458d9339c7c607b.png +0 -0
  1120. package/style/visual-screenshots (1)/images/81d7507828e5d8d66f7e161f74e45405.png +0 -0
  1121. package/style/visual-screenshots (1)/images/82045c605de46b4aa7f386601ddb8884.png +0 -0
  1122. package/style/visual-screenshots (1)/images/8245fbfd4b80b96b0254563f86b726ba.png +0 -0
  1123. package/style/visual-screenshots (1)/images/82497fc1570674a5421e926475feac1b.png +0 -0
  1124. package/style/visual-screenshots (1)/images/8252196c9f384ba181cc026acd29d928.png +0 -0
  1125. package/style/visual-screenshots (1)/images/82706af2011a1e7149813131c420a1fa.png +0 -0
  1126. package/style/visual-screenshots (1)/images/82a37a51e30a418ac408149f02adbbee.png +0 -0
  1127. package/style/visual-screenshots (1)/images/83080cdc524b169211c70c9dfdb6fd9e.png +0 -0
  1128. package/style/visual-screenshots (1)/images/830ba1a526dd905bce415b056de3ddb9.png +0 -0
  1129. package/style/visual-screenshots (1)/images/833dc08e69770233fa3915653b3dfb4d.png +0 -0
  1130. package/style/visual-screenshots (1)/images/8375d9df6b63faa9f30eda79e8c80a83.png +0 -0
  1131. package/style/visual-screenshots (1)/images/839c2b39bcaa6830906b9da5d890c1ae.png +0 -0
  1132. package/style/visual-screenshots (1)/images/8431110776be033ec282fd895a9ae813.png +0 -0
  1133. package/style/visual-screenshots (1)/images/851318a57f46c9da1144fe8faf984da4.png +0 -0
  1134. package/style/visual-screenshots (1)/images/8514c1d4ee26054ee07d11a0fe33f0db.png +0 -0
  1135. package/style/visual-screenshots (1)/images/855d767000e9a4a272a2e753628a8474.png +0 -0
  1136. package/style/visual-screenshots (1)/images/85d83f9f94a1adc9dcb60e0c13db29c1.png +0 -0
  1137. package/style/visual-screenshots (1)/images/86236e1f7726cc775fdfbd9d967b892e.png +0 -0
  1138. package/style/visual-screenshots (1)/images/865d7994dfb71cc52f659c784ab77089.png +0 -0
  1139. package/style/visual-screenshots (1)/images/867dba1a3a0e5d10d9852a57eaf4f7f2.png +0 -0
  1140. package/style/visual-screenshots (1)/images/868a694b756597afd5cbd8991ed9fa6e.png +0 -0
  1141. package/style/visual-screenshots (1)/images/86fd1791a257ca240a96d32f587a6798.png +0 -0
  1142. package/style/visual-screenshots (1)/images/8731210b8a1307c635c914344026cd7c.png +0 -0
  1143. package/style/visual-screenshots (1)/images/874d6a50e723c879a585b73e4e54229b.png +0 -0
  1144. package/style/visual-screenshots (1)/images/8753b744d14e6bf1be2fd926a564c3e9.png +0 -0
  1145. package/style/visual-screenshots (1)/images/87eeecd4041819cac6f766c67f879a0d.png +0 -0
  1146. package/style/visual-screenshots (1)/images/8816c9e1431fdfd5465d5a40c052309b.png +0 -0
  1147. package/style/visual-screenshots (1)/images/885b77ceaf7e7a8908fd5b147c5a5217.png +0 -0
  1148. package/style/visual-screenshots (1)/images/8923cdd532219aac9e71558dbd1186f9.png +0 -0
  1149. package/style/visual-screenshots (1)/images/894bd3d4137d2ca7f4f71b2d53de379c.png +0 -0
  1150. package/style/visual-screenshots (1)/images/8a801b5532051d67612de96df713f59a.png +0 -0
  1151. package/style/visual-screenshots (1)/images/8aca19545cb02a7fd00f5d84a1fc4ee1.png +0 -0
  1152. package/style/visual-screenshots (1)/images/8ae35388a8ed4604acc175b6953b1a12.png +0 -0
  1153. package/style/visual-screenshots (1)/images/8b12f8f1234a0fdcd5cb800f5fdd4704.png +0 -0
  1154. package/style/visual-screenshots (1)/images/8b674a86e1db9dda1dedaa07cc25a569.png +0 -0
  1155. package/style/visual-screenshots (1)/images/8b7cd1fafd046cdd7200189a3a8e424f.png +0 -0
  1156. package/style/visual-screenshots (1)/images/8ba1ee43c2d10f779da98898000d6d6f.png +0 -0
  1157. package/style/visual-screenshots (1)/images/8bfc88f25acf24bb557f3790231b9cc5.png +0 -0
  1158. package/style/visual-screenshots (1)/images/8c0bc63f7d57338b59338292b4d20e1c.png +0 -0
  1159. package/style/visual-screenshots (1)/images/8c2a062564d8b55e5686d80995c0132e.png +0 -0
  1160. package/style/visual-screenshots (1)/images/8c98ce176a13df14843cbb6423fd6440.png +0 -0
  1161. package/style/visual-screenshots (1)/images/8cc5eded9abb67747e8a18cefb51df6d.png +0 -0
  1162. package/style/visual-screenshots (1)/images/8d31ec4d9f7bbc9f753f70f2e2fe7781.png +0 -0
  1163. package/style/visual-screenshots (1)/images/8d4761d0c860b4bdc923c78a60c6c7db.png +0 -0
  1164. package/style/visual-screenshots (1)/images/8d8c786a27f502d297333e0f65e5fe7e.png +0 -0
  1165. package/style/visual-screenshots (1)/images/8da3dcbc2a7e12489844a3d5e034ce78.png +0 -0
  1166. package/style/visual-screenshots (1)/images/8e4e5baa65c536003c41d48d4a9d468c.png +0 -0
  1167. package/style/visual-screenshots (1)/images/8e8f3e052eed01419d45167ec3d31705.png +0 -0
  1168. package/style/visual-screenshots (1)/images/8ec5450454d067c364839f82e25a956d.png +0 -0
  1169. package/style/visual-screenshots (1)/images/8ed1408bb2065b8a868349005c1f140d.png +0 -0
  1170. package/style/visual-screenshots (1)/images/8f1c9b14d29c9264c5491f98fa9de9e8.png +0 -0
  1171. package/style/visual-screenshots (1)/images/8f5f36e9fcfb73d98fc44d844ead6bcd.png +0 -0
  1172. package/style/visual-screenshots (1)/images/8f69a3e8bb80e42b327daa0413f484a3.png +0 -0
  1173. package/style/visual-screenshots (1)/images/8fbd2b83ca71d26193f78355c1a7469d.png +0 -0
  1174. package/style/visual-screenshots (1)/images/9026dfe577f38e5be6fec9dafa010056.png +0 -0
  1175. package/style/visual-screenshots (1)/images/906cf5fcfc43ec7f7a1743b1fbba08d0.png +0 -0
  1176. package/style/visual-screenshots (1)/images/909185691877d3ab730fbc98e563b5cc.png +0 -0
  1177. package/style/visual-screenshots (1)/images/9093d74b6c429faa6d6098bb3b42122e.png +0 -0
  1178. package/style/visual-screenshots (1)/images/90b4a73410a4a0f48bf9d2803fc71b38.png +0 -0
  1179. package/style/visual-screenshots (1)/images/90c068953b90c743da83a12da5204a0e.png +0 -0
  1180. package/style/visual-screenshots (1)/images/914841508f534fc579907f3ff4e94eda.png +0 -0
  1181. package/style/visual-screenshots (1)/images/926a60a1ac5968259e786e8c4c8c9d26.png +0 -0
  1182. package/style/visual-screenshots (1)/images/93f5b096a1eb89744a98d090479f90c9.png +0 -0
  1183. package/style/visual-screenshots (1)/images/946bbf46e754018058a8a17e5781b37c.png +0 -0
  1184. package/style/visual-screenshots (1)/images/94a53d14a1e5f3fcb2f22b91642dc2cb.png +0 -0
  1185. package/style/visual-screenshots (1)/images/94f93fc2109c3efac0cc508846fc09c6.png +0 -0
  1186. package/style/visual-screenshots (1)/images/953979d501129c69e5cc0e1fd9acedf9.png +0 -0
  1187. package/style/visual-screenshots (1)/images/9554d90e572ac282fec64cefe1d65eae.png +0 -0
  1188. package/style/visual-screenshots (1)/images/95a3854979faaf7e3da15b81212fdddd.png +0 -0
  1189. package/style/visual-screenshots (1)/images/95d64ce8dc7d7f80747dbb433cbd69b2.png +0 -0
  1190. package/style/visual-screenshots (1)/images/95f250a29638c7a592e162fe065bc851.png +0 -0
  1191. package/style/visual-screenshots (1)/images/962f28dd09eac1fa2811894bf4be9b70.png +0 -0
  1192. package/style/visual-screenshots (1)/images/964706df4434f4e905f967de3d3dc125.png +0 -0
  1193. package/style/visual-screenshots (1)/images/9681d81d32fb1f90ca44c3f69b9f0921.png +0 -0
  1194. package/style/visual-screenshots (1)/images/97660bd70cc5e96d6258c1ed95c0935c.png +0 -0
  1195. package/style/visual-screenshots (1)/images/976ebf4299d8ca702219b1e74419f704.png +0 -0
  1196. package/style/visual-screenshots (1)/images/97cf49835bd0c2bf7811a7bdf3be89bc.png +0 -0
  1197. package/style/visual-screenshots (1)/images/97e8a0e95dcff699c46f9b1b88b87d8a.png +0 -0
  1198. package/style/visual-screenshots (1)/images/9807fabc447e7dae30fbbe6754e02c0d.png +0 -0
  1199. package/style/visual-screenshots (1)/images/98ee9e5fb88515a8dbf5fe0e091c993a.png +0 -0
  1200. package/style/visual-screenshots (1)/images/9997cd9e92d50b13a900ecb22fc74e83.png +0 -0
  1201. package/style/visual-screenshots (1)/images/9a0b82d87e48b2c9e146bfbd4b51a177.png +0 -0
  1202. package/style/visual-screenshots (1)/images/9a41a04f72770185eb42d3941627c6a1.png +0 -0
  1203. package/style/visual-screenshots (1)/images/9a5b6ff3d85a26850b93d3129de94bbc.png +0 -0
  1204. package/style/visual-screenshots (1)/images/9a9397907d86e4bdce381d4017ec5c33.png +0 -0
  1205. package/style/visual-screenshots (1)/images/9ae63f1d387740d15676acf9a5bc48b8.png +0 -0
  1206. package/style/visual-screenshots (1)/images/9b00734aa8cbf1a9acd3fbf08c137b0a.png +0 -0
  1207. package/style/visual-screenshots (1)/images/9b07449ac15dc7e1d1deb9b825be0924.png +0 -0
  1208. package/style/visual-screenshots (1)/images/9b18a6ddb96cbd44795e2bbc536f4f2a.png +0 -0
  1209. package/style/visual-screenshots (1)/images/9b4014c74037f975344b9ac678229e65.png +0 -0
  1210. package/style/visual-screenshots (1)/images/9b5118241eb4c97880a8a53129b9ea63.png +0 -0
  1211. package/style/visual-screenshots (1)/images/9b594e815378bc9a2ef6cd6251dc9d6b.png +0 -0
  1212. package/style/visual-screenshots (1)/images/9bc0a1284fc2c56e95ff22ae764e02c0.png +0 -0
  1213. package/style/visual-screenshots (1)/images/9bdf5a8be0ecbe48e58b74552e4c5888.png +0 -0
  1214. package/style/visual-screenshots (1)/images/9ce93b76501e11f52d1d6c27c6d3afb7.png +0 -0
  1215. package/style/visual-screenshots (1)/images/9d272894b4135cdb24bd6dd6d23dd421.png +0 -0
  1216. package/style/visual-screenshots (1)/images/9d3806b2870669edff4fea8574250bf7.png +0 -0
  1217. package/style/visual-screenshots (1)/images/9d6ec965e5a23731bd189dfbb3c80e84.png +0 -0
  1218. package/style/visual-screenshots (1)/images/9da4037f79a0f2ad50f8adc04687eb12.png +0 -0
  1219. package/style/visual-screenshots (1)/images/9dcd7eda71b2347d026409b2342b3e39.png +0 -0
  1220. package/style/visual-screenshots (1)/images/9de702c3bb72425b0e61d0b4d5a30b82.png +0 -0
  1221. package/style/visual-screenshots (1)/images/9e08fce5233bbc69e681eb1ef349acc0.png +0 -0
  1222. package/style/visual-screenshots (1)/images/9ea6570856b521aa566047e92d0f8305.png +0 -0
  1223. package/style/visual-screenshots (1)/images/9ebdf4d34c2713e0f0cedb0c778b2c35.png +0 -0
  1224. package/style/visual-screenshots (1)/images/9ec5435fc1248519bcc369f282c010c9.png +0 -0
  1225. package/style/visual-screenshots (1)/images/9ee6d0e821a1f9c789514aef157a40ee.png +0 -0
  1226. package/style/visual-screenshots (1)/images/9f1bfd0ae43a5c83303dcf205dc86aac.png +0 -0
  1227. package/style/visual-screenshots (1)/images/9f268b6848b910b5d9c8094077405609.png +0 -0
  1228. package/style/visual-screenshots (1)/images/9f3bdce5cba7a4c333f3e4e32697ed1e.png +0 -0
  1229. package/style/visual-screenshots (1)/images/9fa64b6dd5e2432e5ac5be0125de88c5.png +0 -0
  1230. package/style/visual-screenshots (1)/images/a00ff5334e96e86b5de74ca70e158365.png +0 -0
  1231. package/style/visual-screenshots (1)/images/a0273543e221b5e74f2f92eedff87bbf.png +0 -0
  1232. package/style/visual-screenshots (1)/images/a0860b4739ea0bf437f0fa1dc983edcc.png +0 -0
  1233. package/style/visual-screenshots (1)/images/a09b998ff83fe0c8ba190c43be2c8281.png +0 -0
  1234. package/style/visual-screenshots (1)/images/a0a9b6948dfa55de2c2391e66f116bef.png +0 -0
  1235. package/style/visual-screenshots (1)/images/a0d9fd7c91a3666c82a8a1d1473647ff.png +0 -0
  1236. package/style/visual-screenshots (1)/images/a122b735ee40793efef3ad06ff66c62a.png +0 -0
  1237. package/style/visual-screenshots (1)/images/a1595ea5cac31981a01027ab16de609d.png +0 -0
  1238. package/style/visual-screenshots (1)/images/a19c2ba30b43cb891f2536ebda33b5b9.png +0 -0
  1239. package/style/visual-screenshots (1)/images/a19daa3bfb03b36036e5954c38b3c09b.png +0 -0
  1240. package/style/visual-screenshots (1)/images/a1c13afc2158133f6f248eeec0c213c9.png +0 -0
  1241. package/style/visual-screenshots (1)/images/a234da24efdb5886b5017293c9ec4983.png +0 -0
  1242. package/style/visual-screenshots (1)/images/a267c84cc70ffcfd9f9098872b4d0e33.png +0 -0
  1243. package/style/visual-screenshots (1)/images/a29ab04f7b14796a43ec1004d07e1191.png +0 -0
  1244. package/style/visual-screenshots (1)/images/a331b266be3fe60d1510fc44c8462f8b.png +0 -0
  1245. package/style/visual-screenshots (1)/images/a3b55159499c5529bdb159350ea483f8.png +0 -0
  1246. package/style/visual-screenshots (1)/images/a3d54f0bbe60534633595f92c0af0606.png +0 -0
  1247. package/style/visual-screenshots (1)/images/a3f82ac3c6348fa4452a198cb503860d.png +0 -0
  1248. package/style/visual-screenshots (1)/images/a481b24ed810261cbae6bce62a1fd6da.png +0 -0
  1249. package/style/visual-screenshots (1)/images/a4da8641e0ebce45d567a27b1b9d71c9.png +0 -0
  1250. package/style/visual-screenshots (1)/images/a4e17fa06168594ff442f3d84ca346e0.png +0 -0
  1251. package/style/visual-screenshots (1)/images/a4ec66bb6e0a2bf7d26898a7ec6fa6cb.png +0 -0
  1252. package/style/visual-screenshots (1)/images/a4f5b46346578f27b509ab8ba9062b2a.png +0 -0
  1253. package/style/visual-screenshots (1)/images/a524cc5916040ea0985aa14f5039cd08.png +0 -0
  1254. package/style/visual-screenshots (1)/images/a56c0004f5f488bc5f4f8812479ff919.png +0 -0
  1255. package/style/visual-screenshots (1)/images/a5760e6af3aac912f3c69d88eabc9571.png +0 -0
  1256. package/style/visual-screenshots (1)/images/a5823b26b36bef69818dc786e72722c7.png +0 -0
  1257. package/style/visual-screenshots (1)/images/a59e098a82b3b2b4a8e6e6e0ae9a82ee.png +0 -0
  1258. package/style/visual-screenshots (1)/images/a5b60fb10746df7698e43bccb21df11b.png +0 -0
  1259. package/style/visual-screenshots (1)/images/a5e9bd136ccd404fa0c0a275e757246f.png +0 -0
  1260. package/style/visual-screenshots (1)/images/a62e4c8295a725e4a66cc2ec4408c4bd.png +0 -0
  1261. package/style/visual-screenshots (1)/images/a6492327cb0dabcd2d74dbd1816f422d.png +0 -0
  1262. package/style/visual-screenshots (1)/images/a6cfa33b833e8507b5f3cbfa260ee54f.png +0 -0
  1263. package/style/visual-screenshots (1)/images/a75a60a4aa5b275fd399051abf56d08e.png +0 -0
  1264. package/style/visual-screenshots (1)/images/a770465023ed9653c5209e93264e927e.png +0 -0
  1265. package/style/visual-screenshots (1)/images/a83dbd9419c386d226bee5eda2e6673b.png +0 -0
  1266. package/style/visual-screenshots (1)/images/a87075c6eb331fcab77dedffee6c8321.png +0 -0
  1267. package/style/visual-screenshots (1)/images/a8b8f7209998b3d0a72b9719083dc02a.png +0 -0
  1268. package/style/visual-screenshots (1)/images/a9a1de0b8dd7b6ccab5b47f73dd7f842.png +0 -0
  1269. package/style/visual-screenshots (1)/images/a9c7c835f865512a77038fc5c15de21b.png +0 -0
  1270. package/style/visual-screenshots (1)/images/aa30e7b644de69d60faa5380ca95c5a1.png +0 -0
  1271. package/style/visual-screenshots (1)/images/aa4abb72226bb8321d4b9258f9857b71.png +0 -0
  1272. package/style/visual-screenshots (1)/images/aa51db31d331669430896690342d81dc.png +0 -0
  1273. package/style/visual-screenshots (1)/images/aa9b522302f4dd7150ecbfbb275320e6.png +0 -0
  1274. package/style/visual-screenshots (1)/images/aaa1b0619e13093f63d4156375b60010.png +0 -0
  1275. package/style/visual-screenshots (1)/images/ab5d93b635bae2b5fe23f583eac012ce.png +0 -0
  1276. package/style/visual-screenshots (1)/images/abb03b840550301215bf11bcfc214de4.png +0 -0
  1277. package/style/visual-screenshots (1)/images/ac03f528e1ea478ed33ba9fb5322e3fb.png +0 -0
  1278. package/style/visual-screenshots (1)/images/ac1974812f40ea59d34307ac02a5f70c.png +0 -0
  1279. package/style/visual-screenshots (1)/images/ac2cf23c673a4453be9f71a678bf457e.png +0 -0
  1280. package/style/visual-screenshots (1)/images/ac4258921c4fac19bf9d885fe18d1783.png +0 -0
  1281. package/style/visual-screenshots (1)/images/ac5b064d25b63e5ecd63a91d495dfe5b.png +0 -0
  1282. package/style/visual-screenshots (1)/images/ac8524eb52a8b18d3727f9755658f457.png +0 -0
  1283. package/style/visual-screenshots (1)/images/acd224f13e0e43e4d81990ea06b683f1.png +0 -0
  1284. package/style/visual-screenshots (1)/images/acd8684a795357b531129eb92d03dbf0.png +0 -0
  1285. package/style/visual-screenshots (1)/images/ace6a74377e1fd6f83aa5dba48c8f4ee.png +0 -0
  1286. package/style/visual-screenshots (1)/images/ad0b716887153cae4ebdd7a50e332ad1.png +0 -0
  1287. package/style/visual-screenshots (1)/images/ad74bf7ecefe38d32f843eac59d05bcf.png +0 -0
  1288. package/style/visual-screenshots (1)/images/adad3039bbf24803cc0c800fa1ab52b2.png +0 -0
  1289. package/style/visual-screenshots (1)/images/add742b5f9addb0c591ef066157dd0d7.png +0 -0
  1290. package/style/visual-screenshots (1)/images/adf3ec3a8e97c3b33e77394946ad2434.png +0 -0
  1291. package/style/visual-screenshots (1)/images/adfd03e01df5610028a7b8c22de1d1b5.png +0 -0
  1292. package/style/visual-screenshots (1)/images/ae308ee925b5ad76aea7d7c989003c6c.png +0 -0
  1293. package/style/visual-screenshots (1)/images/ae5ba79ab620185002de1e0e2869fea8.png +0 -0
  1294. package/style/visual-screenshots (1)/images/aed0d8ffabcb9d4680499b39bb909cfb.png +0 -0
  1295. package/style/visual-screenshots (1)/images/af5ce31cf5f312b6bda76f748fabb52f.png +0 -0
  1296. package/style/visual-screenshots (1)/images/af77365d82e0f07b3957f3c77dfa5810.png +0 -0
  1297. package/style/visual-screenshots (1)/images/afc1be11da46a18bb8982a85c65fb4b0.png +0 -0
  1298. package/style/visual-screenshots (1)/images/b011549fe677ebb17fa307dbc03d36d9.png +0 -0
  1299. package/style/visual-screenshots (1)/images/b0bff9f5d7141b079b666e5fb16abd22.png +0 -0
  1300. package/style/visual-screenshots (1)/images/b0dbbbef7ff3804d58ce28e9685b88e0.png +0 -0
  1301. package/style/visual-screenshots (1)/images/b0dfa6af25989c4c3d2e9aef64daab17.png +0 -0
  1302. package/style/visual-screenshots (1)/images/b10bf8e372bca5d68241320f75bc1748.png +0 -0
  1303. package/style/visual-screenshots (1)/images/b10ed3d6ec38c9c253a4446e106e75ea.png +0 -0
  1304. package/style/visual-screenshots (1)/images/b141a65b0038d524dd290c00eddace3d.png +0 -0
  1305. package/style/visual-screenshots (1)/images/b16111054dc7e5c31d822180d54ea0e6.png +0 -0
  1306. package/style/visual-screenshots (1)/images/b1776e0a89f070ea680f256ed27ebf1e.png +0 -0
  1307. package/style/visual-screenshots (1)/images/b27ff00e501d23c43b509c1a0168ef39.png +0 -0
  1308. package/style/visual-screenshots (1)/images/b2aa4c06bcefcb7c92204acdd30d3197.png +0 -0
  1309. package/style/visual-screenshots (1)/images/b2fef056d1f15f4ba8619f31541dd0e5.png +0 -0
  1310. package/style/visual-screenshots (1)/images/b35f5b3650f7806ab3390e0ba67df1a4.png +0 -0
  1311. package/style/visual-screenshots (1)/images/b3dd87d68dcdfd82fa97cdf4e39c2b27.png +0 -0
  1312. package/style/visual-screenshots (1)/images/b3e5876c63e8256843b4090dc4b441ad.png +0 -0
  1313. package/style/visual-screenshots (1)/images/b3f19d58a18bfd34f92764ec41877c3c.png +0 -0
  1314. package/style/visual-screenshots (1)/images/b43533c13c416aad326bc67d0f44929e.png +0 -0
  1315. package/style/visual-screenshots (1)/images/b4382971635528760348cbe2b70605fe.png +0 -0
  1316. package/style/visual-screenshots (1)/images/b45844d5501be7c8431cc1306e3f3ae5.png +0 -0
  1317. package/style/visual-screenshots (1)/images/b468a14b6c8e54db94b61c71b9662af0.png +0 -0
  1318. package/style/visual-screenshots (1)/images/b4a02c9fc04ef4dc159e7beccd7ccfa7.png +0 -0
  1319. package/style/visual-screenshots (1)/images/b4b41ceb35d80f9f629859558b75b19e.png +0 -0
  1320. package/style/visual-screenshots (1)/images/b4edb5a1c390edd5c541c18e1a4ab68f.png +0 -0
  1321. package/style/visual-screenshots (1)/images/b513f66c5fdbab3a28e7db1b23bfb8c2.png +0 -0
  1322. package/style/visual-screenshots (1)/images/b5160b2c865a5e7b7d8b1e1abbf8d002.png +0 -0
  1323. package/style/visual-screenshots (1)/images/b52890091cf696f0150eae61232cb1dd.png +0 -0
  1324. package/style/visual-screenshots (1)/images/b56bb2b3dd4141b8e698820a515b8798.png +0 -0
  1325. package/style/visual-screenshots (1)/images/b5af14253c4cc74f16ddb0b6164f185c.png +0 -0
  1326. package/style/visual-screenshots (1)/images/b63069789fa7ac11755ea759d30a64a5.png +0 -0
  1327. package/style/visual-screenshots (1)/images/b651f7f296cf9f30e419d94a8c4895cf.png +0 -0
  1328. package/style/visual-screenshots (1)/images/b65482e30ffb8bec6c85103dcb71113d.png +0 -0
  1329. package/style/visual-screenshots (1)/images/b65b4bdb5c82820722ea76182517bc74.png +0 -0
  1330. package/style/visual-screenshots (1)/images/b65b9d44dcba156ab3152a6ee2592277.png +0 -0
  1331. package/style/visual-screenshots (1)/images/b68552f8eb800b1891a49bf1cd4d987d.png +0 -0
  1332. package/style/visual-screenshots (1)/images/b68eacd41b21135a2c2431a3ddc2dae5.png +0 -0
  1333. package/style/visual-screenshots (1)/images/b6a9a44405f5e4034c95f55ee8aed681.png +0 -0
  1334. package/style/visual-screenshots (1)/images/b6d2d0f7d50094fd163351d07a5e9251.png +0 -0
  1335. package/style/visual-screenshots (1)/images/b6ec4162d1414d4011b787dd127bad96.png +0 -0
  1336. package/style/visual-screenshots (1)/images/b6fe711492d73a1ad83be68fd782b5be.png +0 -0
  1337. package/style/visual-screenshots (1)/images/b702cca4b4fe43f208a58f37e4a7d0c8.png +0 -0
  1338. package/style/visual-screenshots (1)/images/b74e84ef684b263e0390552911c7b630.png +0 -0
  1339. package/style/visual-screenshots (1)/images/b76dc3cd48583a70f3f99348e259a192.png +0 -0
  1340. package/style/visual-screenshots (1)/images/b79d300707e6efd85959e1727354cda9.png +0 -0
  1341. package/style/visual-screenshots (1)/images/b7f774a62a166681f5e34f4f92e7df96.png +0 -0
  1342. package/style/visual-screenshots (1)/images/b85b4a6d8172ec3d4fe3875d1d5be438.png +0 -0
  1343. package/style/visual-screenshots (1)/images/b8fd7356a98d56ee49951392bc0a19f5.png +0 -0
  1344. package/style/visual-screenshots (1)/images/b9239778dee867ed3f14d2f3ffecd8d5.png +0 -0
  1345. package/style/visual-screenshots (1)/images/b936ab1e543d95bd0c818b0d2ddade05.png +0 -0
  1346. package/style/visual-screenshots (1)/images/b9afd9043e717ea55cd0a7c2e8768ec0.png +0 -0
  1347. package/style/visual-screenshots (1)/images/b9b032bae3f927fc7492af0717480a7c.png +0 -0
  1348. package/style/visual-screenshots (1)/images/ba1fea1b865b3beef1a1135bd779a706.png +0 -0
  1349. package/style/visual-screenshots (1)/images/ba2cbf010b08ef17e500a9a6f09756eb.png +0 -0
  1350. package/style/visual-screenshots (1)/images/ba900133c62ae20a043c8145deb72e61.png +0 -0
  1351. package/style/visual-screenshots (1)/images/bab341bf211ffe1d1cdcff9735458a37.png +0 -0
  1352. package/style/visual-screenshots (1)/images/bb54094e275897982cdadf3573cae164.png +0 -0
  1353. package/style/visual-screenshots (1)/images/bb551e3ba230869e0f7f74597ebdc929.png +0 -0
  1354. package/style/visual-screenshots (1)/images/bb5dc88ef581957bcde4779c0b6f96be.png +0 -0
  1355. package/style/visual-screenshots (1)/images/bb671a54edc0e2807e0ee792010765ce.png +0 -0
  1356. package/style/visual-screenshots (1)/images/bb6a7307e19bf9e4c588df181c01cf82.png +0 -0
  1357. package/style/visual-screenshots (1)/images/bb9c61c2c52257e6ac08122fc873e0a5.png +0 -0
  1358. package/style/visual-screenshots (1)/images/bb9d4ba104d323a504b867a9e7c26fa7.png +0 -0
  1359. package/style/visual-screenshots (1)/images/bbfc81ede881c3480dedc09c932b357c.png +0 -0
  1360. package/style/visual-screenshots (1)/images/bc69c3fc828d0ccd43620f5d7789f687.png +0 -0
  1361. package/style/visual-screenshots (1)/images/bc6a45c5e234c06fe2909be16df5cd68.png +0 -0
  1362. package/style/visual-screenshots (1)/images/bc7fbfc8cfa6fbaf42c181a83bc8f12e.png +0 -0
  1363. package/style/visual-screenshots (1)/images/bc812929e7194062888770b42ea680fa.png +0 -0
  1364. package/style/visual-screenshots (1)/images/bcf29c250245fcd6d4cd80fbb2076fe6.png +0 -0
  1365. package/style/visual-screenshots (1)/images/bd0adcbbc6b9f54fd8dc2c45f91118cf.png +0 -0
  1366. package/style/visual-screenshots (1)/images/bd2c0d240faaa73548693dd8792bd334.png +0 -0
  1367. package/style/visual-screenshots (1)/images/bd3c8aca71ef1e1bfcf54c9bdf7ec0c1.png +0 -0
  1368. package/style/visual-screenshots (1)/images/bd742a3ba78f04988baceee07b34b4c8.png +0 -0
  1369. package/style/visual-screenshots (1)/images/bde82fcc550d92789d65c593e33b9fa1.png +0 -0
  1370. package/style/visual-screenshots (1)/images/be0d5c5d87ffd9eb20686d37ded21477.png +0 -0
  1371. package/style/visual-screenshots (1)/images/be2d1a5e2a20ec9e70974dfd8ad15c05.png +0 -0
  1372. package/style/visual-screenshots (1)/images/be343f108940ac377accd7cd07cdd1e7.png +0 -0
  1373. package/style/visual-screenshots (1)/images/be40fd335f837d2f5a1d803b3aed4c94.png +0 -0
  1374. package/style/visual-screenshots (1)/images/bea6a7939bf5c8f3034f9f36d3aa83a0.png +0 -0
  1375. package/style/visual-screenshots (1)/images/bed34ed4f9077f51952b51283f4b473b.png +0 -0
  1376. package/style/visual-screenshots (1)/images/bedd63152750246fbfff2f3b8694840a.png +0 -0
  1377. package/style/visual-screenshots (1)/images/bf112e6d28f4ea8ab3c84b88d685cb92.png +0 -0
  1378. package/style/visual-screenshots (1)/images/bf1e7977779e36731e8cf90de8a2c018.png +0 -0
  1379. package/style/visual-screenshots (1)/images/bfbf13672d796f88652747c1c627c225.png +0 -0
  1380. package/style/visual-screenshots (1)/images/c14ed538a5d1e19c581b8a480a410873.png +0 -0
  1381. package/style/visual-screenshots (1)/images/c1a6e457a74e6f1e39d8056a575c6b61.png +0 -0
  1382. package/style/visual-screenshots (1)/images/c1bf639cb4ef73d3097a86bbe242e67b.png +0 -0
  1383. package/style/visual-screenshots (1)/images/c1e92e74a76d59360620dd36a44b48d7.png +0 -0
  1384. package/style/visual-screenshots (1)/images/c25a03ca4b6a75b60ca989c922a8c0ea.png +0 -0
  1385. package/style/visual-screenshots (1)/images/c29a6ce74d404486b42547c80ac64827.png +0 -0
  1386. package/style/visual-screenshots (1)/images/c2a8fd8eb01504bdf199bc631948fd65.png +0 -0
  1387. package/style/visual-screenshots (1)/images/c2b2a82c12745e02edc5a4296e64952e.png +0 -0
  1388. package/style/visual-screenshots (1)/images/c2e70eb9bba973017e04fde58f20439f.png +0 -0
  1389. package/style/visual-screenshots (1)/images/c31b279c27c044ff8023b74161774d65.png +0 -0
  1390. package/style/visual-screenshots (1)/images/c3de791621e788d6d096d488fdbf7eb7.png +0 -0
  1391. package/style/visual-screenshots (1)/images/c4347eb0e8a14227ad18be6b9de1cbc7.png +0 -0
  1392. package/style/visual-screenshots (1)/images/c45a7afc0498379e5b620ff4394e1759.png +0 -0
  1393. package/style/visual-screenshots (1)/images/c4bd15f6119ec6a9f86c7311605b8e9a.png +0 -0
  1394. package/style/visual-screenshots (1)/images/c5d033ba89e8621d33f0c1251f26cb94.png +0 -0
  1395. package/style/visual-screenshots (1)/images/c5f4925f4e800c08c097ac6cb57973c4.png +0 -0
  1396. package/style/visual-screenshots (1)/images/c645ca1d792395177ed9f550dc65ef98.png +0 -0
  1397. package/style/visual-screenshots (1)/images/c66f1911986c1798aa132cfda4c757c1.png +0 -0
  1398. package/style/visual-screenshots (1)/images/c6835996ac4b2b3f962a7c89245faa9e.png +0 -0
  1399. package/style/visual-screenshots (1)/images/c7295480cd7fd4a11a50458bb4bfc9c3.png +0 -0
  1400. package/style/visual-screenshots (1)/images/c76344aa17e7856258e6a7aba903caab.png +0 -0
  1401. package/style/visual-screenshots (1)/images/c7bbfb83d1e415c898256cc0fdcce3ca.png +0 -0
  1402. package/style/visual-screenshots (1)/images/c7c0f8a05585087c37d8209208bbcb54.png +0 -0
  1403. package/style/visual-screenshots (1)/images/c7de1a12552658b7fe3ce32a7f7ffb3e.png +0 -0
  1404. package/style/visual-screenshots (1)/images/c914e1a43cca34efae86f296ac56fdee.png +0 -0
  1405. package/style/visual-screenshots (1)/images/c9861de44663e597f55adc84ea88e5fc.png +0 -0
  1406. package/style/visual-screenshots (1)/images/c99d35eeb0dc348c34f4c8a9fe1c5f1d.png +0 -0
  1407. package/style/visual-screenshots (1)/images/ca32c8781f959efc16e24eeda14cc2d5.png +0 -0
  1408. package/style/visual-screenshots (1)/images/ca9c87751da7c73377da05d1cbf34974.png +0 -0
  1409. package/style/visual-screenshots (1)/images/cab16e07722c54b790e38a8b9995af8f.png +0 -0
  1410. package/style/visual-screenshots (1)/images/cb4e5d44970f3d22cfd664c95d5c23c6.png +0 -0
  1411. package/style/visual-screenshots (1)/images/cb99b0bf33401c42eebea1020004a1a8.png +0 -0
  1412. package/style/visual-screenshots (1)/images/cba574213771f455a9bd90fdd5711b82.png +0 -0
  1413. package/style/visual-screenshots (1)/images/cc30aaecf3c497e88d6e7aecae1b7583.png +0 -0
  1414. package/style/visual-screenshots (1)/images/cc690d6b70d361022b64cfd7e15aced7.png +0 -0
  1415. package/style/visual-screenshots (1)/images/ccc7eefe88ff7124ce9b7256a2754224.png +0 -0
  1416. package/style/visual-screenshots (1)/images/cd0ec559f03f247915ac7f28d051477f.png +0 -0
  1417. package/style/visual-screenshots (1)/images/cda5b907bdad7cc13b55cb525ff72402.png +0 -0
  1418. package/style/visual-screenshots (1)/images/ce19129cba94fa6ccfd2ab5416d93033.png +0 -0
  1419. package/style/visual-screenshots (1)/images/ce3c54aab036c6395dd8817abc6acfc6.png +0 -0
  1420. package/style/visual-screenshots (1)/images/ce4c143e3f25acaecf95fc6c74091386.png +0 -0
  1421. package/style/visual-screenshots (1)/images/ce639e1186fedb84b5d709bf36126612.png +0 -0
  1422. package/style/visual-screenshots (1)/images/ceca1dbf2a40a6524da989acf8c45825.png +0 -0
  1423. package/style/visual-screenshots (1)/images/cecd8cd95992457e1748c3bb0dd14f35.png +0 -0
  1424. package/style/visual-screenshots (1)/images/ced9cb27f2fe15debe7cae42e1b6347d.png +0 -0
  1425. package/style/visual-screenshots (1)/images/cf8ad194e11dfdb8aea6017def809c6f.png +0 -0
  1426. package/style/visual-screenshots (1)/images/cf95c3fcdb08ca9fd096c2aa90538a9f.png +0 -0
  1427. package/style/visual-screenshots (1)/images/d055162ca44e10714f581c72517de67a.png +0 -0
  1428. package/style/visual-screenshots (1)/images/d0907dbf3bbf9051d9ab0090a74eb8a2.png +0 -0
  1429. package/style/visual-screenshots (1)/images/d0dbadb5f8a71fe6a666cf4741ba583e.png +0 -0
  1430. package/style/visual-screenshots (1)/images/d0fc1daaab9d8154ac99b9923aca965e.png +0 -0
  1431. package/style/visual-screenshots (1)/images/d10379d630b08ba69cdbadef68160b74.png +0 -0
  1432. package/style/visual-screenshots (1)/images/d1dec19c84cc7d9d44d9bdbdc4ed0113.png +0 -0
  1433. package/style/visual-screenshots (1)/images/d1ecf153cbe7e6e5ab9df3ba963ac56a.png +0 -0
  1434. package/style/visual-screenshots (1)/images/d2085cde486b22d26ed3ed7dd092ac67.png +0 -0
  1435. package/style/visual-screenshots (1)/images/d21f0611ffb064596292ba09f7ae0aa7.png +0 -0
  1436. package/style/visual-screenshots (1)/images/d26da906f6e40a9f2de474ef00ffe192.png +0 -0
  1437. package/style/visual-screenshots (1)/images/d32bdba3c211974c488f05e49fdbd38e.png +0 -0
  1438. package/style/visual-screenshots (1)/images/d3f2e40808a135432120eec842002667.png +0 -0
  1439. package/style/visual-screenshots (1)/images/d3f4fb7a3520050add88a228446786c0.png +0 -0
  1440. package/style/visual-screenshots (1)/images/d42695727875489f5c823fc6a7637fc0.png +0 -0
  1441. package/style/visual-screenshots (1)/images/d43099f8107adb7d25c029fd861236c7.png +0 -0
  1442. package/style/visual-screenshots (1)/images/d465de97945852f83e9cfec896fda7fd.png +0 -0
  1443. package/style/visual-screenshots (1)/images/d4cb357a97d0069493f671c36973b023.png +0 -0
  1444. package/style/visual-screenshots (1)/images/d507e6178365edabfc44712f507b1ad4.png +0 -0
  1445. package/style/visual-screenshots (1)/images/d5c0ef8532ff82ac36069cd1a325ef27.png +0 -0
  1446. package/style/visual-screenshots (1)/images/d5d677892ed26746228c30990678ac38.png +0 -0
  1447. package/style/visual-screenshots (1)/images/d5ea4a9c77534f236c32e8f31e078587.png +0 -0
  1448. package/style/visual-screenshots (1)/images/d5f1ba6ddf9bbc40e86be0e2b82118af.png +0 -0
  1449. package/style/visual-screenshots (1)/images/d6069a71d1cf53673964d866460d32c8.png +0 -0
  1450. package/style/visual-screenshots (1)/images/d6242fd259465d2ba316d672684afcf7.png +0 -0
  1451. package/style/visual-screenshots (1)/images/d6b1c4c2db737fef0105bc33cda83309.png +0 -0
  1452. package/style/visual-screenshots (1)/images/d6c65a3c2f45d3f68984a0be5f3490bb.png +0 -0
  1453. package/style/visual-screenshots (1)/images/d6f1781682597261b255669cebe81e42.png +0 -0
  1454. package/style/visual-screenshots (1)/images/d7d9fb5a7dfc870527fb24b3642a56e3.png +0 -0
  1455. package/style/visual-screenshots (1)/images/d7deed321c78b937b9aac780d75a67e6.png +0 -0
  1456. package/style/visual-screenshots (1)/images/d8291cc7ad6e1607c344ed2ed1368ea3.png +0 -0
  1457. package/style/visual-screenshots (1)/images/d8560f2f2aeb2cf5601aac513f502b55.png +0 -0
  1458. package/style/visual-screenshots (1)/images/d8ba46aafe0f9c6e1a513c118e4ed9bc.png +0 -0
  1459. package/style/visual-screenshots (1)/images/d95148fef77af3db17d99a9e6d582f37.png +0 -0
  1460. package/style/visual-screenshots (1)/images/d9579cafca730bedcd047d6b5e00d6a4.png +0 -0
  1461. package/style/visual-screenshots (1)/images/d98fa9b6727f84959b2953eb2fb4bbd9.png +0 -0
  1462. package/style/visual-screenshots (1)/images/d9ccd1f0853f04288d98faaa99ffd839.png +0 -0
  1463. package/style/visual-screenshots (1)/images/d9d48b2652b1aec6a09d29ff489a2559.png +0 -0
  1464. package/style/visual-screenshots (1)/images/d9d72a2b10b10048726ee220b48fa527.png +0 -0
  1465. package/style/visual-screenshots (1)/images/d9d8147e7f3bb24b517f342fcccde022.png +0 -0
  1466. package/style/visual-screenshots (1)/images/d9df19d7691aa789d2a8bc95bf35da2c.png +0 -0
  1467. package/style/visual-screenshots (1)/images/da1074f521e0588e392120962859f25f.png +0 -0
  1468. package/style/visual-screenshots (1)/images/da3533dfa11d516896891b192864e447.png +0 -0
  1469. package/style/visual-screenshots (1)/images/dae067c3ccb9466b05711591ecd99896.png +0 -0
  1470. package/style/visual-screenshots (1)/images/db652f7540592f22fce8d51c2db86e93.png +0 -0
  1471. package/style/visual-screenshots (1)/images/db68bc1a1dabafb95a485a230f9a8891.png +0 -0
  1472. package/style/visual-screenshots (1)/images/db9207243bf814e40de5d4f04ca70316.png +0 -0
  1473. package/style/visual-screenshots (1)/images/db9f75240f51bca9b761494cedeccff2.png +0 -0
  1474. package/style/visual-screenshots (1)/images/dbc774ff92faa624b4987219fa52042d.png +0 -0
  1475. package/style/visual-screenshots (1)/images/dc0de0f379b7b76e387beb9d57e912eb.png +0 -0
  1476. package/style/visual-screenshots (1)/images/dd3dcde1007bc96a7e41eeb1436699a5.png +0 -0
  1477. package/style/visual-screenshots (1)/images/dda39199ff0717086ab54dd718ad525f.png +0 -0
  1478. package/style/visual-screenshots (1)/images/ddcd258c6ad4c8489c1b51df313691e9.png +0 -0
  1479. package/style/visual-screenshots (1)/images/ddcf43a676ca66b76dd293e2217bff54.png +0 -0
  1480. package/style/visual-screenshots (1)/images/ddf8772071d057082129df7ddb91cb63.png +0 -0
  1481. package/style/visual-screenshots (1)/images/de538ffe7bb41fe54ed51f548dbe2fba.png +0 -0
  1482. package/style/visual-screenshots (1)/images/df18d193dd77c73ceb593e100945b30d.png +0 -0
  1483. package/style/visual-screenshots (1)/images/df7a11e9552448272332cb2a6d8194b8.png +0 -0
  1484. package/style/visual-screenshots (1)/images/df8a111e64e1601833438a267e53d53e.png +0 -0
  1485. package/style/visual-screenshots (1)/images/dfb1101ae11b4e4cbcd14e109f2c2810.png +0 -0
  1486. package/style/visual-screenshots (1)/images/dfd25ea8862f0ef09292b87930278f8b.png +0 -0
  1487. package/style/visual-screenshots (1)/images/e010fa0f10828dfec180f664eb3b904e.png +0 -0
  1488. package/style/visual-screenshots (1)/images/e019e72c9310bf80c7d8a060b05b9c37.png +0 -0
  1489. package/style/visual-screenshots (1)/images/e0fad740e1ea1190ae5bafcc312b7345.png +0 -0
  1490. package/style/visual-screenshots (1)/images/e129f142d3b5053ef5be1eb5b2c3e892.png +0 -0
  1491. package/style/visual-screenshots (1)/images/e166d553d849e0c78ef876004aad7a5f.png +0 -0
  1492. package/style/visual-screenshots (1)/images/e16f3ba70a3637f3220f043e2135e130.png +0 -0
  1493. package/style/visual-screenshots (1)/images/e1e5fe1fd5d6ee275513f269c86d6305.png +0 -0
  1494. package/style/visual-screenshots (1)/images/e23bd037d12d40a0719647cc0e872a58.png +0 -0
  1495. package/style/visual-screenshots (1)/images/e2a3a5bb4365d8f726c66cdd0502df93.png +0 -0
  1496. package/style/visual-screenshots (1)/images/e2c01035d03336301a1d9b296c8d9ab3.png +0 -0
  1497. package/style/visual-screenshots (1)/images/e2d8e8137e7670d15c4607f1d656477f.png +0 -0
  1498. package/style/visual-screenshots (1)/images/e302c8e4a9ea160a0a19968825d55dab.png +0 -0
  1499. package/style/visual-screenshots (1)/images/e34b18aac8583e91e021b41bbfd7fd5f.png +0 -0
  1500. package/style/visual-screenshots (1)/images/e356cf56ccaa076bbc8d34dc8f793843.png +0 -0
  1501. package/style/visual-screenshots (1)/images/e35d22101819324c038cd263e9c8f518.png +0 -0
  1502. package/style/visual-screenshots (1)/images/e3805efcd137ad98512fa1c3f8d54a1d.png +0 -0
  1503. package/style/visual-screenshots (1)/images/e39ce053c84fc3a5528ac4b5641ac9cf.png +0 -0
  1504. package/style/visual-screenshots (1)/images/e3a3c7767a5eb9522dea438bff6728cc.png +0 -0
  1505. package/style/visual-screenshots (1)/images/e3aab7603407b6e1b444b0eac170a7ec.png +0 -0
  1506. package/style/visual-screenshots (1)/images/e43a752514e8b393cb628520b605b584.png +0 -0
  1507. package/style/visual-screenshots (1)/images/e442163823ed8edcc7160818be69b398.png +0 -0
  1508. package/style/visual-screenshots (1)/images/e4b10dde183f07a84513d76d429a6958.png +0 -0
  1509. package/style/visual-screenshots (1)/images/e4d50b654335e71fc4967b82c344dbfe.png +0 -0
  1510. package/style/visual-screenshots (1)/images/e51ca2c2a84b03fc98f79f02fe7068aa.png +0 -0
  1511. package/style/visual-screenshots (1)/images/e58ef5ed950fbb2b1079d74d45b7c881.png +0 -0
  1512. package/style/visual-screenshots (1)/images/e5ade203143dc82491aa076121660e52.png +0 -0
  1513. package/style/visual-screenshots (1)/images/e605ecbc474952712389539463a04aa7.png +0 -0
  1514. package/style/visual-screenshots (1)/images/e6262e247906000955ae8374d655a906.png +0 -0
  1515. package/style/visual-screenshots (1)/images/e6595c721f80b610721aaeeb5e2f75a6.png +0 -0
  1516. package/style/visual-screenshots (1)/images/e6709d9c191735263eb3b486e7a72f85.png +0 -0
  1517. package/style/visual-screenshots (1)/images/e6d314422345a30bf6c0ef3e18e583a0.png +0 -0
  1518. package/style/visual-screenshots (1)/images/e6d939c8648a17c13549f5f2adb346e7.png +0 -0
  1519. package/style/visual-screenshots (1)/images/e6dbee568bfdc18e352b077e374ff82f.png +0 -0
  1520. package/style/visual-screenshots (1)/images/e703bac13e2532ce5533d2a57a8a5fa6.png +0 -0
  1521. package/style/visual-screenshots (1)/images/e716cb5e49fdadf37afefab471babf94.png +0 -0
  1522. package/style/visual-screenshots (1)/images/e7441187368963e6b130042df812ef91.png +0 -0
  1523. package/style/visual-screenshots (1)/images/e7c2f6b6c968145071f9cb8636dfbc3e.png +0 -0
  1524. package/style/visual-screenshots (1)/images/e7e9cbbc3d0dd144406d6a315ec0ddc0.png +0 -0
  1525. package/style/visual-screenshots (1)/images/e7fa6277441b9b69cc3b5306e16b7cf1.png +0 -0
  1526. package/style/visual-screenshots (1)/images/e83fb6530e1c56b78ecf6b7ecf9093b4.png +0 -0
  1527. package/style/visual-screenshots (1)/images/e84d5f9378fbad753243b00f534b5a2b.png +0 -0
  1528. package/style/visual-screenshots (1)/images/e874c84e2c3efc6531e1ed444ef48e0c.png +0 -0
  1529. package/style/visual-screenshots (1)/images/e880df04bcd581fdc14320972bb587c7.png +0 -0
  1530. package/style/visual-screenshots (1)/images/e888e0e6d4a78e02b76328fa84356ca8.png +0 -0
  1531. package/style/visual-screenshots (1)/images/e8ae475c96c0350cab5788186441a468.png +0 -0
  1532. package/style/visual-screenshots (1)/images/e8b5543222dd07074f913c0ee347cc2a.png +0 -0
  1533. package/style/visual-screenshots (1)/images/e92d837bf473dd88b1644ce81eeb8271.png +0 -0
  1534. package/style/visual-screenshots (1)/images/e9690ff4793f30325dfc007d07f11515.png +0 -0
  1535. package/style/visual-screenshots (1)/images/e9a4edf0d472871407e3de2a94491d38.png +0 -0
  1536. package/style/visual-screenshots (1)/images/e9da22cdb0b57bbbb78d72fa243613f1.png +0 -0
  1537. package/style/visual-screenshots (1)/images/e9f7a5fc6028e6009408ba7587604837.png +0 -0
  1538. package/style/visual-screenshots (1)/images/ea87140d4d01e99436eb8517e1a59744.png +0 -0
  1539. package/style/visual-screenshots (1)/images/eb1e5e278264b3344fd8251f8e3a567c.png +0 -0
  1540. package/style/visual-screenshots (1)/images/eb270de24170c48625abe27e1add013b.png +0 -0
  1541. package/style/visual-screenshots (1)/images/eb321262ddafb26c0121bd595505ffd4.png +0 -0
  1542. package/style/visual-screenshots (1)/images/eb89e9322f47193680a195eedec9ca1f.png +0 -0
  1543. package/style/visual-screenshots (1)/images/eb8ba90ad716449ab1fbe18715131465.png +0 -0
  1544. package/style/visual-screenshots (1)/images/ebea496ec420dde6eb11929ef25c9d4e.png +0 -0
  1545. package/style/visual-screenshots (1)/images/ec06a26e681c9d07ecb4aa29d4e551f4.png +0 -0
  1546. package/style/visual-screenshots (1)/images/ec418171a7341bd39a64ee5e1405de5c.png +0 -0
  1547. package/style/visual-screenshots (1)/images/ec801a1f7ded7e4f72b3b83d56ef137b.png +0 -0
  1548. package/style/visual-screenshots (1)/images/eceac800e5e5ec35a7ac973102588b9a.png +0 -0
  1549. package/style/visual-screenshots (1)/images/ed32af8a6de2ef712782d8c700d5ea9c.png +0 -0
  1550. package/style/visual-screenshots (1)/images/ed996049ed03540673123208a1939af9.png +0 -0
  1551. package/style/visual-screenshots (1)/images/edea0089834ada9ac7c1955bbc7b60e8.png +0 -0
  1552. package/style/visual-screenshots (1)/images/ee0321657e33c16d1cafb4124cc8b84e.png +0 -0
  1553. package/style/visual-screenshots (1)/images/ee2e3f6e90b8c2a479d187d5c33257d9.png +0 -0
  1554. package/style/visual-screenshots (1)/images/ee5c6318a17593c06dc4893c84e64535.png +0 -0
  1555. package/style/visual-screenshots (1)/images/ee880fd8c1965895a4c79cf4c744feac.png +0 -0
  1556. package/style/visual-screenshots (1)/images/eed96dc07ed46b9585a3fa2f9655268f.png +0 -0
  1557. package/style/visual-screenshots (1)/images/efcf97ad2d48fcce21b8052fb8e1f02d.png +0 -0
  1558. package/style/visual-screenshots (1)/images/f02927c03369f309483a9c4ddf1dd918.png +0 -0
  1559. package/style/visual-screenshots (1)/images/f033f0f98be280ace4c6d4b0366bb46f.png +0 -0
  1560. package/style/visual-screenshots (1)/images/f039bdda30367e329cf997e85fe4c5e8.png +0 -0
  1561. package/style/visual-screenshots (1)/images/f04add34ff27aa15ee72e77d143d3ed8.png +0 -0
  1562. package/style/visual-screenshots (1)/images/f05fc5650db3e0ecc2baf3860da0d195.png +0 -0
  1563. package/style/visual-screenshots (1)/images/f095476fc0248cf27fa814706177534f.png +0 -0
  1564. package/style/visual-screenshots (1)/images/f0ca029abc93f4e8105da3e5ab56e1c4.png +0 -0
  1565. package/style/visual-screenshots (1)/images/f136123d6a6e67a75080296043b5e5de.png +0 -0
  1566. package/style/visual-screenshots (1)/images/f14f173c0407db4e2e0d465809e3035f.png +0 -0
  1567. package/style/visual-screenshots (1)/images/f1c37fd272da405acfb07e2bcd9e2e86.png +0 -0
  1568. package/style/visual-screenshots (1)/images/f1d9cb85975d8f2259098078a9801e0f.png +0 -0
  1569. package/style/visual-screenshots (1)/images/f1ec44ad9bd197b6cf6709425b1f493c.png +0 -0
  1570. package/style/visual-screenshots (1)/images/f2357c90c5bc52def3fac87e0ec9997a.png +0 -0
  1571. package/style/visual-screenshots (1)/images/f27d1e0db5abfe19d41b8158d4d2e864.png +0 -0
  1572. package/style/visual-screenshots (1)/images/f28b1b0716ee2f45646a13b5b5c25ece.png +0 -0
  1573. package/style/visual-screenshots (1)/images/f2a9936c632f6d5df93af4b94ca90234.png +0 -0
  1574. package/style/visual-screenshots (1)/images/f2e3472901c35c71c0182432ed609d7f.png +0 -0
  1575. package/style/visual-screenshots (1)/images/f3492d235f8072e4adf1060958453ee6.png +0 -0
  1576. package/style/visual-screenshots (1)/images/f3e92ee96aa91f49801ea4202f6081ac.png +0 -0
  1577. package/style/visual-screenshots (1)/images/f43bdfc49eaa4bc64a3d388173c76744.png +0 -0
  1578. package/style/visual-screenshots (1)/images/f43fae61c6f1cfb638fd3741f3742d5b.png +0 -0
  1579. package/style/visual-screenshots (1)/images/f44444b4e7bcd9cc38987cfbca3c88bc.png +0 -0
  1580. package/style/visual-screenshots (1)/images/f457b6c69704125d620b062e0a63c81d.png +0 -0
  1581. package/style/visual-screenshots (1)/images/f49bdba18143e37cebfccebb84983aaa.png +0 -0
  1582. package/style/visual-screenshots (1)/images/f4a592740204a611f064fd861eea879f.png +0 -0
  1583. package/style/visual-screenshots (1)/images/f4b874f85d61abcdb5d4dac56574e983.png +0 -0
  1584. package/style/visual-screenshots (1)/images/f4d48a8d20e7217ab3bd4eb920e2e90b.png +0 -0
  1585. package/style/visual-screenshots (1)/images/f4fa32cbd842631dda4967bb7b0805f4.png +0 -0
  1586. package/style/visual-screenshots (1)/images/f5a634ee1f8883b9a9910709b1a70dd9.png +0 -0
  1587. package/style/visual-screenshots (1)/images/f5f154f17b8ddd7fe6584229e3e433dc.png +0 -0
  1588. package/style/visual-screenshots (1)/images/f5f5aa0c94bc0096ca632bde832e4ac0.png +0 -0
  1589. package/style/visual-screenshots (1)/images/f611a4b1de325f7426c8b29b43cfae35.png +0 -0
  1590. package/style/visual-screenshots (1)/images/f63233f9dc04d7dcfd4ff56369f0b130.png +0 -0
  1591. package/style/visual-screenshots (1)/images/f692554ff308ca1cd0fbe7a22b3b22ca.png +0 -0
  1592. package/style/visual-screenshots (1)/images/f75eda47bbe4bbe2ea30a65b7856a44b.png +0 -0
  1593. package/style/visual-screenshots (1)/images/f781be55c666aac6c83ca4d07e9c42ca.png +0 -0
  1594. package/style/visual-screenshots (1)/images/f7bf00972a29fdf599c8217b28de96d6.png +0 -0
  1595. package/style/visual-screenshots (1)/images/f86fea7ffab0866bda8a3b414f7cd3b7.png +0 -0
  1596. package/style/visual-screenshots (1)/images/f87eb71c300ab4b2d498be9a55ee1618.png +0 -0
  1597. package/style/visual-screenshots (1)/images/f8b36602184f5158860506fe64079c89.png +0 -0
  1598. package/style/visual-screenshots (1)/images/f8ee607f6421ba60f973b9bff376ae28.png +0 -0
  1599. package/style/visual-screenshots (1)/images/f9080ba22d397d83f09047ebdfe84239.png +0 -0
  1600. package/style/visual-screenshots (1)/images/f9145ef284d04f6336229ff666af70e3.png +0 -0
  1601. package/style/visual-screenshots (1)/images/f93aaf6c9ea9f70abb350f5255767c3f.png +0 -0
  1602. package/style/visual-screenshots (1)/images/f95685e60e185b4b3da22bb8bf70e7e2.png +0 -0
  1603. package/style/visual-screenshots (1)/images/f97ab81b758db662a2eb1617a6efe217.png +0 -0
  1604. package/style/visual-screenshots (1)/images/fa7325e4f52bb809c79c2f8df2699b93.png +0 -0
  1605. package/style/visual-screenshots (1)/images/fa793989f4717dd55b1c603086785688.png +0 -0
  1606. package/style/visual-screenshots (1)/images/faab9362d2ff082b2ec255bd3f87f52c.png +0 -0
  1607. package/style/visual-screenshots (1)/images/fad9c13edad825e537ef70d1f5ac9ffc.png +0 -0
  1608. package/style/visual-screenshots (1)/images/faf67bf2491d228a3147ca1b197ce7c0.png +0 -0
  1609. package/style/visual-screenshots (1)/images/fb0bba6fa80d2f1d58b9fe1a3cae80fd.png +0 -0
  1610. package/style/visual-screenshots (1)/images/fb21968682604e963f859ce4a3063449.png +0 -0
  1611. package/style/visual-screenshots (1)/images/fb2756dae46b9f5078e264cd3419bb7f.png +0 -0
  1612. package/style/visual-screenshots (1)/images/fc344f5b8408cc30060f888515927391.png +0 -0
  1613. package/style/visual-screenshots (1)/images/fca29f7a114d6e4df2ca093e1d9cf90a.png +0 -0
  1614. package/style/visual-screenshots (1)/images/fced6958bf1d22d95b4609bb6cb90c07.png +0 -0
  1615. package/style/visual-screenshots (1)/images/fd92b9e1229dbd6160436f5b92cd21b0.png +0 -0
  1616. package/style/visual-screenshots (1)/images/fdf7376c972f3c4f40789c0f217c0480.png +0 -0
  1617. package/style/visual-screenshots (1)/images/fe13a66e7e5ede78792937bf010f022c.png +0 -0
  1618. package/style/visual-screenshots (1)/images/fe2c4234c413f4ad2d054fd091242f8e.png +0 -0
  1619. package/style/visual-screenshots (1)/images/fe4603d37d7b7abc55ebda66bb81b8d9.png +0 -0
  1620. package/style/visual-screenshots (1)/images/fe9188d474135ba66971a9ea60921c3d.png +0 -0
  1621. package/style/visual-screenshots (1)/images/febb9b60ded19124b91a836fcbc37936.png +0 -0
  1622. package/style/visual-screenshots (1)/images/fedb6514016e34df2fcb29eef107d385.png +0 -0
  1623. package/style/visual-screenshots (1)/images/ff5d801d62c71a38028c2d406af30b8f.png +0 -0
  1624. package/style/visual-screenshots (1)/images/ffa3e2813a91c22ec33346792ba47461.png +0 -0
  1625. package/style/visual-screenshots (1)/images/ffb7b8ff61c2ce675eaeaa8104a3f178.png +0 -0
@@ -0,0 +1,3910 @@
1
+ import { d as ActionHandleStrategy, e as RTETextBlock, b as RTETextNode, h as AppendChildrenAction, A as ActionHandleStrategyRegistry, T as TextStyleAnnotationAction, m as BlockUpdateTextStyleStrategy, H as HorizontalAlignmentAnnotationAction, n as BlockUpdateHorizontalAlignmentStrategy, c as ModifyContentActionType, o as BlockInsertLineBreakStrategy, p as BlockInsertLineBreakWithBlocksStrategy, q as BlockSplitWithTextNodeStrategy, r as BlockReplaceNodesStrategy, t as BlockMergeNodesStrategy, I as InsertChildrenAfterAction, l as RemoveChildrenAction, S as SyncUpSelectionAction, j as InsertChildrenBeforeAction, B as BlockAnnotation, u as BlockAnnotationTypeEnum, f as RTEBlock, v as CustomStyleAnnotation, w as CustomClassAnnotation, C as CustomAttributeAnnotation, x as RTECodeBlock, s as stateEntityRenderingRegistry, N as NodeAnnotation, y as NodeAnnotationTypeEnum, z as RTEDecoratorNode, D as NodeTypeEnum, E as CommonAnnotation, F as AnnotationAction, G as ReplaceChildNodesAction, M as ModifyContentAction, J as SplitBlockWithNodeAction, K as BlockDeleteNodeContentStrategy, U as UpdateTextAction, L as RemoveChildrenStrategy, O as RTE_TEXT_COLORS, P as RTE_DEFAULT_TEXT_COLOR, R as RTEDTOClassManager } from './code-block-3d3a9030.js';
2
+ import { g as generateUUID } from './create-public-api-runtime-metrics-slimmer-bedf3a1e.js';
3
+ import { i as isNonNullable } from './type-guard-b48aec98.js';
4
+ import { C as ChangeManager } from './change-manager-6a7eb88c.js';
5
+ import { d as domNodeSubjectFactory } from './dom-node-subject-observer-factory-f81f215f.js';
6
+ import { b as VegaInternalUpdateRTECursorPosition, c as VegaInternalRichTextEditorFlushChanges } from './vega-internal-event-id-54ce7562.js';
7
+ import { d as dashCaseToCamel } from './string-a953eafc.js';
8
+ import { r as rgbToHex, i as isHTMLElement } from './ui-bb99c0c2.js';
9
+ import { c as cleanObject } from './object-66c37948.js';
10
+ import { L as LogUtility } from './global-slimmer-registry-17c4efd4.js';
11
+
12
+ /**
13
+ * Remove list item nest list block strategy.
14
+ */
15
+ class ListItemRemoveNestListStrategy extends ActionHandleStrategy {
16
+ /**
17
+ * Remove the nest list block from the list item, clear the property children when the children is empty.
18
+ *
19
+ * @param {RemoveNestListAction} action - The action instance.
20
+ * @param {RTEListItemBlock} target - The list item block.
21
+ */
22
+ handleAction(action, target) {
23
+ if (target.nestList) {
24
+ if (target.nestList.length > 1) {
25
+ target.nestList = target.nestList.filter((child) => child !== action.nestListBlockToBeRemoved);
26
+ }
27
+ else {
28
+ target.nestList = undefined;
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Replace list item nest list strategy.
36
+ */
37
+ class ListItemReplaceNestListStrategy extends ActionHandleStrategy {
38
+ /**
39
+ * @inheritDoc
40
+ */
41
+ handleAction(action, target) {
42
+ action.newList.forEach((listBlock) => {
43
+ listBlock.parent = target;
44
+ });
45
+ target.nestList = action.newList;
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Insert image node to list item block strategy.
51
+ */
52
+ class ListItemInsertImageStrategy extends ActionHandleStrategy {
53
+ /**
54
+ * The image node can not insert into list item block, so insert image after parent list block.
55
+ *
56
+ * @param {InsertImageToBlockAction} action - The action instance.
57
+ * @param {RTEListItemBlock} target - The list item block.
58
+ */
59
+ handleAction(action, target) {
60
+ target.parent.apply(action);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * List item block
66
+ */
67
+ class RTEListItemBlock extends RTETextBlock {
68
+ constructor(id, nestList, options) {
69
+ super(id, 'list-item', options);
70
+ /**
71
+ * TODO: Refactor the list item properties children and nestList, merge two properties together.
72
+ *
73
+ * 1. Update the type of `children` to include `RTEListBlock` as a possible type.
74
+ * 2. The list block children should text block array and nest list block array, The text block should wrap a `li` tag when rendering.
75
+ */
76
+ this.nestList = [];
77
+ this.nestList = nestList;
78
+ }
79
+ /**
80
+ * Converts a VegaRTEListItemBlock object to an RTEListItemBlock
81
+ *
82
+ * @param {VegaRTEListBlock} block - Converts a `VegaRTEListItemBlock` object into an `RTEListItemBlock`.
83
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
84
+ * @returns {RTEListItemBlock} Return an instance of `RTEListItemBlock`
85
+ */
86
+ static from(block, options = { autoMatchFormat: true }) {
87
+ const listItemBlock = new RTEListItemBlock(block.id, undefined, options);
88
+ listItemBlock.children = block.nodes.map((richText) => RTETextNode.from(richText, listItemBlock, options));
89
+ if (block.children) {
90
+ listItemBlock.nestList = block.children.map((child) => {
91
+ const listBlock = RTEListBlock.from(child);
92
+ listBlock.parent = listItemBlock;
93
+ return listBlock;
94
+ });
95
+ }
96
+ const { annotations } = block;
97
+ if (annotations) {
98
+ Object.entries(annotations).forEach(([type, value]) => {
99
+ const item = this.createAnnotationEntity(type, value);
100
+ if (isNonNullable(item)) {
101
+ listItemBlock.annotationMap.set(...item);
102
+ }
103
+ });
104
+ }
105
+ return listItemBlock;
106
+ }
107
+ /**
108
+ * @inheritDoc
109
+ */
110
+ toJSON() {
111
+ var _a;
112
+ return Object.assign(Object.assign({}, super.toJSON()), { type: 'list-item', children: (_a = this.nestList) === null || _a === void 0 ? void 0 : _a.map((block) => block.toJSON()) });
113
+ }
114
+ /**
115
+ * @inheritDoc
116
+ */
117
+ toHtml() {
118
+ const attrStr = super.generateAttributeString();
119
+ return [
120
+ `<li${attrStr}>`,
121
+ this.children.map((node) => node.toHtml()).join(''),
122
+ `</li>`,
123
+ ].join('');
124
+ }
125
+ /**
126
+ * @inheritDoc
127
+ */
128
+ cloneWithNodes(nodes) {
129
+ const block = new RTEListItemBlock(generateUUID());
130
+ block.children = [];
131
+ block.apply(new AppendChildrenAction(nodes));
132
+ return block;
133
+ }
134
+ /**
135
+ * @inheritDoc
136
+ */
137
+ getLastNode() {
138
+ if (this.nestList && this.nestList.length > 0) {
139
+ const childListBlock = this.nestList[this.nestList.length - 1];
140
+ return childListBlock.getLastNode();
141
+ }
142
+ return super.getLastNode();
143
+ }
144
+ /**
145
+ * Create a new list item block.
146
+ *
147
+ * @returns {RTEListItemBlock} - A list item block.
148
+ */
149
+ createNewListItem() {
150
+ return new RTEListItemBlock(generateUUID());
151
+ }
152
+ /**
153
+ * @inheritDoc
154
+ */
155
+ clone(parent) {
156
+ var _a;
157
+ const block = new RTEListItemBlock(this.id);
158
+ block.children = this.children.map((node) => node.clone(block));
159
+ block.annotationMap = super.cloneAnnotations();
160
+ block.nestList = (_a = this.nestList) === null || _a === void 0 ? void 0 : _a.map((child) => child.clone(block));
161
+ block.parent = parent;
162
+ return block;
163
+ }
164
+ }
165
+ (() => {
166
+ ActionHandleStrategyRegistry.register(TextStyleAnnotationAction.name, RTEListItemBlock.name, new BlockUpdateTextStyleStrategy());
167
+ ActionHandleStrategyRegistry.register(HorizontalAlignmentAnnotationAction.name, RTEListItemBlock.name, new BlockUpdateHorizontalAlignmentStrategy());
168
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTEListItemBlock.name, new BlockInsertLineBreakStrategy());
169
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTEListItemBlock.name, new BlockInsertLineBreakWithBlocksStrategy());
170
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_NEST_LIST, RTEListItemBlock.name, new ListItemRemoveNestListStrategy());
171
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTEListItemBlock.name, new BlockSplitWithTextNodeStrategy());
172
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_CHILD_NODES, RTEListItemBlock.name, new BlockReplaceNodesStrategy());
173
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_NEST_LIST, RTEListItemBlock.name, new ListItemReplaceNestListStrategy());
174
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTEListItemBlock.name, new BlockMergeNodesStrategy());
175
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEListItemBlock.name, new ListItemInsertImageStrategy());
176
+ })();
177
+
178
+ /**
179
+ * Convert the selected blocks to list strategy.
180
+ */
181
+ class ListTransformToListStrategy extends ActionHandleStrategy {
182
+ /**
183
+ * @inheritDoc
184
+ */
185
+ handleAction(action, target) {
186
+ const selectedBlocks = action.selectedBlocks;
187
+ const bulletList = target.parent.createList(action.listType);
188
+ const isSameList = selectedBlocks.every((block) => block.parent === target);
189
+ if (isSameList) {
190
+ // Select one or more list items belonging to the same list, and all items in this list should be updated
191
+ bulletList.apply(new AppendChildrenAction(target.children));
192
+ target.parent.apply(new InsertChildrenAfterAction(target, bulletList));
193
+ target.parent.apply(new RemoveChildrenAction(target));
194
+ selectedBlocks.forEach((block) => block.children.map((node) => node.apply(new SyncUpSelectionAction())));
195
+ }
196
+ else {
197
+ const listItems = action.selectedBlocks.map((block) => target.parent.toListItem(block));
198
+ bulletList.apply(new AppendChildrenAction(listItems));
199
+ target.parent.apply(new InsertChildrenAfterAction(target, bulletList));
200
+ action.selectedBlocks.forEach((block) => {
201
+ block.parent.apply(new RemoveChildrenAction(block));
202
+ });
203
+ if (target.children.length === 0) {
204
+ target.parent.apply(new RemoveChildrenAction(target));
205
+ }
206
+ }
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Convert the selected list block to paragraph strategy.
212
+ */
213
+ class ListTransformToParagraphStrategy extends ActionHandleStrategy {
214
+ /**
215
+ * @inheritDoc
216
+ */
217
+ handleAction(action, target) {
218
+ let isSelectedFirstBlock = false;
219
+ let isSelectedLastBlock = false;
220
+ const selectedBlocks = action.selectedBlocks;
221
+ const currentParagraph = selectedBlocks.map((block) => {
222
+ block.children.map((node) => node.apply(new SyncUpSelectionAction()));
223
+ if (block === target.children[0])
224
+ isSelectedFirstBlock = true;
225
+ if (block === target.children[target.children.length - 1])
226
+ isSelectedLastBlock = true;
227
+ return this.toParagraph(block);
228
+ });
229
+ if (isSelectedFirstBlock) {
230
+ target.parent.apply(new InsertChildrenBeforeAction(target, ...currentParagraph));
231
+ }
232
+ else if (isSelectedLastBlock) {
233
+ target.parent.apply(new InsertChildrenAfterAction(target, ...currentParagraph));
234
+ }
235
+ else {
236
+ const startIndex = target.children.indexOf(selectedBlocks[0]);
237
+ const lastIndex = target.children.indexOf(selectedBlocks[selectedBlocks.length - 1]);
238
+ const firstBulletList = target.parent.createList(target.type);
239
+ firstBulletList.apply(new AppendChildrenAction(target.children.slice(0, startIndex)));
240
+ const lastBulletList = target.parent.createList(target.type);
241
+ lastBulletList.apply(new AppendChildrenAction(target.children.slice(lastIndex + 1)));
242
+ target.parent.apply(new InsertChildrenBeforeAction(target, firstBulletList, ...currentParagraph, lastBulletList));
243
+ target.parent.apply(new RemoveChildrenAction(target));
244
+ }
245
+ selectedBlocks.map((block) => {
246
+ target.apply(new RemoveChildrenAction(block));
247
+ });
248
+ if (target.children.length === 0) {
249
+ target.parent.apply(new RemoveChildrenAction(target));
250
+ }
251
+ }
252
+ /**
253
+ * Converts a RTEListItemBlock to a RTETextBlock representing a paragraph.
254
+ *
255
+ * @param {RTEListItemBlock} block - The block that will be covered
256
+ * @returns {RTETextBlock} Returns a `RTETextBlock`.
257
+ */
258
+ toParagraph(block) {
259
+ const textBlock = new RTETextBlock(generateUUID(), 'paragraph');
260
+ textBlock.apply(new AppendChildrenAction(block['children']));
261
+ textBlock['annotationMap'] = block['annotationMap'];
262
+ return textBlock;
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Insert image to list block strategy.
268
+ */
269
+ class ListInsertImageStrategy extends ActionHandleStrategy {
270
+ /**
271
+ * Insert image block at behind of the list item block.
272
+ *
273
+ * @param {InsertImageToBlockAction} action - The insert image action instance.
274
+ * @param {RTEListBlock} target - The list block.
275
+ */
276
+ handleAction(action, target) {
277
+ const imageBlock = action.imageBlockToBeInserted;
278
+ if (target.parent['type'] !== 'list-item') {
279
+ target.parent.apply(new InsertChildrenAfterAction(target, imageBlock));
280
+ }
281
+ else {
282
+ target.parent.apply(action);
283
+ }
284
+ }
285
+ }
286
+
287
+ /**
288
+ * List annotation
289
+ */
290
+ class ListAnnotation extends BlockAnnotation {
291
+ constructor() {
292
+ super(...arguments);
293
+ this.type = BlockAnnotationTypeEnum.LIST;
294
+ }
295
+ /**
296
+ * @inheritDoc
297
+ */
298
+ renderStyle(options) {
299
+ if (!(options === null || options === void 0 ? void 0 : options.standalone))
300
+ return null;
301
+ return {
302
+ paddingLeft: '8px',
303
+ marginLeft: '16px',
304
+ };
305
+ }
306
+ /**
307
+ * @inheritDoc
308
+ */
309
+ renderClass(options) {
310
+ if (options === null || options === void 0 ? void 0 : options.standalone)
311
+ return null;
312
+ return 'v-rte--list';
313
+ }
314
+ /**
315
+ * @inheritDoc
316
+ */
317
+ clone() {
318
+ return new ListAnnotation();
319
+ }
320
+ /**
321
+ * @inheritDoc
322
+ */
323
+ toJSON() {
324
+ return undefined;
325
+ }
326
+ }
327
+
328
+ /**
329
+ * List block
330
+ */
331
+ class RTEListBlock extends RTEBlock {
332
+ constructor(id, type, options) {
333
+ super(id);
334
+ this.type = 'bullet-list';
335
+ this.children = [];
336
+ this.type = type;
337
+ const { autoMatchFormat } = options || { autoMatchFormat: true };
338
+ if (autoMatchFormat) {
339
+ this.annotationMap.set(BlockAnnotationTypeEnum.LIST, new ListAnnotation());
340
+ }
341
+ }
342
+ /**
343
+ * Converts a VegaRTEListBlock object to an RTEListBlock
344
+ *
345
+ * @param {VegaRTEListBlock} block - Converts a `VegaRTEListBlock` object into an `RTEListBlock`.
346
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
347
+ * @returns {RTEListBlock} Return an instance of `RTEListBlock`
348
+ */
349
+ static from(block, options = { autoMatchFormat: true }) {
350
+ const listBlock = new RTEListBlock(block.id, block.type, options);
351
+ const { annotations } = block;
352
+ if (annotations) {
353
+ Object.entries(annotations).forEach(([type, value]) => {
354
+ const item = this.createAnnotationEntity(type, value);
355
+ if (isNonNullable(item)) {
356
+ listBlock.annotationMap.set(...item);
357
+ }
358
+ });
359
+ }
360
+ listBlock.children = block.blocks.map((item) => {
361
+ const listItemBlock = RTEListItemBlock.from(item, options);
362
+ listItemBlock.parent = listBlock;
363
+ return listItemBlock;
364
+ });
365
+ return listBlock;
366
+ }
367
+ /**
368
+ * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
369
+ * and value.
370
+ *
371
+ * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
372
+ * the type of annotation entity to create.
373
+ * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
374
+ * that will be used to create the annotation entity. It can be of any type depending on the specific
375
+ * annotation being created.
376
+ * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
377
+ * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
378
+ */
379
+ static createAnnotationEntity(type, value) {
380
+ switch (type) {
381
+ case 'customAttribute':
382
+ return CustomAttributeAnnotation.from(value);
383
+ case 'customClass':
384
+ return CustomClassAnnotation.from(value);
385
+ case 'customStyle':
386
+ return CustomStyleAnnotation.from(value);
387
+ }
388
+ }
389
+ /**
390
+ * @inheritDoc
391
+ */
392
+ toJSON() {
393
+ return Object.assign(Object.assign({}, super.toJSON()), { id: this.id, type: this.type, blocks: this.children.map((block) => block.toJSON()) });
394
+ }
395
+ /**
396
+ * @inheritDoc
397
+ */
398
+ toHtml() {
399
+ const BlockTag = this.getBlockTag();
400
+ const attrStr = super.generateAttributeString();
401
+ return [
402
+ `<${BlockTag}${attrStr}>`,
403
+ this.children.map((block) => block.toHtml()).join(''),
404
+ `</${BlockTag}>`,
405
+ ].join('');
406
+ }
407
+ /**
408
+ * @inheritDoc
409
+ */
410
+ isNotEmpty() {
411
+ return this.children.length > 0;
412
+ }
413
+ /**
414
+ * @inheritDoc
415
+ */
416
+ getLastNode() {
417
+ return this.children[this.children.length - 1].getLastNode();
418
+ }
419
+ /**
420
+ * @inheritDoc
421
+ */
422
+ clone(parent) {
423
+ const clonedListBlock = new RTEListBlock(this.id, this.type);
424
+ clonedListBlock.children = this.children.map((item) => item.clone(clonedListBlock));
425
+ clonedListBlock.annotationMap = super.cloneAnnotations();
426
+ clonedListBlock.parent = parent;
427
+ return clonedListBlock;
428
+ }
429
+ /**
430
+ * Returns the block tag based on the type of the list block.
431
+ *
432
+ * @returns {RTEListBlockTagType} - The block tag for the list block, either 'ol' or 'ul'.
433
+ */
434
+ getBlockTag() {
435
+ return this.type === 'number-list' ? 'ol' : 'ul';
436
+ }
437
+ }
438
+ (() => {
439
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.TRANSFORM_LIST_BLOCK, RTEListBlock.name, new ListTransformToListStrategy());
440
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.TRANSFORM_PARAGRAPH_BLOCK, RTEListBlock.name, new ListTransformToParagraphStrategy());
441
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEListBlock.name, new ListInsertImageStrategy());
442
+ })();
443
+
444
+ /**
445
+ * Transform the selected text blocks to a code block strategy.
446
+ */
447
+ class BlockTransformToCodeBlockStrategy extends ActionHandleStrategy {
448
+ /**
449
+ * Get the all select text and create a new code block.
450
+ *
451
+ * @param {TransformToCodeBlockAction} action - The action instance.
452
+ * @param {VegaRTEContent} target - The block top parent instance.
453
+ */
454
+ handleAction(action, target) {
455
+ const selectedBlocks = action.selectedBlocks;
456
+ const codeBlock = new RTECodeBlock(generateUUID(), this.getCodeContent(selectedBlocks), 'plainText');
457
+ target.apply(new InsertChildrenBeforeAction(selectedBlocks[0], codeBlock));
458
+ action.newCodeBlock = codeBlock;
459
+ this.removeSelectBlocks(selectedBlocks, target);
460
+ }
461
+ /**
462
+ * Get the selected text block text content.
463
+ *
464
+ * @param {RTEBlock[]} selectedBlocks - The selected blocks.
465
+ * @returns {string} - The selected text content.
466
+ */
467
+ getCodeContent(selectedBlocks) {
468
+ const selectedTextBlocks = selectedBlocks.filter((item) => item.type !== 'image' && item.type !== 'list-item');
469
+ return selectedTextBlocks
470
+ .map((block) => {
471
+ return block.children.map((node) => node.text).join('');
472
+ })
473
+ .join('\n');
474
+ }
475
+ /**
476
+ * Remove the selected blocks after append new code block.
477
+ *
478
+ * @param {RTEBlock[]} selectedBlocks - The selected blocks.
479
+ * @param {VegaRTEContent} target - The selected block top parent object.
480
+ */
481
+ removeSelectBlocks(selectedBlocks, target) {
482
+ for (let i = 0; i < selectedBlocks.length; i++) {
483
+ target.apply(new RemoveChildrenAction(selectedBlocks[i]));
484
+ }
485
+ }
486
+ }
487
+
488
+ /**
489
+ * Abstract class to define strategies for processing HTML elements
490
+ */
491
+ class ElementToDTOStrategy {
492
+ }
493
+ /**
494
+ * Class to represent the output of a strategy applied to HTML elements
495
+ */
496
+ class ElementToDTOStrategyOutput {
497
+ constructor(currentStrategy, currentElements) {
498
+ this.childrenOutput = [];
499
+ this.currentStrategy = currentStrategy;
500
+ this.currentElements = currentElements;
501
+ }
502
+ /**
503
+ * Set children output.
504
+ *
505
+ * @param {ElementToDTOStrategyOutput[]} childrenOutput - children outputs.
506
+ */
507
+ setChildrenOutput(childrenOutput) {
508
+ this.childrenOutput = childrenOutput;
509
+ }
510
+ /**
511
+ * Transform current output and children output to DTO
512
+ *
513
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
514
+ * @returns {Nullable<RTEContentBlock>} - DTO.
515
+ */
516
+ toDto(options = { autoMatchFormat: true, skipCustomAnnotations: true }) {
517
+ const currentBlock = this.currentStrategy.handle(this.currentElements, options);
518
+ if (this.childrenOutput.length > 0 && currentBlock) {
519
+ this.currentStrategy.appendChildBlocks(currentBlock, this.childrenOutput
520
+ .map((childOutput) => childOutput.toDto(options))
521
+ .filter(isNonNullable));
522
+ }
523
+ return currentBlock;
524
+ }
525
+ }
526
+
527
+ /**
528
+ * Manager for registering and retrieving strategies that convert HTML elements to DTOs.
529
+ */
530
+ class elementToDTOClassStrategyManager {
531
+ constructor() {
532
+ this.elementToBlockStrategies = [];
533
+ this.elementToNodeStrategies = [];
534
+ }
535
+ /**
536
+ * Registers a element to block strategy for converting HTML elements to DTOs. The new strategy is added to the beginning of the list to give it higher priority.
537
+ *
538
+ * @param {ElementToDTOStrategy} strategy - The strategy to register.
539
+ */
540
+ registerElementToBlockStrategy(strategy) {
541
+ if (!this.hasDuplicateStrategy(strategy, this.elementToBlockStrategies)) {
542
+ this.elementToBlockStrategies.unshift(strategy);
543
+ }
544
+ }
545
+ /**
546
+ * Registers an element to node strategy for converting HTML elements to DTOs. The new strategy is added to the beginning of the list to give it higher priority.
547
+ *
548
+ * @param {ElementToDTOStrategy} strategy - The strategy to register.
549
+ */
550
+ registerElementToNodeStrategy(strategy) {
551
+ if (!this.hasDuplicateStrategy(strategy, this.elementToNodeStrategies)) {
552
+ this.elementToNodeStrategies.unshift(strategy);
553
+ }
554
+ }
555
+ /**
556
+ * Retrieves all registered element to block strategies for converting HTML elements to DTOs.
557
+ *
558
+ * @returns {ElementToDTOStrategy[]} - A set of all registered element to block strategies.
559
+ */
560
+ getElementToBlockStrategies() {
561
+ return this.elementToBlockStrategies;
562
+ }
563
+ /**
564
+ * Retrieves all registered element to node strategies for converting HTML elements to DTOs.
565
+ *
566
+ * @returns {ElementToDTOStrategy[]} - A set of all registered element to node strategies.
567
+ */
568
+ getElementToNodeStrategies() {
569
+ return this.elementToNodeStrategies;
570
+ }
571
+ /**
572
+ * Checks if a strategy is already registered in the provided strategy list.
573
+ *
574
+ * @param {ElementToDTOStrategy} strategy - The strategy to check for duplicates.
575
+ * @param {ElementToDTOStrategy[]} strategyList - The list of strategies to check against.
576
+ * @returns {boolean} - True if the strategy is a duplicate, false otherwise.
577
+ */
578
+ hasDuplicateStrategy(strategy, strategyList) {
579
+ return strategyList.includes(strategy);
580
+ }
581
+ }
582
+ const ElementToDTOClassStrategyManager = new elementToDTOClassStrategyManager();
583
+
584
+ /** Element to DTO processor */
585
+ class ElementToDtoStrategyProcessor {
586
+ /**
587
+ * Transform process.
588
+ *
589
+ * @param {HTMLElement[]} elements - Current elements.
590
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
591
+ * @returns {ElementToDTOStrategyOutput[]} - outputs.
592
+ */
593
+ process(elements, options = { autoMatchFormat: true, skipCustomAnnotations: true }) {
594
+ const strategies = this.getElementToBlockStrategies();
595
+ const outputs = [];
596
+ for (let i = 0; i < elements.length; i++) {
597
+ if (this.isInvalidElement(elements[i]))
598
+ continue;
599
+ let canHandledCount = 0;
600
+ for (const strategy of strategies) {
601
+ canHandledCount = strategy.canHandle(elements, i, options);
602
+ if (canHandledCount > 0) {
603
+ const handledElements = elements.slice(i, i + canHandledCount);
604
+ const output = new ElementToDTOStrategyOutput(strategy, handledElements);
605
+ if (canHandledCount === 1 && strategy.shouldProceedToElementChildren()) {
606
+ output.setChildrenOutput(this.process(Array.from(handledElements[0].childNodes), options));
607
+ }
608
+ outputs.push(output);
609
+ i += canHandledCount - 1;
610
+ break;
611
+ }
612
+ }
613
+ if (canHandledCount === 0 && i < elements.length) {
614
+ const elementChildren = Array.from(elements[i].childNodes);
615
+ const childrenOutputs = this.process(Array.from(elementChildren), options);
616
+ if (childrenOutputs.length > 0) {
617
+ outputs.push(...childrenOutputs);
618
+ }
619
+ }
620
+ }
621
+ return outputs;
622
+ }
623
+ /**
624
+ * Checks if the given element is valid to parse.
625
+ *
626
+ * @param {HTMLElement} element - The pasted element.
627
+ * @returns {boolean} Is valid
628
+ */
629
+ isInvalidElement(element) {
630
+ if (element.nodeType === Node.COMMENT_NODE)
631
+ return true;
632
+ return ['META', 'STYLE'].includes(element.nodeName);
633
+ }
634
+ /**
635
+ * Get the register element to block strategies.
636
+ *
637
+ * @returns {ElementToDTOStrategy[]} - The register element to block strategies.
638
+ */
639
+ getElementToBlockStrategies() {
640
+ return ElementToDTOClassStrategyManager.getElementToBlockStrategies();
641
+ }
642
+ }
643
+ const ElementToDtoStrategyProcessor$1 = new ElementToDtoStrategyProcessor();
644
+
645
+ /**
646
+ * Update the cursor position in the editor.
647
+ */
648
+ class UpdateCursorPositionStrategy extends ActionHandleStrategy {
649
+ /**
650
+ * @inheritDoc
651
+ */
652
+ handleAction(action, target) {
653
+ const { offset, nextFocusNode, immediatelyRun } = action;
654
+ const host = stateEntityRenderingRegistry.getDOMByEntity(target);
655
+ if (host) {
656
+ ChangeManager.notify(domNodeSubjectFactory.getSubject(host, VegaInternalUpdateRTECursorPosition), {
657
+ node: nextFocusNode,
658
+ offset,
659
+ updateDirectly: immediatelyRun,
660
+ });
661
+ }
662
+ }
663
+ }
664
+
665
+ /**
666
+ * Append new block array or node array to block or VegaRTEContent instance strategy.
667
+ */
668
+ class AppendChildrenStrategy extends ActionHandleStrategy {
669
+ /**
670
+ * @inheritDoc
671
+ */
672
+ handleAction(action, target) {
673
+ const newBlocks = action.entityToBeAppended;
674
+ if (target.children) {
675
+ newBlocks.forEach((block) => {
676
+ block.parent = target;
677
+ });
678
+ // This line is used to fix the typescript error `This expression is not callable`. https://github.com/microsoft/TypeScript/issues/44373
679
+ const arrayFixed = target.children;
680
+ target.children = arrayFixed.concat(newBlocks);
681
+ }
682
+ }
683
+ }
684
+
685
+ /**
686
+ * Insert children at the front of the block strategy.
687
+ */
688
+ class InsertChildrenBeforeStrategy extends ActionHandleStrategy {
689
+ /**
690
+ * @inheritDoc
691
+ */
692
+ handleAction(action, target) {
693
+ this.replaceElementWithElements(target, action.referChildren, [
694
+ ...action.childrenToBeInserted,
695
+ action.referChildren,
696
+ ]);
697
+ }
698
+ /**
699
+ * Replaces a specific block or node with an array of blocks or nodes within RTEContentBlock array.
700
+ *
701
+ * @param {RTEBlock | VegaRTEContent} target - The block or the VegaRTEContent instance.
702
+ * @param {RTEBlock | RTENode} referElement - Used as a reference element to identify the element that needs to be replaced in the array.
703
+ * @param {RTEBlock[] | RTENode[]} elements - An array of block or node objects that you want to replace the `referElement` with in the array.
704
+ */
705
+ replaceElementWithElements(target, referElement, elements) {
706
+ if (target.children) {
707
+ elements.forEach((block) => {
708
+ block.parent = target;
709
+ });
710
+ const arrayFixed = target.children;
711
+ target.children = arrayFixed.flatMap((block) => {
712
+ if (block === referElement) {
713
+ return elements;
714
+ }
715
+ else {
716
+ return block;
717
+ }
718
+ });
719
+ }
720
+ }
721
+ }
722
+
723
+ /**
724
+ * Insert children at the front of the block strategy.
725
+ */
726
+ class InsertChildrenAfterStrategy extends InsertChildrenBeforeStrategy {
727
+ /**
728
+ * @inheritDoc
729
+ */
730
+ handleAction(action, target) {
731
+ this.replaceElementWithElements(target, action.referChildren, [
732
+ action.referChildren,
733
+ ...action.childrenToBeInserted,
734
+ ]);
735
+ }
736
+ }
737
+
738
+ /**
739
+ * Annotation for image
740
+ */
741
+ class ImageAnnotation extends NodeAnnotation {
742
+ constructor(size, alt) {
743
+ super();
744
+ this.type = NodeAnnotationTypeEnum.IMAGE;
745
+ this.size = size;
746
+ this.alt = alt;
747
+ }
748
+ /**
749
+ * Generate the map item for the annotation
750
+ *
751
+ * @param {string} size - Image size
752
+ * @param {string} alt - Image alt
753
+ * @returns {[NodeAnnotationTypeEnum.IMAGE, ImageAnnotation]} Map item for the annotation
754
+ */
755
+ static from(size, alt) {
756
+ return [NodeAnnotationTypeEnum.IMAGE, new ImageAnnotation(size, alt)];
757
+ }
758
+ /**
759
+ * Generate the JSON representation of the annotation
760
+ *
761
+ * @returns {Nullable<Record<string, unknown>>} JSON representation of the annotation
762
+ */
763
+ toJSON() {
764
+ return isNonNullable(this.alt)
765
+ ? {
766
+ size: this.size,
767
+ alt: this.alt,
768
+ }
769
+ : {
770
+ size: this.size,
771
+ };
772
+ }
773
+ /**
774
+ * @inheritDoc
775
+ */
776
+ clone() {
777
+ return new ImageAnnotation(this.size, this.alt);
778
+ }
779
+ /**
780
+ * @inheritDoc
781
+ */
782
+ renderClass(options) {
783
+ if (options === null || options === void 0 ? void 0 : options.standalone)
784
+ return null;
785
+ return this.size ? `v-rte--image-size-${this.size}` : null;
786
+ }
787
+ /**
788
+ * @inheritDoc
789
+ */
790
+ renderStyle(options) {
791
+ if (!(options === null || options === void 0 ? void 0 : options.standalone))
792
+ return null;
793
+ const baseStyle = { verticalAlign: 'bottom' };
794
+ switch (this.size) {
795
+ case 'sm': {
796
+ return Object.assign(Object.assign({}, baseStyle), { width: '25%' });
797
+ }
798
+ case 'md': {
799
+ return Object.assign(Object.assign({}, baseStyle), { width: '50%' });
800
+ }
801
+ case 'lg': {
802
+ return Object.assign(Object.assign({}, baseStyle), { width: '100%' });
803
+ }
804
+ }
805
+ }
806
+ }
807
+
808
+ /**
809
+ * Update the image node annotation map strategy.
810
+ */
811
+ class ImageSetAnnotationMapStrategy extends ActionHandleStrategy {
812
+ /**
813
+ * @inheritDoc
814
+ */
815
+ handleAction(action, target) {
816
+ const annotation = action.toAnnotation();
817
+ target.annotationMap.set(annotation.type, annotation);
818
+ }
819
+ }
820
+
821
+ /**
822
+ * The image node update property url strategy.
823
+ */
824
+ class ImageUpdateUrlStrategy extends ActionHandleStrategy {
825
+ /**
826
+ * @inheritDoc
827
+ */
828
+ handleAction(action, target) {
829
+ target.url = action.url;
830
+ }
831
+ }
832
+
833
+ var __rest = (undefined && undefined.__rest) || function (s, e) {
834
+ var t = {};
835
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
836
+ t[p] = s[p];
837
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
838
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
839
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
840
+ t[p[i]] = s[p[i]];
841
+ }
842
+ return t;
843
+ };
844
+ /**
845
+ * Image node
846
+ */
847
+ class RTEImageNode extends RTEDecoratorNode {
848
+ constructor(id, url, parentBlock, annotationMap) {
849
+ super(id, annotationMap);
850
+ this.type = NodeTypeEnum.IMAGE;
851
+ this.url = url;
852
+ this.parent = parentBlock;
853
+ }
854
+ /**
855
+ * Converts a VegaRTEImageNode into an RTEImageNode by mapping nodes and creating annotations.
856
+ *
857
+ * @param {VegaRTEImageNode} node - The node to be converted.
858
+ * @param {RTEImageBlock} parentBlock - The parent block
859
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
860
+ * @returns {RTEImageNode} An instance of `RTEImageBlock`
861
+ */
862
+ static from(node, parentBlock, options = { autoMatchFormat: true }) {
863
+ const imageNode = new RTEImageNode(node.id, node.url, parentBlock);
864
+ const autoMatchFormat = !!options.autoMatchFormat;
865
+ const _a = Object.assign({}, node.annotations), { size } = _a, otherAnnotations = __rest(_a, ["size"]);
866
+ const annotations = Object.assign(Object.assign({}, otherAnnotations), { size: size !== null && size !== void 0 ? size : (autoMatchFormat ? 'md' : undefined) });
867
+ imageNode.annotationMap = new Map(Object.keys(annotations)
868
+ .map((type) => {
869
+ if (type === 'size' || type === 'alt') {
870
+ return ImageAnnotation.from(annotations.size, annotations.alt);
871
+ }
872
+ return this.createAnnotationEntity(type, annotations[type]);
873
+ })
874
+ .filter(isNonNullable));
875
+ return imageNode;
876
+ }
877
+ /**
878
+ * @inheritDoc
879
+ */
880
+ toJSON() {
881
+ const annotations = Array.from(this.annotationMap.values())
882
+ .filter((annotation) => annotation instanceof ImageAnnotation || annotation instanceof CommonAnnotation)
883
+ .reduce((record, annotation) => {
884
+ return Object.assign(Object.assign({}, record), annotation.toJSON());
885
+ }, {});
886
+ if (annotations.alt == '')
887
+ delete annotations.alt;
888
+ return Object.assign(Object.assign({ id: this.id }, (Object.keys(annotations).length > 0 ? { annotations } : {})), { type: 'image', url: this.url });
889
+ }
890
+ /**
891
+ * @inheritDoc
892
+ */
893
+ clone(parent) {
894
+ return new RTEImageNode(this.id, this.url, parent, super.cloneAnnotations());
895
+ }
896
+ /**
897
+ * @inheritDoc
898
+ */
899
+ toHtml() {
900
+ const imageAnnotation = this.getAnnotationByType(NodeAnnotationTypeEnum.IMAGE);
901
+ const attrStr = super.generateAttributeString(...[
902
+ imageAnnotation && imageAnnotation.alt ? `alt="${imageAnnotation.alt}"` : null,
903
+ `src="${this.url}"`,
904
+ imageAnnotation && imageAnnotation.size ? `data-size="${imageAnnotation.size}"` : null,
905
+ ].filter(isNonNullable));
906
+ return `<img${attrStr}>`;
907
+ }
908
+ /**
909
+ * @inheritDoc
910
+ */
911
+ doAnnotationActionApply(action) {
912
+ const strategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTEImageNode.name);
913
+ if (strategy) {
914
+ strategy.execute(action, this);
915
+ }
916
+ }
917
+ /**
918
+ * @inheritDoc
919
+ */
920
+ doModifyActionApply(action) {
921
+ ActionHandleStrategyRegistry.executeTheStrategy(action, this);
922
+ }
923
+ }
924
+ (() => {
925
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_IMAGE_NODE_URL, RTEImageNode.name, new ImageUpdateUrlStrategy());
926
+ ActionHandleStrategyRegistry.register(AnnotationAction.name, RTEImageNode.name, new ImageSetAnnotationMapStrategy());
927
+ })();
928
+
929
+ /**
930
+ * Split the current image block with a special position strategy.
931
+ */
932
+ class BlockSplitWithImageNodeStrategy extends ActionHandleStrategy {
933
+ /**
934
+ * @inheritDoc
935
+ */
936
+ handleAction(action, target) {
937
+ action.newBlock = this.splitImageNodes(action.splitPointNode, action.startOffsetOfNode, target);
938
+ }
939
+ /**
940
+ * The image offset should be 0 or 1
941
+ * <vega-rich-text-image-editor><img /></vega-rich-text-image-editor>
942
+ *
943
+ * @param {RTEImageNode} imageNode The split point image node.
944
+ * @param {number} imageOffset The cursor point 0 | 1.
945
+ * @param {RTEImageBlock} target The image block.
946
+ * @returns {Nullable<RTEBlock>} The new block after split
947
+ */
948
+ splitImageNodes(imageNode, imageOffset, target) {
949
+ const nodesSplitIndex = target.children.indexOf(imageNode);
950
+ if (nodesSplitIndex > -1) {
951
+ const beforeNodes = target.children.slice(0, nodesSplitIndex + imageOffset);
952
+ const afterNodes = target.children.slice(nodesSplitIndex + imageOffset);
953
+ target.apply(new ReplaceChildNodesAction(beforeNodes));
954
+ const newBlock = this.cloneWithNodes(afterNodes, target);
955
+ target.parent.apply(new InsertChildrenAfterAction(target, newBlock));
956
+ return newBlock;
957
+ }
958
+ }
959
+ /**
960
+ * Creates a new RTEImageBlock instance with the provided RTEImageNode instances appended to it.
961
+ *
962
+ * @param {RTEImageNode[]} nodes - An array of RTEImageNode objects that will be used to create a new RTEImageBlock instance.
963
+ * @param {RTEImageBlock} target The image block.
964
+ * @returns {RTEImageBlock} A new `RTEImageBlock` object with the provided `nodes` appended to it.
965
+ */
966
+ cloneWithNodes(nodes, target) {
967
+ const block = target.createNewImageBlock();
968
+ block.children = [];
969
+ block.apply(new AppendChildrenAction(nodes));
970
+ return block;
971
+ }
972
+ }
973
+
974
+ /**
975
+ * Break the current block after press enter, this action is similar with the SplitBlockWithNodeAction,
976
+ * The SplitBlockWithNodeAction split the current block to two same type blocks, but this action will create new paragraph or list item when break at start or end.
977
+ * The property `newBlock` use to store the new create block if need.
978
+ *
979
+ * @example currentBlock.apply(new InsertNewParagraphAction(startContainerNode, startOffset))
980
+ */
981
+ class InsertNewParagraphAction extends ModifyContentAction {
982
+ constructor(startContainerNode, startOffset) {
983
+ super();
984
+ this.type = ModifyContentActionType.INSERT_NEW_PARAGRAPH;
985
+ this.startContainerNode = startContainerNode;
986
+ this.startOffset = startOffset;
987
+ }
988
+ }
989
+
990
+ /**
991
+ * The image block insert line break strategy.
992
+ */
993
+ class ImageInsertLineBreakStrategy extends ActionHandleStrategy {
994
+ /**
995
+ * The image block not support insert the line break node, so invoke the insert new paragraph logic directly.
996
+ *
997
+ * @param {LineBreakSingleBlockAction} action - The action instance.
998
+ * @param {RTEImageBlock} target - The image block.
999
+ */
1000
+ handleAction(action, target) {
1001
+ const insertNewParagraphAction = new InsertNewParagraphAction(action.startContainerNode, action.startOffset);
1002
+ target.apply(insertNewParagraphAction);
1003
+ const newBlock = insertNewParagraphAction.newBlock;
1004
+ if (newBlock) {
1005
+ action.lineBreakNode = newBlock.children[0];
1006
+ }
1007
+ }
1008
+ }
1009
+
1010
+ /**
1011
+ * Insert a line break node into multiple blocks selection at special position strategy.
1012
+ */
1013
+ class ImageInsertLineBreakWithBlocksStrategy extends ActionHandleStrategy {
1014
+ /**
1015
+ * @inheritDoc
1016
+ */
1017
+ handleAction(action, target) {
1018
+ action.lineBreakNode = this.lineBreakMultipleBlocks(action.selectedBlocks, target);
1019
+ }
1020
+ /**
1021
+ * Inserts a new paragraph block with a line break after a selected block of text in a rich text editor.
1022
+ *
1023
+ * @param {RTEBlock[]} selectedBlocks - An array of RTEBlock objects that represent the blocks that have been selected for a specific action in the Rich Text Editor.
1024
+ * @param {RTEImageBlock} target - The image block.
1025
+ * @returns {Nullable<RTETextNode>} Returns a Nullable RTETextNode.
1026
+ */
1027
+ lineBreakMultipleBlocks(selectedBlocks, target) {
1028
+ const newParagraph = RTETextBlock.from({
1029
+ id: generateUUID(),
1030
+ type: 'paragraph',
1031
+ nodes: [{ id: generateUUID(), type: 'text', text: '\n' }],
1032
+ });
1033
+ target.parent.apply(new InsertChildrenAfterAction(target, newParagraph));
1034
+ const afterNodes = this.concatBlocksNodes(selectedBlocks.slice(1));
1035
+ if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
1036
+ afterNodes.push(new RTETextNode(generateUUID(), '\n', newParagraph));
1037
+ }
1038
+ newParagraph.apply(new AppendChildrenAction(afterNodes));
1039
+ return newParagraph['children'][0];
1040
+ }
1041
+ /**
1042
+ * Concat the child nodes of multiple RTEBlocks if both are not images.
1043
+ *
1044
+ * @param {RTEBlock[]} blocks - multiple block of content in a rich text editor, such as a paragraph, heading, image, etc.
1045
+ * @returns {RTENode[]} Array of connected block nodes
1046
+ */
1047
+ concatBlocksNodes(blocks) {
1048
+ const nodes = [];
1049
+ blocks.map((block) => {
1050
+ if (block.type !== 'image') {
1051
+ nodes.push(...block.children);
1052
+ block.parent.apply(new RemoveChildrenAction(block));
1053
+ }
1054
+ });
1055
+ return nodes;
1056
+ }
1057
+ }
1058
+
1059
+ /**
1060
+ * Insert a image node at the special position of image block.
1061
+ */
1062
+ class ImageBlockInsertImageStrategy extends ActionHandleStrategy {
1063
+ /**
1064
+ * @inheritDoc
1065
+ */
1066
+ handleAction(action, target) {
1067
+ const splitNode = action.splitPointNode;
1068
+ const startOffsetOfNode = action.startOffsetOfNode;
1069
+ const newImageBlock = action.imageBlockToBeInserted;
1070
+ const newImageNodes = newImageBlock.children;
1071
+ if (target.children.length < 1) {
1072
+ target.apply(new AppendChildrenAction(newImageNodes));
1073
+ }
1074
+ else if (this.isCaretPositionAtBlockEnd(target, splitNode, startOffsetOfNode)) {
1075
+ target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
1076
+ }
1077
+ else if (this.isCaretPositionAtBlockStart(target, splitNode, startOffsetOfNode)) {
1078
+ target.parent.apply(new InsertChildrenBeforeAction(target, newImageBlock));
1079
+ }
1080
+ else {
1081
+ target.apply(new SplitBlockWithNodeAction(splitNode, startOffsetOfNode));
1082
+ target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
1083
+ }
1084
+ }
1085
+ }
1086
+
1087
+ /**
1088
+ * Image block
1089
+ */
1090
+ class RTEImageBlock extends RTEBlock {
1091
+ constructor(id) {
1092
+ super(id);
1093
+ this.type = 'image';
1094
+ this.children = [];
1095
+ }
1096
+ /**
1097
+ * Converts a VegaRTEImageBlock object into an RTEImageBlock object by mapping nodes and creating annotations.
1098
+ *
1099
+ * @param {VegaRTEImageBlock} block - The block object to be converted.
1100
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
1101
+ * @returns {RTEImageBlock} An instance of `RTEImageBlock`
1102
+ */
1103
+ static from(block, options = { autoMatchFormat: true }) {
1104
+ const imageBlock = new RTEImageBlock(block.id);
1105
+ const { annotations } = block;
1106
+ imageBlock.children = block.nodes.map((image) => RTEImageNode.from(image, imageBlock, options));
1107
+ if (annotations) {
1108
+ super.convertAnnotationsToMap(imageBlock.annotationMap, annotations);
1109
+ }
1110
+ return imageBlock;
1111
+ }
1112
+ /**
1113
+ * @inheritDoc
1114
+ */
1115
+ toJSON() {
1116
+ return Object.assign(Object.assign({}, super.toJSON()), { type: 'image', nodes: this.children.map((node) => node.toJSON()) });
1117
+ }
1118
+ /**
1119
+ * @inheritDoc
1120
+ */
1121
+ toHtml() {
1122
+ const attrStr = super.generateAttributeString();
1123
+ const children = this.children.map((node) => node.toHtml()).join('');
1124
+ return super.shouldRenderAsInternalWrapper()
1125
+ ? children
1126
+ : [`<div${attrStr}>`, children, `</div>`].join('');
1127
+ }
1128
+ /**
1129
+ * @inheritDoc
1130
+ */
1131
+ isNotEmpty() {
1132
+ return this.children.length > 0 && this.children.some((node) => node.url.length > 0);
1133
+ }
1134
+ /**
1135
+ * @inheritDoc
1136
+ */
1137
+ getLastNode() {
1138
+ return this.children[this.children.length - 1];
1139
+ }
1140
+ /**
1141
+ * Create a new image block.
1142
+ *
1143
+ * @returns {RTEImageBlock} - The empty image block.
1144
+ */
1145
+ createNewImageBlock() {
1146
+ return new RTEImageBlock(generateUUID());
1147
+ }
1148
+ /**
1149
+ * @inheritDoc
1150
+ */
1151
+ clone(parent) {
1152
+ const clonedBlock = new RTEImageBlock(this.id);
1153
+ clonedBlock.children = this.children.map((node) => node.clone(clonedBlock));
1154
+ clonedBlock.annotationMap = super.cloneAnnotations();
1155
+ clonedBlock.parent = parent;
1156
+ return clonedBlock;
1157
+ }
1158
+ }
1159
+ (() => {
1160
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTEImageBlock.name, new BlockMergeNodesStrategy());
1161
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_CHILD_NODES, RTEImageBlock.name, new BlockReplaceNodesStrategy());
1162
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTEImageBlock.name, new BlockSplitWithImageNodeStrategy());
1163
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTEImageBlock.name, new ImageInsertLineBreakStrategy());
1164
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTEImageBlock.name, new ImageInsertLineBreakWithBlocksStrategy());
1165
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEImageBlock.name, new ImageBlockInsertImageStrategy());
1166
+ ActionHandleStrategyRegistry.register(HorizontalAlignmentAnnotationAction.name, RTEImageBlock.name, new BlockUpdateHorizontalAlignmentStrategy());
1167
+ })();
1168
+
1169
+ /**
1170
+ * HTML Block
1171
+ */
1172
+ class RTEHtmlBlock extends RTEBlock {
1173
+ constructor(id, htmlTag) {
1174
+ super(id);
1175
+ this.type = 'html-block';
1176
+ this.children = [];
1177
+ this.htmlTag = htmlTag;
1178
+ }
1179
+ /**
1180
+ * Converts a VegaRTEHtmlBlock to an RTEHtmlBlock.
1181
+ *
1182
+ * @param {VegaRTEHtmlBlock} block - The VegaRTEHtmlBlock to convert.
1183
+ * @param {VegaRTETransformOptions} [options] - Optional transformation options.
1184
+ * @returns {RTEHtmlBlock} The converted RTEHtmlBlock.
1185
+ */
1186
+ static from(block, options) {
1187
+ const htmlBlock = new RTEHtmlBlock(block.id, block.htmlTag);
1188
+ const { annotations } = block;
1189
+ if (annotations) {
1190
+ super.convertAnnotationsToMap(htmlBlock.annotationMap, annotations);
1191
+ }
1192
+ htmlBlock.children = this.generateBlockChildren(block.children, options, htmlBlock);
1193
+ return htmlBlock;
1194
+ }
1195
+ /**
1196
+ * @inheritDoc
1197
+ */
1198
+ clone(parent) {
1199
+ const clonedBlock = new RTEHtmlBlock(this.id, this.htmlTag);
1200
+ clonedBlock.children = this.children.map((child) => child.clone(clonedBlock));
1201
+ clonedBlock.annotationMap = super.cloneAnnotations();
1202
+ clonedBlock.parent = parent;
1203
+ return clonedBlock;
1204
+ }
1205
+ /**
1206
+ * @inheritDoc
1207
+ */
1208
+ getLastNode() {
1209
+ return this.children[this.children.length - 1].getLastNode();
1210
+ }
1211
+ /**
1212
+ * @inheritDoc
1213
+ */
1214
+ isNotEmpty() {
1215
+ return this.children.length > 0;
1216
+ }
1217
+ /**
1218
+ * @inheritDoc
1219
+ */
1220
+ toHtml() {
1221
+ const BlockTag = this.htmlTag;
1222
+ const attrStr = super.generateAttributeString();
1223
+ return [
1224
+ `<${BlockTag}${attrStr}>`,
1225
+ this.children.map((block) => block.toHtml()).join(''),
1226
+ `</${BlockTag}>`,
1227
+ ].join('');
1228
+ }
1229
+ /**
1230
+ * @inheritDoc
1231
+ */
1232
+ toJSON() {
1233
+ return Object.assign(Object.assign({}, super.toJSON()), { id: this.id, type: this.type, htmlTag: this.htmlTag, children: this.children.map((child) => child.toJSON()) });
1234
+ }
1235
+ }
1236
+
1237
+ /**
1238
+ * Merge the two blocks node into first block if the two blocks nodes type is same(text node or image node)
1239
+ *
1240
+ * @example firstBlock.apply(new MergeTwoBlocksNodesAction(secondBlock))
1241
+ */
1242
+ class MergeTwoBlocksNodesAction extends ModifyContentAction {
1243
+ constructor(blockNeedToBeMerged) {
1244
+ super();
1245
+ this.type = ModifyContentActionType.MERGE_TWO_BLOCKS_NODES;
1246
+ this.blockNeedToBeMerged = blockNeedToBeMerged;
1247
+ }
1248
+ }
1249
+
1250
+ /**
1251
+ * Block delete text or decorator node strategy.
1252
+ */
1253
+ class BlockDeleteTextOrDecoratorNodeStrategy extends BlockDeleteNodeContentStrategy {
1254
+ /**
1255
+ * @inheritDoc
1256
+ */
1257
+ handleAction(action, target) {
1258
+ const { startContainerNode } = action;
1259
+ if (!startContainerNode.isContentEditable()) {
1260
+ this.deleteDecoratorNodeContent(action, target);
1261
+ }
1262
+ else if (startContainerNode.isTextNode()) {
1263
+ this.deleteTextNodeContent(action, target);
1264
+ }
1265
+ const parent = target.parent;
1266
+ if (parent && target.isListItemBlock() && parent.children.length === 0) {
1267
+ parent.parent.apply(new RemoveChildrenAction(parent));
1268
+ }
1269
+ }
1270
+ /**
1271
+ * Handle the delete text logic when press delete key.
1272
+ *
1273
+ * @param {DeleteBlockContentAction} action - ModifyContentAction
1274
+ * @param {RTETextBlock} target - Current text block
1275
+ */
1276
+ deleteTextNodeContent(action, target) {
1277
+ const startContainerNode = action.startContainerNode;
1278
+ const startOffset = action.startOffset;
1279
+ if (startOffset !== 0 && !startContainerNode.isEmpty()) {
1280
+ const newText = startContainerNode.text.slice(0, startOffset - 1) +
1281
+ startContainerNode.text.slice(startOffset);
1282
+ startContainerNode.apply(new UpdateTextAction(newText));
1283
+ if (newText) {
1284
+ action.previousNode = startContainerNode;
1285
+ return;
1286
+ }
1287
+ else {
1288
+ const previousNode = this.getPreviousNode(startContainerNode);
1289
+ // Remove the last character will not delete paragraph, the paragraph will removed after press delete again
1290
+ if ((previousNode && previousNode.parent === target && previousNode['text'] === '\n') ||
1291
+ target.children.length === 1) {
1292
+ action.previousNode = startContainerNode;
1293
+ return;
1294
+ }
1295
+ else {
1296
+ target.apply(new RemoveChildrenAction(startContainerNode));
1297
+ action.previousNode = previousNode;
1298
+ return;
1299
+ }
1300
+ }
1301
+ }
1302
+ else {
1303
+ let previousNode = this.getPreviousNode(startContainerNode);
1304
+ let nextNode = null;
1305
+ const isCurrentNodeEmpty = startContainerNode.isEmpty();
1306
+ if (target.children.length && previousNode && previousNode.parent !== target) {
1307
+ if (isCurrentNodeEmpty) {
1308
+ target.apply(new RemoveChildrenAction(startContainerNode));
1309
+ }
1310
+ if (target.type === previousNode.parent.type) {
1311
+ previousNode.parent.apply(new MergeTwoBlocksNodesAction(target));
1312
+ }
1313
+ }
1314
+ else {
1315
+ if (this.isContentFirstNode(startContainerNode) && isCurrentNodeEmpty) {
1316
+ nextNode = this.getNextNode(startContainerNode);
1317
+ }
1318
+ /**
1319
+ * Remove line break
1320
+ *
1321
+ * @example caret at the first line
1322
+ * \n
1323
+ * test
1324
+ */
1325
+ if (isCurrentNodeEmpty) {
1326
+ target.apply(new RemoveChildrenAction(startContainerNode));
1327
+ }
1328
+ /**
1329
+ * Remove line break or non-editable node
1330
+ *
1331
+ * @example caret at the begin of second line
1332
+ * \n
1333
+ * test
1334
+ * @example caret at the end of non-editable node and start of the text node
1335
+ * <img/><span>test</span>
1336
+ */
1337
+ if (previousNode &&
1338
+ previousNode.isTextNode() &&
1339
+ (previousNode.isEmpty() ||
1340
+ (!previousNode.isContentEditable() && previousNode.parent === target))) {
1341
+ const shouldRemoveNode = previousNode;
1342
+ previousNode = this.getPreviousNode(previousNode);
1343
+ shouldRemoveNode.parent.apply(new RemoveChildrenAction(shouldRemoveNode));
1344
+ if (!previousNode && !isCurrentNodeEmpty) {
1345
+ nextNode = startContainerNode;
1346
+ }
1347
+ }
1348
+ }
1349
+ // Remove the paragraph block if the content is empty
1350
+ // TODO: Check whether need to remove below logic because already handled the same logic in remove node strategy
1351
+ if (target.children.length === 0) {
1352
+ target.parent.apply(new RemoveChildrenAction(target));
1353
+ }
1354
+ if (previousNode) {
1355
+ action.previousNode = previousNode;
1356
+ }
1357
+ else if (nextNode) {
1358
+ action.nextNode = nextNode;
1359
+ }
1360
+ }
1361
+ }
1362
+ /**
1363
+ * Delete decorator node content
1364
+ *
1365
+ * @param {DeleteBlockContentAction} action - The delete block content action
1366
+ * @param {RTEBlock} target - The target block
1367
+ */
1368
+ deleteDecoratorNodeContent(action, target) {
1369
+ const startContainerNode = action.startContainerNode, startOffset = action.startOffset;
1370
+ let previousNode = this.getPreviousNode(startContainerNode);
1371
+ let nextNode = null;
1372
+ if (startOffset !== 0) {
1373
+ const parentBlock = target;
1374
+ if (this.isContentFirstNode(startContainerNode)) {
1375
+ nextNode = this.getNextNode(startContainerNode);
1376
+ }
1377
+ if (parentBlock.children.length === 1) {
1378
+ parentBlock.parent.apply(new RemoveChildrenAction(parentBlock));
1379
+ }
1380
+ else {
1381
+ parentBlock.apply(new RemoveChildrenAction(startContainerNode));
1382
+ }
1383
+ }
1384
+ else {
1385
+ const shouldRemoveNode = previousNode;
1386
+ if (shouldRemoveNode && !shouldRemoveNode.isContentEditable()) {
1387
+ previousNode = this.getPreviousNode(shouldRemoveNode);
1388
+ shouldRemoveNode.parent.apply(new RemoveChildrenAction(shouldRemoveNode));
1389
+ if (!previousNode) {
1390
+ action.nextNode = startContainerNode;
1391
+ }
1392
+ }
1393
+ }
1394
+ if (previousNode) {
1395
+ action.previousNode = previousNode;
1396
+ }
1397
+ else if (nextNode) {
1398
+ action.nextNode = nextNode;
1399
+ }
1400
+ }
1401
+ }
1402
+
1403
+ /**
1404
+ * Insert new paragraph into current block at special position.
1405
+ */
1406
+ class BlockInsertNewParagraphStrategy extends ActionHandleStrategy {
1407
+ /**
1408
+ * @inheritDoc
1409
+ */
1410
+ handleAction(action, target) {
1411
+ const { startContainerNode } = action;
1412
+ action.newBlock = this.breakSingleBlock(startContainerNode, action.startOffset, target);
1413
+ }
1414
+ /**
1415
+ * breakSingleTextBlock
1416
+ *
1417
+ * @param {RTETextNode} splitNode -
1418
+ * @param {number} startOffsetOfNode -
1419
+ * @param {RTEBlock} target -
1420
+ * @returns {Nullable<RTEBlock>} Nullable<RTEBlock>
1421
+ */
1422
+ breakSingleBlock(splitNode, startOffsetOfNode, target) {
1423
+ const newParagraph = this.getNewParagraph(splitNode);
1424
+ if (newParagraph) {
1425
+ if (this.isCaretPositionAtBlockEnd(target, splitNode, startOffsetOfNode)) {
1426
+ target.parent.apply(new InsertChildrenAfterAction(target, newParagraph));
1427
+ }
1428
+ else if (this.isCaretPositionAtBlockStart(target, splitNode, startOffsetOfNode)) {
1429
+ target.parent.apply(new InsertChildrenBeforeAction(target, newParagraph));
1430
+ }
1431
+ else {
1432
+ const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
1433
+ target.apply(splitBlockAction);
1434
+ return splitBlockAction.newBlock;
1435
+ }
1436
+ return newParagraph;
1437
+ }
1438
+ }
1439
+ /**
1440
+ * Create new Paragraph
1441
+ *
1442
+ * @param {RTENode} splitNode - The split node of the block.
1443
+ * @returns {Nullable<RTETextBlock>} - The new text block.
1444
+ */
1445
+ getNewParagraph(splitNode) {
1446
+ const newParagraph = this.createNewParagraph('');
1447
+ if (newParagraph) {
1448
+ let textNode = newParagraph.children[0];
1449
+ if (splitNode.isTextNode() && splitNode.isContentEditable()) {
1450
+ newParagraph.children = [];
1451
+ textNode = splitNode.cloneWithText('');
1452
+ // The link annotation don't need inherited
1453
+ textNode.annotationMap.delete(NodeAnnotationTypeEnum.LINK);
1454
+ newParagraph.apply(new AppendChildrenAction([textNode]));
1455
+ }
1456
+ return newParagraph;
1457
+ }
1458
+ }
1459
+ }
1460
+
1461
+ /**
1462
+ * Update the cursor position in the editor.
1463
+ *
1464
+ * @example richEditorRef.value.apply(new UpdateCursorPositionAction(nextFocusNode, [offset], [immediatelyRun]))
1465
+ */
1466
+ class UpdateCursorPositionAction extends ModifyContentAction {
1467
+ /**
1468
+ * Set the cursor position at end of the current node.
1469
+ *
1470
+ * @param {RTENode} nextFocusNode - The rich text editor needs focus node.
1471
+ * @param {number} offset - The cursor offset position.
1472
+ * @param {boolean} immediatelyRun - Whether to immediately set the cursor position after applying it. Usually the set action will trigger after the UI renders.
1473
+ */
1474
+ constructor(nextFocusNode, offset, immediatelyRun = false) {
1475
+ super();
1476
+ this.isFlushable = true;
1477
+ this.type = ModifyContentActionType.UPDATE_CURSOR_POSITION;
1478
+ this.immediatelyRun = false;
1479
+ this.nextFocusNode = nextFocusNode;
1480
+ this.offset = offset;
1481
+ this.immediatelyRun = immediatelyRun;
1482
+ // Don't flush changes if we want to immediately run the cursor update. Usually the current value is the latest value.
1483
+ if (this.immediatelyRun) {
1484
+ this.isFlushable = false;
1485
+ }
1486
+ }
1487
+ }
1488
+
1489
+ /**
1490
+ * Insert a new node in nearest position of parent block strategy.
1491
+ */
1492
+ class InsertNodeToNearestRootStrategy extends ActionHandleStrategy {
1493
+ /**
1494
+ * @inheritDoc
1495
+ */
1496
+ handleAction(action, target) {
1497
+ const { rteRange, nodeToBeInserted } = action;
1498
+ const { startNode, startOffset } = rteRange;
1499
+ if (startNode) {
1500
+ const parent = target;
1501
+ if (startNode.isContentEditable() && startNode.isTextNode()) {
1502
+ if (startNode.text === '\n' || !startNode.text || startOffset === 0) {
1503
+ parent.apply(new InsertChildrenBeforeAction(startNode, nodeToBeInserted));
1504
+ }
1505
+ else {
1506
+ const startText = startNode.text.substring(0, startOffset);
1507
+ const endText = startNode.text.substring(startOffset);
1508
+ const startTextNode = startNode.cloneWithText(startText);
1509
+ const endTextNode = startNode.cloneWithText(endText);
1510
+ const insertNodes = [startTextNode, nodeToBeInserted];
1511
+ if (endText) {
1512
+ insertNodes.push(endTextNode);
1513
+ }
1514
+ parent.apply(new InsertChildrenBeforeAction(startNode, ...insertNodes));
1515
+ parent.apply(new RemoveChildrenAction(startNode));
1516
+ }
1517
+ }
1518
+ else {
1519
+ if (startOffset !== 0) {
1520
+ parent.apply(new InsertChildrenAfterAction(startNode, nodeToBeInserted));
1521
+ }
1522
+ else {
1523
+ parent.apply(new InsertChildrenBeforeAction(startNode, nodeToBeInserted));
1524
+ }
1525
+ }
1526
+ this.updateCursorPosition(nodeToBeInserted);
1527
+ }
1528
+ }
1529
+ /**
1530
+ * Update the cursor position to end of the inserted node.
1531
+ *
1532
+ * @param {RTENode} node - node to find root content
1533
+ */
1534
+ updateCursorPosition(node) {
1535
+ const root = this.getRootContent(node.parent);
1536
+ if (root) {
1537
+ root.apply(new UpdateCursorPositionAction(node));
1538
+ }
1539
+ }
1540
+ }
1541
+
1542
+ /**
1543
+ * Strategy for inserting text into a decorator node. The decorator can not edit, so we insert the text as a new child.
1544
+ */
1545
+ class InsertTextToDecoratorNodeStrategy extends ActionHandleStrategy {
1546
+ /**
1547
+ * @inheritDoc
1548
+ */
1549
+ handleAction(action, target) {
1550
+ const { text, offset, decoratorNode } = action;
1551
+ const paragraph = this.createNewParagraph(text);
1552
+ if (paragraph) {
1553
+ const newTextNode = paragraph.children[0];
1554
+ if (offset !== 0) {
1555
+ target.apply(new InsertChildrenAfterAction(decoratorNode, newTextNode));
1556
+ }
1557
+ else {
1558
+ target.apply(new InsertChildrenBeforeAction(decoratorNode, newTextNode));
1559
+ }
1560
+ this.setTheCursorPosition(newTextNode);
1561
+ }
1562
+ }
1563
+ /**
1564
+ * Set the cursor position to the new text node.
1565
+ *
1566
+ * @param {RTENode} focusNode - The new text node to focus on.
1567
+ */
1568
+ setTheCursorPosition(focusNode) {
1569
+ const rootContent = this.getRootContent(focusNode.parent);
1570
+ if (rootContent) {
1571
+ rootContent.apply(new UpdateCursorPositionAction(focusNode));
1572
+ }
1573
+ }
1574
+ }
1575
+
1576
+ /**
1577
+ * Insert new paragraph into current list item block at special position.
1578
+ */
1579
+ class ListItemInsertNewParagraphStrategy extends ActionHandleStrategy {
1580
+ /**
1581
+ * @inheritDoc
1582
+ */
1583
+ handleAction(action, target) {
1584
+ action.newBlock = this.breakSingleListItemBlock(action.startContainerNode, action.startOffset, target);
1585
+ }
1586
+ /**
1587
+ * Breaks a single list item block at a specific position.
1588
+ *
1589
+ * @param {RTETextNode} splitNode - The node that needs to be split within a list item block.
1590
+ * @param {number} startOffsetOfNode - The index within the `splitNode` where the break operation should occur.
1591
+ * @param {RTEListItemBlock} target - The list item block.
1592
+ * @returns {Nullable<RTEBlock>} Returns either a new `RTEListItemBlock` if the caret
1593
+ * position is at the end of the `splitNode`, or it returns the result of splitting the block at the
1594
+ * caret position if it is neither at the start nor at the end.
1595
+ */
1596
+ breakSingleListItemBlock(splitNode, startOffsetOfNode, target) {
1597
+ const newListItem = target.createNewListItem();
1598
+ const newBreakNode = this.copyInlineStyleToNewNode(splitNode);
1599
+ newListItem.apply(new AppendChildrenAction([newBreakNode]));
1600
+ if (this.isCaretPositionAtBlockEnd(target, splitNode, startOffsetOfNode)) {
1601
+ return this.breakListItemAtEnd(newListItem, target);
1602
+ }
1603
+ else if (this.isCaretPositionAtBlockStart(target, splitNode, startOffsetOfNode)) {
1604
+ target.parent.apply(new InsertChildrenBeforeAction(target, newListItem));
1605
+ }
1606
+ else {
1607
+ const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
1608
+ target.apply(splitBlockAction);
1609
+ return splitBlockAction.newBlock;
1610
+ }
1611
+ return newListItem;
1612
+ }
1613
+ /**
1614
+ * Breaks a list item at the end and handles the insertion of a new list item or paragraph accordingly.
1615
+ *
1616
+ * @param {RTEListItemBlock} newListItem - Item that represents a new list item to be added to the existing list.
1617
+ * @param {RTEListItemBlock} target - The list item block.
1618
+ * @returns {RTEBlock} Returns a `RTEBlock`.
1619
+ */
1620
+ breakListItemAtEnd(newListItem, target) {
1621
+ const lastItem = target.parent.children[target.parent.children.length - 1];
1622
+ const currentItemIsEmpty = target.children.length === 1 && target.children[0].isEmpty();
1623
+ if (target === lastItem && currentItemIsEmpty) {
1624
+ const parentParent = target.parent.parent;
1625
+ if (parentParent['type'] !== 'list-item') {
1626
+ const newParagraph = RTETextBlock.from({
1627
+ id: generateUUID(),
1628
+ type: 'paragraph',
1629
+ nodes: [],
1630
+ });
1631
+ newParagraph.apply(new AppendChildrenAction(newListItem.children));
1632
+ parentParent.apply(new InsertChildrenAfterAction(target.parent, newParagraph));
1633
+ target.parent.apply(new RemoveChildrenAction(target));
1634
+ return newParagraph;
1635
+ }
1636
+ else {
1637
+ parentParent.parent.apply(new InsertChildrenAfterAction(parentParent, newListItem));
1638
+ target.parent.apply(new RemoveChildrenAction(target));
1639
+ }
1640
+ }
1641
+ else {
1642
+ target.parent.apply(new InsertChildrenAfterAction(target, newListItem));
1643
+ }
1644
+ return newListItem;
1645
+ }
1646
+ /**
1647
+ * Copy the inline style to new node
1648
+ *
1649
+ * @param {RTETextNode} needCopedNode - The node that needed to be copied to
1650
+ * @returns {RTETextNode} Returns a `RTETextNode`.
1651
+ */
1652
+ copyInlineStyleToNewNode(needCopedNode) {
1653
+ const textNode = needCopedNode.cloneWithText('');
1654
+ // The link annotation doesn't need to inherit
1655
+ textNode.annotationMap.delete(NodeAnnotationTypeEnum.LINK);
1656
+ return textNode;
1657
+ }
1658
+ }
1659
+
1660
+ /**
1661
+ * Delete the nest list block action
1662
+ *
1663
+ * @example needRemovedNestList.parent.apply(new RemoveNestListAction(needRemovedNestList))
1664
+ */
1665
+ class RemoveNestListAction extends ModifyContentAction {
1666
+ constructor(childList) {
1667
+ super();
1668
+ this.type = ModifyContentActionType.DELETE_NEST_LIST;
1669
+ this.nestListBlockToBeRemoved = childList;
1670
+ }
1671
+ }
1672
+
1673
+ /**
1674
+ * List remove list item strategy.
1675
+ */
1676
+ class ListRemoveListItemStrategy extends RemoveChildrenStrategy {
1677
+ /**
1678
+ * Remove the list item, check the list item and remove self if the list item is empty.
1679
+ *
1680
+ * @param {RemoveChildrenAction} action - The remove action instance.
1681
+ * @param {RTEListBlock} target - The list block.
1682
+ */
1683
+ handleAction(action, target) {
1684
+ super.handleAction(action, target);
1685
+ const parent = target.parent;
1686
+ if (target.children.length === 0 && parent) {
1687
+ // The parent is a list item mean the current block is a nest list, so we need to use RemoveNestListAction to remove the item
1688
+ if (parent['type'] === 'list-item') {
1689
+ parent.apply(new RemoveNestListAction(target));
1690
+ }
1691
+ else {
1692
+ parent.apply(new RemoveChildrenAction(target));
1693
+ }
1694
+ }
1695
+ }
1696
+ }
1697
+
1698
+ /**
1699
+ * Strategy to handle the paste content into function block.
1700
+ */
1701
+ class PasteContentStrategy extends ActionHandleStrategy {
1702
+ /**
1703
+ * @inheritDoc
1704
+ */
1705
+ handleAction(action, target) {
1706
+ if (target.parent) {
1707
+ const { blocksToBeInserted, startNode, startOffset } = action;
1708
+ let futureFocusBlock = target;
1709
+ if (startNode === target.children[0] && startOffset === 0) {
1710
+ target.parent.apply(new InsertChildrenBeforeAction(target, ...blocksToBeInserted));
1711
+ }
1712
+ else {
1713
+ const breakAction = new SplitBlockWithNodeAction(startNode, startOffset);
1714
+ target.apply(breakAction);
1715
+ target.parent.apply(new InsertChildrenAfterAction(target, ...blocksToBeInserted));
1716
+ futureFocusBlock = breakAction.newBlock;
1717
+ }
1718
+ action.futureFocusBlock = futureFocusBlock;
1719
+ }
1720
+ }
1721
+ }
1722
+
1723
+ /**
1724
+ * Manager class for registering DTO action strategies.
1725
+ */
1726
+ class RTEDTOActionStrategyManager {
1727
+ /**
1728
+ * Registers basic strategies for a given DTO class.
1729
+ *
1730
+ * @param {string} dtoClassName - The name of the RTE block class name.
1731
+ */
1732
+ registerBlockBasicStrategies(dtoClassName) {
1733
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_CHILDREN, dtoClassName, dtoClassName === RTEListBlock.name
1734
+ ? new ListRemoveListItemStrategy()
1735
+ : new RemoveChildrenStrategy());
1736
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.APPEND_CHILDREN, dtoClassName, new AppendChildrenStrategy());
1737
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_CHILDREN_BEFORE, dtoClassName, new InsertChildrenBeforeStrategy());
1738
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_CHILDREN_AFTER, dtoClassName, new InsertChildrenAfterStrategy());
1739
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_BLOCK_CONTENT, dtoClassName, new BlockDeleteTextOrDecoratorNodeStrategy());
1740
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_NEW_PARAGRAPH, dtoClassName, dtoClassName === RTEListItemBlock.name
1741
+ ? new ListItemInsertNewParagraphStrategy()
1742
+ : new BlockInsertNewParagraphStrategy());
1743
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_TEXT_TO_DECORATOR_NODE, dtoClassName, new InsertTextToDecoratorNodeStrategy());
1744
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_NODE_TO_NEAREST_ROOT, dtoClassName, new InsertNodeToNearestRootStrategy());
1745
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.PASTE_CONTENT, dtoClassName, new PasteContentStrategy());
1746
+ }
1747
+ }
1748
+ const RTEDTOActionStrategyManager$1 = new RTEDTOActionStrategyManager();
1749
+
1750
+ /**
1751
+ * Abstract class to define handler for generate the annotations
1752
+ */
1753
+ class AnnotationGeneratorStrategyAbstract {
1754
+ }
1755
+
1756
+ /** Handle bold annotation */
1757
+ class BoldAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1758
+ /**
1759
+ * @inheritDoc
1760
+ */
1761
+ canHandle(targetDto) {
1762
+ return targetDto.name === 'RTETextNode';
1763
+ }
1764
+ /**
1765
+ * Handle annotation.
1766
+ *
1767
+ * @param {HTMLElement} element - Current elements.
1768
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
1769
+ * @returns {VegaRTETextAnnotations} - Annotation.
1770
+ */
1771
+ handle(element, parentAnnotations = {}) {
1772
+ return this.isBold(element) || parentAnnotations.bold ? { bold: true } : {};
1773
+ }
1774
+ /**
1775
+ * Is bold element.
1776
+ *
1777
+ * @param {HTMLElement} element - current element.
1778
+ * @returns {boolean} - boolean.
1779
+ */
1780
+ isBold(element) {
1781
+ return (element.nodeName === 'STRONG' ||
1782
+ element.nodeName === 'B' ||
1783
+ element.style.fontWeight === 'bold' ||
1784
+ element.style.fontWeight === '700' ||
1785
+ element.classList.contains('v-rte--bold'));
1786
+ }
1787
+ }
1788
+
1789
+ /** Handle custom attribute annotation */
1790
+ class CustomAttributeAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1791
+ /**
1792
+ * Can be handle.
1793
+ *
1794
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
1795
+ * @param {HtmlElementToAnnotationGenerateOptions} [options] - Options for annotation generator.
1796
+ * @returns {boolean} - .
1797
+ */
1798
+ canHandle(targetDto, options) {
1799
+ return !options.skipCustomAnnotations && !!targetDto;
1800
+ }
1801
+ /**
1802
+ * Handle annotation.
1803
+ *
1804
+ * @param {HTMLElement} element - Current elements.
1805
+ * @returns {VegaRTETextAnnotations} - Annotation.
1806
+ */
1807
+ handle(element) {
1808
+ const attributes = this.getAttributes(element);
1809
+ return Object.keys(attributes).length > 0 ? { customAttribute: attributes } : {};
1810
+ }
1811
+ /**
1812
+ * Obtain the custom attributes of element, excluding 'style' and 'class'.
1813
+ *
1814
+ * @param {HTMLElement} element - current element.
1815
+ * @returns {Record<string, string>} - Record<string, string>.
1816
+ */
1817
+ getAttributes(element) {
1818
+ const attributeNames = element
1819
+ .getAttributeNames()
1820
+ .filter((attr) => attr !== 'style' && attr !== 'class' && this.isValidAttr(attr));
1821
+ return attributeNames.reduce((acc, item) => {
1822
+ acc[item] = element.getAttribute(item);
1823
+ return acc;
1824
+ }, {});
1825
+ }
1826
+ /**
1827
+ * Check if the attribute name is valid.
1828
+ *
1829
+ * @param {string} attr - Attribute name.
1830
+ * @returns {boolean} - True if valid, false otherwise.
1831
+ */
1832
+ isValidAttr(attr) {
1833
+ return /^[a-zA-Z_][\w-]*$/.test(attr);
1834
+ }
1835
+ }
1836
+
1837
+ /** Handle custom class annotation */
1838
+ class CustomClassAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1839
+ /**
1840
+ * Can be handle.
1841
+ *
1842
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
1843
+ * @param {HtmlElementToAnnotationGenerateOptions} [options] - Options for annotation generator.
1844
+ * @returns {boolean} - .
1845
+ */
1846
+ canHandle(targetDto, options) {
1847
+ return !options.skipCustomAnnotations && !!targetDto;
1848
+ }
1849
+ /**
1850
+ * Handle annotation.
1851
+ *
1852
+ * @param {HTMLElement} element - Current elements.
1853
+ * @returns {VegaRTETextAnnotations} - Annotation.
1854
+ */
1855
+ handle(element) {
1856
+ const classes = this.getCustomClass(element);
1857
+ return classes.length > 0 ? { customClass: classes } : {};
1858
+ }
1859
+ /**
1860
+ * Get the custom class
1861
+ *
1862
+ * @param {HTMLElement} element - current element.
1863
+ * @returns {string[]} - the class after .
1864
+ */
1865
+ getCustomClass(element) {
1866
+ return element.classList
1867
+ .toString()
1868
+ .split(' ')
1869
+ .filter((item) => !item.includes('v-rte') && item !== '');
1870
+ }
1871
+ }
1872
+
1873
+ /** Handle custom style annotation */
1874
+ class CustomStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1875
+ /**
1876
+ * Can be handle.
1877
+ *
1878
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
1879
+ * @param {HtmlElementToAnnotationGenerateOptions} [options] - Options for annotation generator.
1880
+ * @returns {boolean} - .
1881
+ */
1882
+ canHandle(targetDto, options) {
1883
+ return !options.skipCustomAnnotations && !!targetDto;
1884
+ }
1885
+ /**
1886
+ * Handle annotation.
1887
+ *
1888
+ * @param {HTMLElement} element - Current elements.
1889
+ * @returns {VegaRTETextAnnotations} - Annotation.
1890
+ */
1891
+ handle(element) {
1892
+ const styles = this.generateCustomStyleAnnotations(element);
1893
+ return Object.keys(styles).length > 0 ? { customStyle: styles } : {};
1894
+ }
1895
+ /**
1896
+ * Obtain and format the style of element.
1897
+ *
1898
+ * @param {HTMLElement} element - current element.
1899
+ * @returns {AnnotationStyle} - Record<string, string>.
1900
+ */
1901
+ generateCustomStyleAnnotations(element) {
1902
+ const customStyle = element.getAttribute('style');
1903
+ if (!customStyle)
1904
+ return {};
1905
+ const styleValue = customStyle.split(';').filter(Boolean);
1906
+ return styleValue
1907
+ .filter((key) => key !== ' ')
1908
+ .map((key) => {
1909
+ // to remove redundant quote pairs if needed, for example: ['fontFamily: "Roboto Mono"'] will be updated to ['fontFamily: Roboto Mono']
1910
+ const styleObject = key.replace(/(['"])(.*?)\1/g, '$2').split(':');
1911
+ const styleKey = dashCaseToCamel(styleObject[0].trim());
1912
+ return {
1913
+ [styleKey]: styleObject[1].trim().replace(';', ''),
1914
+ };
1915
+ })
1916
+ .reduce((current, obj) => (Object.assign(Object.assign({}, current), obj)), {});
1917
+ }
1918
+ }
1919
+
1920
+ /** Handle indent annotation */
1921
+ class IndentAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1922
+ /**
1923
+ * @inheritDoc
1924
+ */
1925
+ canHandle(targetDto) {
1926
+ return ['RTETextBlock', 'RTEListItemBlock', 'RTEListBlock'].includes(targetDto.name);
1927
+ }
1928
+ /**
1929
+ * Handle annotation.
1930
+ *
1931
+ * @param {HTMLElement} element - Current elements.
1932
+ * @returns {VegaRTEBlockAnnotations} - Annotation.
1933
+ */
1934
+ handle(element) {
1935
+ const indent = this.getIndent(element);
1936
+ return indent ? { indent: indent } : {};
1937
+ }
1938
+ /**
1939
+ * Get indent of current element.
1940
+ *
1941
+ * @param {HTMLElement} element - current element.
1942
+ * @returns {Nullable<number>} - Indent.
1943
+ */
1944
+ getIndent(element) {
1945
+ const style = element.style;
1946
+ let marginLeft;
1947
+ if (style.marginLeft) {
1948
+ marginLeft = style.marginLeft;
1949
+ }
1950
+ else if (style.margin) {
1951
+ const margins = style.margin.split(' ');
1952
+ switch (margins.length) {
1953
+ case 4:
1954
+ marginLeft = margins[3];
1955
+ break;
1956
+ case 2:
1957
+ case 3:
1958
+ marginLeft = margins[1];
1959
+ break;
1960
+ default:
1961
+ marginLeft = margins[0];
1962
+ break;
1963
+ }
1964
+ }
1965
+ else {
1966
+ return null;
1967
+ }
1968
+ const marginLeftNumber = Number(marginLeft.replace('px', ''));
1969
+ return marginLeftNumber && marginLeftNumber >= 0 ? Math.floor(marginLeftNumber / 16) : null;
1970
+ }
1971
+ }
1972
+
1973
+ /** Handle text align annotation */
1974
+ class TextAlignAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1975
+ /**
1976
+ * Can be handle.
1977
+ *
1978
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
1979
+ * @returns {boolean} - .
1980
+ */
1981
+ canHandle(targetDto) {
1982
+ return ['RTETextBlock', 'RTEListItemBlock', 'RTEListBlock'].includes(targetDto.name);
1983
+ }
1984
+ /**
1985
+ * Handle annotation.
1986
+ *
1987
+ * @param {HTMLElement} element - Current elements.
1988
+ * @returns {VegaRTEBlockAnnotations} - Annotation.
1989
+ */
1990
+ handle(element) {
1991
+ const textAlign = this.getTextAlign(element);
1992
+ return textAlign ? { textAlign: textAlign } : {};
1993
+ }
1994
+ /**
1995
+ * Get text align of current element.
1996
+ *
1997
+ * @param {HTMLElement} element - current element.
1998
+ * @returns {Nullable<VegaRTEBlockAlignment>} - Text align.
1999
+ */
2000
+ getTextAlign(element) {
2001
+ const classList = element.classList;
2002
+ if (classList.contains(`v-rte--horizontal-alignment-left`)) {
2003
+ return 'left';
2004
+ }
2005
+ else if (classList.contains(`v-rte--horizontal-alignment-center`)) {
2006
+ return 'center';
2007
+ }
2008
+ else if (classList.contains(`v-rte--horizontal-alignment-right`)) {
2009
+ return 'right';
2010
+ }
2011
+ else if (classList.contains(`v-rte--horizontal-alignment-justify`)) {
2012
+ return 'justify';
2013
+ }
2014
+ const style = element.style;
2015
+ switch (style.textAlign) {
2016
+ case 'center':
2017
+ return 'center';
2018
+ case 'right':
2019
+ return 'right';
2020
+ case 'justify':
2021
+ return 'justify';
2022
+ case 'left':
2023
+ return 'left';
2024
+ default:
2025
+ return null;
2026
+ }
2027
+ }
2028
+ }
2029
+
2030
+ /** Handle code annotation */
2031
+ class CodeAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2032
+ /**
2033
+ * @inheritDoc
2034
+ */
2035
+ canHandle(targetDto) {
2036
+ return targetDto.name === 'RTETextNode';
2037
+ }
2038
+ /**
2039
+ * Handle annotation.
2040
+ *
2041
+ * @param {HTMLElement} element - Current elements.
2042
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2043
+ * @returns {VegaRTETextAnnotations} - Annotation.
2044
+ */
2045
+ handle(element, parentAnnotations = {}) {
2046
+ return this.isCode(element) || parentAnnotations.code ? { code: true } : {};
2047
+ }
2048
+ /**
2049
+ * Is code element.
2050
+ *
2051
+ * @param {HTMLElement} element - current element.
2052
+ * @returns {boolean} - boolean.
2053
+ */
2054
+ isCode(element) {
2055
+ return (element.classList.contains('v-rte--code') ||
2056
+ element.nodeName === 'CODE' ||
2057
+ element.nodeName === 'PRE' ||
2058
+ element.style.fontFamily === 'monospace' ||
2059
+ element.style.fontFamily.replace(/["']/g, '') === 'Roboto Mono');
2060
+ }
2061
+ }
2062
+
2063
+ /** Handle color annotation */
2064
+ class ColorAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2065
+ /**
2066
+ * @inheritDoc
2067
+ */
2068
+ canHandle(targetDto) {
2069
+ return targetDto.name === 'RTETextNode';
2070
+ }
2071
+ /**
2072
+ * Handle annotation.
2073
+ *
2074
+ * @param {HTMLElement} element - Current elements.
2075
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2076
+ * @returns {VegaRTETextAnnotations} - Annotation.
2077
+ */
2078
+ handle(element, parentAnnotations = {}) {
2079
+ const color = this.getColor(element) || parentAnnotations.textColor;
2080
+ return color ? { textColor: color } : {};
2081
+ }
2082
+ /**
2083
+ * Get current color of element.
2084
+ *
2085
+ * @param {HTMLElement} element - current element.
2086
+ * @returns {Nullable<string>} - color.
2087
+ */
2088
+ getColor(element) {
2089
+ var _a;
2090
+ const color = element.style.color;
2091
+ const hexColor = (_a = rgbToHex(color)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
2092
+ if (hexColor) {
2093
+ // We don't display default text color as inline style, because we defined it in the vega-rich-text-content.scss.
2094
+ const colorSchema = RTE_TEXT_COLORS.filter((item) => item.key !== RTE_DEFAULT_TEXT_COLOR.key).find((schema) => schema.light === hexColor || schema.dark === hexColor);
2095
+ if (colorSchema)
2096
+ return colorSchema.key;
2097
+ return null;
2098
+ }
2099
+ else {
2100
+ for (const color of RTE_TEXT_COLORS) {
2101
+ if (element.style.color.includes(color.key)) {
2102
+ return color.key;
2103
+ }
2104
+ }
2105
+ return null;
2106
+ }
2107
+ }
2108
+ }
2109
+
2110
+ /** Handle italic annotation */
2111
+ class ItalicAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2112
+ /**
2113
+ * @inheritDoc
2114
+ */
2115
+ canHandle(targetDto) {
2116
+ return targetDto.name === 'RTETextNode';
2117
+ }
2118
+ /**
2119
+ * Handle annotation.
2120
+ *
2121
+ * @param {HTMLElement} element - Current elements.
2122
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2123
+ * @returns {VegaRTETextAnnotations} - Annotation.
2124
+ */
2125
+ handle(element, parentAnnotations = {}) {
2126
+ return this.isItalic(element) || parentAnnotations.italic ? { italic: true } : {};
2127
+ }
2128
+ /**
2129
+ * Is italic element.
2130
+ *
2131
+ * @param {HTMLElement} element - current element.
2132
+ * @returns {boolean} - boolean.
2133
+ */
2134
+ isItalic(element) {
2135
+ return (element.nodeName === 'I' ||
2136
+ element.style.fontStyle === 'italic' ||
2137
+ element.nodeName === 'EM' ||
2138
+ element.classList.contains('v-rte--italic'));
2139
+ }
2140
+ }
2141
+
2142
+ /** Handle link annotation */
2143
+ class LinkAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2144
+ constructor() {
2145
+ super(...arguments);
2146
+ this.handlers = [
2147
+ new CustomAttributeAnnotationHandler(),
2148
+ new CustomClassAnnotationHandler(),
2149
+ new CustomStyleAnnotationHandler(),
2150
+ ];
2151
+ }
2152
+ /**
2153
+ * Can be handle.
2154
+ *
2155
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
2156
+ * @returns {boolean} - .
2157
+ */
2158
+ canHandle(targetDto) {
2159
+ return targetDto.name === 'RTETextNode';
2160
+ }
2161
+ /**
2162
+ * Handle annotation.
2163
+ *
2164
+ * @param {HTMLElement} element - Current elements.
2165
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2166
+ * @returns {VegaRTETextAnnotations} - Annotation.
2167
+ */
2168
+ handle(element, parentAnnotations = {}) {
2169
+ if (parentAnnotations.link)
2170
+ return { link: parentAnnotations.link };
2171
+ return element.tagName === 'A' ? { link: this.generateLinkAnnotations(element) } : {};
2172
+ }
2173
+ /**
2174
+ * Generate link annotations.
2175
+ *
2176
+ * @param {HTMLElement} element - Current elements.
2177
+ * @returns {VegaRTELink} - link annotations.
2178
+ */
2179
+ generateLinkAnnotations(element) {
2180
+ const annotations = {
2181
+ href: element.getAttribute('href') || '',
2182
+ groupKey: generateUUID(),
2183
+ };
2184
+ this.handlers.forEach((handler) => {
2185
+ Object.assign(annotations, handler.handle(element));
2186
+ });
2187
+ return annotations;
2188
+ }
2189
+ }
2190
+
2191
+ /** Handle strike through annotation */
2192
+ class StrikeThroughAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2193
+ /**
2194
+ * @inheritDoc
2195
+ */
2196
+ canHandle(targetDto) {
2197
+ return targetDto.name === 'RTETextNode';
2198
+ }
2199
+ /**
2200
+ * Handle annotation.
2201
+ *
2202
+ * @param {HTMLElement} element - Current elements.
2203
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2204
+ * @returns {VegaRTETextAnnotations} - Annotation.
2205
+ */
2206
+ handle(element, parentAnnotations = {}) {
2207
+ return this.isStrikethrough(element) || parentAnnotations.strikethrough
2208
+ ? { strikethrough: true }
2209
+ : {};
2210
+ }
2211
+ /**
2212
+ * Is strikethrough element.
2213
+ *
2214
+ * @param {HTMLElement} element - current element.
2215
+ * @returns {boolean} - boolean.
2216
+ */
2217
+ isStrikethrough(element) {
2218
+ return (element.style.textDecoration.includes('line-through') ||
2219
+ element.nodeName === 'S' ||
2220
+ element.nodeName === 'DEL' ||
2221
+ element.classList.contains('v-rte--strikethrough'));
2222
+ }
2223
+ }
2224
+
2225
+ /** Handle underline annotation */
2226
+ class UnderlineAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2227
+ /**
2228
+ * @inheritDoc
2229
+ */
2230
+ canHandle(targetDto) {
2231
+ return targetDto.name === 'RTETextNode';
2232
+ }
2233
+ /**
2234
+ * Handle annotation.
2235
+ *
2236
+ * @param {HTMLElement} element - Current elements.
2237
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2238
+ * @returns {VegaRTETextAnnotations} - Annotation.
2239
+ */
2240
+ handle(element, parentAnnotations = {}) {
2241
+ return this.isUnderline(element) || parentAnnotations.underline ? { underline: true } : {};
2242
+ }
2243
+ /**
2244
+ * Is underline element.
2245
+ *
2246
+ * @param {HTMLElement} element - current element.
2247
+ * @returns {boolean} - boolean.
2248
+ */
2249
+ isUnderline(element) {
2250
+ return (element.style.textDecoration.includes('underline') ||
2251
+ element.nodeName === 'U' ||
2252
+ element.nodeName === 'INS' ||
2253
+ element.classList.contains('v-rte--underline'));
2254
+ }
2255
+ }
2256
+
2257
+ /** Handle text style annotation */
2258
+ class TextStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2259
+ /**
2260
+ * Can be handle.
2261
+ *
2262
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
2263
+ * @param {HtmlElementToAnnotationGenerateOptions} options - Options for annotation generator.
2264
+ * @returns {boolean} - .
2265
+ */
2266
+ canHandle(targetDto, options) {
2267
+ return !!options.autoMatchFormat && targetDto.name === 'RTETextBlock';
2268
+ }
2269
+ /**
2270
+ * Handle annotation.
2271
+ *
2272
+ * @param {HTMLElement} element - Current elements.
2273
+ * @returns {VegaRTETextBlockAnnotations} - Annotation.
2274
+ */
2275
+ handle(element) {
2276
+ const textStyle = this.getTextStyle(element);
2277
+ return textStyle ? { textStyle: textStyle } : {};
2278
+ }
2279
+ /**
2280
+ * Get the node type of element. The element type is determined in the following
2281
+ * order: "data-type" attribute, node name, font size and class name.
2282
+ *
2283
+ * @param {HTMLElement} element - element.
2284
+ * @returns {Nullable<VegaRTETextStyleType>} - node type.
2285
+ */
2286
+ getTextStyle(element) {
2287
+ const byDataType = this.getElementTypeByDataType(element);
2288
+ if (byDataType)
2289
+ return byDataType;
2290
+ const byNodeName = this.getElementTypeByNodeName(element);
2291
+ if (byNodeName)
2292
+ return byNodeName;
2293
+ const byFontSize = this.getElementTypeByFontSize(element);
2294
+ if (byFontSize)
2295
+ return byFontSize;
2296
+ const byClassName = this.getElementTypeByClassName(element);
2297
+ if (byClassName)
2298
+ return byClassName;
2299
+ return null;
2300
+ }
2301
+ /**
2302
+ * Get the element type by data-type attribute.
2303
+ *
2304
+ * @param {HTMLElement} element - element.
2305
+ * @returns {Nullable<VegaRTETextStyleType>} - element type or null if not found.
2306
+ */
2307
+ getElementTypeByDataType(element) {
2308
+ if (element.nodeType !== Node.TEXT_NODE && element.hasAttribute('data-type')) {
2309
+ return element.getAttribute('data-type');
2310
+ }
2311
+ return null;
2312
+ }
2313
+ /**
2314
+ * Get the element type by font size.
2315
+ *
2316
+ * @param {HTMLElement} element - element.
2317
+ * @returns {Nullable<VegaRTETextStyleType>} - element type or null if not found.
2318
+ */
2319
+ getElementTypeByFontSize(element) {
2320
+ var _a;
2321
+ switch ((_a = element.style) === null || _a === void 0 ? void 0 : _a.fontSize) {
2322
+ case '36px':
2323
+ return 'title';
2324
+ case '28px':
2325
+ return 'subtitle';
2326
+ case '22px':
2327
+ return 'heading-1';
2328
+ case '20px':
2329
+ return 'heading-2';
2330
+ case '18px':
2331
+ return 'heading-3';
2332
+ default:
2333
+ return null;
2334
+ }
2335
+ }
2336
+ /**
2337
+ * Get the element type by node name.
2338
+ *
2339
+ * @param {HTMLElement} element - element.
2340
+ * @returns {Nullable<VegaRTETextStyleType>} - element type or null if not found.
2341
+ */
2342
+ getElementTypeByNodeName(element) {
2343
+ switch (element.nodeName) {
2344
+ case 'H1':
2345
+ return 'heading-1';
2346
+ case 'H2':
2347
+ return 'heading-2';
2348
+ case 'H3':
2349
+ return 'heading-3';
2350
+ case 'H4':
2351
+ return 'heading-4';
2352
+ case 'H5':
2353
+ return 'heading-5';
2354
+ case 'H6':
2355
+ return 'heading-6';
2356
+ default:
2357
+ return null;
2358
+ }
2359
+ }
2360
+ /**
2361
+ * Get the element type by class name.
2362
+ *
2363
+ * @param {HTMLElement} element - element.
2364
+ * @returns {Nullable<VegaRTETextStyleType>} - element type or null if not found.
2365
+ */
2366
+ getElementTypeByClassName(element) {
2367
+ if (element.className) {
2368
+ const match = /\bv-rte--text-style-(title|subtitle|heading-1|heading-2|heading-3|paragraph)\b/.exec(element.className);
2369
+ if (match) {
2370
+ return match[1];
2371
+ }
2372
+ }
2373
+ return null;
2374
+ }
2375
+ }
2376
+
2377
+ /** Handle image size annotation */
2378
+ class ImageSizeAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2379
+ /**
2380
+ * @inheritDoc
2381
+ */
2382
+ canHandle(targetDto) {
2383
+ return targetDto.name === 'RTEImageNode';
2384
+ }
2385
+ /**
2386
+ * Handle annotation.
2387
+ *
2388
+ * @param {HTMLElement} element - Current elements.
2389
+ * @returns {VegaRTEImageAnnotations} - Annotation.
2390
+ */
2391
+ handle(element) {
2392
+ const size = this.getImageSize(element);
2393
+ return size ? { size: size } : {};
2394
+ }
2395
+ /**
2396
+ * Determine the image display size based on the width of the current element.
2397
+ *
2398
+ * @param {HTMLElement} element - current element.
2399
+ * @returns {Nullable<VegaRichTextImageEditorSizeType>} -Image size, default 'md'.
2400
+ */
2401
+ getImageSize(element) {
2402
+ if (element.getAttribute('data-size')) {
2403
+ return element.getAttribute('data-size');
2404
+ }
2405
+ return null;
2406
+ }
2407
+ }
2408
+
2409
+ /** Handle image alt annotation */
2410
+ class ImageAltAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2411
+ /**
2412
+ * @inheritDoc
2413
+ */
2414
+ canHandle(targetDto) {
2415
+ return targetDto.name === 'RTEImageNode';
2416
+ }
2417
+ /**
2418
+ * Handle annotation.
2419
+ *
2420
+ * @param {HTMLElement} element - Current elements.
2421
+ * @returns {VegaRTEImageAnnotations} - Annotation.
2422
+ */
2423
+ handle(element) {
2424
+ return element.hasAttribute('alt') ? { alt: element.getAttribute('alt') } : {};
2425
+ }
2426
+ }
2427
+
2428
+ /**
2429
+ * Handle inline html annotation
2430
+ */
2431
+ class InlineHtmlAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2432
+ constructor() {
2433
+ super(...arguments);
2434
+ this.customAttributeHandler = new CustomAttributeAnnotationHandler();
2435
+ this.customStyleAnnotationHandler = new CustomStyleAnnotationHandler();
2436
+ this.customClassAnnotationHandler = new CustomClassAnnotationHandler();
2437
+ }
2438
+ /**
2439
+ * @inheritDoc
2440
+ */
2441
+ canHandle(targetDto, options) {
2442
+ return targetDto.name === 'RTETextNode' && options.autoMatchFormat === false;
2443
+ }
2444
+ /**
2445
+ * @inheritDoc
2446
+ */
2447
+ handle(element, parentAnnotations) {
2448
+ const canHandle = InlineHtmlAnnotationHandler.canHandleTags.includes(element.nodeName);
2449
+ if (canHandle) {
2450
+ const inlineHtml = this.generateInlineHtmlAnnotation(element, Object.assign({}, parentAnnotations));
2451
+ if (inlineHtml) {
2452
+ return { inlineHtml: inlineHtml };
2453
+ }
2454
+ }
2455
+ return {};
2456
+ }
2457
+ /**
2458
+ * Generate inline html annotation.
2459
+ *
2460
+ * @param {HTMLElement} child - Current element.
2461
+ * @param {VegaRTETextAnnotations} annotations - Current annotations.
2462
+ * @returns {Nullable<VegaInlineHtmlSchema>} - Inline html annotation.
2463
+ */
2464
+ generateInlineHtmlAnnotation(child, annotations) {
2465
+ let { inlineHtml } = annotations;
2466
+ if (!RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) ||
2467
+ (child.childNodes.length === 1 && child.childNodes[0].nodeType !== Node.TEXT_NODE)) {
2468
+ const childInlineHtmlNode = {
2469
+ htmlTag: child.nodeName.toLowerCase(),
2470
+ customAttribute: this.customAttributeHandler.handle(child).customAttribute,
2471
+ customStyle: this.customStyleAnnotationHandler.handle(child).customStyle,
2472
+ customClass: this.customClassAnnotationHandler.handle(child).customClass,
2473
+ };
2474
+ if (!inlineHtml) {
2475
+ inlineHtml = childInlineHtmlNode;
2476
+ }
2477
+ else {
2478
+ let lastChild = inlineHtml;
2479
+ while (lastChild.child &&
2480
+ child.parentNode &&
2481
+ lastChild.child.htmlTag === child.parentNode.nodeName.toLowerCase()) {
2482
+ lastChild = lastChild.child;
2483
+ }
2484
+ lastChild.child = childInlineHtmlNode;
2485
+ }
2486
+ }
2487
+ return inlineHtml ? Object.assign({}, inlineHtml) : null;
2488
+ }
2489
+ }
2490
+ InlineHtmlAnnotationHandler.canHandleTags = [
2491
+ 'A',
2492
+ 'ABBR',
2493
+ 'AUDIO',
2494
+ 'B',
2495
+ 'BDI',
2496
+ 'BDO',
2497
+ 'CITE',
2498
+ 'CODE',
2499
+ 'DEL',
2500
+ 'DFN',
2501
+ 'EMBED',
2502
+ 'EM',
2503
+ 'I',
2504
+ 'INS',
2505
+ 'KBD',
2506
+ 'MARK',
2507
+ 'METER',
2508
+ 'OUTPUT',
2509
+ 'PROGRESS',
2510
+ 'Q',
2511
+ 'S',
2512
+ 'SMALL',
2513
+ 'SPAN',
2514
+ 'STRONG',
2515
+ 'SUB',
2516
+ 'SUP',
2517
+ 'TIME',
2518
+ 'U',
2519
+ 'VAR',
2520
+ 'VIDEO',
2521
+ ];
2522
+
2523
+ /** Html element to annotations generator */
2524
+ class HtmlElementToAnnotationGenerator {
2525
+ constructor() {
2526
+ this.handlers = [
2527
+ new TextAlignAnnotationHandler(),
2528
+ new IndentAnnotationHandler(),
2529
+ new BoldAnnotationHandler(),
2530
+ new ItalicAnnotationHandler(),
2531
+ new UnderlineAnnotationHandler(),
2532
+ new StrikeThroughAnnotationHandler(),
2533
+ new ColorAnnotationHandler(),
2534
+ new LinkAnnotationHandler(),
2535
+ new CodeAnnotationHandler(),
2536
+ new ImageSizeAnnotationHandler(),
2537
+ new ImageAltAnnotationHandler(),
2538
+ new CustomAttributeAnnotationHandler(),
2539
+ new CustomClassAnnotationHandler(),
2540
+ new CustomStyleAnnotationHandler(),
2541
+ new LinkAnnotationHandler(),
2542
+ new TextStyleAnnotationHandler(),
2543
+ new InlineHtmlAnnotationHandler(),
2544
+ ];
2545
+ }
2546
+ /**
2547
+ * The function generates annotations for a given target DTO and HTML element based on a set of
2548
+ * strategies.
2549
+ *
2550
+ * @typedef T class name of target DTO
2551
+ * @typedef V generated annotations type
2552
+ * @param {T} targetDto - Which DTO is the generated annotations to set.
2553
+ * @param {HTMLElement} element - Current html element.
2554
+ * @param {HtmlElementToAnnotationGenerateOptions} [options] - Options
2555
+ * @returns {V} Generated annotations.
2556
+ */
2557
+ generate(targetDto, element, options = { autoMatchFormat: true }) {
2558
+ const isLinkElement = element.tagName === 'A';
2559
+ return this.handlers
2560
+ .filter((handler) => !options.autoMatchFormat && isLinkElement ? handler instanceof LinkAnnotationHandler : true)
2561
+ .filter((handler) => element.nodeType !== Node.TEXT_NODE &&
2562
+ handler.canHandle(targetDto, {
2563
+ skipCustomAnnotations: options.skipCustomAnnotations || isLinkElement,
2564
+ autoMatchFormat: options.autoMatchFormat,
2565
+ }))
2566
+ .reduce((annotations, handler) => {
2567
+ const result = handler.handle(element, options.parentAnnotations);
2568
+ return Object.assign(Object.assign({}, annotations), result);
2569
+ }, {});
2570
+ }
2571
+ }
2572
+ const htmlElementToAnnotationGenerator = new HtmlElementToAnnotationGenerator();
2573
+
2574
+ /** Abstract class for block html element to RTE block dto */
2575
+ class BlockToRTEBlockStrategyAbstract extends ElementToDTOStrategy {
2576
+ constructor() {
2577
+ super(...arguments);
2578
+ this.annotationHandler = new TextStyleAnnotationHandler();
2579
+ }
2580
+ /**
2581
+ * Generate child nodes of block element, this will inherit all annotations from parent to text node and
2582
+ * flat the child nodes.
2583
+ *
2584
+ * Example:
2585
+ * <li>
2586
+ * <u><i>text1</i></u>
2587
+ * <span></span>
2588
+ * <span style='font-weight: bold;'><span>text2</span></span>
2589
+ * text3
2590
+ * </li>
2591
+ * will tranform to:
2592
+ * <li>
2593
+ * <span>text1</span> // with underline and italic annotations
2594
+ * <span></span> // empty span
2595
+ * <span>text2</span> // with bold annotations
2596
+ * <span>text3</span> // no annotations
2597
+ * </li>
2598
+ *
2599
+ * @param {HTMLElement[]} elements - Child elements.
2600
+ * @param {VegaRTETextAnnotations} annotations - Parent annotations.
2601
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
2602
+ * @returns {VegaRTETextNode[]} - Text node DTO.
2603
+ */
2604
+ generateChildNodes(elements, annotations, options) {
2605
+ const childNodes = [];
2606
+ const disableAutoMatchFormat = !!(options && options.autoMatchFormat === false);
2607
+ const parentAnnotations = Object.assign({}, annotations);
2608
+ elements.forEach((child) => {
2609
+ const strategy = ElementToDTOClassStrategyManager.getElementToNodeStrategies().find((item) => item.canHandle([child], 0, options) > 0);
2610
+ let textNodeJson = null;
2611
+ if (strategy) {
2612
+ textNodeJson = strategy.handle([child], options, parentAnnotations);
2613
+ }
2614
+ if (textNodeJson) {
2615
+ childNodes.push(textNodeJson);
2616
+ }
2617
+ else if (isHTMLElement(child) && child.childNodes.length > 0) {
2618
+ const curAnnotations = htmlElementToAnnotationGenerator.generate(RTETextNode, child, Object.assign({ parentAnnotations: disableAutoMatchFormat
2619
+ ? {
2620
+ inlineHtml: parentAnnotations.inlineHtml,
2621
+ link: parentAnnotations.link,
2622
+ code: parentAnnotations.code,
2623
+ }
2624
+ : annotations }, options));
2625
+ childNodes.push(...this.generateChildNodes(Array.from(child.childNodes), curAnnotations, options));
2626
+ }
2627
+ });
2628
+ return childNodes;
2629
+ }
2630
+ /**
2631
+ * Get the node type of element. The element type is determined in the following
2632
+ * order: "data-type" attribute, node name, font size and class name.
2633
+ *
2634
+ * @param {HTMLElement} element - element.
2635
+ * @returns {VegaRTETextBlockType} - Block type.
2636
+ */
2637
+ matchTextBlockType(element) {
2638
+ var _a;
2639
+ return (_a = this.annotationHandler.handle(element).textStyle) !== null && _a !== void 0 ? _a : 'paragraph';
2640
+ }
2641
+ }
2642
+
2643
+ /**
2644
+ * Converting HTML block elements into RTE blocks.
2645
+ */
2646
+ class HtmlBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2647
+ /**
2648
+ * @inheritDoc
2649
+ */
2650
+ canHandle(elementsArray, currentIndex, options) {
2651
+ const element = elementsArray[currentIndex];
2652
+ // - div + img should be handled by RTEImageBlock
2653
+ const isCustomContainer = element.nodeName === 'DIV'
2654
+ ? element.childNodes.length > 0 && element.childNodes[0].nodeName !== 'IMG'
2655
+ : true;
2656
+ return !options.autoMatchFormat &&
2657
+ isCustomContainer &&
2658
+ HtmlBlockStrategy.canHandleTags.includes(elementsArray[currentIndex].nodeName)
2659
+ ? 1
2660
+ : 0;
2661
+ }
2662
+ /**
2663
+ * @inheritDoc
2664
+ */
2665
+ handle(elementsArray, options) {
2666
+ const element = elementsArray[0];
2667
+ return RTEHtmlBlock.from(this.generateHtmlBlock(element, options), options);
2668
+ }
2669
+ /**
2670
+ * @inheritDoc
2671
+ */
2672
+ appendChildBlocks(currentBlock, childBlocks) {
2673
+ currentBlock.children = childBlocks.map((block) => {
2674
+ block.parent = currentBlock;
2675
+ return block;
2676
+ });
2677
+ }
2678
+ /**
2679
+ * @inheritDoc
2680
+ */
2681
+ shouldProceedToElementChildren() {
2682
+ return true;
2683
+ }
2684
+ /**
2685
+ * Generate HTML block DTO from an HTML element.
2686
+ *
2687
+ * @param {HTMLElement} element - HTML element to convert.
2688
+ * @param {VegaRTETransformOptions} options - Options for transformation.
2689
+ * @returns {VegaRTEHtmlBlock} - HTML block DTO.
2690
+ */
2691
+ generateHtmlBlock(element, options) {
2692
+ return {
2693
+ id: generateUUID(),
2694
+ type: 'html-block',
2695
+ htmlTag: element.nodeName.toLowerCase(),
2696
+ annotations: htmlElementToAnnotationGenerator.generate(RTEHtmlBlock, element, options),
2697
+ children: [],
2698
+ };
2699
+ }
2700
+ }
2701
+ HtmlBlockStrategy.canHandleTags = [
2702
+ 'ADDRESS',
2703
+ 'ARTICLE',
2704
+ 'ASIDE',
2705
+ 'BLOCKQUOTE',
2706
+ 'BUTTON',
2707
+ 'CAPTION',
2708
+ 'COL',
2709
+ 'COLGROUP',
2710
+ 'DIV',
2711
+ 'DD',
2712
+ 'DETAILS',
2713
+ 'DL',
2714
+ 'DT',
2715
+ 'FIELDSET',
2716
+ 'FIGCAPTION',
2717
+ 'FIGURE',
2718
+ 'FOOTER',
2719
+ 'FORM',
2720
+ 'HEADER',
2721
+ 'HR',
2722
+ 'HX',
2723
+ 'INPUT',
2724
+ 'LEGEND',
2725
+ 'MAIN',
2726
+ 'NAV',
2727
+ 'PRE',
2728
+ 'SECTION',
2729
+ 'SUMMARY',
2730
+ 'TABLE',
2731
+ 'TBODY',
2732
+ 'TD',
2733
+ 'TFOOT',
2734
+ 'TH',
2735
+ 'THEAD',
2736
+ 'TR',
2737
+ ];
2738
+
2739
+ /** Transform ul element to list block DTO */
2740
+ class UlToRTEListBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2741
+ /**
2742
+ * Can be handle.
2743
+ *
2744
+ * @param {HTMLElement[]} elementsArray - Current elements.
2745
+ * @param {number} currentIndex - Current element index.
2746
+ * @returns {number} - can be handled element count.
2747
+ */
2748
+ canHandle(elementsArray, currentIndex) {
2749
+ return elementsArray[currentIndex].tagName === 'UL' ? 1 : 0;
2750
+ }
2751
+ /**
2752
+ * Parse to a block.
2753
+ *
2754
+ * @param {HTMLElement[]} elementsArray - Current elements.
2755
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
2756
+ * @returns {Nullable<RTEContentBlock>} - Bullet list block.
2757
+ */
2758
+ handle(elementsArray, options) {
2759
+ if (elementsArray[0].childNodes.length === 0)
2760
+ return null;
2761
+ return RTEListBlock.from({
2762
+ id: generateUUID(),
2763
+ type: 'bullet-list',
2764
+ blocks: [],
2765
+ annotations: htmlElementToAnnotationGenerator.generate(RTEListBlock, elementsArray[0], options),
2766
+ }, options);
2767
+ }
2768
+ /**
2769
+ * Append child list item blocks to current list block.
2770
+ *
2771
+ * @param {RTEListBlock} currentBlock - Current list block.
2772
+ * @param {RTEContentBlock[]} childBlocks - Current list item blocks.
2773
+ */
2774
+ appendChildBlocks(currentBlock, childBlocks) {
2775
+ currentBlock.children = childBlocks.filter((block) => block instanceof RTEListItemBlock);
2776
+ childBlocks.forEach((block) => (block.parent = currentBlock));
2777
+ }
2778
+ /**
2779
+ * Should continue process to child elements.
2780
+ *
2781
+ * @returns {boolean} - boolean.
2782
+ */
2783
+ shouldProceedToElementChildren() {
2784
+ return true;
2785
+ }
2786
+ }
2787
+
2788
+ /** Transform ol element to list block DTO */
2789
+ class OlToRTEListBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2790
+ /**
2791
+ * Can be handle.
2792
+ *
2793
+ * @param {HTMLElement[]} elementsArray - Current elements.
2794
+ * @param {number} currentIndex - Current element index.
2795
+ * @returns {number} - can be handled element count.
2796
+ */
2797
+ canHandle(elementsArray, currentIndex) {
2798
+ return elementsArray[currentIndex].tagName === 'OL' ? 1 : 0;
2799
+ }
2800
+ /**
2801
+ * Parse to a number list block.
2802
+ *
2803
+ * @param {HTMLElement[]} elementsArray - Current elements.
2804
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
2805
+ * @returns {Nullable<RTEContentBlock>} - Number list block.
2806
+ */
2807
+ handle(elementsArray, options) {
2808
+ if (elementsArray[0].childNodes.length === 0)
2809
+ return null;
2810
+ return RTEListBlock.from({
2811
+ id: generateUUID(),
2812
+ type: 'number-list',
2813
+ blocks: [],
2814
+ annotations: htmlElementToAnnotationGenerator.generate(RTEListBlock, elementsArray[0], options),
2815
+ }, options);
2816
+ }
2817
+ /**
2818
+ * Append child list item blocks to current list block.
2819
+ *
2820
+ * @param {RTEListBlock} currentBlock - Current list block.
2821
+ * @param {RTEContentBlock[]} childBlocks - Current list item blocks.
2822
+ */
2823
+ appendChildBlocks(currentBlock, childBlocks) {
2824
+ currentBlock.children = childBlocks.filter((block) => block instanceof RTEListItemBlock);
2825
+ childBlocks.forEach((block) => (block.parent = currentBlock));
2826
+ }
2827
+ /**
2828
+ * Should continue process to child elements.
2829
+ *
2830
+ * @returns {boolean} - boolean.
2831
+ */
2832
+ shouldProceedToElementChildren() {
2833
+ return true;
2834
+ }
2835
+ }
2836
+
2837
+ /** Transform child element of UL element which are not LI element to list item block DTO */
2838
+ class ULNotLiChildToRTEListItemBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2839
+ /**
2840
+ * Can be handle.
2841
+ *
2842
+ * @param {HTMLElement[]} elementsArray - Current elements.
2843
+ * @param {number} currentIndex - Current element index.
2844
+ * @returns {number} - can be handled element count.
2845
+ */
2846
+ canHandle(elementsArray, currentIndex) {
2847
+ const element = elementsArray[currentIndex];
2848
+ const parent = element.parentElement;
2849
+ const isLiNode = element.nodeName !== 'LI';
2850
+ // while child is empty text node like newline or empty string, we should not covert it.
2851
+ const isEmptyNode = element.nodeType === Node.TEXT_NODE && element.textContent.trim() === '';
2852
+ // The node must be in list item.
2853
+ const isInList = isNonNullable(parent) && ['UL', 'OL'].includes(parent.nodeName);
2854
+ return isLiNode && !isEmptyNode && isInList ? 1 : 0;
2855
+ }
2856
+ /**
2857
+ * Parse to a list item block.
2858
+ *
2859
+ * @param {HTMLElement[]} elementsArray - Current elements.
2860
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
2861
+ * @returns {Nullable<RTEContentBlock>} - List item block.
2862
+ */
2863
+ handle(elementsArray, options) {
2864
+ const nodes = this.generateChildNodes(elementsArray, {}, options);
2865
+ return RTEListItemBlock.from({
2866
+ id: generateUUID(),
2867
+ type: 'list-item',
2868
+ nodes: nodes,
2869
+ annotations: {},
2870
+ }, options);
2871
+ }
2872
+ /* istanbul ignore next */
2873
+ /**
2874
+ * Append child blocks.
2875
+ */
2876
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2877
+ appendChildBlocks() { }
2878
+ /**
2879
+ * Should continue process to child elements.
2880
+ *
2881
+ * @returns {boolean} - boolean.
2882
+ */
2883
+ shouldProceedToElementChildren() {
2884
+ return false;
2885
+ }
2886
+ }
2887
+
2888
+ /** Transform li element to list item block DTO */
2889
+ class LiToRTEListItemBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2890
+ /**
2891
+ * Can be handled.
2892
+ *
2893
+ * @param {HTMLElement[]} elementsArray - Current elements.
2894
+ * @param {number} currentIndex - Current element index.
2895
+ * @returns {number} - can be handled element count.
2896
+ */
2897
+ canHandle(elementsArray, currentIndex) {
2898
+ const parent = elementsArray[currentIndex].parentElement;
2899
+ if (!['UL', 'OL'].includes(parent.nodeName) &&
2900
+ elementsArray.some((element) => element.nodeName === 'LI')) {
2901
+ let count = 0;
2902
+ for (let i = currentIndex; i < elementsArray.length; i++) {
2903
+ if (elementsArray[i].nodeName === 'LI') {
2904
+ count++;
2905
+ }
2906
+ else {
2907
+ break;
2908
+ }
2909
+ }
2910
+ return count;
2911
+ }
2912
+ return elementsArray[currentIndex].tagName === 'LI' ? 1 : 0;
2913
+ }
2914
+ /**
2915
+ * Parse to a list item block.
2916
+ *
2917
+ * @param {HTMLElement[]} elementsArray - Current elements.
2918
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
2919
+ * @returns {Nullable<RTEContentBlock>} - List item block.
2920
+ */
2921
+ handle(elementsArray, options) {
2922
+ const firstElement = elementsArray[0];
2923
+ const parent = firstElement.parentElement;
2924
+ if (!['UL', 'OL'].includes(parent.nodeName)) {
2925
+ return this.generateWithListBlock(elementsArray, options);
2926
+ }
2927
+ return RTEListItemBlock.from(this.generateListItemBlockDTO(firstElement, options), options);
2928
+ }
2929
+ /**
2930
+ * Append child list blocks to current list item block.
2931
+ *
2932
+ * @param {RTEListBlock} currentBlock - Current list item block.
2933
+ * @param {RTEListItemBlock[]} childBlocks - Current list blocks.
2934
+ */
2935
+ appendChildBlocks(currentBlock, childBlocks) {
2936
+ currentBlock.nestList = childBlocks.filter((block) => ['bullet-list', 'number-list'].includes(block.type));
2937
+ }
2938
+ /**
2939
+ * Should continue process to child elements.
2940
+ *
2941
+ * @returns {boolean} - boolean.
2942
+ */
2943
+ shouldProceedToElementChildren() {
2944
+ return true;
2945
+ }
2946
+ /**
2947
+ * Generate list block from a list of HTML elements.
2948
+ *
2949
+ * @param {HTMLElement[]} elements - List of HTML elements to convert.
2950
+ * @param {VegaRTETransformOptions} options - Options for transformation.
2951
+ * @returns {RTEListBlock} - List block DTO.
2952
+ */
2953
+ generateWithListBlock(elements, options) {
2954
+ return RTEListBlock.from({
2955
+ id: generateUUID(),
2956
+ type: 'bullet-list',
2957
+ blocks: elements.map((item) => {
2958
+ return this.generateListItemBlockDTO(item, options);
2959
+ }),
2960
+ }, options);
2961
+ }
2962
+ /**
2963
+ * Generate list item block DTO from an HTML element.
2964
+ *
2965
+ * @param {HTMLElement} element - HTML element to convert.
2966
+ * @param {VegaRTETransformOptions} options - Options for transformation.
2967
+ * @returns {VegaRTEListItemBlock} - List item block DTO.
2968
+ */
2969
+ generateListItemBlockDTO(element, options) {
2970
+ return {
2971
+ id: generateUUID(),
2972
+ type: 'list-item',
2973
+ annotations: htmlElementToAnnotationGenerator.generate(RTEListItemBlock, element, options),
2974
+ nodes: this.generateChildNodes(Array.from(element.childNodes.length ? element.childNodes : [element]).filter((item) => {
2975
+ return !['UL', 'OL'].includes(item.nodeName);
2976
+ }), htmlElementToAnnotationGenerator.generate(RTETextNode, element, Object.assign(Object.assign({}, options), { skipCustomAnnotations: true })), options),
2977
+ };
2978
+ }
2979
+ }
2980
+
2981
+ /** Transform other editor code element which has attribute data-language to RTE code block DTO */
2982
+ class JiraCodeToRTECodeBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2983
+ /**
2984
+ * Can be handle.
2985
+ *
2986
+ * @param {HTMLElement[]} elementsArray - Current elements.
2987
+ * @param {number} currentIndex - Current element index.
2988
+ * @returns {number} - can be handled element count.
2989
+ */
2990
+ canHandle(elementsArray, currentIndex) {
2991
+ return (elementsArray[currentIndex].tagName === 'PRE' ||
2992
+ elementsArray[currentIndex].tagName === 'CODE') &&
2993
+ elementsArray[currentIndex].hasAttribute('data-language')
2994
+ ? 1
2995
+ : 0;
2996
+ }
2997
+ /**
2998
+ * Parse to a code block.
2999
+ *
3000
+ * @param {HTMLElement[]} elementsArray - Current elements.
3001
+ * @returns {Nullable<RTECodeBlock>} - Code block.
3002
+ */
3003
+ handle(elementsArray) {
3004
+ const codeRef = elementsArray[0];
3005
+ if (codeRef) {
3006
+ const content = codeRef.textContent;
3007
+ const language = codeRef.dataset
3008
+ .language;
3009
+ return RTECodeBlock.from({
3010
+ id: generateUUID(),
3011
+ type: 'code-block',
3012
+ content,
3013
+ language,
3014
+ });
3015
+ }
3016
+ }
3017
+ /* istanbul ignore next */
3018
+ /**
3019
+ * Append child blocks.
3020
+ */
3021
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3022
+ appendChildBlocks() { }
3023
+ /**
3024
+ * Should continue process to child elements.
3025
+ *
3026
+ * @returns {boolean} - boolean.
3027
+ */
3028
+ shouldProceedToElementChildren() {
3029
+ return false;
3030
+ }
3031
+ }
3032
+
3033
+ /** Transform vega-code-block element to code block DTO */
3034
+ class VegaCodeBlockToRTECodeBlockStrategy extends JiraCodeToRTECodeBlockStrategy {
3035
+ /**
3036
+ * Can be handle.
3037
+ *
3038
+ * TODO: Update the browser clipboard data to fix the issue with nested vega-code-block elements.
3039
+ * In safari the html snippet will be like: <vega-code-block><p><span>paragraph</span></p><vega-code-block></vega-code-block></vega-code-block>
3040
+ * The vega-code-block nested inside the vega-code-block, so we need to check the child element.
3041
+ *
3042
+ * @param {HTMLElement[]} elementsArray - Current elements.
3043
+ * @param {number} currentIndex - Current element index.
3044
+ * @returns {number} - can be handled element count.
3045
+ */
3046
+ canHandle(elementsArray, currentIndex) {
3047
+ return (elementsArray[currentIndex].tagName === 'VEGA-CODE-BLOCK' &&
3048
+ !!elementsArray[currentIndex].querySelector('vega-code-block') === false) ||
3049
+ this.isCodeBlockContainer(elementsArray[currentIndex])
3050
+ ? 1
3051
+ : 0;
3052
+ }
3053
+ /**
3054
+ * Parse to a code block.
3055
+ *
3056
+ * @param {HTMLElement[]} elementsArray - Current elements.
3057
+ * @returns {Nullable<RTECodeBlock>} - Code block.
3058
+ */
3059
+ handle(elementsArray) {
3060
+ const codeBlockElement = this.isCodeBlockContainer(elementsArray[0])
3061
+ ? elementsArray[0].querySelector('vega-code-block')
3062
+ : elementsArray[0];
3063
+ const code = codeBlockElement.querySelector('code');
3064
+ if (code) {
3065
+ return super.handle([code]); // Call the parent method to handle the code element
3066
+ }
3067
+ else if (codeBlockElement.hasAttribute('data-content')) {
3068
+ // The code element in shadow dom could be empty in firefox.
3069
+ // eslint-disable-next-line no-restricted-globals
3070
+ const code = document.createElement('code');
3071
+ code.textContent = codeBlockElement.dataset.content;
3072
+ code.dataset.language = codeBlockElement.dataset.language;
3073
+ return super.handle([code]); // Call the parent method to handle the code element
3074
+ }
3075
+ }
3076
+ /* istanbul ignore next */
3077
+ /**
3078
+ * Append child blocks.
3079
+ */
3080
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3081
+ appendChildBlocks() { }
3082
+ /**
3083
+ * Should continue process to child elements.
3084
+ *
3085
+ * @returns {boolean} - boolean.
3086
+ */
3087
+ shouldProceedToElementChildren() {
3088
+ return false;
3089
+ }
3090
+ /**
3091
+ * Checks if the given element is a code block container.
3092
+ *
3093
+ * @param {HTMLElement} element - The element to check.
3094
+ * @returns {boolean} - Boolean result.
3095
+ */
3096
+ isCodeBlockContainer(element) {
3097
+ return (element.tagName === 'PRE' &&
3098
+ element.classList.contains('code-block-container') &&
3099
+ element.querySelectorAll('vega-code-block').length === 1);
3100
+ }
3101
+ }
3102
+
3103
+ /** Transform inline block element to text block DTO */
3104
+ class InlineBlockToRTETextBlockStrategy extends BlockToRTEBlockStrategyAbstract {
3105
+ /**
3106
+ * Can be handle.
3107
+ *
3108
+ * @param {HTMLElement[]} elementsArray - Current elements.
3109
+ * @param {number} currentIndex - Current element index.
3110
+ * @returns {number} - can be handled element count.
3111
+ */
3112
+ canHandle(elementsArray, currentIndex) {
3113
+ return [
3114
+ 'heading-1',
3115
+ 'heading-2',
3116
+ 'heading-3',
3117
+ 'heading-4',
3118
+ 'heading-5',
3119
+ 'heading-6',
3120
+ 'title',
3121
+ 'subtitle',
3122
+ ].includes(super.matchTextBlockType(elementsArray[currentIndex]))
3123
+ ? 1
3124
+ : 0;
3125
+ }
3126
+ /**
3127
+ * Parse to a text block.
3128
+ *
3129
+ * @param {HTMLElement[]} elementsArray - Current elements.
3130
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3131
+ * @returns {Nullable<RTEContentBlock>} - Text block.
3132
+ */
3133
+ handle(elementsArray, options) {
3134
+ const nodes = this.generateChildNodes(Array.from(elementsArray[0].childNodes), {}, options);
3135
+ if (nodes.length === 0)
3136
+ return null;
3137
+ return RTETextBlock.from({
3138
+ id: generateUUID(),
3139
+ type: super.matchTextBlockType(elementsArray[0]),
3140
+ nodes: nodes,
3141
+ annotations: htmlElementToAnnotationGenerator.generate(RTETextBlock, elementsArray[0], options),
3142
+ }, options);
3143
+ }
3144
+ /* istanbul ignore next */
3145
+ /**
3146
+ * Append child blocks.
3147
+ */
3148
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3149
+ appendChildBlocks() { }
3150
+ /**
3151
+ * Should continue process to child elements.
3152
+ *
3153
+ * @returns {boolean} - boolean.
3154
+ */
3155
+ shouldProceedToElementChildren() {
3156
+ return false;
3157
+ }
3158
+ }
3159
+
3160
+ /** Abstract class for block html element to RTE block dto */
3161
+ class ElementToRTEImageBlockStrategyAbstract extends BlockToRTEBlockStrategyAbstract {
3162
+ /**
3163
+ * Create a RTE Image block according to the img element.
3164
+ *
3165
+ * @param {HTMLElement} element - current element.
3166
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3167
+ * @returns {RTEImageBlock} -RTE Image block.
3168
+ */
3169
+ createRTEImageBlock(element, options) {
3170
+ // RTEImageBlock is also wrapped by a div, should not as internal wrapper if the parent is a div.
3171
+ const isInternalWrapper = !(options && options.autoMatchFormat) &&
3172
+ !!(element.parentNode && element.parentNode.nodeName !== 'DIV');
3173
+ return RTEImageBlock.from({
3174
+ id: generateUUID(),
3175
+ type: 'image',
3176
+ nodes: [
3177
+ {
3178
+ id: generateUUID(),
3179
+ type: 'image',
3180
+ url: element.src,
3181
+ annotations: htmlElementToAnnotationGenerator.generate(RTEImageNode, element, options),
3182
+ },
3183
+ ],
3184
+ annotations: Object.assign(Object.assign({}, htmlElementToAnnotationGenerator.generate(RTEImageBlock, element.parentElement, options)), { internalWrapper: isInternalWrapper }),
3185
+ }, options);
3186
+ }
3187
+ }
3188
+
3189
+ /** Transform img element to image block DTO */
3190
+ class ImgToRTEImageBlockStrategy extends ElementToRTEImageBlockStrategyAbstract {
3191
+ /**
3192
+ * Can be handle.
3193
+ *
3194
+ * @param {HTMLElement[]} elementsArray - Current elements.
3195
+ * @param {number} currentIndex - Current element index.
3196
+ * @returns {number} - can be handled element count.
3197
+ */
3198
+ canHandle(elementsArray, currentIndex) {
3199
+ return elementsArray[currentIndex].tagName === 'IMG' ? 1 : 0;
3200
+ }
3201
+ /**
3202
+ * Parse to a image block.
3203
+ *
3204
+ * @param {HTMLElement[]} elementsArray - Current elements.
3205
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3206
+ * @returns {Nullable<RTEContentBlock>} - Image block.
3207
+ */
3208
+ handle(elementsArray, options) {
3209
+ const element = elementsArray[0];
3210
+ return this.createRTEImageBlock(element, options);
3211
+ }
3212
+ /* istanbul ignore next */
3213
+ /**
3214
+ * Append child blocks.
3215
+ */
3216
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3217
+ appendChildBlocks() { }
3218
+ /**
3219
+ * Should continue process to child elements.
3220
+ *
3221
+ * @returns {boolean} - boolean.
3222
+ */
3223
+ shouldProceedToElementChildren() {
3224
+ return false;
3225
+ }
3226
+ }
3227
+
3228
+ /** Transform vega-rich-text-image-editor element to image block DTO */
3229
+ class VegaImageToRTEImageBlockStrategy extends ElementToRTEImageBlockStrategyAbstract {
3230
+ /**
3231
+ * Can be handle.
3232
+ *
3233
+ * @param {HTMLElement[]} elementsArray - Current elements.
3234
+ * @param {number} currentIndex - Current element index.
3235
+ * @returns {number} - can be handled element count.
3236
+ */
3237
+ canHandle(elementsArray, currentIndex) {
3238
+ return elementsArray[currentIndex].tagName === 'VEGA-RICH-TEXT-IMAGE-EDITOR' ? 1 : 0;
3239
+ }
3240
+ /**
3241
+ * Parse to a image block.
3242
+ *
3243
+ * @param {HTMLElement[]} elementsArray - Current elements.
3244
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3245
+ * @returns {Nullable<RTEContentBlock>} - Image block.
3246
+ */
3247
+ handle(elementsArray, options) {
3248
+ const element = elementsArray[0];
3249
+ const image = element.querySelector('img');
3250
+ if (isNonNullable(image)) {
3251
+ return RTEImageBlock.from({
3252
+ id: generateUUID(),
3253
+ type: 'image',
3254
+ nodes: [
3255
+ {
3256
+ id: generateUUID(),
3257
+ type: 'image',
3258
+ url: image.src,
3259
+ annotations: htmlElementToAnnotationGenerator.generate(RTEImageNode, element, options),
3260
+ },
3261
+ ],
3262
+ annotations: htmlElementToAnnotationGenerator.generate(RTEImageBlock, element.parentElement, options),
3263
+ }, options);
3264
+ }
3265
+ }
3266
+ /* istanbul ignore next */
3267
+ /**
3268
+ * Append child blocks.
3269
+ */
3270
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3271
+ appendChildBlocks() { }
3272
+ /**
3273
+ * Should continue process to child elements.
3274
+ *
3275
+ * @returns {boolean} - boolean.
3276
+ */
3277
+ shouldProceedToElementChildren() {
3278
+ return false;
3279
+ }
3280
+ }
3281
+
3282
+ /** Transform img in span or other inline element to image block DTO */
3283
+ class SpanImageToRTEImageBlockStrategy extends ElementToRTEImageBlockStrategyAbstract {
3284
+ /**
3285
+ * Can be handle.
3286
+ *
3287
+ * @param {HTMLElement[]} elementsArray - Current elements.
3288
+ * @param {number} currentIndex - Current element index.
3289
+ * @returns {number} - can be handled element count.
3290
+ */
3291
+ canHandle(elementsArray, currentIndex) {
3292
+ const element = elementsArray[currentIndex];
3293
+ return element.nodeType === Node.ELEMENT_NODE &&
3294
+ element.textContent === '' &&
3295
+ element.querySelector('img')
3296
+ ? 1
3297
+ : 0;
3298
+ }
3299
+ /**
3300
+ * Parse to a image block.
3301
+ *
3302
+ * @param {HTMLElement[]} elementsArray - Current elements.
3303
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3304
+ * @returns {Nullable<RTEContentBlock>} - Image block.
3305
+ */
3306
+ handle(elementsArray, options) {
3307
+ const element = elementsArray[0].querySelector('img');
3308
+ return this.createRTEImageBlock(element, options);
3309
+ }
3310
+ /* istanbul ignore next */
3311
+ /**
3312
+ * Append child blocks.
3313
+ */
3314
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3315
+ appendChildBlocks() { }
3316
+ /**
3317
+ * Should continue process to child elements.
3318
+ *
3319
+ * @returns {boolean} - boolean.
3320
+ */
3321
+ shouldProceedToElementChildren() {
3322
+ return false;
3323
+ }
3324
+ }
3325
+
3326
+ /** Transform continue inline block elements to text block DTO */
3327
+ class ContinueInlineToRTETextBlockStrategy extends BlockToRTEBlockStrategyAbstract {
3328
+ /**
3329
+ * Can be handle.
3330
+ *
3331
+ * @param {HTMLElement[]} elementsArray - Current elements.
3332
+ * @param {number} currentIndex - Current element index.
3333
+ * @returns {number} - can be handled element count.
3334
+ */
3335
+ canHandle(elementsArray, currentIndex) {
3336
+ let count = 0;
3337
+ for (let i = currentIndex; i < elementsArray.length; i++) {
3338
+ const element = elementsArray[i];
3339
+ if (element.nodeType === Node.TEXT_NODE ||
3340
+ (ContinueInlineToRTETextBlockStrategy.canHandleTags.includes(element.nodeName) &&
3341
+ !(element.textContent === '' && element.querySelector('IMG')))) {
3342
+ count++;
3343
+ }
3344
+ else {
3345
+ break;
3346
+ }
3347
+ }
3348
+ return count;
3349
+ }
3350
+ /**
3351
+ * Parse to a text block.
3352
+ *
3353
+ * @param {HTMLElement[]} elementsArray - Current elements.
3354
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3355
+ * @returns {Nullable<RTEContentBlock>} - Text block.
3356
+ */
3357
+ handle(elementsArray, options) {
3358
+ const parent = elementsArray[0].parentElement;
3359
+ const autoMatchFormat = options && options.autoMatchFormat;
3360
+ const nodes = this.generateChildNodes(elementsArray, autoMatchFormat
3361
+ ? htmlElementToAnnotationGenerator.generate(RTETextNode, parent, Object.assign(Object.assign({}, options), { skipCustomAnnotations: true }))
3362
+ : {}, options);
3363
+ const blockType = autoMatchFormat
3364
+ ? super.matchTextBlockType(parent)
3365
+ : this.matchTextBlockTypeByTagName(parent);
3366
+ const internalWrapper = !autoMatchFormat && !blockType;
3367
+ return RTETextBlock.from(Object.assign({ id: generateUUID(), type: blockType || 'paragraph', nodes: nodes }, (internalWrapper
3368
+ ? { annotations: { internalWrapper: internalWrapper } }
3369
+ : {
3370
+ annotations: htmlElementToAnnotationGenerator.generate(RTETextBlock, parent, options),
3371
+ })), options);
3372
+ }
3373
+ /* istanbul ignore next */
3374
+ /**
3375
+ * Append child blocks.
3376
+ */
3377
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3378
+ appendChildBlocks() { }
3379
+ /**
3380
+ * Should continue process to child elements.
3381
+ *
3382
+ * @returns {boolean} - boolean.
3383
+ */
3384
+ shouldProceedToElementChildren() {
3385
+ return false;
3386
+ }
3387
+ /**
3388
+ * Match the block type by tag name.
3389
+ *
3390
+ * @param {HTMLElement} element - Target element.
3391
+ * @returns {Nullable<VegaRTETextBlockType>} - Block type.
3392
+ */
3393
+ matchTextBlockTypeByTagName(element) {
3394
+ switch (element.nodeName) {
3395
+ case 'P':
3396
+ return 'paragraph';
3397
+ default:
3398
+ return null;
3399
+ }
3400
+ }
3401
+ }
3402
+ ContinueInlineToRTETextBlockStrategy.canHandleTags = [
3403
+ ...InlineHtmlAnnotationHandler.canHandleTags,
3404
+ 'CODE',
3405
+ 'A',
3406
+ 'VEGA-RICH-TEXT-LINK-EDITOR',
3407
+ 'BR',
3408
+ ];
3409
+
3410
+ /**
3411
+ * Class to handle text node elements and convert them to text node DTOs
3412
+ */
3413
+ class ElementToTextNodeStrategy extends ElementToDTOStrategy {
3414
+ /**
3415
+ * @inheritDoc
3416
+ */
3417
+ shouldProceedToElementChildren() {
3418
+ return false;
3419
+ }
3420
+ /**
3421
+ * @inheritDoc
3422
+ */
3423
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3424
+ appendChildBlocks() { }
3425
+ /**
3426
+ * Generate text node DTO object
3427
+ *
3428
+ * @param {string} text - text content.
3429
+ * @param {VegaRTETextAnnotations} annotations - Current annotations.
3430
+ * @returns {VegaRTETextNode} - Text node DTO.
3431
+ */
3432
+ generateTextNode(text, annotations) {
3433
+ return {
3434
+ id: generateUUID(),
3435
+ type: 'text',
3436
+ text: text,
3437
+ annotations: annotations,
3438
+ };
3439
+ }
3440
+ }
3441
+
3442
+ /**
3443
+ * Class to handle plain text nodes and convert them to RTE text node DTOs
3444
+ */
3445
+ class PlainTextToTextNodeStrategy extends ElementToTextNodeStrategy {
3446
+ /**
3447
+ * @inheritDoc
3448
+ */
3449
+ canHandle(elementsArray, currentIndex) {
3450
+ const element = elementsArray[currentIndex];
3451
+ return element.nodeType === Node.TEXT_NODE ? 1 : 0;
3452
+ }
3453
+ /**
3454
+ * @inheritDoc
3455
+ */
3456
+ handle(elementsArray, options, parentTextAnnotations) {
3457
+ const parentAnnotations = Object.assign({}, parentTextAnnotations);
3458
+ const disableAutoMatchFormat = !!(options && options.autoMatchFormat === false);
3459
+ const child = elementsArray[0];
3460
+ const parentNodeName = child.parentNode.nodeName.toLowerCase();
3461
+ const plainText = disableAutoMatchFormat && !RTETextNode.supportsHtmlTag(parentNodeName);
3462
+ const textNode = this.generateTextNode(String(child.textContent), disableAutoMatchFormat
3463
+ ? cleanObject(Object.assign(Object.assign({}, (parentNodeName === 'span'
3464
+ ? parentAnnotations
3465
+ : {
3466
+ // text node could be wrapped in <a> tag, so we need to keep the parent link annotation
3467
+ link: parentAnnotations.link,
3468
+ code: parentNodeName === 'code' ? parentAnnotations.code : undefined,
3469
+ })), { inlineHtml: parentAnnotations.inlineHtml, plainText: plainText || undefined }))
3470
+ : parentAnnotations);
3471
+ return Object.assign({}, textNode);
3472
+ }
3473
+ }
3474
+
3475
+ /**
3476
+ * Class to handle inline html element to text node dto
3477
+ */
3478
+ class InlineElementToTextNodeStrategy extends ElementToTextNodeStrategy {
3479
+ /**
3480
+ * @inheritDoc
3481
+ */
3482
+ canHandle(elementsArray, currentIndex) {
3483
+ const element = elementsArray[currentIndex];
3484
+ return isHTMLElement(element) && (element.nodeName === 'BR' || element.childNodes.length === 0)
3485
+ ? 1
3486
+ : 0;
3487
+ }
3488
+ /**
3489
+ * @inheritDoc
3490
+ */
3491
+ handle(elementsArray, options, annotations) {
3492
+ const disableAutoMatchFormat = !!(options && options.autoMatchFormat === false);
3493
+ const parentAnnotations = Object.assign({}, annotations);
3494
+ const child = elementsArray[0];
3495
+ const curAnnotations = htmlElementToAnnotationGenerator.generate(RTETextNode, child, Object.assign({ parentAnnotations: disableAutoMatchFormat
3496
+ ? {
3497
+ inlineHtml: parentAnnotations.inlineHtml,
3498
+ link: parentAnnotations.link,
3499
+ code: parentAnnotations.code,
3500
+ }
3501
+ : annotations }, options));
3502
+ if (child.nodeName === 'BR') {
3503
+ return this.generateTextNode('\n', curAnnotations);
3504
+ }
3505
+ else if (child.childNodes.length === 0) {
3506
+ // For empty dom, there will be no internal iteration, we need to handle it directly here.
3507
+ // Example: <span></span>, <video src='...'></video>
3508
+ const emptyNodeAnnotations = disableAutoMatchFormat
3509
+ ? cleanObject(Object.assign(Object.assign({}, (RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) ? curAnnotations : {})), { inlineHtml: curAnnotations.inlineHtml, plainText: isNonNullable(curAnnotations.inlineHtml) }))
3510
+ : curAnnotations;
3511
+ return Object.assign({}, this.generateTextNode('', emptyNodeAnnotations));
3512
+ }
3513
+ }
3514
+ }
3515
+
3516
+ /**
3517
+ * Register and setup the default DTO classes and their basic action strategies.
3518
+ */
3519
+ // Register the default block DTOs
3520
+ RTEDTOClassManager.registerRTEDTOClass('paragraph', RTETextBlock);
3521
+ RTEDTOClassManager.registerRTEDTOClass('title', RTETextBlock);
3522
+ RTEDTOClassManager.registerRTEDTOClass('subtitle', RTETextBlock);
3523
+ RTEDTOClassManager.registerRTEDTOClass('heading-1', RTETextBlock);
3524
+ RTEDTOClassManager.registerRTEDTOClass('heading-2', RTETextBlock);
3525
+ RTEDTOClassManager.registerRTEDTOClass('heading-3', RTETextBlock);
3526
+ RTEDTOClassManager.registerRTEDTOClass('heading-4', RTETextBlock);
3527
+ RTEDTOClassManager.registerRTEDTOClass('heading-5', RTETextBlock);
3528
+ RTEDTOClassManager.registerRTEDTOClass('heading-6', RTETextBlock);
3529
+ RTEDTOClassManager.registerRTEDTOClass('heading-6', RTETextBlock);
3530
+ RTEDTOClassManager.registerRTEDTOClass('list-item', RTEListItemBlock);
3531
+ RTEDTOClassManager.registerRTEDTOClass('bullet-list', RTEListBlock);
3532
+ RTEDTOClassManager.registerRTEDTOClass('number-list', RTEListBlock);
3533
+ RTEDTOClassManager.registerRTEDTOClass('image', RTEImageBlock);
3534
+ RTEDTOClassManager.registerRTEDTOClass('code-block', RTECodeBlock);
3535
+ RTEDTOClassManager.registerRTEDTOClass('html-block', RTEHtmlBlock);
3536
+ // Register the default node DTOs
3537
+ RTEDTOClassManager.registerRTEDTOClass('text', RTETextNode);
3538
+ RTEDTOClassManager.registerRTEDTOClass('image', RTEImageNode);
3539
+ // Register basic strategies for default block DTOs
3540
+ RTEDTOActionStrategyManager$1.registerBlockBasicStrategies(RTETextBlock.name);
3541
+ RTEDTOActionStrategyManager$1.registerBlockBasicStrategies(RTEListBlock.name);
3542
+ RTEDTOActionStrategyManager$1.registerBlockBasicStrategies(RTEListItemBlock.name);
3543
+ RTEDTOActionStrategyManager$1.registerBlockBasicStrategies(RTEImageBlock.name);
3544
+ RTEDTOActionStrategyManager$1.registerBlockBasicStrategies(RTEHtmlBlock.name);
3545
+ // Register element to DTO strategies for default node DTOs, The order of registration matters, the later registered strategy has higher priority.
3546
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new ContinueInlineToRTETextBlockStrategy());
3547
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new SpanImageToRTEImageBlockStrategy());
3548
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new VegaImageToRTEImageBlockStrategy());
3549
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new ImgToRTEImageBlockStrategy());
3550
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new InlineBlockToRTETextBlockStrategy());
3551
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new JiraCodeToRTECodeBlockStrategy());
3552
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new VegaCodeBlockToRTECodeBlockStrategy());
3553
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new LiToRTEListItemBlockStrategy());
3554
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new ULNotLiChildToRTEListItemBlockStrategy());
3555
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new OlToRTEListBlockStrategy());
3556
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new UlToRTEListBlockStrategy());
3557
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new HtmlBlockStrategy());
3558
+ ElementToDTOClassStrategyManager.registerElementToNodeStrategy(new InlineElementToTextNodeStrategy());
3559
+ ElementToDTOClassStrategyManager.registerElementToNodeStrategy(new PlainTextToTextNodeStrategy());
3560
+
3561
+ /**
3562
+ * StylePreservator handles CSP-compliant style management by temporarily converting
3563
+ * inline styles to data attributes during HTML parsing operations.
3564
+ *
3565
+ * @example
3566
+ * ```typescript
3567
+ * const context = StylePreservator.preserve('<div style="color: red;">Content</div>');
3568
+ * const safeHtml = context.getProcessedHtml();
3569
+ * context.restore(parsedElements);
3570
+ * ```
3571
+ */
3572
+ class StylePreservator {
3573
+ /**
3574
+ * Preserves inline styles by converting them to data attributes.
3575
+ *
3576
+ * @param {string} htmlString - The HTML string containing inline styles
3577
+ * @returns {StylePreservationContext} A context object for later style restoration
3578
+ */
3579
+ static preserve(htmlString) {
3580
+ const processedHtml = htmlString.replace(/\s+style=/g, ' data-style=');
3581
+ return new StylePreservationContext(processedHtml);
3582
+ }
3583
+ }
3584
+ /**
3585
+ * Context class that manages the lifecycle of preserved styles.
3586
+ */
3587
+ class StylePreservationContext {
3588
+ constructor(processedHtml) {
3589
+ this.processedHtml = processedHtml;
3590
+ }
3591
+ /**
3592
+ * Returns the HTML string with style attributes converted to data-style.
3593
+ *
3594
+ * @returns {string} The processed HTML string
3595
+ */
3596
+ getProcessedHtml() {
3597
+ return this.processedHtml;
3598
+ }
3599
+ /**
3600
+ * Restores data-style attributes back to style attributes.
3601
+ *
3602
+ * @param {HTMLElement[]} elements - Array of HTML elements to process
3603
+ * @returns {void}
3604
+ */
3605
+ restore(elements) {
3606
+ this.walkNodes(elements);
3607
+ }
3608
+ /**
3609
+ * Recursively walk through nodes and restore styles
3610
+ *
3611
+ * @param {HTMLElement[]} elements - list of nodes
3612
+ * @returns {void}
3613
+ */
3614
+ walkNodes(elements) {
3615
+ elements.forEach((element) => {
3616
+ if (isHTMLElement(element)) {
3617
+ // Restore data-style back to style
3618
+ const dataStyle = element.getAttribute('data-style');
3619
+ if (dataStyle) {
3620
+ element.style.cssText = dataStyle;
3621
+ element.removeAttribute('data-style');
3622
+ }
3623
+ // Recursively process child nodes
3624
+ if (element.children.length > 0) {
3625
+ this.walkNodes(Array.from(element.children));
3626
+ }
3627
+ }
3628
+ });
3629
+ }
3630
+ }
3631
+
3632
+ /**
3633
+ * Class representing the content state of the rich text editor.
3634
+ */
3635
+ class VegaRTEContent {
3636
+ constructor(blocks) {
3637
+ blocks.forEach((block) => {
3638
+ block.parent = this;
3639
+ });
3640
+ this.children = blocks;
3641
+ }
3642
+ /**
3643
+ * Converts a JSON array of blocks to a class array of RTEContentBlock.
3644
+ *
3645
+ * @param {VegaRTEContentBlock[]} value The JSON array of blocks to convert.
3646
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
3647
+ * @returns {VegaRTEContent} The converted array of RTEContentBlock.
3648
+ */
3649
+ static fromJSON(value, options = { autoMatchFormat: true }) {
3650
+ const blocks = value.map((block) => {
3651
+ const BlockClass = RTEDTOClassManager.getRTEBlockClass(block.type);
3652
+ if (BlockClass) {
3653
+ return BlockClass.from(block, options);
3654
+ }
3655
+ else {
3656
+ throw new Error(`[Vega] Unknown block type: ${block.type}`);
3657
+ }
3658
+ });
3659
+ return new VegaRTEContent(blocks);
3660
+ }
3661
+ /**
3662
+ * Create an empty content state
3663
+ *
3664
+ * @returns {VegaRTEContent} An empty content state
3665
+ */
3666
+ static createEmptyContent() {
3667
+ return VegaRTEContent.fromJSON([
3668
+ {
3669
+ id: generateUUID(),
3670
+ type: 'paragraph',
3671
+ nodes: [
3672
+ {
3673
+ id: generateUUID(),
3674
+ type: 'text',
3675
+ text: '',
3676
+ },
3677
+ ],
3678
+ },
3679
+ ]);
3680
+ }
3681
+ /**
3682
+ * Converts HTML content to a VegaRTEContent instance.
3683
+ *
3684
+ * @param {string} html - The HTML string to convert.
3685
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
3686
+ * @returns {VegaRTEContent} The converted content state.
3687
+ */
3688
+ static fromHtml(html, options = { autoMatchFormat: true, skipCustomAnnotations: false }) {
3689
+ /**
3690
+ * remove redundant spaces between tags, for example:
3691
+ * case1:
3692
+ * '<p>\n\t <span>test</span>\n\t </p>' will be formatted into '<p><span>test</span></p>'
3693
+ * '<p>
3694
+ * test
3695
+ * </p>' will be formatted into '<p>test</p>'
3696
+ *
3697
+ * case2:
3698
+ * <h1>
3699
+ * _test&*....
3700
+ * </h1> will be formatted into <h1>_test&*....</h1>
3701
+ *
3702
+ * The blank space between individual tags should be preserved:
3703
+ * <span> </span>
3704
+ */
3705
+ const formattedHtml = html
3706
+ .replace(/>\s+<\/?/g, (match) => {
3707
+ return match.endsWith('</') ? match : '><';
3708
+ })
3709
+ .replace(/(>)[\n\t]+(?=[a-zA-Z0-9_\W])/g, '$1')
3710
+ .replace(/([a-zA-Z0-9_\W])[\n\t]+(?=<)/g, '$1');
3711
+ const context = StylePreservator.preserve(formattedHtml);
3712
+ const safeHtml = context.getProcessedHtml();
3713
+ const body = new DOMParser().parseFromString(safeHtml, 'text/html').body;
3714
+ const htmlElements = Array.from(body.childNodes);
3715
+ context.restore(htmlElements);
3716
+ const blocks = ElementToDtoStrategyProcessor$1.process(htmlElements, options)
3717
+ .filter(isNonNullable)
3718
+ .map((output) => output.toDto(options))
3719
+ .filter(isNonNullable);
3720
+ return new VegaRTEContent(blocks);
3721
+ }
3722
+ /**
3723
+ * Clones the content state.
3724
+ *
3725
+ * @param {boolean} deep - If true, performs a deep clone of the content state.
3726
+ * @returns {VegaRTEContent} The cloned content state.
3727
+ */
3728
+ clone(deep = false) {
3729
+ return deep
3730
+ ? new VegaRTEContent(this.children.map((block) => block.clone(this)))
3731
+ : new VegaRTEContent([...this.children]);
3732
+ }
3733
+ /**
3734
+ * Converts the content state to a JSON array of blocks.
3735
+ *
3736
+ * @returns {VegaRTEContentBlock[]} The JSON array of blocks.
3737
+ */
3738
+ toJSON() {
3739
+ return this.children.map((block) => block.toJSON());
3740
+ }
3741
+ /**
3742
+ * Converts the content state to HTML.
3743
+ *
3744
+ * @deprecated The [`options`]{@link options} parameter is deprecated and will be removed in the future.
3745
+ * @param {VegaRTETransformOptions} [options] - Deprecated. Optional rendering context (currently unused).
3746
+ * @returns {string} The HTML representation of the content state.
3747
+ */
3748
+ toHtml(options) {
3749
+ if (options) {
3750
+ LogUtility.warn(`The 'options' parameter in toHtml method is deprecated and will be removed in the future.`);
3751
+ }
3752
+ return this.children.map((block) => block.toHtml()).join('');
3753
+ }
3754
+ /**
3755
+ * Internal method to add the block item, remove the block item
3756
+ *
3757
+ * @param {ModifyContentAction} action - Modify content action
3758
+ */
3759
+ apply(action) {
3760
+ ActionHandleStrategyRegistry.executeTheStrategy(action, this);
3761
+ // Check if the action has been executed and is flushable
3762
+ if (action['executedFlag'] && action.isFlushable) {
3763
+ const host = stateEntityRenderingRegistry.getDOMByEntity(this);
3764
+ if (host) {
3765
+ ChangeManager.notify(domNodeSubjectFactory.getSubject(host, VegaInternalRichTextEditorFlushChanges), {});
3766
+ }
3767
+ }
3768
+ }
3769
+ /**
3770
+ * Get the last node in the content.
3771
+ *
3772
+ * @returns {Nullable<RTENode>} The last node in the content or null if there are no nodes.
3773
+ */
3774
+ getLastNode() {
3775
+ if (this.children.length === 0) {
3776
+ return null;
3777
+ }
3778
+ const lastBlock = this.children[this.children.length - 1];
3779
+ return lastBlock.getLastNode();
3780
+ }
3781
+ /**
3782
+ * Convert text to list.
3783
+ *
3784
+ * @param {RTETextBlock} block - block
3785
+ * @returns {RTEListItemBlock} list item block dto.
3786
+ */
3787
+ toListItem(block) {
3788
+ block.children.map((node) => node.apply(new SyncUpSelectionAction()));
3789
+ const listItemBlock = new RTEListItemBlock(generateUUID());
3790
+ listItemBlock.apply(new AppendChildrenAction(block['children']));
3791
+ listItemBlock['annotationMap'] = block['annotationMap'];
3792
+ return listItemBlock;
3793
+ }
3794
+ /**
3795
+ * create list.
3796
+ *
3797
+ * @param {ListType} type - type
3798
+ * @returns {RTEListBlock} list block dto.
3799
+ */
3800
+ createList(type) {
3801
+ return new RTEListBlock(generateUUID(), type);
3802
+ }
3803
+ /**
3804
+ * Finds a node by its ID in the content.
3805
+ *
3806
+ * @param {string} id - The ID of the node to find.
3807
+ * @returns {Nullable<RTENode>} The found node or null if not found.
3808
+ */
3809
+ findNodeById(id) {
3810
+ return this.findNodeInBlocksById(id, this.children);
3811
+ }
3812
+ /**
3813
+ * Recursively searches for a node by its ID in the given blocks.
3814
+ *
3815
+ * @param {string} id - The ID of the node to find.
3816
+ * @param {RTEContentBlock[]} blocks - The blocks to search within.
3817
+ * @returns {Nullable<RTENode>} The found node or null if not found.
3818
+ */
3819
+ findNodeInBlocksById(id, blocks) {
3820
+ for (const block of blocks) {
3821
+ if ('children' in block) {
3822
+ for (const node of block.children) {
3823
+ if (node.id === id) {
3824
+ return node;
3825
+ }
3826
+ }
3827
+ }
3828
+ if (block instanceof RTEListItemBlock && block.nestList) {
3829
+ for (const cBlock of block.nestList) {
3830
+ const foundNode = this.findNodeInBlocksById(id, cBlock.children);
3831
+ if (foundNode) {
3832
+ return foundNode;
3833
+ }
3834
+ }
3835
+ }
3836
+ if (block instanceof RTEListBlock && block.children) {
3837
+ const foundNode = this.findNodeInBlocksById(id, block.children);
3838
+ if (foundNode) {
3839
+ return foundNode;
3840
+ }
3841
+ }
3842
+ }
3843
+ return null;
3844
+ }
3845
+ }
3846
+ (() => {
3847
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_CHILDREN, VegaRTEContent.name, new RemoveChildrenStrategy());
3848
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.APPEND_CHILDREN, VegaRTEContent.name, new AppendChildrenStrategy());
3849
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_CHILDREN_BEFORE, VegaRTEContent.name, new InsertChildrenBeforeStrategy());
3850
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_CHILDREN_AFTER, VegaRTEContent.name, new InsertChildrenAfterStrategy());
3851
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.TRANSFORM_TO_CODE_BLOCK, VegaRTEContent.name, new BlockTransformToCodeBlockStrategy());
3852
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_CURSOR_POSITION, VegaRTEContent.name, new UpdateCursorPositionStrategy());
3853
+ })();
3854
+
3855
+ /**
3856
+ * RTEDTORendererManager is a singleton class that manages the registration and retrieval of RTE DTO renderers.
3857
+ */
3858
+ class RTEDTORendererManager {
3859
+ constructor() {
3860
+ // Register RTE DTO renderers, mapping type strings to their respective renderer instances.
3861
+ this.RTE_DTO_RENDERER_MAP = new Map();
3862
+ // Register RTE Toolbar Button Renderers, mapping type strings to their respective renderer instances.
3863
+ this.RTE_TOOLBAR_BUTTON_RENDERER_MAP = new Map();
3864
+ }
3865
+ /**
3866
+ * Registers a new RTE DTO renderer.
3867
+ *
3868
+ * @param {string} type - The type identifier for the RTE DTO renderer.
3869
+ * @param {VegaRTEBaseRenderer} RTEDTORenderer - The renderer instance for the RTE DTO.
3870
+ */
3871
+ registerRTEDTORenderer(type, RTEDTORenderer) {
3872
+ const existRenderer = this.RTE_DTO_RENDERER_MAP.get(type);
3873
+ if (RTEDTORenderer &&
3874
+ existRenderer &&
3875
+ existRenderer.constructor.name !== RTEDTORenderer.constructor.name) {
3876
+ throw new Error(`Renderer for type ${type} is already registered with a different class(${existRenderer.constructor.name}).`);
3877
+ }
3878
+ this.RTE_DTO_RENDERER_MAP.set(type, RTEDTORenderer);
3879
+ }
3880
+ /**
3881
+ * Registers a new RTE Toolbar Button Renderer.
3882
+ *
3883
+ * @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
3884
+ * @param {VegaRTEToolbarButtonRenderer} RTEToolbarButtonRenderer - The renderer instance for the RTE Toolbar Button.
3885
+ */
3886
+ registerRTEToolbarButtonRenderer(type, RTEToolbarButtonRenderer) {
3887
+ this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.set(type, RTEToolbarButtonRenderer);
3888
+ }
3889
+ /**
3890
+ * Retrieves the RTE renderer for a given type.
3891
+ *
3892
+ * @param {string} type - The type identifier for the RTE block.
3893
+ * @returns {Nullable<BaseRenderer>} - The renderer instance for the RTE block, or null if not found.
3894
+ */
3895
+ getRTERenderer(type) {
3896
+ return this.RTE_DTO_RENDERER_MAP.get(type);
3897
+ }
3898
+ /**
3899
+ * Retrieves the RTE Toolbar Button Renderer for a given type.
3900
+ *
3901
+ * @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
3902
+ * @returns {Nullable<VegaRTEToolbarButtonRenderer>} - The renderer instance for the RTE Toolbar Button, or null if not found.
3903
+ */
3904
+ getRTEToolbarButtonRenderer(type) {
3905
+ return this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.get(type);
3906
+ }
3907
+ }
3908
+ const RTEDTORendererManager$1 = new RTEDTORendererManager();
3909
+
3910
+ export { BlockToRTEBlockStrategyAbstract as B, ElementToDTOClassStrategyManager as E, InsertNewParagraphAction as I, MergeTwoBlocksNodesAction as M, PasteContentStrategy as P, RTEDTORendererManager$1 as R, StylePreservator as S, UpdateCursorPositionAction as U, VegaRTEContent as V, RTEDTOActionStrategyManager$1 as a, ElementToDTOStrategy as b, RTEListItemBlock as c, RTEImageBlock as d, InsertChildrenBeforeStrategy as e, RTEListBlock as f, RTEImageNode as g, htmlElementToAnnotationGenerator as h, ImageAnnotation as i, ElementToDtoStrategyProcessor$1 as j };