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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1777) hide show
  1. package/dist/cjs/app-globals-c6be6013.js +432 -0
  2. package/dist/cjs/child-nodes-event-prevent-slimmer-871855df.js +158 -0
  3. package/dist/cjs/code-block-a7c8825f.js +4422 -0
  4. package/dist/cjs/component-value-history-controller-slimmer.abstract-868de3c4.js +736 -0
  5. package/dist/cjs/date-required-rule-99cca681.js +92 -0
  6. package/dist/cjs/design-token-d9c4dff6.js +402 -0
  7. package/dist/cjs/dom-node-subject-observer-factory-1c8f7880.js +305 -0
  8. package/dist/cjs/dto-renderer-manager-f3820a6b.js +3928 -0
  9. package/dist/cjs/element-appender-slimmer-3dc36dfa.js +1508 -0
  10. package/dist/cjs/event-emit-slimmer-f7255138.js +267 -0
  11. package/dist/cjs/form-field-controller-slimmer-57525f26.js +1267 -0
  12. package/dist/cjs/function-extension-d4fc3b7a.js +2927 -0
  13. package/dist/cjs/image-annotation-action-64414e40.js +312 -0
  14. package/dist/cjs/index-58ea899e.js +4 -8
  15. package/dist/cjs/index-c7fbf32b.js +43 -0
  16. package/dist/cjs/index.cjs.js +33 -38
  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-d23e5369.js +210 -0
  22. package/dist/cjs/loader.cjs.js +13 -15
  23. package/dist/cjs/month-view-generator-706c5477.js +102 -0
  24. package/dist/cjs/public-rules-0847e6fa.js +47 -0
  25. package/dist/cjs/range-14190f6b.js +178 -0
  26. package/dist/cjs/remote-invocation-registry-fc22fdd0.js +65 -0
  27. package/dist/cjs/responsive-format-facade-77d357fb.js +925 -0
  28. package/dist/cjs/rich-text-editor-required-rule-65d85060.js +64 -0
  29. package/dist/cjs/string-format-strategy.abstract-a8264fca.js +60 -0
  30. package/dist/cjs/string-input-formatter-slimmer-4332d1c7.js +230 -0
  31. package/dist/cjs/string-mask-strategy-4e7d3780.js +172 -0
  32. package/dist/cjs/style-formatter-4fd65f6f.js +34 -0
  33. package/dist/cjs/sub-state-notify-slimmer-9fe1ab65.js +81 -0
  34. package/dist/cjs/sub-state-observer-slimmer-2f6f4d28.js +134 -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 +11 -14
  39. package/dist/cjs/vega-app-header-button.cjs.entry.js +16 -19
  40. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-box.cjs.entry.js +15 -18
  42. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  43. package/dist/cjs/vega-button-circle.cjs.entry.js +15 -18
  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 +15 -17
  47. package/dist/cjs/vega-calendar_4.cjs.entry.js +87 -909
  48. package/dist/cjs/vega-card.cjs.entry.js +14 -17
  49. package/dist/cjs/vega-carousel.cjs.entry.js +14 -16
  50. package/dist/cjs/vega-checkbox_2.cjs.entry.js +7 -7
  51. package/dist/cjs/vega-chip.cjs.entry.js +16 -19
  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 +1757 -1569
  56. package/dist/cjs/vega-dialog_2.cjs.entry.js +19 -22
  57. package/dist/cjs/vega-divider.cjs.entry.js +10 -13
  58. package/dist/cjs/vega-dropdown_5.cjs.entry.js +20 -32
  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 +10 -13
  63. package/dist/cjs/vega-flex.cjs.entry.js +15 -18
  64. package/dist/cjs/vega-font.cjs.entry.js +14 -17
  65. package/dist/cjs/vega-form.cjs.entry.js +9 -9
  66. package/dist/cjs/vega-grid.cjs.entry.js +14 -17
  67. package/dist/cjs/vega-icon.cjs.entry.js +14 -17
  68. package/dist/cjs/vega-image-uploader.cjs.entry.js +16 -18
  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 +17 -18
  73. package/dist/cjs/vega-input-range.cjs.entry.js +7 -7
  74. package/dist/cjs/vega-input-select.cjs.entry.js +15 -16
  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 +18 -21
  79. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +11 -13
  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 +12 -14
  84. package/dist/cjs/vega-popover_2.cjs.entry.js +20 -22
  85. package/dist/cjs/vega-progress-tracker.cjs.entry.js +313 -73
  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_4.cjs.entry.js +4648 -0
  89. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  90. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +16 -18
  91. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +8 -8
  92. package/dist/cjs/vega-sidenav_3.cjs.entry.js +16 -18
  93. package/dist/cjs/vega-signature-capture.cjs.entry.js +13 -16
  94. package/dist/cjs/vega-stepper.cjs.entry.js +7 -7
  95. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  96. package/dist/cjs/vega-table_11.cjs.entry.js +38 -39
  97. package/dist/cjs/vega-textarea.cjs.entry.js +7 -7
  98. package/dist/cjs/vega-time-picker_2.cjs.entry.js +38 -41
  99. package/dist/cjs/vega-toggle-switch.cjs.entry.js +6 -6
  100. package/dist/cjs/vega-tooltip_2.cjs.entry.js +14 -16
  101. package/dist/cjs/vega.cjs.js +13 -15
  102. package/dist/collection/collection-manifest.json +8 -16
  103. package/dist/collection/components/vega-button/vega-button.css +4 -0
  104. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.js +7 -0
  105. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +25 -2
  106. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.js +31 -2
  107. package/dist/collection/components/vega-button-group/vega-button-group.js +37 -0
  108. package/dist/collection/components/vega-button-link/vega-button-link.css +4 -0
  109. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +149 -0
  110. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-format-controller.js +3 -1
  111. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-keyboard-controller.js +1 -1
  112. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-value-controller.js +10 -26
  113. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.js +107 -445
  114. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-input-renderer-base.abstract.js +5 -1
  115. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-range-input-renderer.js +24 -17
  116. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-renderer.js +15 -20
  117. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-single-input-renderer.js +6 -17
  118. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/constants.js +14 -0
  119. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/dto/calendar-selection.js +126 -0
  120. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-allow-repick-controller.js +70 -0
  121. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.js +204 -0
  122. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-min-max-date-controller.js +56 -0
  123. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +191 -0
  124. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-state-base.abstract.js +54 -0
  125. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-today-controller.js +37 -0
  126. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +76 -0
  127. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +192 -0
  128. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +168 -0
  129. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +669 -278
  130. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +667 -3
  131. package/dist/collection/components/vega-date-picker/vega-date-picker.css +0 -11
  132. package/dist/collection/components/vega-date-picker/vega-date-picker.js +23 -40
  133. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +3 -15
  134. package/dist/collection/components/vega-input/vega-input.js +1 -1
  135. package/dist/collection/components/vega-input-select/vega-input-select.js +1 -1
  136. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.js +154 -0
  137. package/dist/collection/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.js +101 -0
  138. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.css +68 -77
  139. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +71 -86
  140. package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-annotation.js +11 -63
  141. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +1 -15
  142. package/dist/collection/components/vega-rich-text-editor/extensions/base-extension-renderer.js +1 -2
  143. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +0 -8
  144. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/insert-token-node-strategy.js +5 -1
  145. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +12 -1
  146. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +16 -10
  147. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +1 -1
  148. package/dist/collection/components/vega-rich-text-editor/public-api.js +0 -1
  149. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +0 -20
  150. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +2 -23
  151. package/dist/collection/components/vega-rich-text-editor/test/dto/annotation-style.test.js +2 -1
  152. package/dist/collection/components/vega-rich-text-editor/test/dto/annotations.test.js +9 -0
  153. package/dist/collection/components/vega-rich-text-editor/test/dto/blocks/text-block.test.js +1 -1
  154. package/dist/collection/components/vega-rich-text-editor/test/dto/content-state.test.js +15 -15
  155. package/dist/collection/components/vega-rich-text-editor/test/spec-utils.js +2 -5
  156. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.css +0 -4
  157. package/dist/collection/constants/regex.js +1 -0
  158. package/dist/collection/constants/ui.js +3 -0
  159. package/dist/collection/global/scripts/before-vega-load.js +0 -2
  160. package/dist/collection/helpers/calendar/calendar-date.js +273 -1
  161. package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +9 -0
  162. package/dist/collection/helpers/calendar/calendar-period/month-period.js +16 -4
  163. package/dist/collection/helpers/calendar/test/calendar-date.test.js +73 -0
  164. package/dist/collection/helpers/calendar/test/calendar-period/day-period.test.js +9 -0
  165. package/dist/collection/helpers/calendar/test/calendar-period/month-period.test.js +41 -0
  166. package/dist/collection/helpers/calendar/test/calendar-period/week-period.test.js +11 -0
  167. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +3 -2
  168. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +3 -1
  169. package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +5 -2
  170. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +2 -1
  171. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +7 -0
  172. package/dist/collection/helpers/ui/element-appender.js +35 -5
  173. package/dist/collection/types/type-guard.js +10 -0
  174. package/dist/collection/utils/date.js +14 -3
  175. package/dist/collection/utils/e2e-utils.js +8 -2
  176. package/dist/collection/utils/spec-utils.js +3 -4
  177. package/dist/collection/utils/test/date.test.js +2 -0
  178. package/dist/esm/app-globals-3d7e8bad.js +430 -0
  179. package/dist/esm/child-nodes-event-prevent-slimmer-6f7ae2c7.js +156 -0
  180. package/dist/esm/code-block-8fb548ff.js +4364 -0
  181. package/dist/esm/component-value-history-controller-slimmer.abstract-05f3ff05.js +730 -0
  182. package/dist/esm/date-required-rule-a9980386.js +90 -0
  183. package/dist/esm/design-token-ee017ea0.js +388 -0
  184. package/dist/esm/dom-node-subject-observer-factory-479cc5ef.js +248 -0
  185. package/dist/esm/dto-renderer-manager-d185c7ba.js +3910 -0
  186. package/dist/esm/element-appender-slimmer-00bc1a3c.js +1506 -0
  187. package/dist/esm/event-emit-slimmer-76fbfe1f.js +265 -0
  188. package/dist/esm/form-field-controller-slimmer-14379261.js +1265 -0
  189. package/dist/esm/function-extension-3f886d01.js +2908 -0
  190. package/dist/esm/image-annotation-action-3ce95526.js +306 -0
  191. package/dist/esm/index-03a016ed.js +40 -0
  192. package/dist/esm/index-090d31ca.js +4 -8
  193. package/dist/esm/index.js +18 -22
  194. package/dist/esm/inject-keyboard-manager-9241968c.js +35 -0
  195. package/dist/esm/internal-vega-event-manager-e44672ed.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-36c79ea1.js +207 -0
  199. package/dist/esm/loader.js +15 -17
  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/polyfills/core-js.js +0 -0
  203. package/dist/esm/polyfills/dom.js +0 -0
  204. package/dist/esm/polyfills/es5-html-element.js +0 -0
  205. package/dist/esm/polyfills/index.js +0 -0
  206. package/dist/esm/polyfills/system.js +0 -0
  207. package/dist/esm/public-rules-0f5a36c2.js +32 -0
  208. package/dist/esm/range-f10f4c85.js +176 -0
  209. package/dist/esm/remote-invocation-registry-d69245c2.js +63 -0
  210. package/dist/esm/responsive-format-facade-6df7d17a.js +921 -0
  211. package/dist/esm/rich-text-editor-required-rule-d0cde24f.js +62 -0
  212. package/dist/esm/string-format-strategy.abstract-75540c16.js +58 -0
  213. package/dist/esm/string-input-formatter-slimmer-af085f0a.js +228 -0
  214. package/dist/esm/string-mask-strategy-4a18ed1a.js +170 -0
  215. package/dist/esm/style-formatter-e6879600.js +32 -0
  216. package/dist/esm/sub-state-notify-slimmer-430e150c.js +79 -0
  217. package/dist/esm/sub-state-observer-slimmer-17bb0328.js +132 -0
  218. package/dist/esm/time-required-rule-8ec1faf5.js +138 -0
  219. package/dist/esm/type-guard-b48aec98.js +1894 -0
  220. package/dist/esm/ui-28fd4193.js +38 -0
  221. package/dist/esm/valid-credit-card-number-rule-96eaf9b1.js +171 -0
  222. package/dist/esm/vega-accordion.entry.js +13 -16
  223. package/dist/esm/vega-app-header-button.entry.js +18 -21
  224. package/dist/esm/vega-banner.entry.js +3 -3
  225. package/dist/esm/vega-box.entry.js +17 -20
  226. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  227. package/dist/esm/vega-button-circle.entry.js +17 -20
  228. package/dist/esm/vega-button-group_2.entry.js +60 -10
  229. package/dist/esm/vega-button-link.entry.js +5 -5
  230. package/dist/esm/vega-button.entry.js +17 -19
  231. package/dist/esm/vega-calendar_4.entry.js +46 -868
  232. package/dist/esm/vega-card.entry.js +16 -19
  233. package/dist/esm/vega-carousel.entry.js +16 -18
  234. package/dist/esm/vega-checkbox_2.entry.js +9 -9
  235. package/dist/esm/vega-chip.entry.js +18 -21
  236. package/dist/esm/vega-code-block.entry.js +14 -14
  237. package/dist/esm/vega-color-picker.entry.js +8 -8
  238. package/dist/esm/vega-combo-box.entry.js +15 -15
  239. package/dist/esm/vega-date-picker_2.entry.js +1744 -1556
  240. package/dist/esm/vega-dialog_2.entry.js +15 -18
  241. package/dist/esm/vega-divider.entry.js +12 -15
  242. package/dist/esm/vega-dropdown_5.entry.js +20 -32
  243. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  244. package/dist/esm/vega-field-label.entry.js +3 -3
  245. package/dist/esm/vega-file-uploader.entry.js +8 -8
  246. package/dist/esm/vega-flag-icon.entry.js +12 -15
  247. package/dist/esm/vega-flex.entry.js +17 -20
  248. package/dist/esm/vega-font.entry.js +16 -19
  249. package/dist/esm/vega-form.entry.js +11 -11
  250. package/dist/esm/vega-grid.entry.js +16 -19
  251. package/dist/esm/vega-icon.entry.js +16 -19
  252. package/dist/esm/vega-image-uploader.entry.js +17 -19
  253. package/dist/esm/vega-input-credit-card.entry.js +16 -16
  254. package/dist/esm/vega-input-numeric.entry.js +15 -15
  255. package/dist/esm/vega-input-passcode.entry.js +14 -14
  256. package/dist/esm/vega-input-phone-number.entry.js +16 -17
  257. package/dist/esm/vega-input-range.entry.js +9 -9
  258. package/dist/esm/vega-input-select.entry.js +16 -17
  259. package/dist/esm/vega-input.entry.js +13 -13
  260. package/dist/esm/vega-internal-event-id-71c67c39.js +66 -0
  261. package/dist/esm/vega-item-toggle.entry.js +4 -4
  262. package/dist/esm/vega-left-nav_5.entry.js +16 -19
  263. package/dist/esm/vega-loader-wrapper_2.entry.js +11 -13
  264. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  265. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +4 -4
  266. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  267. package/dist/esm/vega-pagination.entry.js +14 -16
  268. package/dist/esm/vega-popover_2.entry.js +20 -22
  269. package/dist/esm/vega-progress-tracker.entry.js +315 -75
  270. package/dist/esm/vega-radio_2.entry.js +12 -12
  271. package/dist/esm/vega-rich-text-content.entry.js +10 -9
  272. package/dist/esm/vega-rich-text-editor_4.entry.js +4641 -0
  273. package/dist/esm/vega-segment-control.entry.js +5 -5
  274. package/dist/esm/vega-selection-chip_2.entry.js +18 -20
  275. package/dist/esm/vega-selection-tile_2.entry.js +10 -10
  276. package/dist/esm/vega-sidenav_3.entry.js +14 -16
  277. package/dist/esm/vega-signature-capture.entry.js +15 -18
  278. package/dist/esm/vega-stepper.entry.js +9 -9
  279. package/dist/esm/vega-tab-group_2.entry.js +6 -6
  280. package/dist/esm/vega-table_11.entry.js +15 -16
  281. package/dist/esm/vega-text.entry.js +2 -2
  282. package/dist/esm/vega-textarea.entry.js +9 -9
  283. package/dist/esm/vega-time-picker_2.entry.js +19 -22
  284. package/dist/esm/vega-toggle-switch.entry.js +8 -8
  285. package/dist/esm/vega-tooltip_2.entry.js +16 -18
  286. package/dist/esm/vega.js +15 -17
  287. package/dist/sri/vega-sri-manifest.json +335 -347
  288. package/dist/types/components/vega-button-group/types.d.ts +2 -1
  289. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.d.ts +1 -0
  290. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.d.ts +11 -0
  291. package/dist/types/components/vega-button-group/vega-button-group-item/vega-button-group-item.d.ts +7 -0
  292. package/dist/types/components/vega-button-group/vega-button-group.d.ts +8 -0
  293. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +60 -0
  294. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-value-controller.d.ts +3 -4
  295. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +29 -124
  296. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-input-renderer-base.abstract.d.ts +1 -0
  297. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-range-input-renderer.d.ts +5 -5
  298. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-renderer.d.ts +2 -3
  299. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-single-input-renderer.d.ts +1 -4
  300. package/dist/types/components/vega-date-picker/types.d.ts +9 -0
  301. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/constants.d.ts +1 -0
  302. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/dto/calendar-selection.d.ts +62 -0
  303. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-allow-repick-controller.d.ts +31 -0
  304. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.d.ts +78 -0
  305. 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
  306. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +75 -0
  307. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-state-base.abstract.d.ts +29 -0
  308. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-today-controller.d.ts +15 -0
  309. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +18 -0
  310. 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
  311. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +32 -0
  312. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +182 -0
  313. package/dist/types/components/vega-date-picker/vega-date-picker.d.ts +6 -14
  314. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +0 -4
  315. package/dist/types/components/vega-input/vega-input.d.ts +1 -1
  316. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.d.ts +65 -0
  317. package/dist/types/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.d.ts +19 -0
  318. package/dist/types/components/vega-progress-tracker/type.d.ts +1 -0
  319. package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +14 -10
  320. package/dist/types/components/vega-rich-text-editor/dto/annotations/annotation.abstract.d.ts +5 -2
  321. package/dist/types/components/vega-rich-text-editor/dto/annotations/block-annotation.abstract.d.ts +3 -3
  322. package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-annotation.d.ts +7 -0
  323. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +6 -10
  324. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +0 -5
  325. package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +7 -0
  326. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -1
  327. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +7 -0
  328. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +2 -2
  329. package/dist/types/components/vega-rich-text-editor/interface.d.ts +8 -21
  330. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +0 -1
  331. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/extension-controller.d.ts +0 -4
  332. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +6 -19
  333. package/dist/types/components/vega-rich-text-editor/test/spec-utils.d.ts +0 -4
  334. package/dist/types/components.d.ts +199 -71
  335. package/dist/types/constants/regex.d.ts +1 -0
  336. package/dist/types/constants/ui.d.ts +1 -1
  337. package/dist/types/helpers/calendar/calendar-date.d.ts +86 -2
  338. package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +7 -0
  339. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +3 -1
  340. package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +5 -2
  341. package/dist/types/helpers/ui/element-appender.d.ts +14 -0
  342. package/dist/types/types/components.type.d.ts +4 -1
  343. package/dist/types/types/type-guard.d.ts +8 -0
  344. package/dist/types/utils/date.d.ts +11 -2
  345. package/dist/types/utils/e2e-utils.d.ts +7 -0
  346. package/dist/types/utils/spec-utils.d.ts +1 -2
  347. package/dist/vega/index.esm.js +1 -1
  348. package/dist/vega/p-06ab90c4.entry.js +1 -0
  349. package/dist/vega/p-09cd025a.entry.js +1 -0
  350. package/dist/vega/p-0b696b0e.entry.js +1 -0
  351. package/dist/vega/p-0f5453a7.entry.js +1 -0
  352. package/dist/vega/p-10ac8b57.js +1 -0
  353. package/dist/vega/p-154f39e4.entry.js +1 -0
  354. package/dist/vega/p-161b9c5b.js +1 -0
  355. package/dist/vega/p-169b7252.entry.js +1 -0
  356. package/dist/vega/p-17f3897a.js +1 -0
  357. package/dist/vega/p-1832e051.js +1 -0
  358. package/dist/vega/p-19728819.js +1 -0
  359. package/dist/vega/p-1e0d8228.entry.js +1 -0
  360. package/dist/vega/p-207cfa6a.js +1 -0
  361. package/dist/vega/p-213310e1.entry.js +1 -0
  362. package/dist/vega/p-27e641a0.entry.js +1 -0
  363. package/dist/vega/p-2872565e.js +1 -0
  364. package/dist/vega/p-294b0b76.js +1 -0
  365. package/dist/vega/p-2c744c20.js +1 -0
  366. package/dist/vega/p-314bf1d5.entry.js +1 -0
  367. package/dist/vega/p-34f624d6.entry.js +1 -0
  368. package/dist/vega/p-39b8dda9.entry.js +1 -0
  369. package/dist/vega/p-3af9421b.entry.js +1 -0
  370. package/dist/vega/p-3d128c07.js +1 -0
  371. package/dist/vega/p-3d85411d.js +1 -0
  372. package/dist/vega/p-3eb0d55c.entry.js +1 -0
  373. package/dist/vega/p-3fbfffa1.entry.js +9 -0
  374. package/dist/vega/p-40f39194.js +1 -0
  375. package/dist/vega/p-41026b90.js +1 -0
  376. package/dist/vega/p-4cc49d2b.entry.js +1 -0
  377. package/dist/vega/p-4ea28b2b.entry.js +1 -0
  378. package/dist/vega/p-4f56da1d.entry.js +1 -0
  379. package/dist/vega/p-563b67a0.entry.js +1 -0
  380. package/dist/vega/p-59e02528.js +1 -0
  381. package/dist/vega/p-5ac6bf4e.entry.js +1 -0
  382. package/dist/vega/p-5c379abd.entry.js +1 -0
  383. package/dist/vega/p-5c71a548.js +1 -0
  384. package/dist/vega/p-5f377954.js +1 -1
  385. package/dist/vega/p-5fdbff48.js +1 -0
  386. package/dist/vega/p-62e45daf.entry.js +1 -0
  387. package/dist/vega/p-65749591.entry.js +1 -0
  388. package/dist/vega/p-6c1ef2ed.js +1 -0
  389. package/dist/vega/p-6ee95368.entry.js +1 -0
  390. package/dist/vega/p-707d542e.js +1 -0
  391. package/dist/vega/p-7089cafe.entry.js +1 -0
  392. package/dist/vega/p-74f3516e.entry.js +1 -0
  393. package/dist/vega/p-77e64f26.js +1 -0
  394. package/dist/vega/p-7a5b3ad3.entry.js +1 -0
  395. package/dist/vega/p-7c22e766.entry.js +1 -0
  396. package/dist/vega/p-8233c5b6.entry.js +1 -0
  397. package/dist/vega/p-82bd84f9.js +1 -0
  398. package/dist/vega/p-86b1e8dd.entry.js +1 -0
  399. package/dist/vega/p-87960572.entry.js +1 -0
  400. package/dist/vega/p-883192ed.js +1 -0
  401. package/dist/vega/p-8c5acc0b.entry.js +1 -0
  402. package/dist/vega/p-94a58223.entry.js +1 -0
  403. package/dist/vega/p-95059e57.entry.js +1 -0
  404. package/dist/vega/p-990b11a7.entry.js +1 -0
  405. package/dist/vega/p-9a83a6b0.js +1 -0
  406. package/dist/vega/p-a23f6ed1.entry.js +1 -0
  407. package/dist/vega/p-a4ec6575.js +1 -0
  408. package/dist/vega/p-a7633138.entry.js +1 -0
  409. package/dist/vega/p-a8dad05d.js +1 -0
  410. package/dist/vega/p-a9268981.entry.js +1 -0
  411. package/dist/vega/p-afb834d8.js +1 -0
  412. package/dist/vega/p-b05ec86a.entry.js +1 -0
  413. package/dist/vega/p-b1ad3107.entry.js +1 -0
  414. package/dist/vega/p-b2eea369.js +1 -0
  415. package/dist/vega/p-b3d29c1e.entry.js +1 -0
  416. package/dist/vega/p-b6c92e7a.entry.js +1 -0
  417. package/dist/vega/p-b842f649.js +1 -0
  418. package/dist/vega/p-b8a7a54b.js +1 -0
  419. package/dist/vega/p-b96b7f33.entry.js +1 -0
  420. package/dist/vega/p-bc1cbd6c.js +1 -0
  421. package/dist/vega/p-bc7df5e7.entry.js +1 -0
  422. package/dist/vega/p-bca97027.entry.js +1 -0
  423. package/dist/vega/p-beed225e.entry.js +1 -0
  424. package/dist/vega/p-c1db0a81.entry.js +1 -0
  425. package/dist/vega/p-c4b010be.entry.js +1 -0
  426. package/dist/vega/p-c4b30117.entry.js +1 -0
  427. package/dist/vega/p-c5cf9a89.entry.js +1 -0
  428. package/dist/vega/p-cb7211c3.js +1 -0
  429. package/dist/vega/p-cb72ebb5.js +1 -0
  430. package/dist/vega/p-cbefc113.entry.js +1 -0
  431. package/dist/vega/p-d1d0f08a.js +1 -0
  432. package/dist/vega/p-d4413277.entry.js +1 -0
  433. package/dist/vega/p-d991fb11.js +1 -0
  434. package/dist/vega/p-de70aac1.js +1 -0
  435. package/dist/vega/p-e1e306c3.entry.js +1 -0
  436. package/dist/vega/p-e49c6368.js +1 -0
  437. package/dist/vega/p-e8d0e71c.js +1 -0
  438. package/dist/vega/p-e9838fb4.entry.js +1 -0
  439. package/dist/vega/p-ea0b6e85.entry.js +1 -0
  440. package/dist/vega/p-ec412511.entry.js +1 -0
  441. package/dist/vega/p-ec4c21d1.entry.js +1 -0
  442. package/dist/vega/p-eebe9176.js +1 -0
  443. package/dist/vega/p-efa4ee14.entry.js +1 -0
  444. package/dist/vega/p-f9facf79.entry.js +1 -0
  445. package/dist/vega/p-fa63b926.entry.js +1 -0
  446. package/dist/vega/p-fc6fca08.entry.js +1 -0
  447. package/dist/vega/p-fcb3ff5b.entry.js +1 -0
  448. package/dist/vega/vega.esm.js +1 -1
  449. package/package.json +1 -2
  450. package/dist/cjs/app-globals-246e5160.js +0 -432
  451. package/dist/cjs/child-nodes-event-prevent-slimmer-f8840f1b.js +0 -158
  452. package/dist/cjs/code-block-36fb0e69.js +0 -4488
  453. package/dist/cjs/column-operation-aa0673f6.js +0 -1325
  454. package/dist/cjs/component-value-history-controller-slimmer.abstract-eec38ad7.js +0 -757
  455. package/dist/cjs/date-0a6bb035.js +0 -95
  456. package/dist/cjs/date-required-rule-4e1f84fd.js +0 -92
  457. package/dist/cjs/design-token-6f95b09f.js +0 -403
  458. package/dist/cjs/dom-node-subject-observer-factory-f040608b.js +0 -301
  459. package/dist/cjs/dto-renderer-manager-fbc93cb5.js +0 -3930
  460. package/dist/cjs/element-appender-slimmer-ec537994.js +0 -1470
  461. package/dist/cjs/event-emit-slimmer-7afe8d78.js +0 -267
  462. package/dist/cjs/form-field-controller-slimmer-f865d397.js +0 -1267
  463. package/dist/cjs/image-annotation-action-ae1310ef.js +0 -312
  464. package/dist/cjs/index-4b896e76.js +0 -43
  465. package/dist/cjs/inject-keyboard-manager-13c66257.js +0 -37
  466. package/dist/cjs/internal-vega-event-manager-45d451de.js +0 -486
  467. package/dist/cjs/keyboard-manager-af0d08a6.js +0 -140
  468. package/dist/cjs/keyboard-manager-slimmer-62f072cd.js +0 -39
  469. package/dist/cjs/language-extension-2df8cfd3.js +0 -210
  470. package/dist/cjs/mobilefriendly-aa2e50e9.js +0 -13
  471. package/dist/cjs/public-rules-6432194e.js +0 -47
  472. package/dist/cjs/range-d24916d7.js +0 -178
  473. package/dist/cjs/responsive-format-facade-0b610205.js +0 -925
  474. package/dist/cjs/rich-text-editor-required-rule-eb34a576.js +0 -64
  475. package/dist/cjs/state-background-color-formatter-aa5570f6.js +0 -85
  476. package/dist/cjs/string-format-strategy.abstract-07a95352.js +0 -60
  477. package/dist/cjs/string-input-formatter-slimmer-8236b5e1.js +0 -230
  478. package/dist/cjs/string-mask-strategy-6bdad95e.js +0 -172
  479. package/dist/cjs/style-formatter-1450a252.js +0 -34
  480. package/dist/cjs/sub-state-notify-slimmer-78682046.js +0 -81
  481. package/dist/cjs/sub-state-observer-slimmer-73aecfff.js +0 -134
  482. package/dist/cjs/table-extension-3b713932.js +0 -4815
  483. package/dist/cjs/time-required-rule-ccf178e7.js +0 -141
  484. package/dist/cjs/type-guard-f12b5bae.js +0 -742
  485. package/dist/cjs/valid-credit-card-number-rule-ce5c9147.js +0 -173
  486. package/dist/cjs/vega-internal-event-id-6d4a2c53.js +0 -110
  487. package/dist/cjs/vega-rich-text-editor_5.cjs.entry.js +0 -5135
  488. package/dist/cjs/vega-rich-text-table-selection-widget.cjs.entry.js +0 -179
  489. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-controller.js +0 -282
  490. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.js +0 -35
  491. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-mobile-controller.js +0 -53
  492. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-month-year-change-event-controller.js +0 -139
  493. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-zindex-controller.js +0 -49
  494. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-month-year-dropdown-renderer.js +0 -341
  495. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-cell-children-remove-interceptor.js +0 -42
  496. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-cell-content-delete-interceptor.js +0 -25
  497. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-row-insert-interceptor.js +0 -23
  498. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-block-strategy.js +0 -25
  499. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-column-strategy.js +0 -57
  500. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-row-strategy.js +0 -57
  501. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-block-strategy.js +0 -54
  502. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-column-strategy.js +0 -42
  503. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-row-strategy.js +0 -117
  504. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/select-table-column-strategy.js +0 -22
  505. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/table-column-strategy.abstract.js +0 -19
  506. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/toggle-header-row-strategy.js +0 -133
  507. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/toggle-header-table-column-strategy.js +0 -99
  508. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/delete-table-block-action.js +0 -13
  509. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/delete-table-column-action.js +0 -13
  510. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/delete-table-row-action.js +0 -18
  511. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/insert-table-block-action.js +0 -13
  512. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/insert-table-column-action.js +0 -19
  513. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/insert-table-row-action.js +0 -26
  514. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/select-table-column-action.js +0 -13
  515. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/table-annotations-action.js +0 -18
  516. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/table-caption-action.js +0 -13
  517. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/table-cell-annotations-action.js +0 -18
  518. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/toggle-header-row-action.js +0 -13
  519. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/toggle-header-table-column-action.js +0 -15
  520. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.js +0 -91
  521. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-caption-annotation.js +0 -57
  522. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.js +0 -120
  523. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-head-cell-annotation.js +0 -40
  524. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +0 -117
  525. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-body-block.js +0 -55
  526. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-caption-block.js +0 -65
  527. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.js +0 -63
  528. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-head-block.js +0 -59
  529. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-head-cell-block.js +0 -46
  530. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-row-block.js +0 -59
  531. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-body-renderer.js +0 -15
  532. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.js +0 -22
  533. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +0 -74
  534. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.js +0 -99
  535. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-head-cell-renderer.js +0 -12
  536. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-head-renderer.js +0 -15
  537. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +0 -103
  538. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-row-renderer.js +0 -15
  539. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +0 -145
  540. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/caption-operation.js +0 -78
  541. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/column-operation.js +0 -109
  542. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/row-operation.js +0 -132
  543. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/setting-event-handler.abstract.js +0 -44
  544. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +0 -118
  545. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-icon.js +0 -3
  546. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +0 -348
  547. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.js +0 -229
  548. package/dist/collection/components/vega-rich-text-editor/extensions/table/utils/utils.js +0 -102
  549. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/controllers/selection-widget-keyboard-controller.js +0 -36
  550. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/renderers/selection-widget-renderer.js +0 -83
  551. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/vega-rich-text-table-selection-widget.css +0 -41
  552. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/vega-rich-text-table-selection-widget.js +0 -80
  553. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/assets/icon.js +0 -20
  554. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.js +0 -27
  555. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.js +0 -26
  556. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +0 -86
  557. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +0 -101
  558. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.js +0 -26
  559. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.js +0 -75
  560. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.js +0 -50
  561. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.css +0 -20
  562. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +0 -166
  563. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/caption-operation.test.js +0 -99
  564. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-annotation.test.js +0 -89
  565. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-caption-annotations.test.js +0 -79
  566. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-cell-annotation.test.js +0 -128
  567. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-dto.test.js +0 -517
  568. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-test-utils.js +0 -172
  569. package/dist/esm/app-globals-e3ba8241.js +0 -430
  570. package/dist/esm/child-nodes-event-prevent-slimmer-66a11e63.js +0 -156
  571. package/dist/esm/code-block-f2f0cff5.js +0 -4430
  572. package/dist/esm/column-operation-9805e482.js +0 -1300
  573. package/dist/esm/component-value-history-controller-slimmer.abstract-400e0bd2.js +0 -751
  574. package/dist/esm/date-c55b97f0.js +0 -87
  575. package/dist/esm/date-required-rule-8944f3bf.js +0 -90
  576. package/dist/esm/design-token-6f4086a9.js +0 -389
  577. package/dist/esm/dom-node-subject-observer-factory-4401eb10.js +0 -246
  578. package/dist/esm/dto-renderer-manager-8b93cc6f.js +0 -3910
  579. package/dist/esm/element-appender-slimmer-cc465622.js +0 -1468
  580. package/dist/esm/event-emit-slimmer-7fade5b2.js +0 -265
  581. package/dist/esm/form-field-controller-slimmer-d88dc81a.js +0 -1265
  582. package/dist/esm/image-annotation-action-f62cfec3.js +0 -306
  583. package/dist/esm/index-e7660797.js +0 -40
  584. package/dist/esm/inject-keyboard-manager-ffd351b9.js +0 -35
  585. package/dist/esm/internal-vega-event-manager-c171f709.js +0 -482
  586. package/dist/esm/keyboard-manager-5d8f3582.js +0 -138
  587. package/dist/esm/keyboard-manager-slimmer-f39214e4.js +0 -37
  588. package/dist/esm/language-extension-87abdcf0.js +0 -207
  589. package/dist/esm/mobilefriendly-c5d0573d.js +0 -11
  590. package/dist/esm/page-resize-observer-slimmer-0bf7fbf3.js +0 -171
  591. package/dist/esm/public-rules-b6ad63e6.js +0 -32
  592. package/dist/esm/range-686c5d0c.js +0 -176
  593. package/dist/esm/responsive-format-facade-603dddd7.js +0 -921
  594. package/dist/esm/rich-text-editor-required-rule-4d14da42.js +0 -62
  595. package/dist/esm/state-background-color-formatter-0f01d27a.js +0 -82
  596. package/dist/esm/string-format-strategy.abstract-452f4398.js +0 -58
  597. package/dist/esm/string-input-formatter-slimmer-47305317.js +0 -228
  598. package/dist/esm/string-mask-strategy-6232a1c1.js +0 -170
  599. package/dist/esm/style-formatter-d76a67cb.js +0 -32
  600. package/dist/esm/sub-state-notify-slimmer-0a927f34.js +0 -79
  601. package/dist/esm/sub-state-observer-slimmer-33e0dd73.js +0 -132
  602. package/dist/esm/table-extension-5da1a8db.js +0 -4795
  603. package/dist/esm/time-required-rule-a01163b5.js +0 -138
  604. package/dist/esm/type-guard-12f7654b.js +0 -692
  605. package/dist/esm/ui-8424715a.js +0 -38
  606. package/dist/esm/valid-credit-card-number-rule-81443274.js +0 -171
  607. package/dist/esm/vega-internal-event-id-49fef150.js +0 -65
  608. package/dist/esm/vega-rich-text-editor_5.entry.js +0 -5127
  609. package/dist/esm/vega-rich-text-table-selection-widget.entry.js +0 -175
  610. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-controller.d.ts +0 -96
  611. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.d.ts +0 -12
  612. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-mobile-controller.d.ts +0 -18
  613. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-month-year-change-event-controller.d.ts +0 -46
  614. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-zindex-controller.d.ts +0 -15
  615. package/dist/types/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-month-year-dropdown-renderer.d.ts +0 -97
  616. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-cell-children-remove-interceptor.d.ts +0 -25
  617. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-cell-content-delete-interceptor.d.ts +0 -20
  618. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-interceptors/prevent-row-insert-interceptor.d.ts +0 -19
  619. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-block-strategy.d.ts +0 -14
  620. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-column-strategy.d.ts +0 -31
  621. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/delete-table-row-strategy.d.ts +0 -28
  622. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-block-strategy.d.ts +0 -27
  623. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-column-strategy.d.ts +0 -19
  624. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-row-strategy.d.ts +0 -27
  625. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/select-table-column-strategy.d.ts +0 -12
  626. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/table-column-strategy.abstract.d.ts +0 -20
  627. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/toggle-header-row-strategy.d.ts +0 -41
  628. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/toggle-header-table-column-strategy.d.ts +0 -45
  629. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/delete-table-block-action.d.ts +0 -12
  630. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/delete-table-column-action.d.ts +0 -15
  631. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/delete-table-row-action.d.ts +0 -17
  632. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/insert-table-block-action.d.ts +0 -20
  633. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/insert-table-column-action.d.ts +0 -23
  634. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/insert-table-row-action.d.ts +0 -23
  635. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/select-table-column-action.d.ts +0 -18
  636. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/table-annotations-action.d.ts +0 -16
  637. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/table-caption-action.d.ts +0 -14
  638. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/table-cell-annotations-action.d.ts +0 -16
  639. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/toggle-header-row-action.d.ts +0 -12
  640. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/toggle-header-table-column-action.d.ts +0 -16
  641. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.d.ts +0 -64
  642. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-caption-annotation.d.ts +0 -26
  643. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.d.ts +0 -66
  644. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-head-cell-annotation.d.ts +0 -22
  645. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-block.d.ts +0 -78
  646. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-body-block.d.ts +0 -42
  647. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-caption-block.d.ts +0 -41
  648. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.d.ts +0 -45
  649. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-head-block.d.ts +0 -42
  650. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-head-cell-block.d.ts +0 -30
  651. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-row-block.d.ts +0 -44
  652. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-body-renderer.d.ts +0 -12
  653. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.d.ts +0 -13
  654. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.d.ts +0 -37
  655. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +0 -51
  656. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-head-cell-renderer.d.ts +0 -12
  657. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-head-renderer.d.ts +0 -12
  658. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +0 -39
  659. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-row-renderer.d.ts +0 -12
  660. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.d.ts +0 -65
  661. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/caption-operation.d.ts +0 -36
  662. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/column-operation.d.ts +0 -55
  663. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/row-operation.d.ts +0 -61
  664. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/setting-event-handler.abstract.d.ts +0 -46
  665. package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +0 -31
  666. package/dist/types/components/vega-rich-text-editor/extensions/table/table-icon.d.ts +0 -3
  667. package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +0 -142
  668. package/dist/types/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.d.ts +0 -85
  669. package/dist/types/components/vega-rich-text-editor/extensions/table/utils/utils.d.ts +0 -53
  670. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/controllers/selection-widget-keyboard-controller.d.ts +0 -15
  671. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/renderers/selection-widget-renderer.d.ts +0 -31
  672. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/vega-rich-text-table-selection-widget.d.ts +0 -27
  673. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/assets/icon.d.ts +0 -2
  674. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.d.ts +0 -11
  675. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.d.ts +0 -11
  676. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.d.ts +0 -28
  677. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.d.ts +0 -36
  678. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.d.ts +0 -11
  679. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.d.ts +0 -36
  680. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.d.ts +0 -11
  681. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +0 -46
  682. package/dist/types/components/vega-rich-text-editor/test/extensions/table/caption-operation.test.d.ts +0 -1
  683. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-annotation.test.d.ts +0 -1
  684. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-caption-annotations.test.d.ts +0 -1
  685. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-cell-annotation.test.d.ts +0 -1
  686. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-dto.test.d.ts +0 -1
  687. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-test-utils.d.ts +0 -11
  688. package/dist/vega/p-0492fb42.entry.js +0 -1
  689. package/dist/vega/p-06840396.entry.js +0 -1
  690. package/dist/vega/p-06bc02cb.entry.js +0 -1
  691. package/dist/vega/p-070c3970.js +0 -1
  692. package/dist/vega/p-07c1a2a2.entry.js +0 -1
  693. package/dist/vega/p-08835909.js +0 -1
  694. package/dist/vega/p-10e142f1.js +0 -1
  695. package/dist/vega/p-12faf818.entry.js +0 -1
  696. package/dist/vega/p-1546855d.entry.js +0 -1
  697. package/dist/vega/p-18711501.js +0 -1
  698. package/dist/vega/p-194e32a2.js +0 -1
  699. package/dist/vega/p-19522949.js +0 -1
  700. package/dist/vega/p-197affbe.entry.js +0 -1
  701. package/dist/vega/p-1a282bfa.entry.js +0 -9
  702. package/dist/vega/p-1e5c2206.entry.js +0 -1
  703. package/dist/vega/p-1fb466db.js +0 -1
  704. package/dist/vega/p-24e66056.entry.js +0 -1
  705. package/dist/vega/p-26bde99c.entry.js +0 -1
  706. package/dist/vega/p-2762e4a7.entry.js +0 -1
  707. package/dist/vega/p-2b079386.entry.js +0 -1
  708. package/dist/vega/p-2c88b9c9.js +0 -1
  709. package/dist/vega/p-2de37a60.entry.js +0 -1
  710. package/dist/vega/p-2f866855.entry.js +0 -1
  711. package/dist/vega/p-3185b22d.entry.js +0 -1
  712. package/dist/vega/p-33cb78bd.entry.js +0 -1
  713. package/dist/vega/p-35609e2d.entry.js +0 -1
  714. package/dist/vega/p-36753b56.entry.js +0 -1
  715. package/dist/vega/p-37fd6859.entry.js +0 -1
  716. package/dist/vega/p-388953e4.entry.js +0 -1
  717. package/dist/vega/p-3925c16b.js +0 -1
  718. package/dist/vega/p-3ae691a0.entry.js +0 -1
  719. package/dist/vega/p-3ce90ecd.entry.js +0 -1
  720. package/dist/vega/p-4115d58a.entry.js +0 -1
  721. package/dist/vega/p-4a895707.js +0 -1
  722. package/dist/vega/p-502b7062.entry.js +0 -1
  723. package/dist/vega/p-532ff2d2.entry.js +0 -13
  724. package/dist/vega/p-5e1e91db.entry.js +0 -1
  725. package/dist/vega/p-5f53c228.entry.js +0 -1
  726. package/dist/vega/p-61519b5c.entry.js +0 -1
  727. package/dist/vega/p-62bf35fd.entry.js +0 -1
  728. package/dist/vega/p-64994265.entry.js +0 -1
  729. package/dist/vega/p-651ac54f.entry.js +0 -1
  730. package/dist/vega/p-67f159c3.js +0 -1
  731. package/dist/vega/p-70c898c6.entry.js +0 -1
  732. package/dist/vega/p-71f9c4d4.js +0 -1
  733. package/dist/vega/p-71fc7286.js +0 -1
  734. package/dist/vega/p-74168615.js +0 -1
  735. package/dist/vega/p-78d6dead.js +0 -1
  736. package/dist/vega/p-7d083222.entry.js +0 -1
  737. package/dist/vega/p-7d397c32.js +0 -1
  738. package/dist/vega/p-7d9cd9c8.js +0 -1
  739. package/dist/vega/p-7edd4b79.js +0 -1
  740. package/dist/vega/p-824a06ba.js +0 -1
  741. package/dist/vega/p-84d34816.js +0 -1
  742. package/dist/vega/p-853abdfd.entry.js +0 -1
  743. package/dist/vega/p-867a4970.js +0 -1
  744. package/dist/vega/p-8da8c2cf.entry.js +0 -1
  745. package/dist/vega/p-8daadaf3.entry.js +0 -1
  746. package/dist/vega/p-8eefbd15.entry.js +0 -1
  747. package/dist/vega/p-8fae8f9e.js +0 -1
  748. package/dist/vega/p-9112f67d.js +0 -1
  749. package/dist/vega/p-924b4e24.js +0 -1
  750. package/dist/vega/p-932c3efc.entry.js +0 -1
  751. package/dist/vega/p-9443c292.js +0 -1
  752. package/dist/vega/p-96c941d5.entry.js +0 -1
  753. package/dist/vega/p-9939e407.entry.js +0 -1
  754. package/dist/vega/p-99c52315.entry.js +0 -1
  755. package/dist/vega/p-99c6df1e.entry.js +0 -1
  756. package/dist/vega/p-9ce249a9.js +0 -1
  757. package/dist/vega/p-9f6632cc.entry.js +0 -1
  758. package/dist/vega/p-a10b9f2e.js +0 -12
  759. package/dist/vega/p-a6010b93.entry.js +0 -1
  760. package/dist/vega/p-a996636d.js +0 -1
  761. package/dist/vega/p-ae0edda4.entry.js +0 -1
  762. package/dist/vega/p-afe7bb0b.entry.js +0 -1
  763. package/dist/vega/p-b06ceb0f.entry.js +0 -1
  764. package/dist/vega/p-b1faebe0.js +0 -1
  765. package/dist/vega/p-b390be9d.entry.js +0 -1
  766. package/dist/vega/p-b555b253.js +0 -1
  767. package/dist/vega/p-baaf9264.js +0 -1
  768. package/dist/vega/p-bbc12975.js +0 -1
  769. package/dist/vega/p-bc749d3f.entry.js +0 -1
  770. package/dist/vega/p-c0b986af.js +0 -1
  771. package/dist/vega/p-c11c0d61.js +0 -1
  772. package/dist/vega/p-c4f6e01c.entry.js +0 -1
  773. package/dist/vega/p-c6ee2d47.entry.js +0 -1
  774. package/dist/vega/p-c8b76028.entry.js +0 -1
  775. package/dist/vega/p-cad733c8.js +0 -1
  776. package/dist/vega/p-d54a1453.entry.js +0 -1
  777. package/dist/vega/p-d94f149a.entry.js +0 -1
  778. package/dist/vega/p-de44727f.entry.js +0 -1
  779. package/dist/vega/p-e2a0f7ae.js +0 -1
  780. package/dist/vega/p-e6879699.entry.js +0 -1
  781. package/dist/vega/p-ec7bc15a.js +0 -1
  782. package/dist/vega/p-f14578ee.entry.js +0 -1
  783. package/dist/vega/p-f2de3d76.entry.js +0 -1
  784. package/dist/vega/p-f2f6f24d.entry.js +0 -1
  785. package/dist/vega/p-f41ef9e2.entry.js +0 -1
  786. package/dist/vega/p-f782a531.js +0 -1
  787. package/dist/vega/p-fc6617cb.entry.js +0 -1
  788. package/dist/vega/p-fc79b3c3.entry.js +0 -1
  789. package/dist/vega/p-ff67a25f.js +0 -1
  790. package/style/vega_min.css +0 -1
  791. package/style/visual-screenshots (1)/builds/master.json +0 -13385
  792. package/style/visual-screenshots (1)/compare.html +0 -26
  793. package/style/visual-screenshots (1)/connector.js +0 -10
  794. package/style/visual-screenshots (1)/images/00c9dbc329ca6b1ad78ea743b91ee0bc.png +0 -0
  795. package/style/visual-screenshots (1)/images/00deb6ff94de798b3fcc6414aedc040c.png +0 -0
  796. package/style/visual-screenshots (1)/images/014c955d050d2ebb917fd03590730572.png +0 -0
  797. package/style/visual-screenshots (1)/images/0182583c546dba469600a0251240cf21.png +0 -0
  798. package/style/visual-screenshots (1)/images/01a0575c0db1270ea83316b5c6c20601.png +0 -0
  799. package/style/visual-screenshots (1)/images/027defd97df9a5b4a7653be56ccdb0ac.png +0 -0
  800. package/style/visual-screenshots (1)/images/02ba6083bbf1c0e01a725f1f9f92aff9.png +0 -0
  801. package/style/visual-screenshots (1)/images/036795373db4daaf365beee11d8c25a7.png +0 -0
  802. package/style/visual-screenshots (1)/images/04a8eee512eeb23c1c2b87cda93a6776.png +0 -0
  803. package/style/visual-screenshots (1)/images/04bb561662f78f189085275de6678f41.png +0 -0
  804. package/style/visual-screenshots (1)/images/04eef932b78ca112212112ce585f27ab.png +0 -0
  805. package/style/visual-screenshots (1)/images/050cba57fa9a35e3803c85fbb59b4024.png +0 -0
  806. package/style/visual-screenshots (1)/images/051edd1219d1ddca517459b788cc9d2b.png +0 -0
  807. package/style/visual-screenshots (1)/images/0528ddc76f74747fa440e96db6907a43.png +0 -0
  808. package/style/visual-screenshots (1)/images/05395d74d64a1da223fb94b2874f2d66.png +0 -0
  809. package/style/visual-screenshots (1)/images/0545ef2f0796fa5f1d878254825adaf4.png +0 -0
  810. package/style/visual-screenshots (1)/images/0582c1933e54f696b632a1e1659073b2.png +0 -0
  811. package/style/visual-screenshots (1)/images/059772f121132ead0d6fa0a48168338b.png +0 -0
  812. package/style/visual-screenshots (1)/images/05feee4ecb06f066f3dafb653f33b6fb.png +0 -0
  813. package/style/visual-screenshots (1)/images/0640963c7a9fddb30a953c2624ba42eb.png +0 -0
  814. package/style/visual-screenshots (1)/images/065795600809ccab42d0f13ba71eb633.png +0 -0
  815. package/style/visual-screenshots (1)/images/0666dfce480647c3cb8857d2bb059847.png +0 -0
  816. package/style/visual-screenshots (1)/images/0700cef6f6f83545e2e7d3ecedc042d4.png +0 -0
  817. package/style/visual-screenshots (1)/images/0723f0263fa389ae876735ff57f46681.png +0 -0
  818. package/style/visual-screenshots (1)/images/073c1445dacdaac8c0aa6480212492f9.png +0 -0
  819. package/style/visual-screenshots (1)/images/073d4f053baf4c24d6af8de20eeae2aa.png +0 -0
  820. package/style/visual-screenshots (1)/images/076e14b0ccac0c02052e66256be50d47.png +0 -0
  821. package/style/visual-screenshots (1)/images/0775b2b66ba608e1677bb4bd032f707e.png +0 -0
  822. package/style/visual-screenshots (1)/images/078f2e93590c93c74f514e02ac05e4a3.png +0 -0
  823. package/style/visual-screenshots (1)/images/080f0f2d3f06372a9302e80f14aeb74e.png +0 -0
  824. package/style/visual-screenshots (1)/images/08872613981eb5e038fd62286300c583.png +0 -0
  825. package/style/visual-screenshots (1)/images/08cfa8c87053192e64e3b0b448d0dfaa.png +0 -0
  826. package/style/visual-screenshots (1)/images/08fc2250530bdc6b684a493406e75dcb.png +0 -0
  827. package/style/visual-screenshots (1)/images/0918181ef6fad9b51bbf411785719c7f.png +0 -0
  828. package/style/visual-screenshots (1)/images/091c16a1900c15eaf442677f7b7712a4.png +0 -0
  829. package/style/visual-screenshots (1)/images/09271a89642f3deb1534537363d82adf.png +0 -0
  830. package/style/visual-screenshots (1)/images/0968ada1c88a12c121d7e4cd9d1a4c31.png +0 -0
  831. package/style/visual-screenshots (1)/images/098cf2d4feb36daa5935d431b4cc2af9.png +0 -0
  832. package/style/visual-screenshots (1)/images/098ee2f12b7cd94ed7e3d9678dca8d9d.png +0 -0
  833. package/style/visual-screenshots (1)/images/09afb7f891103d16ca4e69cced183010.png +0 -0
  834. package/style/visual-screenshots (1)/images/0a8740f45dfa3ef686362af82744d0f8.png +0 -0
  835. package/style/visual-screenshots (1)/images/0aecce7dd5c65d8a1cd2bc3007aa039c.png +0 -0
  836. package/style/visual-screenshots (1)/images/0afce1548cbbf477be056364879ed645.png +0 -0
  837. package/style/visual-screenshots (1)/images/0b0e6917a067495e267dea6d4f1d2c89.png +0 -0
  838. package/style/visual-screenshots (1)/images/0b422eacde0c1264cc993d15ce94f3f2.png +0 -0
  839. package/style/visual-screenshots (1)/images/0b462aed27368fadffaf4042b4bf124f.png +0 -0
  840. package/style/visual-screenshots (1)/images/0bd41559a47131117d6b5d48f9384e2b.png +0 -0
  841. package/style/visual-screenshots (1)/images/0cdf8442f9e597e7782a97d05b9f0167.png +0 -0
  842. package/style/visual-screenshots (1)/images/0ce13d831ed54f898c0ddc60c7a3bfe9.png +0 -0
  843. package/style/visual-screenshots (1)/images/0d7e570e1a0f76d5114975280c8e36dc.png +0 -0
  844. package/style/visual-screenshots (1)/images/0dd901512ef46e6320b55ebb543c7a38.png +0 -0
  845. package/style/visual-screenshots (1)/images/0de77d7c6aedecc1948bf82730e77f9b.png +0 -0
  846. package/style/visual-screenshots (1)/images/0e588e87d0e0617c6fefe1e8203ceaf5.png +0 -0
  847. package/style/visual-screenshots (1)/images/0eb8a80ddc22191daad2b765098af978.png +0 -0
  848. package/style/visual-screenshots (1)/images/0ee82b520727d5a484ae47df46170f6b.png +0 -0
  849. package/style/visual-screenshots (1)/images/0ef7219055c2204179e5a87ce6393ecd.png +0 -0
  850. package/style/visual-screenshots (1)/images/0f20d9909852d49d83662e354d774330.png +0 -0
  851. package/style/visual-screenshots (1)/images/0fe5e32a6e5d62baa9eb9e9ef32b8ac0.png +0 -0
  852. package/style/visual-screenshots (1)/images/101fe127c73e1204c7b0a9532ddf5f33.png +0 -0
  853. package/style/visual-screenshots (1)/images/10dc76469583d7bb071c415b4c2500f5.png +0 -0
  854. package/style/visual-screenshots (1)/images/111ceb449af342ffefc9bf18313e9f2d.png +0 -0
  855. package/style/visual-screenshots (1)/images/116f44589ef708d63b88f72c07020d65.png +0 -0
  856. package/style/visual-screenshots (1)/images/11809d0dd4f56bd7e75c1ee424ea6049.png +0 -0
  857. package/style/visual-screenshots (1)/images/11e8c569dc91a4263915d38d41797b7c.png +0 -0
  858. package/style/visual-screenshots (1)/images/11f644637e7bf9e488c92e597243b372.png +0 -0
  859. package/style/visual-screenshots (1)/images/11f85d78db6278a0b9309de5e1971968.png +0 -0
  860. package/style/visual-screenshots (1)/images/126484246367b441a4874bf1c80eb701.png +0 -0
  861. package/style/visual-screenshots (1)/images/12b7614a6bca5fba19b2c207c9399eec.png +0 -0
  862. package/style/visual-screenshots (1)/images/12f9db657f5f215db4fd81d60e61ac05.png +0 -0
  863. package/style/visual-screenshots (1)/images/12fd30dca14bdb10e138bf9957cb67d6.png +0 -0
  864. package/style/visual-screenshots (1)/images/12ff293bb7a3fb35ba9e71b36d1ede58.png +0 -0
  865. package/style/visual-screenshots (1)/images/132fad75fe05d0c78d642c7d18b36364.png +0 -0
  866. package/style/visual-screenshots (1)/images/133df50a253039a25dc23c11be89ceb7.png +0 -0
  867. package/style/visual-screenshots (1)/images/13b9e970f1e6fc8dde0c10722f66bb73.png +0 -0
  868. package/style/visual-screenshots (1)/images/13d533f8842a49a2a160723a46eb8a32.png +0 -0
  869. package/style/visual-screenshots (1)/images/14391d1ca80560f5e01b72b0a32a2e43.png +0 -0
  870. package/style/visual-screenshots (1)/images/14b81ce49feb5c4033d2b6bf9ce8b584.png +0 -0
  871. package/style/visual-screenshots (1)/images/16548b7507dad1afa018cf73f656e123.png +0 -0
  872. package/style/visual-screenshots (1)/images/16bbd810a35c9542672c143620dd124b.png +0 -0
  873. package/style/visual-screenshots (1)/images/17f1ac08aef0b15a2a93576bd0c69a8b.png +0 -0
  874. package/style/visual-screenshots (1)/images/1823fb8764090e5f139555434673b999.png +0 -0
  875. package/style/visual-screenshots (1)/images/184a290d2680a6b9ed5fd3e875866f6c.png +0 -0
  876. package/style/visual-screenshots (1)/images/1853b22c2e9f57c3c0465f1ad677fd02.png +0 -0
  877. package/style/visual-screenshots (1)/images/1917b4c75462018e96fd444a55f92fdb.png +0 -0
  878. package/style/visual-screenshots (1)/images/19cb20f82a883631ec08e6fce09c9346.png +0 -0
  879. package/style/visual-screenshots (1)/images/19d6ef3f0f09ad264bd4565a890f4de3.png +0 -0
  880. package/style/visual-screenshots (1)/images/19f0f11a1678b49278906815b94aa63b.png +0 -0
  881. package/style/visual-screenshots (1)/images/1a334e822ac119215ecd18f1289048cf.png +0 -0
  882. package/style/visual-screenshots (1)/images/1a396fba8af913178a057a63bc2812ef.png +0 -0
  883. package/style/visual-screenshots (1)/images/1a4712761391165e44e0399e574800c7.png +0 -0
  884. package/style/visual-screenshots (1)/images/1a6407989995cf5d9451432c30bd8af5.png +0 -0
  885. package/style/visual-screenshots (1)/images/1a66f2485b63b12007df9713afc7abbd.png +0 -0
  886. package/style/visual-screenshots (1)/images/1a9961bc790f0e542d0e1df7ec61162c.png +0 -0
  887. package/style/visual-screenshots (1)/images/1aad56b95fdc16ee9739410e31f4b04b.png +0 -0
  888. package/style/visual-screenshots (1)/images/1ab773baf811c86dcc3fd48c486b948e.png +0 -0
  889. package/style/visual-screenshots (1)/images/1acd824e815dd8290f73aa3eac0e9aa7.png +0 -0
  890. package/style/visual-screenshots (1)/images/1b7e059b6e4adb5f3a15dc7737195bef.png +0 -0
  891. package/style/visual-screenshots (1)/images/1b83910bbcff965492bf79d17f7f3952.png +0 -0
  892. package/style/visual-screenshots (1)/images/1b8acd3ed0bb87d0b41963d3c4566324.png +0 -0
  893. package/style/visual-screenshots (1)/images/1bcb2ad6de61cbc5cb2bfbc40dcf3c75.png +0 -0
  894. package/style/visual-screenshots (1)/images/1c01fa461439431ed056e345914504aa.png +0 -0
  895. package/style/visual-screenshots (1)/images/1c1622f4ff1c0169e2efe5af5fab7238.png +0 -0
  896. package/style/visual-screenshots (1)/images/1c2ae0a43c9aea9e17e639f2486ad76c.png +0 -0
  897. package/style/visual-screenshots (1)/images/1c2c279749b3bab613be5efd8411a9fb.png +0 -0
  898. package/style/visual-screenshots (1)/images/1cdb0dbdb6a4398f94988e3d40162f2c.png +0 -0
  899. package/style/visual-screenshots (1)/images/1cfacd6c8ac80ee3c4a7f8584bd1441c.png +0 -0
  900. package/style/visual-screenshots (1)/images/1d1444203dac3cbe71c951d381126d03.png +0 -0
  901. package/style/visual-screenshots (1)/images/1d73f593bed08ad694e2b573a39ae06f.png +0 -0
  902. package/style/visual-screenshots (1)/images/1dac4a7712234a30253ab6f9160d50a6.png +0 -0
  903. package/style/visual-screenshots (1)/images/1ebaf53fb8db94bb9a8154e86a3e5ed2.png +0 -0
  904. package/style/visual-screenshots (1)/images/1ec0c1febc3f0dd1786eea003e0dee38.png +0 -0
  905. package/style/visual-screenshots (1)/images/1ec3bebcdac3683aad4e93ea70ee4a1e.png +0 -0
  906. package/style/visual-screenshots (1)/images/1f7f87a3bfb22d7b6d5489170a691439.png +0 -0
  907. package/style/visual-screenshots (1)/images/217dca423214acf6733443967bd4bb91.png +0 -0
  908. package/style/visual-screenshots (1)/images/21a4579340bd071933dc4222aca885e8.png +0 -0
  909. package/style/visual-screenshots (1)/images/21e702dbfac3ae3c84ad5cf4a3a5fd33.png +0 -0
  910. package/style/visual-screenshots (1)/images/2205a5e15323173cf82e53036b89f3d2.png +0 -0
  911. package/style/visual-screenshots (1)/images/2239056187956d81a9a7a3ff086123ec.png +0 -0
  912. package/style/visual-screenshots (1)/images/22a392ca2f7b01e9145de8a1d16d8ac1.png +0 -0
  913. package/style/visual-screenshots (1)/images/2395e15caf0facec892a787fbf1baa61.png +0 -0
  914. package/style/visual-screenshots (1)/images/2430226e2b211252d8793d0b24bd105b.png +0 -0
  915. package/style/visual-screenshots (1)/images/249af52548a661890ebb3990c81e7bec.png +0 -0
  916. package/style/visual-screenshots (1)/images/24adff266f0ccc120bbab22610a7afef.png +0 -0
  917. package/style/visual-screenshots (1)/images/250d4d8b44fd5e3f83114560684c7a33.png +0 -0
  918. package/style/visual-screenshots (1)/images/2517969a2f9a119f248ef574ce68957a.png +0 -0
  919. package/style/visual-screenshots (1)/images/251e0de35a82707d6372ae27e6a28f19.png +0 -0
  920. package/style/visual-screenshots (1)/images/25596d87f964d9e9e48bcdcb815d97b0.png +0 -0
  921. package/style/visual-screenshots (1)/images/257aafcb25e5c45c1fdb794c500845af.png +0 -0
  922. package/style/visual-screenshots (1)/images/25eeda071a6e8ec33338f621edfccce7.png +0 -0
  923. package/style/visual-screenshots (1)/images/260117a8a096031e2d4a00137e1fb6e7.png +0 -0
  924. package/style/visual-screenshots (1)/images/2609faace1c9661a650574dcc408030d.png +0 -0
  925. package/style/visual-screenshots (1)/images/2613cd2759c32063cc30bd0bd33358dc.png +0 -0
  926. package/style/visual-screenshots (1)/images/2694ff3a617c6cf218bdd37a19c83b8a.png +0 -0
  927. package/style/visual-screenshots (1)/images/26e2f8a3530bb0e0ea2384f2bdc9a81a.png +0 -0
  928. package/style/visual-screenshots (1)/images/2729771eeefd444ff898c491f1273357.png +0 -0
  929. package/style/visual-screenshots (1)/images/27f11a528d6b5f15d45f2c420edc00fb.png +0 -0
  930. package/style/visual-screenshots (1)/images/2818dab1bc771c7ed5eb71d561228863.png +0 -0
  931. package/style/visual-screenshots (1)/images/28cf1d93f7722430ee1437df8a14127f.png +0 -0
  932. package/style/visual-screenshots (1)/images/2939e1e89e29a3b71f5be665edf472c2.png +0 -0
  933. package/style/visual-screenshots (1)/images/2a3e1613614fa6bf58ebcb820d6fc84f.png +0 -0
  934. package/style/visual-screenshots (1)/images/2a8fce144b32ae297bcc8650d13cdb1c.png +0 -0
  935. package/style/visual-screenshots (1)/images/2aa7766d32787734fc8a534acc98bf77.png +0 -0
  936. package/style/visual-screenshots (1)/images/2ae27049402468e5e2baf2b664365f8a.png +0 -0
  937. package/style/visual-screenshots (1)/images/2b1b3ff73541c559ff4f0f22f70db3d1.png +0 -0
  938. package/style/visual-screenshots (1)/images/2b3af1d887b41d5123e82575fbfa3958.png +0 -0
  939. package/style/visual-screenshots (1)/images/2b8c160de3305bb7deef1bd108bd0850.png +0 -0
  940. package/style/visual-screenshots (1)/images/2b8df5a2aa5bea6bb21551b1ea4a5fe3.png +0 -0
  941. package/style/visual-screenshots (1)/images/2bb42f7f640cb97e6ddd996cc4bdf0da.png +0 -0
  942. package/style/visual-screenshots (1)/images/2c0ab17426c134629732d0a71b6a0745.png +0 -0
  943. package/style/visual-screenshots (1)/images/2c20e396014f9b12f047545579b878ca.png +0 -0
  944. package/style/visual-screenshots (1)/images/2c2c8816739b979c0a3dbdcbea9c8f98.png +0 -0
  945. package/style/visual-screenshots (1)/images/2c532e1252a0775b10aed847a4f06e4a.png +0 -0
  946. package/style/visual-screenshots (1)/images/2cdd6aee7de3219ce296baef83119f45.png +0 -0
  947. package/style/visual-screenshots (1)/images/2cebfc565448f890d0a3fa2de61cfd61.png +0 -0
  948. package/style/visual-screenshots (1)/images/2d76b6c335af030ecc073359d3565529.png +0 -0
  949. package/style/visual-screenshots (1)/images/2d7f41ff4f3900f029adbcdbdfdef905.png +0 -0
  950. package/style/visual-screenshots (1)/images/2d8b857c7a81cd7e90b75c9fcb974e09.png +0 -0
  951. package/style/visual-screenshots (1)/images/2e1f9e506e8e09a191c0d86899e8975a.png +0 -0
  952. package/style/visual-screenshots (1)/images/2e8755615c5b55dfeb5ced872b9b89f6.png +0 -0
  953. package/style/visual-screenshots (1)/images/2efe3ccdf954982fb10f12ceb79cc902.png +0 -0
  954. package/style/visual-screenshots (1)/images/2f2a4fe573c824c9c651ae5fb24e26f6.png +0 -0
  955. package/style/visual-screenshots (1)/images/2f426e5f71eae6eaf7bb54b4aafa88d6.png +0 -0
  956. package/style/visual-screenshots (1)/images/2f4e9578c9f11b5c8e2d034824689dce.png +0 -0
  957. package/style/visual-screenshots (1)/images/2f5ec86f7334a79914c09ee94eae2f8d.png +0 -0
  958. package/style/visual-screenshots (1)/images/2f76ed17b978cfa3e663760d5c651b0f.png +0 -0
  959. package/style/visual-screenshots (1)/images/2f8832e36833e875c53bdf68ac53de11.png +0 -0
  960. package/style/visual-screenshots (1)/images/2fe54d475ff814eaf2b323bfa6990a25.png +0 -0
  961. package/style/visual-screenshots (1)/images/30423ab0c5ce8c26a9b4e30fb4ad50b5.png +0 -0
  962. package/style/visual-screenshots (1)/images/3079876e71da7c207489af4b38314ca3.png +0 -0
  963. package/style/visual-screenshots (1)/images/30ac31802c8421ee59c2b0e64fdd40d1.png +0 -0
  964. package/style/visual-screenshots (1)/images/30efef6537f882daf60ba808d25ab35c.png +0 -0
  965. package/style/visual-screenshots (1)/images/3111d7bc39ef23e1d19a8022f2f78d4f.png +0 -0
  966. package/style/visual-screenshots (1)/images/3155c15ead85acf928e71fc4958b1e65.png +0 -0
  967. package/style/visual-screenshots (1)/images/317b0753146b2d6c57ef618e2d6c9aff.png +0 -0
  968. package/style/visual-screenshots (1)/images/31bb19c3949134774cce7f0af132f001.png +0 -0
  969. package/style/visual-screenshots (1)/images/32009df7a0440dc1227d6c59fcdc22a8.png +0 -0
  970. package/style/visual-screenshots (1)/images/3205ce4d4ec27524cb360e23cb250a2e.png +0 -0
  971. package/style/visual-screenshots (1)/images/3221fe82f718cdb8d3a013e35e75d966.png +0 -0
  972. package/style/visual-screenshots (1)/images/322755f4d634ab3e62663c98413cf4bb.png +0 -0
  973. package/style/visual-screenshots (1)/images/3263cb4ecdc16ecec1cf03d96c1d83d1.png +0 -0
  974. package/style/visual-screenshots (1)/images/329d69f11e6409b7e7855c3e576057f6.png +0 -0
  975. package/style/visual-screenshots (1)/images/32b3faa4eb5356a1ac8b30c722b7f282.png +0 -0
  976. package/style/visual-screenshots (1)/images/332160dde332162d8e3b9e12dd376546.png +0 -0
  977. package/style/visual-screenshots (1)/images/33519a891e6922542f2b3fc18ab26670.png +0 -0
  978. package/style/visual-screenshots (1)/images/33a7eaf167f347d52bc910511d2fc029.png +0 -0
  979. package/style/visual-screenshots (1)/images/33b0ac3141f5f2ea19f81d742269bcab.png +0 -0
  980. package/style/visual-screenshots (1)/images/343327cf17cc3b6a5e451c4d86577491.png +0 -0
  981. package/style/visual-screenshots (1)/images/3474b54aac010b234998e46521894bde.png +0 -0
  982. package/style/visual-screenshots (1)/images/34a84ed26a53ffb27dbcdabeaf10c665.png +0 -0
  983. package/style/visual-screenshots (1)/images/34efd6c9f4e5031eeb8c1f1a51bd3eaa.png +0 -0
  984. package/style/visual-screenshots (1)/images/3531a86fca237cc6d8764eb9eeb8e394.png +0 -0
  985. package/style/visual-screenshots (1)/images/3598a332200dbe7f32ab86015e6cd61e.png +0 -0
  986. package/style/visual-screenshots (1)/images/35a2ea7b24e787bdea1313703512d37f.png +0 -0
  987. package/style/visual-screenshots (1)/images/35ea4500d8a65ff3e52c0404ded68018.png +0 -0
  988. package/style/visual-screenshots (1)/images/363f015a5323e01c8f7c421607ba7a85.png +0 -0
  989. package/style/visual-screenshots (1)/images/365a47a407c464a973116590d1280542.png +0 -0
  990. package/style/visual-screenshots (1)/images/3666d49f301336a1d92abe8c48811dd0.png +0 -0
  991. package/style/visual-screenshots (1)/images/36a3aa27abb0e8fb45cbe4e842bb793b.png +0 -0
  992. package/style/visual-screenshots (1)/images/36be2d1cc4bbea216ebfa024f2b5d9d3.png +0 -0
  993. package/style/visual-screenshots (1)/images/36d5ce3a43f8a8bbaddb83a756174e09.png +0 -0
  994. package/style/visual-screenshots (1)/images/3715717d75b5ec943086b9392d05747a.png +0 -0
  995. package/style/visual-screenshots (1)/images/3718308a2535e0badb74e0ed39da3e98.png +0 -0
  996. package/style/visual-screenshots (1)/images/376d9c365f202b555efc6152eb4dbb7a.png +0 -0
  997. package/style/visual-screenshots (1)/images/37ff2d44fb6261e53203d05e1d130b48.png +0 -0
  998. package/style/visual-screenshots (1)/images/3829933c4a23d7033a63119484708ab4.png +0 -0
  999. package/style/visual-screenshots (1)/images/38c924efe546ddde14e0cb343a2ed551.png +0 -0
  1000. package/style/visual-screenshots (1)/images/390f5b1f49dc988e023255d1878b769a.png +0 -0
  1001. package/style/visual-screenshots (1)/images/394ab2b92eacbc9f634b3d0618b877d0.png +0 -0
  1002. package/style/visual-screenshots (1)/images/3961f21e98b5d1f616215c9588f0c8ea.png +0 -0
  1003. package/style/visual-screenshots (1)/images/396af4eab814a3a2dc1429581b3452b3.png +0 -0
  1004. package/style/visual-screenshots (1)/images/3a3ec2d1cafe6685d14ef24be74aace4.png +0 -0
  1005. package/style/visual-screenshots (1)/images/3ae1c7c33ebd96fe70ad90acc7b1d693.png +0 -0
  1006. package/style/visual-screenshots (1)/images/3b19874ff7c8b2b92d6e200634b760c5.png +0 -0
  1007. package/style/visual-screenshots (1)/images/3b4f2951c9cbd00ad924a358e0f24304.png +0 -0
  1008. package/style/visual-screenshots (1)/images/3bc5adf4dec1f65342d09fa825073ee7.png +0 -0
  1009. package/style/visual-screenshots (1)/images/3be29fbf67e05c10ef9effda5b0d1b9c.png +0 -0
  1010. package/style/visual-screenshots (1)/images/3bfdd784ff28564271d8067439c72fb2.png +0 -0
  1011. package/style/visual-screenshots (1)/images/3c101349056155ee16f6d40d67566bb2.png +0 -0
  1012. package/style/visual-screenshots (1)/images/3c24263abc9fe6f48efe83953f33d38f.png +0 -0
  1013. package/style/visual-screenshots (1)/images/3c4b7cb9bc584cc8d417763e4e332cad.png +0 -0
  1014. package/style/visual-screenshots (1)/images/3cb9028699d3dc4a5ff9ed62acf26f38.png +0 -0
  1015. package/style/visual-screenshots (1)/images/3d5e1f1170e3c54f19f3966925138df0.png +0 -0
  1016. package/style/visual-screenshots (1)/images/3d7ee9ac11ff5492525a094beaa220b1.png +0 -0
  1017. package/style/visual-screenshots (1)/images/3d82c97ab6d96c4026d0f3ca072b02ae.png +0 -0
  1018. package/style/visual-screenshots (1)/images/3ec93ead42526589356ac0b756d043ec.png +0 -0
  1019. package/style/visual-screenshots (1)/images/3f1b42c8f0cb41c374b0893eb31f2fda.png +0 -0
  1020. package/style/visual-screenshots (1)/images/3ff96bd3c1034fe2a3af47eb4f729eeb.png +0 -0
  1021. package/style/visual-screenshots (1)/images/400b3fe6558f8ae340d796c834456f82.png +0 -0
  1022. package/style/visual-screenshots (1)/images/404d5c7fe65c1df1162feb7af57adadd.png +0 -0
  1023. package/style/visual-screenshots (1)/images/4060b53b47c6e063d1770980ecb101b2.png +0 -0
  1024. package/style/visual-screenshots (1)/images/40dd05574156c243449caad139d9b9a2.png +0 -0
  1025. package/style/visual-screenshots (1)/images/40f479e6d12eaa5687a4ac9784aa717e.png +0 -0
  1026. package/style/visual-screenshots (1)/images/40f48b85da52ec3ef05fa4696c72f7ff.png +0 -0
  1027. package/style/visual-screenshots (1)/images/4169f0823fcd903e16d7c3f9344cc491.png +0 -0
  1028. package/style/visual-screenshots (1)/images/419a4e8e4b8708b8e6ff45f643a7cf5d.png +0 -0
  1029. package/style/visual-screenshots (1)/images/41c7990e66fbed660d2b55e76fd2ea25.png +0 -0
  1030. package/style/visual-screenshots (1)/images/423ae4e26846f800ea31ed24d79e7472.png +0 -0
  1031. package/style/visual-screenshots (1)/images/427c562ebb511d853cd3437eb8c73c0f.png +0 -0
  1032. package/style/visual-screenshots (1)/images/428ec68c1c5771403f8939976018c14e.png +0 -0
  1033. package/style/visual-screenshots (1)/images/4291cb1eaed75fba4800f0033b689208.png +0 -0
  1034. package/style/visual-screenshots (1)/images/42ed1e77d86bf5e0d7a8f90acf2ab6b2.png +0 -0
  1035. package/style/visual-screenshots (1)/images/4313e10ac1318b7526eed35c0d704f05.png +0 -0
  1036. package/style/visual-screenshots (1)/images/438f453be7d1213a8e2872e4608a410c.png +0 -0
  1037. package/style/visual-screenshots (1)/images/439f69b339c6f6ca820a4b62382ca877.png +0 -0
  1038. package/style/visual-screenshots (1)/images/43f6607e4b8ff0d5f6c4c5d323c96677.png +0 -0
  1039. package/style/visual-screenshots (1)/images/44caefac207b436ffeffdef86eaae21a.png +0 -0
  1040. package/style/visual-screenshots (1)/images/44eaf11aa4495c9d8d76941a1254dcb0.png +0 -0
  1041. package/style/visual-screenshots (1)/images/453742c5e578099953f9bff69e3982ef.png +0 -0
  1042. package/style/visual-screenshots (1)/images/459214ef33a21425f776796767256e3c.png +0 -0
  1043. package/style/visual-screenshots (1)/images/45a13beb6b9356d7b1b4690370914252.png +0 -0
  1044. package/style/visual-screenshots (1)/images/45a569fd48a72db5047a02e192c35363.png +0 -0
  1045. package/style/visual-screenshots (1)/images/45c1ac110c0dc20d35d2c2be1e469e49.png +0 -0
  1046. package/style/visual-screenshots (1)/images/466d83d9df37025413fcc77e2528d150.png +0 -0
  1047. package/style/visual-screenshots (1)/images/46ffc37786e06461d5ffc3c101841ea6.png +0 -0
  1048. package/style/visual-screenshots (1)/images/4708081357611e1ad1adb36ea5f91ebe.png +0 -0
  1049. package/style/visual-screenshots (1)/images/4799a82b4f5b3242bcf158dc12aeb8da.png +0 -0
  1050. package/style/visual-screenshots (1)/images/47a4ae1ed1de0348708e630718bf58e0.png +0 -0
  1051. package/style/visual-screenshots (1)/images/47cd6b92f4697a387f4392729f019da0.png +0 -0
  1052. package/style/visual-screenshots (1)/images/47d36e03c0973961a65d47f31bbce64d.png +0 -0
  1053. package/style/visual-screenshots (1)/images/48812bb1c24cf4529f36152c045aefe4.png +0 -0
  1054. package/style/visual-screenshots (1)/images/48b348f52bcf73e7b84273b59414d9c0.png +0 -0
  1055. package/style/visual-screenshots (1)/images/48ccc273160dcf8a8eee6caa44dacdd1.png +0 -0
  1056. package/style/visual-screenshots (1)/images/4946b39b68b5cf6879cab368a43dde2d.png +0 -0
  1057. package/style/visual-screenshots (1)/images/494f07c31c273d35487cbacefb179211.png +0 -0
  1058. package/style/visual-screenshots (1)/images/495c33cb81b92e71a59064b036deacb3.png +0 -0
  1059. package/style/visual-screenshots (1)/images/4988de5d9c64f2451adb83cc9781f31d.png +0 -0
  1060. package/style/visual-screenshots (1)/images/4a5c84ab5b32f8b3652f31aca7f82547.png +0 -0
  1061. package/style/visual-screenshots (1)/images/4abedbcd1f3c2b3cb5af44393cc4edd3.png +0 -0
  1062. package/style/visual-screenshots (1)/images/4ac246764de2e6eaea78d1eee8fa0680.png +0 -0
  1063. package/style/visual-screenshots (1)/images/4b49f29e64109f5d844bae574d9368e9.png +0 -0
  1064. package/style/visual-screenshots (1)/images/4ba5027ab476151e2ba4f16cade9a316.png +0 -0
  1065. package/style/visual-screenshots (1)/images/4be038b7049b5639096cdf45dc0166d5.png +0 -0
  1066. package/style/visual-screenshots (1)/images/4be0509c9e49770d5d3ab93a9d824c0c.png +0 -0
  1067. package/style/visual-screenshots (1)/images/4c007d54467c97735191d53b1b89700a.png +0 -0
  1068. package/style/visual-screenshots (1)/images/4c04913dd6ac89f9c03580ffcfc9dce2.png +0 -0
  1069. package/style/visual-screenshots (1)/images/4c39dc9b5530f8cfa389453f323f2562.png +0 -0
  1070. package/style/visual-screenshots (1)/images/4cf7eb7fbbfcbad4194ef321b793a243.png +0 -0
  1071. package/style/visual-screenshots (1)/images/4d34a53adeaf6b96b5f910e0e57f91f7.png +0 -0
  1072. package/style/visual-screenshots (1)/images/4d3538775024b65cc11c656ee312bfb7.png +0 -0
  1073. package/style/visual-screenshots (1)/images/4d614a3bd7821f52b699427abf3440e2.png +0 -0
  1074. package/style/visual-screenshots (1)/images/4d85b89464845f56b18d7e329f1394a4.png +0 -0
  1075. package/style/visual-screenshots (1)/images/4d9140a7a2defdf17daec4df653cccb8.png +0 -0
  1076. package/style/visual-screenshots (1)/images/4e52657b6cd66fa0e8da6225c3923833.png +0 -0
  1077. package/style/visual-screenshots (1)/images/4eb94875d887dfece7a7e2cc00425848.png +0 -0
  1078. package/style/visual-screenshots (1)/images/4f3481e7bcab3c6a115931bdc7bde793.png +0 -0
  1079. package/style/visual-screenshots (1)/images/4f736b3787086298b179837d13ea2e27.png +0 -0
  1080. package/style/visual-screenshots (1)/images/4f7e9c28d6d15df090c3857fe8172a90.png +0 -0
  1081. package/style/visual-screenshots (1)/images/4f831bf4925c85ef517fd84fed27cefc.png +0 -0
  1082. package/style/visual-screenshots (1)/images/4f8cc269620de9911fba4dff6724c7a5.png +0 -0
  1083. package/style/visual-screenshots (1)/images/4f9cf3ca13066408925b4d1cdc856337.png +0 -0
  1084. package/style/visual-screenshots (1)/images/4fe4b5357ee618b9ca1265408d74ad97.png +0 -0
  1085. package/style/visual-screenshots (1)/images/5018ce083222fefeb9e4686ed2e1edaf.png +0 -0
  1086. package/style/visual-screenshots (1)/images/5022d94c55bd146ad125a05b5c9f15dd.png +0 -0
  1087. package/style/visual-screenshots (1)/images/503a0b5aa58f32f0892efbb58b46b996.png +0 -0
  1088. package/style/visual-screenshots (1)/images/50a9c832d93ea3ba546abb94fd08af87.png +0 -0
  1089. package/style/visual-screenshots (1)/images/5118ecf3e50d06897080ed1b2bafcef3.png +0 -0
  1090. package/style/visual-screenshots (1)/images/5158dd83988845a3839627ad959dbb01.png +0 -0
  1091. package/style/visual-screenshots (1)/images/51923db19fef9e029f0893a8a2003614.png +0 -0
  1092. package/style/visual-screenshots (1)/images/51f5169578f81f7fb04205fa02f761c6.png +0 -0
  1093. package/style/visual-screenshots (1)/images/52525fe087784b1fdffe1cfc03eed02d.png +0 -0
  1094. package/style/visual-screenshots (1)/images/5266c70656af2dd7ea757c126c555489.png +0 -0
  1095. package/style/visual-screenshots (1)/images/5273adef332dbb60fac11c48a989c42d.png +0 -0
  1096. package/style/visual-screenshots (1)/images/52cfe294a3f7300731ce4dbe4717bdea.png +0 -0
  1097. package/style/visual-screenshots (1)/images/5328d69dc10bb02003c30fed0e25a64b.png +0 -0
  1098. package/style/visual-screenshots (1)/images/53e6290d0b3f1294543ba28828558bae.png +0 -0
  1099. package/style/visual-screenshots (1)/images/53eeaa26642fb7b44a83b9bf5d285b1a.png +0 -0
  1100. package/style/visual-screenshots (1)/images/540524e243acf3f3f5bfa8c392ffba52.png +0 -0
  1101. package/style/visual-screenshots (1)/images/5436543a753e26c1c2224e9b8ed3f30c.png +0 -0
  1102. package/style/visual-screenshots (1)/images/54c4e2aa7af0622b71ab1b91e0216497.png +0 -0
  1103. package/style/visual-screenshots (1)/images/54cf609aa15fa2609c3079a322e9f60a.png +0 -0
  1104. package/style/visual-screenshots (1)/images/54e4e6b63e13d2f360b1bd0d1ade4ebd.png +0 -0
  1105. package/style/visual-screenshots (1)/images/5505895e66a4d80a8eb40be714de2da1.png +0 -0
  1106. package/style/visual-screenshots (1)/images/554637773a92e812811d95933b06d047.png +0 -0
  1107. package/style/visual-screenshots (1)/images/55b1e1c7415f8f22ab377f2e4fd5a91d.png +0 -0
  1108. package/style/visual-screenshots (1)/images/55c30ec12d513e3c365e94ef76330703.png +0 -0
  1109. package/style/visual-screenshots (1)/images/5737582ac302d9b30b549c875dc0e823.png +0 -0
  1110. package/style/visual-screenshots (1)/images/5838b2544ecf964a999cab746d5bd97d.png +0 -0
  1111. package/style/visual-screenshots (1)/images/58b847761ee38a8c47f208aeb558e0a9.png +0 -0
  1112. package/style/visual-screenshots (1)/images/58cae6127379fa56b766c6c3528a286a.png +0 -0
  1113. package/style/visual-screenshots (1)/images/58cd807e8212d20223020a0c6404765b.png +0 -0
  1114. package/style/visual-screenshots (1)/images/5909df37c419a947f3725ea71a9680c3.png +0 -0
  1115. package/style/visual-screenshots (1)/images/590d2d0fa1c7e1204816f4badda94716.png +0 -0
  1116. package/style/visual-screenshots (1)/images/592abe77a6d530f6d9c77c1fe68d1315.png +0 -0
  1117. package/style/visual-screenshots (1)/images/593cacdf991a89066c6887dda6214279.png +0 -0
  1118. package/style/visual-screenshots (1)/images/597612a74ca61e8e3cee1183251cac24.png +0 -0
  1119. package/style/visual-screenshots (1)/images/59b59b3d221c4be96d27770926f6eb7c.png +0 -0
  1120. package/style/visual-screenshots (1)/images/59d0c2dc9de3c7ca52811e6d03005db0.png +0 -0
  1121. package/style/visual-screenshots (1)/images/59e20e58e24364f8ea8e94f2708de92f.png +0 -0
  1122. package/style/visual-screenshots (1)/images/5a0638a95840412ad0883e0e14dd22f4.png +0 -0
  1123. package/style/visual-screenshots (1)/images/5a251791db123f6cf0fc8207cd34d605.png +0 -0
  1124. package/style/visual-screenshots (1)/images/5a8cf1ada7ead3e071e59c233e45d826.png +0 -0
  1125. package/style/visual-screenshots (1)/images/5a98898f2c6c913e34e6370769a2e419.png +0 -0
  1126. package/style/visual-screenshots (1)/images/5aa02d6e18a0fa7b46ad23263f5372f9.png +0 -0
  1127. package/style/visual-screenshots (1)/images/5ab4fc80d22b19429b70cd3a6ab8bb05.png +0 -0
  1128. package/style/visual-screenshots (1)/images/5acd13c49bb19fc300b6a7c2460945db.png +0 -0
  1129. package/style/visual-screenshots (1)/images/5add1e2e0f9c785f9e969cce0b11e0a6.png +0 -0
  1130. package/style/visual-screenshots (1)/images/5aeed5c2ec2ca7b5ae286bae76bb6f72.png +0 -0
  1131. package/style/visual-screenshots (1)/images/5b2591966426d8c77601565dfa914b5c.png +0 -0
  1132. package/style/visual-screenshots (1)/images/5b424b673e5f6814bbcc687a2f5ba7ff.png +0 -0
  1133. package/style/visual-screenshots (1)/images/5bd4d4b7e0890bcb1d81ede114ee4b72.png +0 -0
  1134. package/style/visual-screenshots (1)/images/5beea7f2f00f4db6f09fcf15bd6b73de.png +0 -0
  1135. package/style/visual-screenshots (1)/images/5c02af94f4d5ed86c881612dcfb31b02.png +0 -0
  1136. package/style/visual-screenshots (1)/images/5c0c0f1dbdb3aca383c35ec0cb67c599.png +0 -0
  1137. package/style/visual-screenshots (1)/images/5c520e4228567e2374f5d96b7f15c0d9.png +0 -0
  1138. package/style/visual-screenshots (1)/images/5cb10edf424ba13d586e83e60ac14a2d.png +0 -0
  1139. package/style/visual-screenshots (1)/images/5cca63b3d493de7befd4382f24a2aabd.png +0 -0
  1140. package/style/visual-screenshots (1)/images/5d5ef2d78f31c874edb28ebdfbfbd8f9.png +0 -0
  1141. package/style/visual-screenshots (1)/images/5d8110526b6ba5e9621d0f2fa57aa132.png +0 -0
  1142. package/style/visual-screenshots (1)/images/5d8f7a0eff0b6d546331f921490f25b9.png +0 -0
  1143. package/style/visual-screenshots (1)/images/5eab49b89384ab1f74be37d4e905021a.png +0 -0
  1144. package/style/visual-screenshots (1)/images/5ebfae0149ca72238011292fa3e486cb.png +0 -0
  1145. package/style/visual-screenshots (1)/images/5ecd509cfe196a8262a7e85d3d4c64b0.png +0 -0
  1146. package/style/visual-screenshots (1)/images/5f153464c343cd768216633b852073e7.png +0 -0
  1147. package/style/visual-screenshots (1)/images/5f69e3fcc20bdb527e040185048788e4.png +0 -0
  1148. package/style/visual-screenshots (1)/images/5fb4421e5a6d1eaef21a54bb431bdacb.png +0 -0
  1149. package/style/visual-screenshots (1)/images/5fd1665ddd85bf70339a29ddf3a98915.png +0 -0
  1150. package/style/visual-screenshots (1)/images/602fb4d5d2c9707f008b0d6a1a0487a7.png +0 -0
  1151. package/style/visual-screenshots (1)/images/604007e0cd1142f4e425d57ad9a1c5ef.png +0 -0
  1152. package/style/visual-screenshots (1)/images/605d581f35cd72dc9d7083dcc8066af1.png +0 -0
  1153. package/style/visual-screenshots (1)/images/6188b93026521a32345a4319fb10271e.png +0 -0
  1154. package/style/visual-screenshots (1)/images/621e7fcf64cbb08d121b599a81acb46a.png +0 -0
  1155. package/style/visual-screenshots (1)/images/626302e61eedc90d62298f66f46b8ec0.png +0 -0
  1156. package/style/visual-screenshots (1)/images/6289549bdd1f3ba4ee0ffa76fa3a8636.png +0 -0
  1157. package/style/visual-screenshots (1)/images/62a7d5f3d5afe23177d5dbab5f1e4c79.png +0 -0
  1158. package/style/visual-screenshots (1)/images/6355a9180ed5c4dd8df56c9ead71b0c8.png +0 -0
  1159. package/style/visual-screenshots (1)/images/63981d8aaadcbe9b9e73af3669b3c180.png +0 -0
  1160. package/style/visual-screenshots (1)/images/63bd485372b912309753349358f50eda.png +0 -0
  1161. package/style/visual-screenshots (1)/images/6415c0bc3637ea962fb1761ae69b5dda.png +0 -0
  1162. package/style/visual-screenshots (1)/images/64174556b9d8b4d18b7b8cfd531987a7.png +0 -0
  1163. package/style/visual-screenshots (1)/images/64443c554e8813c1fff9032b53c52b76.png +0 -0
  1164. package/style/visual-screenshots (1)/images/6478d52ea2380b15c4b549d9a1f77bac.png +0 -0
  1165. package/style/visual-screenshots (1)/images/649745ba63be2d7bf9d4f766d7b8ca38.png +0 -0
  1166. package/style/visual-screenshots (1)/images/64f2a771825679d512c73923c1bd5184.png +0 -0
  1167. package/style/visual-screenshots (1)/images/65147f30150f68dd99a34e3de9adb4a2.png +0 -0
  1168. package/style/visual-screenshots (1)/images/651e96edc124365985fcf260c7695452.png +0 -0
  1169. package/style/visual-screenshots (1)/images/6542deed80a8908b2ba2e40b482a5829.png +0 -0
  1170. package/style/visual-screenshots (1)/images/6548c65bf55806aa5acde87bc4d2017e.png +0 -0
  1171. package/style/visual-screenshots (1)/images/65be34b043114b668dad4ce359310ad3.png +0 -0
  1172. package/style/visual-screenshots (1)/images/65f1fc5ed87fb18c756988c6719c3b05.png +0 -0
  1173. package/style/visual-screenshots (1)/images/6618ae614b5a59f18f1f9f627b81f0ba.png +0 -0
  1174. package/style/visual-screenshots (1)/images/6710405c63cd71667e3533429bc8ac74.png +0 -0
  1175. package/style/visual-screenshots (1)/images/675177ec55467292992f6c641b44352e.png +0 -0
  1176. package/style/visual-screenshots (1)/images/679ff4b5301290556ec91463a47cf018.png +0 -0
  1177. package/style/visual-screenshots (1)/images/67d9619b97865d42f5617413a025f62a.png +0 -0
  1178. package/style/visual-screenshots (1)/images/686cdd39835b173225bd0b6ce4448b88.png +0 -0
  1179. package/style/visual-screenshots (1)/images/6874ed35cef726f65cda16ed1d544b35.png +0 -0
  1180. package/style/visual-screenshots (1)/images/68a92328d49b056ca74e3abe51c91d76.png +0 -0
  1181. package/style/visual-screenshots (1)/images/68b78b4cec15c23fa5e7d0148bead95f.png +0 -0
  1182. package/style/visual-screenshots (1)/images/68bca5cfcf4cb2cf91bbae3869730a14.png +0 -0
  1183. package/style/visual-screenshots (1)/images/68c9260329ceafbae03b1cf59a2dc832.png +0 -0
  1184. package/style/visual-screenshots (1)/images/698a7f9c8600bee3c0154879e8642fb8.png +0 -0
  1185. package/style/visual-screenshots (1)/images/698be3296b927df039453c078d8c5e90.png +0 -0
  1186. package/style/visual-screenshots (1)/images/69995300e1755ca4f61767ebb603e28d.png +0 -0
  1187. package/style/visual-screenshots (1)/images/69b579e4e3d21f8d7c6bb64fa7dec383.png +0 -0
  1188. package/style/visual-screenshots (1)/images/69c6368a387225497235ea4cabbbe05d.png +0 -0
  1189. package/style/visual-screenshots (1)/images/69cdde73ed1979a49fa379514fb747ea.png +0 -0
  1190. package/style/visual-screenshots (1)/images/69d4879c64376442acf44968fb02d9a6.png +0 -0
  1191. package/style/visual-screenshots (1)/images/6a152f420237560d826a59b1ba95c6e8.png +0 -0
  1192. package/style/visual-screenshots (1)/images/6a1e34197166e3475343c3ba9a4ce398.png +0 -0
  1193. package/style/visual-screenshots (1)/images/6a2d5d8d6ff350c3b22a97e221506c72.png +0 -0
  1194. package/style/visual-screenshots (1)/images/6a7102578dc5e69e6eed2dd81169959d.png +0 -0
  1195. package/style/visual-screenshots (1)/images/6a76062bfc3391871480fbaed258138f.png +0 -0
  1196. package/style/visual-screenshots (1)/images/6a98dfe1e3633e72cf1fc24d6f6b641b.png +0 -0
  1197. package/style/visual-screenshots (1)/images/6abbbe132416f98c6a1cb3a1897cc551.png +0 -0
  1198. package/style/visual-screenshots (1)/images/6b443b374cbe7fd349b21cd82a439dd6.png +0 -0
  1199. package/style/visual-screenshots (1)/images/6bb098fcece5553a617d03e539e2b14d.png +0 -0
  1200. package/style/visual-screenshots (1)/images/6bcde51c95aafa27fed83fd83b8f0397.png +0 -0
  1201. package/style/visual-screenshots (1)/images/6c156cba7e8245e73aefe4afbd35276d.png +0 -0
  1202. package/style/visual-screenshots (1)/images/6c569ef8ad97932e1a82ac1ed9e30960.png +0 -0
  1203. package/style/visual-screenshots (1)/images/6c91461ed0c3153c9c403d1ab687dbe5.png +0 -0
  1204. package/style/visual-screenshots (1)/images/6cae73cd2745b0af1530ae4e9cb9ebfa.png +0 -0
  1205. package/style/visual-screenshots (1)/images/6d470bf081f9dfcf72f63d5ef93e627e.png +0 -0
  1206. package/style/visual-screenshots (1)/images/6d6fcb40cbe35f57b4a2caced4ab52c1.png +0 -0
  1207. package/style/visual-screenshots (1)/images/6d8758b4434c1abb115eb61256323a84.png +0 -0
  1208. package/style/visual-screenshots (1)/images/6d8bd755e87330765b74bce670116692.png +0 -0
  1209. package/style/visual-screenshots (1)/images/6e42402b7dd8bc3a23292b766284e384.png +0 -0
  1210. package/style/visual-screenshots (1)/images/6e9e15b49f9bd7e2b60f666b85f4c3b7.png +0 -0
  1211. package/style/visual-screenshots (1)/images/6ecd70c7e06430c86fd514a412dcc6f4.png +0 -0
  1212. package/style/visual-screenshots (1)/images/6f3b3334cd7e0046e583348aa29babcf.png +0 -0
  1213. package/style/visual-screenshots (1)/images/6f5da1c8d233cf9d5e8e88fd2ef3ec0a.png +0 -0
  1214. package/style/visual-screenshots (1)/images/6fa2cf8bec030e4a0749e769ba026482.png +0 -0
  1215. package/style/visual-screenshots (1)/images/6fe1a8093050cb06ea5b1c3334503e24.png +0 -0
  1216. package/style/visual-screenshots (1)/images/7005941c708d4fec5abcdc7e6e10bab8.png +0 -0
  1217. package/style/visual-screenshots (1)/images/700ade8610923958d3f90d68dfa4e05b.png +0 -0
  1218. package/style/visual-screenshots (1)/images/7038ca0faeb969aa8e7e62cd4f626e6f.png +0 -0
  1219. package/style/visual-screenshots (1)/images/706755c17ed932b4bef33524f6daa4f5.png +0 -0
  1220. package/style/visual-screenshots (1)/images/706dfb70e1074e2aad57ab8526b0f360.png +0 -0
  1221. package/style/visual-screenshots (1)/images/70a28845b5c345c56575b55667b70da1.png +0 -0
  1222. package/style/visual-screenshots (1)/images/70b41db21992f19bda5e6b0f70c1fc09.png +0 -0
  1223. package/style/visual-screenshots (1)/images/70bdf7355dba6c76a2d79bde106e6d1d.png +0 -0
  1224. package/style/visual-screenshots (1)/images/70be87330902c743947ed9e77285f871.png +0 -0
  1225. package/style/visual-screenshots (1)/images/70c8dce297f073384a4e8079bff68adf.png +0 -0
  1226. package/style/visual-screenshots (1)/images/7129b9342de7f5e37c6eeeb9e174e2de.png +0 -0
  1227. package/style/visual-screenshots (1)/images/715b51ef2b67f378bba07e7ad9343754.png +0 -0
  1228. package/style/visual-screenshots (1)/images/71efbcd39c9d1ace0e25003ceb0db23e.png +0 -0
  1229. package/style/visual-screenshots (1)/images/7245e631025f99f3554df69b14a843fa.png +0 -0
  1230. package/style/visual-screenshots (1)/images/7268f09b0b1a0e124434eca4bbd818fa.png +0 -0
  1231. package/style/visual-screenshots (1)/images/7329d3d684fa7430845616c496c3e3d5.png +0 -0
  1232. package/style/visual-screenshots (1)/images/73ff7a530dde350815d23ff6a24031a0.png +0 -0
  1233. package/style/visual-screenshots (1)/images/743a4ff37dbc8c26ed1379fad764407d.png +0 -0
  1234. package/style/visual-screenshots (1)/images/745ce91134a9c726aee22be8e5dfcd28.png +0 -0
  1235. package/style/visual-screenshots (1)/images/7476eb8a4b6b6c21d7366cd7b839cd8e.png +0 -0
  1236. package/style/visual-screenshots (1)/images/74a5d110629e8bed44951ecc69d46e37.png +0 -0
  1237. package/style/visual-screenshots (1)/images/74d2a451e8fe666e4cdd4ee104e3fbcb.png +0 -0
  1238. package/style/visual-screenshots (1)/images/76dcdcc9887459636f81578fa8e72f0d.png +0 -0
  1239. package/style/visual-screenshots (1)/images/772fd7072ade47ddd50f5daf9fe78b06.png +0 -0
  1240. package/style/visual-screenshots (1)/images/77555003b57945e07b81f4bbc8da45a5.png +0 -0
  1241. package/style/visual-screenshots (1)/images/7845c6559ae2b8cfa3eec51d52e628c1.png +0 -0
  1242. package/style/visual-screenshots (1)/images/784772bde66cc378572a46b681b6cafe.png +0 -0
  1243. package/style/visual-screenshots (1)/images/791f88fcb8a69681a876b21c6059e038.png +0 -0
  1244. package/style/visual-screenshots (1)/images/7a14e2ed34311c3ddd03ab2b7e8b57e5.png +0 -0
  1245. package/style/visual-screenshots (1)/images/7a5376f8127ccbce92efa2dc7d6e434a.png +0 -0
  1246. package/style/visual-screenshots (1)/images/7b05dd84aacb821c812f835a0580c001.png +0 -0
  1247. package/style/visual-screenshots (1)/images/7b11547ab77114942b3590f5274ccb36.png +0 -0
  1248. package/style/visual-screenshots (1)/images/7b6676b606f3fd4fa89d824c97473517.png +0 -0
  1249. package/style/visual-screenshots (1)/images/7b6e5af31520f5e8813017dd4f98c8d6.png +0 -0
  1250. package/style/visual-screenshots (1)/images/7b89bf68bb12f5cee6947bd5af2520d7.png +0 -0
  1251. package/style/visual-screenshots (1)/images/7b90db4c1dcaeed7cf71f5bae65d327a.png +0 -0
  1252. package/style/visual-screenshots (1)/images/7bb540ca4abee17cdffe6944c8ff0948.png +0 -0
  1253. package/style/visual-screenshots (1)/images/7c01812ede9c4d58571ccf59904bb1b1.png +0 -0
  1254. package/style/visual-screenshots (1)/images/7c096666a0954392e0d657c8759963eb.png +0 -0
  1255. package/style/visual-screenshots (1)/images/7c7593da4f5a9d04f800284023edb554.png +0 -0
  1256. package/style/visual-screenshots (1)/images/7c82ecbc586641289f31f0cc27b017cd.png +0 -0
  1257. package/style/visual-screenshots (1)/images/7c8e1def6b12da12f07536140e2b88b3.png +0 -0
  1258. package/style/visual-screenshots (1)/images/7c916534306207f114d952bfe9340e5e.png +0 -0
  1259. package/style/visual-screenshots (1)/images/7d3331d3cf93defe00a04cd10c57c6c6.png +0 -0
  1260. package/style/visual-screenshots (1)/images/7da3d1c71e1e4b088f77e751a940b6a2.png +0 -0
  1261. package/style/visual-screenshots (1)/images/7da65ded5bfe4c858e0c24ff1e1aa22d.png +0 -0
  1262. package/style/visual-screenshots (1)/images/7daca2b5b705d27e8d5090f7dbb8acac.png +0 -0
  1263. package/style/visual-screenshots (1)/images/7e8b4c9c2ac796fd5c5c730a430ef2e4.png +0 -0
  1264. package/style/visual-screenshots (1)/images/7f06654399aca40b333099bec24468af.png +0 -0
  1265. package/style/visual-screenshots (1)/images/7f8ae3d8e54291115e892c51d485df16.png +0 -0
  1266. package/style/visual-screenshots (1)/images/7fb8ddb922c39be025d60076f51efcbd.png +0 -0
  1267. package/style/visual-screenshots (1)/images/7fc57b3e4c1d14d0a86891a6c80ff12f.png +0 -0
  1268. package/style/visual-screenshots (1)/images/8062b189081773e44a640a8d067046a0.png +0 -0
  1269. package/style/visual-screenshots (1)/images/8083c957effa18fb290a5b0bdf2ad6cb.png +0 -0
  1270. package/style/visual-screenshots (1)/images/80bbb318ca9792a3f16de017ea346d0c.png +0 -0
  1271. package/style/visual-screenshots (1)/images/81c89f3dbeafdd793458d9339c7c607b.png +0 -0
  1272. package/style/visual-screenshots (1)/images/81d7507828e5d8d66f7e161f74e45405.png +0 -0
  1273. package/style/visual-screenshots (1)/images/82045c605de46b4aa7f386601ddb8884.png +0 -0
  1274. package/style/visual-screenshots (1)/images/8245fbfd4b80b96b0254563f86b726ba.png +0 -0
  1275. package/style/visual-screenshots (1)/images/82497fc1570674a5421e926475feac1b.png +0 -0
  1276. package/style/visual-screenshots (1)/images/8252196c9f384ba181cc026acd29d928.png +0 -0
  1277. package/style/visual-screenshots (1)/images/82706af2011a1e7149813131c420a1fa.png +0 -0
  1278. package/style/visual-screenshots (1)/images/82a37a51e30a418ac408149f02adbbee.png +0 -0
  1279. package/style/visual-screenshots (1)/images/83080cdc524b169211c70c9dfdb6fd9e.png +0 -0
  1280. package/style/visual-screenshots (1)/images/830ba1a526dd905bce415b056de3ddb9.png +0 -0
  1281. package/style/visual-screenshots (1)/images/833dc08e69770233fa3915653b3dfb4d.png +0 -0
  1282. package/style/visual-screenshots (1)/images/8375d9df6b63faa9f30eda79e8c80a83.png +0 -0
  1283. package/style/visual-screenshots (1)/images/839c2b39bcaa6830906b9da5d890c1ae.png +0 -0
  1284. package/style/visual-screenshots (1)/images/8431110776be033ec282fd895a9ae813.png +0 -0
  1285. package/style/visual-screenshots (1)/images/851318a57f46c9da1144fe8faf984da4.png +0 -0
  1286. package/style/visual-screenshots (1)/images/8514c1d4ee26054ee07d11a0fe33f0db.png +0 -0
  1287. package/style/visual-screenshots (1)/images/855d767000e9a4a272a2e753628a8474.png +0 -0
  1288. package/style/visual-screenshots (1)/images/85d83f9f94a1adc9dcb60e0c13db29c1.png +0 -0
  1289. package/style/visual-screenshots (1)/images/86236e1f7726cc775fdfbd9d967b892e.png +0 -0
  1290. package/style/visual-screenshots (1)/images/865d7994dfb71cc52f659c784ab77089.png +0 -0
  1291. package/style/visual-screenshots (1)/images/867dba1a3a0e5d10d9852a57eaf4f7f2.png +0 -0
  1292. package/style/visual-screenshots (1)/images/868a694b756597afd5cbd8991ed9fa6e.png +0 -0
  1293. package/style/visual-screenshots (1)/images/86fd1791a257ca240a96d32f587a6798.png +0 -0
  1294. package/style/visual-screenshots (1)/images/8731210b8a1307c635c914344026cd7c.png +0 -0
  1295. package/style/visual-screenshots (1)/images/874d6a50e723c879a585b73e4e54229b.png +0 -0
  1296. package/style/visual-screenshots (1)/images/8753b744d14e6bf1be2fd926a564c3e9.png +0 -0
  1297. package/style/visual-screenshots (1)/images/87eeecd4041819cac6f766c67f879a0d.png +0 -0
  1298. package/style/visual-screenshots (1)/images/8816c9e1431fdfd5465d5a40c052309b.png +0 -0
  1299. package/style/visual-screenshots (1)/images/885b77ceaf7e7a8908fd5b147c5a5217.png +0 -0
  1300. package/style/visual-screenshots (1)/images/8923cdd532219aac9e71558dbd1186f9.png +0 -0
  1301. package/style/visual-screenshots (1)/images/894bd3d4137d2ca7f4f71b2d53de379c.png +0 -0
  1302. package/style/visual-screenshots (1)/images/8a801b5532051d67612de96df713f59a.png +0 -0
  1303. package/style/visual-screenshots (1)/images/8aca19545cb02a7fd00f5d84a1fc4ee1.png +0 -0
  1304. package/style/visual-screenshots (1)/images/8ae35388a8ed4604acc175b6953b1a12.png +0 -0
  1305. package/style/visual-screenshots (1)/images/8b12f8f1234a0fdcd5cb800f5fdd4704.png +0 -0
  1306. package/style/visual-screenshots (1)/images/8b674a86e1db9dda1dedaa07cc25a569.png +0 -0
  1307. package/style/visual-screenshots (1)/images/8b7cd1fafd046cdd7200189a3a8e424f.png +0 -0
  1308. package/style/visual-screenshots (1)/images/8ba1ee43c2d10f779da98898000d6d6f.png +0 -0
  1309. package/style/visual-screenshots (1)/images/8bfc88f25acf24bb557f3790231b9cc5.png +0 -0
  1310. package/style/visual-screenshots (1)/images/8c0bc63f7d57338b59338292b4d20e1c.png +0 -0
  1311. package/style/visual-screenshots (1)/images/8c2a062564d8b55e5686d80995c0132e.png +0 -0
  1312. package/style/visual-screenshots (1)/images/8c98ce176a13df14843cbb6423fd6440.png +0 -0
  1313. package/style/visual-screenshots (1)/images/8cc5eded9abb67747e8a18cefb51df6d.png +0 -0
  1314. package/style/visual-screenshots (1)/images/8d31ec4d9f7bbc9f753f70f2e2fe7781.png +0 -0
  1315. package/style/visual-screenshots (1)/images/8d4761d0c860b4bdc923c78a60c6c7db.png +0 -0
  1316. package/style/visual-screenshots (1)/images/8d8c786a27f502d297333e0f65e5fe7e.png +0 -0
  1317. package/style/visual-screenshots (1)/images/8da3dcbc2a7e12489844a3d5e034ce78.png +0 -0
  1318. package/style/visual-screenshots (1)/images/8e4e5baa65c536003c41d48d4a9d468c.png +0 -0
  1319. package/style/visual-screenshots (1)/images/8e8f3e052eed01419d45167ec3d31705.png +0 -0
  1320. package/style/visual-screenshots (1)/images/8ec5450454d067c364839f82e25a956d.png +0 -0
  1321. package/style/visual-screenshots (1)/images/8ed1408bb2065b8a868349005c1f140d.png +0 -0
  1322. package/style/visual-screenshots (1)/images/8f1c9b14d29c9264c5491f98fa9de9e8.png +0 -0
  1323. package/style/visual-screenshots (1)/images/8f5f36e9fcfb73d98fc44d844ead6bcd.png +0 -0
  1324. package/style/visual-screenshots (1)/images/8f69a3e8bb80e42b327daa0413f484a3.png +0 -0
  1325. package/style/visual-screenshots (1)/images/8fbd2b83ca71d26193f78355c1a7469d.png +0 -0
  1326. package/style/visual-screenshots (1)/images/9026dfe577f38e5be6fec9dafa010056.png +0 -0
  1327. package/style/visual-screenshots (1)/images/906cf5fcfc43ec7f7a1743b1fbba08d0.png +0 -0
  1328. package/style/visual-screenshots (1)/images/909185691877d3ab730fbc98e563b5cc.png +0 -0
  1329. package/style/visual-screenshots (1)/images/9093d74b6c429faa6d6098bb3b42122e.png +0 -0
  1330. package/style/visual-screenshots (1)/images/90b4a73410a4a0f48bf9d2803fc71b38.png +0 -0
  1331. package/style/visual-screenshots (1)/images/90c068953b90c743da83a12da5204a0e.png +0 -0
  1332. package/style/visual-screenshots (1)/images/914841508f534fc579907f3ff4e94eda.png +0 -0
  1333. package/style/visual-screenshots (1)/images/926a60a1ac5968259e786e8c4c8c9d26.png +0 -0
  1334. package/style/visual-screenshots (1)/images/93f5b096a1eb89744a98d090479f90c9.png +0 -0
  1335. package/style/visual-screenshots (1)/images/946bbf46e754018058a8a17e5781b37c.png +0 -0
  1336. package/style/visual-screenshots (1)/images/94a53d14a1e5f3fcb2f22b91642dc2cb.png +0 -0
  1337. package/style/visual-screenshots (1)/images/94f93fc2109c3efac0cc508846fc09c6.png +0 -0
  1338. package/style/visual-screenshots (1)/images/953979d501129c69e5cc0e1fd9acedf9.png +0 -0
  1339. package/style/visual-screenshots (1)/images/9554d90e572ac282fec64cefe1d65eae.png +0 -0
  1340. package/style/visual-screenshots (1)/images/95a3854979faaf7e3da15b81212fdddd.png +0 -0
  1341. package/style/visual-screenshots (1)/images/95d64ce8dc7d7f80747dbb433cbd69b2.png +0 -0
  1342. package/style/visual-screenshots (1)/images/95f250a29638c7a592e162fe065bc851.png +0 -0
  1343. package/style/visual-screenshots (1)/images/962f28dd09eac1fa2811894bf4be9b70.png +0 -0
  1344. package/style/visual-screenshots (1)/images/964706df4434f4e905f967de3d3dc125.png +0 -0
  1345. package/style/visual-screenshots (1)/images/9681d81d32fb1f90ca44c3f69b9f0921.png +0 -0
  1346. package/style/visual-screenshots (1)/images/97660bd70cc5e96d6258c1ed95c0935c.png +0 -0
  1347. package/style/visual-screenshots (1)/images/976ebf4299d8ca702219b1e74419f704.png +0 -0
  1348. package/style/visual-screenshots (1)/images/97cf49835bd0c2bf7811a7bdf3be89bc.png +0 -0
  1349. package/style/visual-screenshots (1)/images/97e8a0e95dcff699c46f9b1b88b87d8a.png +0 -0
  1350. package/style/visual-screenshots (1)/images/9807fabc447e7dae30fbbe6754e02c0d.png +0 -0
  1351. package/style/visual-screenshots (1)/images/98ee9e5fb88515a8dbf5fe0e091c993a.png +0 -0
  1352. package/style/visual-screenshots (1)/images/9997cd9e92d50b13a900ecb22fc74e83.png +0 -0
  1353. package/style/visual-screenshots (1)/images/9a0b82d87e48b2c9e146bfbd4b51a177.png +0 -0
  1354. package/style/visual-screenshots (1)/images/9a41a04f72770185eb42d3941627c6a1.png +0 -0
  1355. package/style/visual-screenshots (1)/images/9a5b6ff3d85a26850b93d3129de94bbc.png +0 -0
  1356. package/style/visual-screenshots (1)/images/9a9397907d86e4bdce381d4017ec5c33.png +0 -0
  1357. package/style/visual-screenshots (1)/images/9ae63f1d387740d15676acf9a5bc48b8.png +0 -0
  1358. package/style/visual-screenshots (1)/images/9b00734aa8cbf1a9acd3fbf08c137b0a.png +0 -0
  1359. package/style/visual-screenshots (1)/images/9b07449ac15dc7e1d1deb9b825be0924.png +0 -0
  1360. package/style/visual-screenshots (1)/images/9b18a6ddb96cbd44795e2bbc536f4f2a.png +0 -0
  1361. package/style/visual-screenshots (1)/images/9b4014c74037f975344b9ac678229e65.png +0 -0
  1362. package/style/visual-screenshots (1)/images/9b5118241eb4c97880a8a53129b9ea63.png +0 -0
  1363. package/style/visual-screenshots (1)/images/9b594e815378bc9a2ef6cd6251dc9d6b.png +0 -0
  1364. package/style/visual-screenshots (1)/images/9bc0a1284fc2c56e95ff22ae764e02c0.png +0 -0
  1365. package/style/visual-screenshots (1)/images/9bdf5a8be0ecbe48e58b74552e4c5888.png +0 -0
  1366. package/style/visual-screenshots (1)/images/9ce93b76501e11f52d1d6c27c6d3afb7.png +0 -0
  1367. package/style/visual-screenshots (1)/images/9d272894b4135cdb24bd6dd6d23dd421.png +0 -0
  1368. package/style/visual-screenshots (1)/images/9d3806b2870669edff4fea8574250bf7.png +0 -0
  1369. package/style/visual-screenshots (1)/images/9d6ec965e5a23731bd189dfbb3c80e84.png +0 -0
  1370. package/style/visual-screenshots (1)/images/9da4037f79a0f2ad50f8adc04687eb12.png +0 -0
  1371. package/style/visual-screenshots (1)/images/9dcd7eda71b2347d026409b2342b3e39.png +0 -0
  1372. package/style/visual-screenshots (1)/images/9de702c3bb72425b0e61d0b4d5a30b82.png +0 -0
  1373. package/style/visual-screenshots (1)/images/9e08fce5233bbc69e681eb1ef349acc0.png +0 -0
  1374. package/style/visual-screenshots (1)/images/9ea6570856b521aa566047e92d0f8305.png +0 -0
  1375. package/style/visual-screenshots (1)/images/9ebdf4d34c2713e0f0cedb0c778b2c35.png +0 -0
  1376. package/style/visual-screenshots (1)/images/9ec5435fc1248519bcc369f282c010c9.png +0 -0
  1377. package/style/visual-screenshots (1)/images/9ee6d0e821a1f9c789514aef157a40ee.png +0 -0
  1378. package/style/visual-screenshots (1)/images/9f1bfd0ae43a5c83303dcf205dc86aac.png +0 -0
  1379. package/style/visual-screenshots (1)/images/9f268b6848b910b5d9c8094077405609.png +0 -0
  1380. package/style/visual-screenshots (1)/images/9f3bdce5cba7a4c333f3e4e32697ed1e.png +0 -0
  1381. package/style/visual-screenshots (1)/images/9fa64b6dd5e2432e5ac5be0125de88c5.png +0 -0
  1382. package/style/visual-screenshots (1)/images/a00ff5334e96e86b5de74ca70e158365.png +0 -0
  1383. package/style/visual-screenshots (1)/images/a0273543e221b5e74f2f92eedff87bbf.png +0 -0
  1384. package/style/visual-screenshots (1)/images/a0860b4739ea0bf437f0fa1dc983edcc.png +0 -0
  1385. package/style/visual-screenshots (1)/images/a09b998ff83fe0c8ba190c43be2c8281.png +0 -0
  1386. package/style/visual-screenshots (1)/images/a0a9b6948dfa55de2c2391e66f116bef.png +0 -0
  1387. package/style/visual-screenshots (1)/images/a0d9fd7c91a3666c82a8a1d1473647ff.png +0 -0
  1388. package/style/visual-screenshots (1)/images/a122b735ee40793efef3ad06ff66c62a.png +0 -0
  1389. package/style/visual-screenshots (1)/images/a1595ea5cac31981a01027ab16de609d.png +0 -0
  1390. package/style/visual-screenshots (1)/images/a19c2ba30b43cb891f2536ebda33b5b9.png +0 -0
  1391. package/style/visual-screenshots (1)/images/a19daa3bfb03b36036e5954c38b3c09b.png +0 -0
  1392. package/style/visual-screenshots (1)/images/a1c13afc2158133f6f248eeec0c213c9.png +0 -0
  1393. package/style/visual-screenshots (1)/images/a234da24efdb5886b5017293c9ec4983.png +0 -0
  1394. package/style/visual-screenshots (1)/images/a267c84cc70ffcfd9f9098872b4d0e33.png +0 -0
  1395. package/style/visual-screenshots (1)/images/a29ab04f7b14796a43ec1004d07e1191.png +0 -0
  1396. package/style/visual-screenshots (1)/images/a331b266be3fe60d1510fc44c8462f8b.png +0 -0
  1397. package/style/visual-screenshots (1)/images/a3b55159499c5529bdb159350ea483f8.png +0 -0
  1398. package/style/visual-screenshots (1)/images/a3d54f0bbe60534633595f92c0af0606.png +0 -0
  1399. package/style/visual-screenshots (1)/images/a3f82ac3c6348fa4452a198cb503860d.png +0 -0
  1400. package/style/visual-screenshots (1)/images/a481b24ed810261cbae6bce62a1fd6da.png +0 -0
  1401. package/style/visual-screenshots (1)/images/a4da8641e0ebce45d567a27b1b9d71c9.png +0 -0
  1402. package/style/visual-screenshots (1)/images/a4e17fa06168594ff442f3d84ca346e0.png +0 -0
  1403. package/style/visual-screenshots (1)/images/a4ec66bb6e0a2bf7d26898a7ec6fa6cb.png +0 -0
  1404. package/style/visual-screenshots (1)/images/a4f5b46346578f27b509ab8ba9062b2a.png +0 -0
  1405. package/style/visual-screenshots (1)/images/a524cc5916040ea0985aa14f5039cd08.png +0 -0
  1406. package/style/visual-screenshots (1)/images/a56c0004f5f488bc5f4f8812479ff919.png +0 -0
  1407. package/style/visual-screenshots (1)/images/a5760e6af3aac912f3c69d88eabc9571.png +0 -0
  1408. package/style/visual-screenshots (1)/images/a5823b26b36bef69818dc786e72722c7.png +0 -0
  1409. package/style/visual-screenshots (1)/images/a59e098a82b3b2b4a8e6e6e0ae9a82ee.png +0 -0
  1410. package/style/visual-screenshots (1)/images/a5b60fb10746df7698e43bccb21df11b.png +0 -0
  1411. package/style/visual-screenshots (1)/images/a5e9bd136ccd404fa0c0a275e757246f.png +0 -0
  1412. package/style/visual-screenshots (1)/images/a62e4c8295a725e4a66cc2ec4408c4bd.png +0 -0
  1413. package/style/visual-screenshots (1)/images/a6492327cb0dabcd2d74dbd1816f422d.png +0 -0
  1414. package/style/visual-screenshots (1)/images/a6cfa33b833e8507b5f3cbfa260ee54f.png +0 -0
  1415. package/style/visual-screenshots (1)/images/a75a60a4aa5b275fd399051abf56d08e.png +0 -0
  1416. package/style/visual-screenshots (1)/images/a770465023ed9653c5209e93264e927e.png +0 -0
  1417. package/style/visual-screenshots (1)/images/a83dbd9419c386d226bee5eda2e6673b.png +0 -0
  1418. package/style/visual-screenshots (1)/images/a87075c6eb331fcab77dedffee6c8321.png +0 -0
  1419. package/style/visual-screenshots (1)/images/a8b8f7209998b3d0a72b9719083dc02a.png +0 -0
  1420. package/style/visual-screenshots (1)/images/a9a1de0b8dd7b6ccab5b47f73dd7f842.png +0 -0
  1421. package/style/visual-screenshots (1)/images/a9c7c835f865512a77038fc5c15de21b.png +0 -0
  1422. package/style/visual-screenshots (1)/images/aa30e7b644de69d60faa5380ca95c5a1.png +0 -0
  1423. package/style/visual-screenshots (1)/images/aa4abb72226bb8321d4b9258f9857b71.png +0 -0
  1424. package/style/visual-screenshots (1)/images/aa51db31d331669430896690342d81dc.png +0 -0
  1425. package/style/visual-screenshots (1)/images/aa9b522302f4dd7150ecbfbb275320e6.png +0 -0
  1426. package/style/visual-screenshots (1)/images/aaa1b0619e13093f63d4156375b60010.png +0 -0
  1427. package/style/visual-screenshots (1)/images/ab5d93b635bae2b5fe23f583eac012ce.png +0 -0
  1428. package/style/visual-screenshots (1)/images/abb03b840550301215bf11bcfc214de4.png +0 -0
  1429. package/style/visual-screenshots (1)/images/ac03f528e1ea478ed33ba9fb5322e3fb.png +0 -0
  1430. package/style/visual-screenshots (1)/images/ac1974812f40ea59d34307ac02a5f70c.png +0 -0
  1431. package/style/visual-screenshots (1)/images/ac2cf23c673a4453be9f71a678bf457e.png +0 -0
  1432. package/style/visual-screenshots (1)/images/ac4258921c4fac19bf9d885fe18d1783.png +0 -0
  1433. package/style/visual-screenshots (1)/images/ac5b064d25b63e5ecd63a91d495dfe5b.png +0 -0
  1434. package/style/visual-screenshots (1)/images/ac8524eb52a8b18d3727f9755658f457.png +0 -0
  1435. package/style/visual-screenshots (1)/images/acd224f13e0e43e4d81990ea06b683f1.png +0 -0
  1436. package/style/visual-screenshots (1)/images/acd8684a795357b531129eb92d03dbf0.png +0 -0
  1437. package/style/visual-screenshots (1)/images/ace6a74377e1fd6f83aa5dba48c8f4ee.png +0 -0
  1438. package/style/visual-screenshots (1)/images/ad0b716887153cae4ebdd7a50e332ad1.png +0 -0
  1439. package/style/visual-screenshots (1)/images/ad74bf7ecefe38d32f843eac59d05bcf.png +0 -0
  1440. package/style/visual-screenshots (1)/images/adad3039bbf24803cc0c800fa1ab52b2.png +0 -0
  1441. package/style/visual-screenshots (1)/images/add742b5f9addb0c591ef066157dd0d7.png +0 -0
  1442. package/style/visual-screenshots (1)/images/adf3ec3a8e97c3b33e77394946ad2434.png +0 -0
  1443. package/style/visual-screenshots (1)/images/adfd03e01df5610028a7b8c22de1d1b5.png +0 -0
  1444. package/style/visual-screenshots (1)/images/ae308ee925b5ad76aea7d7c989003c6c.png +0 -0
  1445. package/style/visual-screenshots (1)/images/ae5ba79ab620185002de1e0e2869fea8.png +0 -0
  1446. package/style/visual-screenshots (1)/images/aed0d8ffabcb9d4680499b39bb909cfb.png +0 -0
  1447. package/style/visual-screenshots (1)/images/af5ce31cf5f312b6bda76f748fabb52f.png +0 -0
  1448. package/style/visual-screenshots (1)/images/af77365d82e0f07b3957f3c77dfa5810.png +0 -0
  1449. package/style/visual-screenshots (1)/images/afc1be11da46a18bb8982a85c65fb4b0.png +0 -0
  1450. package/style/visual-screenshots (1)/images/b011549fe677ebb17fa307dbc03d36d9.png +0 -0
  1451. package/style/visual-screenshots (1)/images/b0bff9f5d7141b079b666e5fb16abd22.png +0 -0
  1452. package/style/visual-screenshots (1)/images/b0dbbbef7ff3804d58ce28e9685b88e0.png +0 -0
  1453. package/style/visual-screenshots (1)/images/b0dfa6af25989c4c3d2e9aef64daab17.png +0 -0
  1454. package/style/visual-screenshots (1)/images/b10bf8e372bca5d68241320f75bc1748.png +0 -0
  1455. package/style/visual-screenshots (1)/images/b10ed3d6ec38c9c253a4446e106e75ea.png +0 -0
  1456. package/style/visual-screenshots (1)/images/b141a65b0038d524dd290c00eddace3d.png +0 -0
  1457. package/style/visual-screenshots (1)/images/b16111054dc7e5c31d822180d54ea0e6.png +0 -0
  1458. package/style/visual-screenshots (1)/images/b1776e0a89f070ea680f256ed27ebf1e.png +0 -0
  1459. package/style/visual-screenshots (1)/images/b27ff00e501d23c43b509c1a0168ef39.png +0 -0
  1460. package/style/visual-screenshots (1)/images/b2aa4c06bcefcb7c92204acdd30d3197.png +0 -0
  1461. package/style/visual-screenshots (1)/images/b2fef056d1f15f4ba8619f31541dd0e5.png +0 -0
  1462. package/style/visual-screenshots (1)/images/b35f5b3650f7806ab3390e0ba67df1a4.png +0 -0
  1463. package/style/visual-screenshots (1)/images/b3dd87d68dcdfd82fa97cdf4e39c2b27.png +0 -0
  1464. package/style/visual-screenshots (1)/images/b3e5876c63e8256843b4090dc4b441ad.png +0 -0
  1465. package/style/visual-screenshots (1)/images/b3f19d58a18bfd34f92764ec41877c3c.png +0 -0
  1466. package/style/visual-screenshots (1)/images/b43533c13c416aad326bc67d0f44929e.png +0 -0
  1467. package/style/visual-screenshots (1)/images/b4382971635528760348cbe2b70605fe.png +0 -0
  1468. package/style/visual-screenshots (1)/images/b45844d5501be7c8431cc1306e3f3ae5.png +0 -0
  1469. package/style/visual-screenshots (1)/images/b468a14b6c8e54db94b61c71b9662af0.png +0 -0
  1470. package/style/visual-screenshots (1)/images/b4a02c9fc04ef4dc159e7beccd7ccfa7.png +0 -0
  1471. package/style/visual-screenshots (1)/images/b4b41ceb35d80f9f629859558b75b19e.png +0 -0
  1472. package/style/visual-screenshots (1)/images/b4edb5a1c390edd5c541c18e1a4ab68f.png +0 -0
  1473. package/style/visual-screenshots (1)/images/b513f66c5fdbab3a28e7db1b23bfb8c2.png +0 -0
  1474. package/style/visual-screenshots (1)/images/b5160b2c865a5e7b7d8b1e1abbf8d002.png +0 -0
  1475. package/style/visual-screenshots (1)/images/b52890091cf696f0150eae61232cb1dd.png +0 -0
  1476. package/style/visual-screenshots (1)/images/b56bb2b3dd4141b8e698820a515b8798.png +0 -0
  1477. package/style/visual-screenshots (1)/images/b5af14253c4cc74f16ddb0b6164f185c.png +0 -0
  1478. package/style/visual-screenshots (1)/images/b63069789fa7ac11755ea759d30a64a5.png +0 -0
  1479. package/style/visual-screenshots (1)/images/b651f7f296cf9f30e419d94a8c4895cf.png +0 -0
  1480. package/style/visual-screenshots (1)/images/b65482e30ffb8bec6c85103dcb71113d.png +0 -0
  1481. package/style/visual-screenshots (1)/images/b65b4bdb5c82820722ea76182517bc74.png +0 -0
  1482. package/style/visual-screenshots (1)/images/b65b9d44dcba156ab3152a6ee2592277.png +0 -0
  1483. package/style/visual-screenshots (1)/images/b68552f8eb800b1891a49bf1cd4d987d.png +0 -0
  1484. package/style/visual-screenshots (1)/images/b68eacd41b21135a2c2431a3ddc2dae5.png +0 -0
  1485. package/style/visual-screenshots (1)/images/b6a9a44405f5e4034c95f55ee8aed681.png +0 -0
  1486. package/style/visual-screenshots (1)/images/b6d2d0f7d50094fd163351d07a5e9251.png +0 -0
  1487. package/style/visual-screenshots (1)/images/b6ec4162d1414d4011b787dd127bad96.png +0 -0
  1488. package/style/visual-screenshots (1)/images/b6fe711492d73a1ad83be68fd782b5be.png +0 -0
  1489. package/style/visual-screenshots (1)/images/b702cca4b4fe43f208a58f37e4a7d0c8.png +0 -0
  1490. package/style/visual-screenshots (1)/images/b74e84ef684b263e0390552911c7b630.png +0 -0
  1491. package/style/visual-screenshots (1)/images/b76dc3cd48583a70f3f99348e259a192.png +0 -0
  1492. package/style/visual-screenshots (1)/images/b79d300707e6efd85959e1727354cda9.png +0 -0
  1493. package/style/visual-screenshots (1)/images/b7f774a62a166681f5e34f4f92e7df96.png +0 -0
  1494. package/style/visual-screenshots (1)/images/b85b4a6d8172ec3d4fe3875d1d5be438.png +0 -0
  1495. package/style/visual-screenshots (1)/images/b8fd7356a98d56ee49951392bc0a19f5.png +0 -0
  1496. package/style/visual-screenshots (1)/images/b9239778dee867ed3f14d2f3ffecd8d5.png +0 -0
  1497. package/style/visual-screenshots (1)/images/b936ab1e543d95bd0c818b0d2ddade05.png +0 -0
  1498. package/style/visual-screenshots (1)/images/b9afd9043e717ea55cd0a7c2e8768ec0.png +0 -0
  1499. package/style/visual-screenshots (1)/images/b9b032bae3f927fc7492af0717480a7c.png +0 -0
  1500. package/style/visual-screenshots (1)/images/ba1fea1b865b3beef1a1135bd779a706.png +0 -0
  1501. package/style/visual-screenshots (1)/images/ba2cbf010b08ef17e500a9a6f09756eb.png +0 -0
  1502. package/style/visual-screenshots (1)/images/ba900133c62ae20a043c8145deb72e61.png +0 -0
  1503. package/style/visual-screenshots (1)/images/bab341bf211ffe1d1cdcff9735458a37.png +0 -0
  1504. package/style/visual-screenshots (1)/images/bb54094e275897982cdadf3573cae164.png +0 -0
  1505. package/style/visual-screenshots (1)/images/bb551e3ba230869e0f7f74597ebdc929.png +0 -0
  1506. package/style/visual-screenshots (1)/images/bb5dc88ef581957bcde4779c0b6f96be.png +0 -0
  1507. package/style/visual-screenshots (1)/images/bb671a54edc0e2807e0ee792010765ce.png +0 -0
  1508. package/style/visual-screenshots (1)/images/bb6a7307e19bf9e4c588df181c01cf82.png +0 -0
  1509. package/style/visual-screenshots (1)/images/bb9c61c2c52257e6ac08122fc873e0a5.png +0 -0
  1510. package/style/visual-screenshots (1)/images/bb9d4ba104d323a504b867a9e7c26fa7.png +0 -0
  1511. package/style/visual-screenshots (1)/images/bbfc81ede881c3480dedc09c932b357c.png +0 -0
  1512. package/style/visual-screenshots (1)/images/bc69c3fc828d0ccd43620f5d7789f687.png +0 -0
  1513. package/style/visual-screenshots (1)/images/bc6a45c5e234c06fe2909be16df5cd68.png +0 -0
  1514. package/style/visual-screenshots (1)/images/bc7fbfc8cfa6fbaf42c181a83bc8f12e.png +0 -0
  1515. package/style/visual-screenshots (1)/images/bc812929e7194062888770b42ea680fa.png +0 -0
  1516. package/style/visual-screenshots (1)/images/bcf29c250245fcd6d4cd80fbb2076fe6.png +0 -0
  1517. package/style/visual-screenshots (1)/images/bd0adcbbc6b9f54fd8dc2c45f91118cf.png +0 -0
  1518. package/style/visual-screenshots (1)/images/bd2c0d240faaa73548693dd8792bd334.png +0 -0
  1519. package/style/visual-screenshots (1)/images/bd3c8aca71ef1e1bfcf54c9bdf7ec0c1.png +0 -0
  1520. package/style/visual-screenshots (1)/images/bd742a3ba78f04988baceee07b34b4c8.png +0 -0
  1521. package/style/visual-screenshots (1)/images/bde82fcc550d92789d65c593e33b9fa1.png +0 -0
  1522. package/style/visual-screenshots (1)/images/be0d5c5d87ffd9eb20686d37ded21477.png +0 -0
  1523. package/style/visual-screenshots (1)/images/be2d1a5e2a20ec9e70974dfd8ad15c05.png +0 -0
  1524. package/style/visual-screenshots (1)/images/be343f108940ac377accd7cd07cdd1e7.png +0 -0
  1525. package/style/visual-screenshots (1)/images/be40fd335f837d2f5a1d803b3aed4c94.png +0 -0
  1526. package/style/visual-screenshots (1)/images/bea6a7939bf5c8f3034f9f36d3aa83a0.png +0 -0
  1527. package/style/visual-screenshots (1)/images/bed34ed4f9077f51952b51283f4b473b.png +0 -0
  1528. package/style/visual-screenshots (1)/images/bedd63152750246fbfff2f3b8694840a.png +0 -0
  1529. package/style/visual-screenshots (1)/images/bf112e6d28f4ea8ab3c84b88d685cb92.png +0 -0
  1530. package/style/visual-screenshots (1)/images/bf1e7977779e36731e8cf90de8a2c018.png +0 -0
  1531. package/style/visual-screenshots (1)/images/bfbf13672d796f88652747c1c627c225.png +0 -0
  1532. package/style/visual-screenshots (1)/images/c14ed538a5d1e19c581b8a480a410873.png +0 -0
  1533. package/style/visual-screenshots (1)/images/c1a6e457a74e6f1e39d8056a575c6b61.png +0 -0
  1534. package/style/visual-screenshots (1)/images/c1bf639cb4ef73d3097a86bbe242e67b.png +0 -0
  1535. package/style/visual-screenshots (1)/images/c1e92e74a76d59360620dd36a44b48d7.png +0 -0
  1536. package/style/visual-screenshots (1)/images/c25a03ca4b6a75b60ca989c922a8c0ea.png +0 -0
  1537. package/style/visual-screenshots (1)/images/c29a6ce74d404486b42547c80ac64827.png +0 -0
  1538. package/style/visual-screenshots (1)/images/c2a8fd8eb01504bdf199bc631948fd65.png +0 -0
  1539. package/style/visual-screenshots (1)/images/c2b2a82c12745e02edc5a4296e64952e.png +0 -0
  1540. package/style/visual-screenshots (1)/images/c2e70eb9bba973017e04fde58f20439f.png +0 -0
  1541. package/style/visual-screenshots (1)/images/c31b279c27c044ff8023b74161774d65.png +0 -0
  1542. package/style/visual-screenshots (1)/images/c3de791621e788d6d096d488fdbf7eb7.png +0 -0
  1543. package/style/visual-screenshots (1)/images/c4347eb0e8a14227ad18be6b9de1cbc7.png +0 -0
  1544. package/style/visual-screenshots (1)/images/c45a7afc0498379e5b620ff4394e1759.png +0 -0
  1545. package/style/visual-screenshots (1)/images/c4bd15f6119ec6a9f86c7311605b8e9a.png +0 -0
  1546. package/style/visual-screenshots (1)/images/c5d033ba89e8621d33f0c1251f26cb94.png +0 -0
  1547. package/style/visual-screenshots (1)/images/c5f4925f4e800c08c097ac6cb57973c4.png +0 -0
  1548. package/style/visual-screenshots (1)/images/c645ca1d792395177ed9f550dc65ef98.png +0 -0
  1549. package/style/visual-screenshots (1)/images/c66f1911986c1798aa132cfda4c757c1.png +0 -0
  1550. package/style/visual-screenshots (1)/images/c6835996ac4b2b3f962a7c89245faa9e.png +0 -0
  1551. package/style/visual-screenshots (1)/images/c7295480cd7fd4a11a50458bb4bfc9c3.png +0 -0
  1552. package/style/visual-screenshots (1)/images/c76344aa17e7856258e6a7aba903caab.png +0 -0
  1553. package/style/visual-screenshots (1)/images/c7bbfb83d1e415c898256cc0fdcce3ca.png +0 -0
  1554. package/style/visual-screenshots (1)/images/c7c0f8a05585087c37d8209208bbcb54.png +0 -0
  1555. package/style/visual-screenshots (1)/images/c7de1a12552658b7fe3ce32a7f7ffb3e.png +0 -0
  1556. package/style/visual-screenshots (1)/images/c914e1a43cca34efae86f296ac56fdee.png +0 -0
  1557. package/style/visual-screenshots (1)/images/c9861de44663e597f55adc84ea88e5fc.png +0 -0
  1558. package/style/visual-screenshots (1)/images/c99d35eeb0dc348c34f4c8a9fe1c5f1d.png +0 -0
  1559. package/style/visual-screenshots (1)/images/ca32c8781f959efc16e24eeda14cc2d5.png +0 -0
  1560. package/style/visual-screenshots (1)/images/ca9c87751da7c73377da05d1cbf34974.png +0 -0
  1561. package/style/visual-screenshots (1)/images/cab16e07722c54b790e38a8b9995af8f.png +0 -0
  1562. package/style/visual-screenshots (1)/images/cb4e5d44970f3d22cfd664c95d5c23c6.png +0 -0
  1563. package/style/visual-screenshots (1)/images/cb99b0bf33401c42eebea1020004a1a8.png +0 -0
  1564. package/style/visual-screenshots (1)/images/cba574213771f455a9bd90fdd5711b82.png +0 -0
  1565. package/style/visual-screenshots (1)/images/cc30aaecf3c497e88d6e7aecae1b7583.png +0 -0
  1566. package/style/visual-screenshots (1)/images/cc690d6b70d361022b64cfd7e15aced7.png +0 -0
  1567. package/style/visual-screenshots (1)/images/ccc7eefe88ff7124ce9b7256a2754224.png +0 -0
  1568. package/style/visual-screenshots (1)/images/cd0ec559f03f247915ac7f28d051477f.png +0 -0
  1569. package/style/visual-screenshots (1)/images/cda5b907bdad7cc13b55cb525ff72402.png +0 -0
  1570. package/style/visual-screenshots (1)/images/ce19129cba94fa6ccfd2ab5416d93033.png +0 -0
  1571. package/style/visual-screenshots (1)/images/ce3c54aab036c6395dd8817abc6acfc6.png +0 -0
  1572. package/style/visual-screenshots (1)/images/ce4c143e3f25acaecf95fc6c74091386.png +0 -0
  1573. package/style/visual-screenshots (1)/images/ce639e1186fedb84b5d709bf36126612.png +0 -0
  1574. package/style/visual-screenshots (1)/images/ceca1dbf2a40a6524da989acf8c45825.png +0 -0
  1575. package/style/visual-screenshots (1)/images/cecd8cd95992457e1748c3bb0dd14f35.png +0 -0
  1576. package/style/visual-screenshots (1)/images/ced9cb27f2fe15debe7cae42e1b6347d.png +0 -0
  1577. package/style/visual-screenshots (1)/images/cf8ad194e11dfdb8aea6017def809c6f.png +0 -0
  1578. package/style/visual-screenshots (1)/images/cf95c3fcdb08ca9fd096c2aa90538a9f.png +0 -0
  1579. package/style/visual-screenshots (1)/images/d055162ca44e10714f581c72517de67a.png +0 -0
  1580. package/style/visual-screenshots (1)/images/d0907dbf3bbf9051d9ab0090a74eb8a2.png +0 -0
  1581. package/style/visual-screenshots (1)/images/d0dbadb5f8a71fe6a666cf4741ba583e.png +0 -0
  1582. package/style/visual-screenshots (1)/images/d0fc1daaab9d8154ac99b9923aca965e.png +0 -0
  1583. package/style/visual-screenshots (1)/images/d10379d630b08ba69cdbadef68160b74.png +0 -0
  1584. package/style/visual-screenshots (1)/images/d1dec19c84cc7d9d44d9bdbdc4ed0113.png +0 -0
  1585. package/style/visual-screenshots (1)/images/d1ecf153cbe7e6e5ab9df3ba963ac56a.png +0 -0
  1586. package/style/visual-screenshots (1)/images/d2085cde486b22d26ed3ed7dd092ac67.png +0 -0
  1587. package/style/visual-screenshots (1)/images/d21f0611ffb064596292ba09f7ae0aa7.png +0 -0
  1588. package/style/visual-screenshots (1)/images/d26da906f6e40a9f2de474ef00ffe192.png +0 -0
  1589. package/style/visual-screenshots (1)/images/d32bdba3c211974c488f05e49fdbd38e.png +0 -0
  1590. package/style/visual-screenshots (1)/images/d3f2e40808a135432120eec842002667.png +0 -0
  1591. package/style/visual-screenshots (1)/images/d3f4fb7a3520050add88a228446786c0.png +0 -0
  1592. package/style/visual-screenshots (1)/images/d42695727875489f5c823fc6a7637fc0.png +0 -0
  1593. package/style/visual-screenshots (1)/images/d43099f8107adb7d25c029fd861236c7.png +0 -0
  1594. package/style/visual-screenshots (1)/images/d465de97945852f83e9cfec896fda7fd.png +0 -0
  1595. package/style/visual-screenshots (1)/images/d4cb357a97d0069493f671c36973b023.png +0 -0
  1596. package/style/visual-screenshots (1)/images/d507e6178365edabfc44712f507b1ad4.png +0 -0
  1597. package/style/visual-screenshots (1)/images/d5c0ef8532ff82ac36069cd1a325ef27.png +0 -0
  1598. package/style/visual-screenshots (1)/images/d5d677892ed26746228c30990678ac38.png +0 -0
  1599. package/style/visual-screenshots (1)/images/d5ea4a9c77534f236c32e8f31e078587.png +0 -0
  1600. package/style/visual-screenshots (1)/images/d5f1ba6ddf9bbc40e86be0e2b82118af.png +0 -0
  1601. package/style/visual-screenshots (1)/images/d6069a71d1cf53673964d866460d32c8.png +0 -0
  1602. package/style/visual-screenshots (1)/images/d6242fd259465d2ba316d672684afcf7.png +0 -0
  1603. package/style/visual-screenshots (1)/images/d6b1c4c2db737fef0105bc33cda83309.png +0 -0
  1604. package/style/visual-screenshots (1)/images/d6c65a3c2f45d3f68984a0be5f3490bb.png +0 -0
  1605. package/style/visual-screenshots (1)/images/d6f1781682597261b255669cebe81e42.png +0 -0
  1606. package/style/visual-screenshots (1)/images/d7d9fb5a7dfc870527fb24b3642a56e3.png +0 -0
  1607. package/style/visual-screenshots (1)/images/d7deed321c78b937b9aac780d75a67e6.png +0 -0
  1608. package/style/visual-screenshots (1)/images/d8291cc7ad6e1607c344ed2ed1368ea3.png +0 -0
  1609. package/style/visual-screenshots (1)/images/d8560f2f2aeb2cf5601aac513f502b55.png +0 -0
  1610. package/style/visual-screenshots (1)/images/d8ba46aafe0f9c6e1a513c118e4ed9bc.png +0 -0
  1611. package/style/visual-screenshots (1)/images/d95148fef77af3db17d99a9e6d582f37.png +0 -0
  1612. package/style/visual-screenshots (1)/images/d9579cafca730bedcd047d6b5e00d6a4.png +0 -0
  1613. package/style/visual-screenshots (1)/images/d98fa9b6727f84959b2953eb2fb4bbd9.png +0 -0
  1614. package/style/visual-screenshots (1)/images/d9ccd1f0853f04288d98faaa99ffd839.png +0 -0
  1615. package/style/visual-screenshots (1)/images/d9d48b2652b1aec6a09d29ff489a2559.png +0 -0
  1616. package/style/visual-screenshots (1)/images/d9d72a2b10b10048726ee220b48fa527.png +0 -0
  1617. package/style/visual-screenshots (1)/images/d9d8147e7f3bb24b517f342fcccde022.png +0 -0
  1618. package/style/visual-screenshots (1)/images/d9df19d7691aa789d2a8bc95bf35da2c.png +0 -0
  1619. package/style/visual-screenshots (1)/images/da1074f521e0588e392120962859f25f.png +0 -0
  1620. package/style/visual-screenshots (1)/images/da3533dfa11d516896891b192864e447.png +0 -0
  1621. package/style/visual-screenshots (1)/images/dae067c3ccb9466b05711591ecd99896.png +0 -0
  1622. package/style/visual-screenshots (1)/images/db652f7540592f22fce8d51c2db86e93.png +0 -0
  1623. package/style/visual-screenshots (1)/images/db68bc1a1dabafb95a485a230f9a8891.png +0 -0
  1624. package/style/visual-screenshots (1)/images/db9207243bf814e40de5d4f04ca70316.png +0 -0
  1625. package/style/visual-screenshots (1)/images/db9f75240f51bca9b761494cedeccff2.png +0 -0
  1626. package/style/visual-screenshots (1)/images/dbc774ff92faa624b4987219fa52042d.png +0 -0
  1627. package/style/visual-screenshots (1)/images/dc0de0f379b7b76e387beb9d57e912eb.png +0 -0
  1628. package/style/visual-screenshots (1)/images/dd3dcde1007bc96a7e41eeb1436699a5.png +0 -0
  1629. package/style/visual-screenshots (1)/images/dda39199ff0717086ab54dd718ad525f.png +0 -0
  1630. package/style/visual-screenshots (1)/images/ddcd258c6ad4c8489c1b51df313691e9.png +0 -0
  1631. package/style/visual-screenshots (1)/images/ddcf43a676ca66b76dd293e2217bff54.png +0 -0
  1632. package/style/visual-screenshots (1)/images/ddf8772071d057082129df7ddb91cb63.png +0 -0
  1633. package/style/visual-screenshots (1)/images/de538ffe7bb41fe54ed51f548dbe2fba.png +0 -0
  1634. package/style/visual-screenshots (1)/images/df18d193dd77c73ceb593e100945b30d.png +0 -0
  1635. package/style/visual-screenshots (1)/images/df7a11e9552448272332cb2a6d8194b8.png +0 -0
  1636. package/style/visual-screenshots (1)/images/df8a111e64e1601833438a267e53d53e.png +0 -0
  1637. package/style/visual-screenshots (1)/images/dfb1101ae11b4e4cbcd14e109f2c2810.png +0 -0
  1638. package/style/visual-screenshots (1)/images/dfd25ea8862f0ef09292b87930278f8b.png +0 -0
  1639. package/style/visual-screenshots (1)/images/e010fa0f10828dfec180f664eb3b904e.png +0 -0
  1640. package/style/visual-screenshots (1)/images/e019e72c9310bf80c7d8a060b05b9c37.png +0 -0
  1641. package/style/visual-screenshots (1)/images/e0fad740e1ea1190ae5bafcc312b7345.png +0 -0
  1642. package/style/visual-screenshots (1)/images/e129f142d3b5053ef5be1eb5b2c3e892.png +0 -0
  1643. package/style/visual-screenshots (1)/images/e166d553d849e0c78ef876004aad7a5f.png +0 -0
  1644. package/style/visual-screenshots (1)/images/e16f3ba70a3637f3220f043e2135e130.png +0 -0
  1645. package/style/visual-screenshots (1)/images/e1e5fe1fd5d6ee275513f269c86d6305.png +0 -0
  1646. package/style/visual-screenshots (1)/images/e23bd037d12d40a0719647cc0e872a58.png +0 -0
  1647. package/style/visual-screenshots (1)/images/e2a3a5bb4365d8f726c66cdd0502df93.png +0 -0
  1648. package/style/visual-screenshots (1)/images/e2c01035d03336301a1d9b296c8d9ab3.png +0 -0
  1649. package/style/visual-screenshots (1)/images/e2d8e8137e7670d15c4607f1d656477f.png +0 -0
  1650. package/style/visual-screenshots (1)/images/e302c8e4a9ea160a0a19968825d55dab.png +0 -0
  1651. package/style/visual-screenshots (1)/images/e34b18aac8583e91e021b41bbfd7fd5f.png +0 -0
  1652. package/style/visual-screenshots (1)/images/e356cf56ccaa076bbc8d34dc8f793843.png +0 -0
  1653. package/style/visual-screenshots (1)/images/e35d22101819324c038cd263e9c8f518.png +0 -0
  1654. package/style/visual-screenshots (1)/images/e3805efcd137ad98512fa1c3f8d54a1d.png +0 -0
  1655. package/style/visual-screenshots (1)/images/e39ce053c84fc3a5528ac4b5641ac9cf.png +0 -0
  1656. package/style/visual-screenshots (1)/images/e3a3c7767a5eb9522dea438bff6728cc.png +0 -0
  1657. package/style/visual-screenshots (1)/images/e3aab7603407b6e1b444b0eac170a7ec.png +0 -0
  1658. package/style/visual-screenshots (1)/images/e43a752514e8b393cb628520b605b584.png +0 -0
  1659. package/style/visual-screenshots (1)/images/e442163823ed8edcc7160818be69b398.png +0 -0
  1660. package/style/visual-screenshots (1)/images/e4b10dde183f07a84513d76d429a6958.png +0 -0
  1661. package/style/visual-screenshots (1)/images/e4d50b654335e71fc4967b82c344dbfe.png +0 -0
  1662. package/style/visual-screenshots (1)/images/e51ca2c2a84b03fc98f79f02fe7068aa.png +0 -0
  1663. package/style/visual-screenshots (1)/images/e58ef5ed950fbb2b1079d74d45b7c881.png +0 -0
  1664. package/style/visual-screenshots (1)/images/e5ade203143dc82491aa076121660e52.png +0 -0
  1665. package/style/visual-screenshots (1)/images/e605ecbc474952712389539463a04aa7.png +0 -0
  1666. package/style/visual-screenshots (1)/images/e6262e247906000955ae8374d655a906.png +0 -0
  1667. package/style/visual-screenshots (1)/images/e6595c721f80b610721aaeeb5e2f75a6.png +0 -0
  1668. package/style/visual-screenshots (1)/images/e6709d9c191735263eb3b486e7a72f85.png +0 -0
  1669. package/style/visual-screenshots (1)/images/e6d314422345a30bf6c0ef3e18e583a0.png +0 -0
  1670. package/style/visual-screenshots (1)/images/e6d939c8648a17c13549f5f2adb346e7.png +0 -0
  1671. package/style/visual-screenshots (1)/images/e6dbee568bfdc18e352b077e374ff82f.png +0 -0
  1672. package/style/visual-screenshots (1)/images/e703bac13e2532ce5533d2a57a8a5fa6.png +0 -0
  1673. package/style/visual-screenshots (1)/images/e716cb5e49fdadf37afefab471babf94.png +0 -0
  1674. package/style/visual-screenshots (1)/images/e7441187368963e6b130042df812ef91.png +0 -0
  1675. package/style/visual-screenshots (1)/images/e7c2f6b6c968145071f9cb8636dfbc3e.png +0 -0
  1676. package/style/visual-screenshots (1)/images/e7e9cbbc3d0dd144406d6a315ec0ddc0.png +0 -0
  1677. package/style/visual-screenshots (1)/images/e7fa6277441b9b69cc3b5306e16b7cf1.png +0 -0
  1678. package/style/visual-screenshots (1)/images/e83fb6530e1c56b78ecf6b7ecf9093b4.png +0 -0
  1679. package/style/visual-screenshots (1)/images/e84d5f9378fbad753243b00f534b5a2b.png +0 -0
  1680. package/style/visual-screenshots (1)/images/e874c84e2c3efc6531e1ed444ef48e0c.png +0 -0
  1681. package/style/visual-screenshots (1)/images/e880df04bcd581fdc14320972bb587c7.png +0 -0
  1682. package/style/visual-screenshots (1)/images/e888e0e6d4a78e02b76328fa84356ca8.png +0 -0
  1683. package/style/visual-screenshots (1)/images/e8ae475c96c0350cab5788186441a468.png +0 -0
  1684. package/style/visual-screenshots (1)/images/e8b5543222dd07074f913c0ee347cc2a.png +0 -0
  1685. package/style/visual-screenshots (1)/images/e92d837bf473dd88b1644ce81eeb8271.png +0 -0
  1686. package/style/visual-screenshots (1)/images/e9690ff4793f30325dfc007d07f11515.png +0 -0
  1687. package/style/visual-screenshots (1)/images/e9a4edf0d472871407e3de2a94491d38.png +0 -0
  1688. package/style/visual-screenshots (1)/images/e9da22cdb0b57bbbb78d72fa243613f1.png +0 -0
  1689. package/style/visual-screenshots (1)/images/e9f7a5fc6028e6009408ba7587604837.png +0 -0
  1690. package/style/visual-screenshots (1)/images/ea87140d4d01e99436eb8517e1a59744.png +0 -0
  1691. package/style/visual-screenshots (1)/images/eb1e5e278264b3344fd8251f8e3a567c.png +0 -0
  1692. package/style/visual-screenshots (1)/images/eb270de24170c48625abe27e1add013b.png +0 -0
  1693. package/style/visual-screenshots (1)/images/eb321262ddafb26c0121bd595505ffd4.png +0 -0
  1694. package/style/visual-screenshots (1)/images/eb89e9322f47193680a195eedec9ca1f.png +0 -0
  1695. package/style/visual-screenshots (1)/images/eb8ba90ad716449ab1fbe18715131465.png +0 -0
  1696. package/style/visual-screenshots (1)/images/ebea496ec420dde6eb11929ef25c9d4e.png +0 -0
  1697. package/style/visual-screenshots (1)/images/ec06a26e681c9d07ecb4aa29d4e551f4.png +0 -0
  1698. package/style/visual-screenshots (1)/images/ec418171a7341bd39a64ee5e1405de5c.png +0 -0
  1699. package/style/visual-screenshots (1)/images/ec801a1f7ded7e4f72b3b83d56ef137b.png +0 -0
  1700. package/style/visual-screenshots (1)/images/eceac800e5e5ec35a7ac973102588b9a.png +0 -0
  1701. package/style/visual-screenshots (1)/images/ed32af8a6de2ef712782d8c700d5ea9c.png +0 -0
  1702. package/style/visual-screenshots (1)/images/ed996049ed03540673123208a1939af9.png +0 -0
  1703. package/style/visual-screenshots (1)/images/edea0089834ada9ac7c1955bbc7b60e8.png +0 -0
  1704. package/style/visual-screenshots (1)/images/ee0321657e33c16d1cafb4124cc8b84e.png +0 -0
  1705. package/style/visual-screenshots (1)/images/ee2e3f6e90b8c2a479d187d5c33257d9.png +0 -0
  1706. package/style/visual-screenshots (1)/images/ee5c6318a17593c06dc4893c84e64535.png +0 -0
  1707. package/style/visual-screenshots (1)/images/ee880fd8c1965895a4c79cf4c744feac.png +0 -0
  1708. package/style/visual-screenshots (1)/images/eed96dc07ed46b9585a3fa2f9655268f.png +0 -0
  1709. package/style/visual-screenshots (1)/images/efcf97ad2d48fcce21b8052fb8e1f02d.png +0 -0
  1710. package/style/visual-screenshots (1)/images/f02927c03369f309483a9c4ddf1dd918.png +0 -0
  1711. package/style/visual-screenshots (1)/images/f033f0f98be280ace4c6d4b0366bb46f.png +0 -0
  1712. package/style/visual-screenshots (1)/images/f039bdda30367e329cf997e85fe4c5e8.png +0 -0
  1713. package/style/visual-screenshots (1)/images/f04add34ff27aa15ee72e77d143d3ed8.png +0 -0
  1714. package/style/visual-screenshots (1)/images/f05fc5650db3e0ecc2baf3860da0d195.png +0 -0
  1715. package/style/visual-screenshots (1)/images/f095476fc0248cf27fa814706177534f.png +0 -0
  1716. package/style/visual-screenshots (1)/images/f0ca029abc93f4e8105da3e5ab56e1c4.png +0 -0
  1717. package/style/visual-screenshots (1)/images/f136123d6a6e67a75080296043b5e5de.png +0 -0
  1718. package/style/visual-screenshots (1)/images/f14f173c0407db4e2e0d465809e3035f.png +0 -0
  1719. package/style/visual-screenshots (1)/images/f1c37fd272da405acfb07e2bcd9e2e86.png +0 -0
  1720. package/style/visual-screenshots (1)/images/f1d9cb85975d8f2259098078a9801e0f.png +0 -0
  1721. package/style/visual-screenshots (1)/images/f1ec44ad9bd197b6cf6709425b1f493c.png +0 -0
  1722. package/style/visual-screenshots (1)/images/f2357c90c5bc52def3fac87e0ec9997a.png +0 -0
  1723. package/style/visual-screenshots (1)/images/f27d1e0db5abfe19d41b8158d4d2e864.png +0 -0
  1724. package/style/visual-screenshots (1)/images/f28b1b0716ee2f45646a13b5b5c25ece.png +0 -0
  1725. package/style/visual-screenshots (1)/images/f2a9936c632f6d5df93af4b94ca90234.png +0 -0
  1726. package/style/visual-screenshots (1)/images/f2e3472901c35c71c0182432ed609d7f.png +0 -0
  1727. package/style/visual-screenshots (1)/images/f3492d235f8072e4adf1060958453ee6.png +0 -0
  1728. package/style/visual-screenshots (1)/images/f3e92ee96aa91f49801ea4202f6081ac.png +0 -0
  1729. package/style/visual-screenshots (1)/images/f43bdfc49eaa4bc64a3d388173c76744.png +0 -0
  1730. package/style/visual-screenshots (1)/images/f43fae61c6f1cfb638fd3741f3742d5b.png +0 -0
  1731. package/style/visual-screenshots (1)/images/f44444b4e7bcd9cc38987cfbca3c88bc.png +0 -0
  1732. package/style/visual-screenshots (1)/images/f457b6c69704125d620b062e0a63c81d.png +0 -0
  1733. package/style/visual-screenshots (1)/images/f49bdba18143e37cebfccebb84983aaa.png +0 -0
  1734. package/style/visual-screenshots (1)/images/f4a592740204a611f064fd861eea879f.png +0 -0
  1735. package/style/visual-screenshots (1)/images/f4b874f85d61abcdb5d4dac56574e983.png +0 -0
  1736. package/style/visual-screenshots (1)/images/f4d48a8d20e7217ab3bd4eb920e2e90b.png +0 -0
  1737. package/style/visual-screenshots (1)/images/f4fa32cbd842631dda4967bb7b0805f4.png +0 -0
  1738. package/style/visual-screenshots (1)/images/f5a634ee1f8883b9a9910709b1a70dd9.png +0 -0
  1739. package/style/visual-screenshots (1)/images/f5f154f17b8ddd7fe6584229e3e433dc.png +0 -0
  1740. package/style/visual-screenshots (1)/images/f5f5aa0c94bc0096ca632bde832e4ac0.png +0 -0
  1741. package/style/visual-screenshots (1)/images/f611a4b1de325f7426c8b29b43cfae35.png +0 -0
  1742. package/style/visual-screenshots (1)/images/f63233f9dc04d7dcfd4ff56369f0b130.png +0 -0
  1743. package/style/visual-screenshots (1)/images/f692554ff308ca1cd0fbe7a22b3b22ca.png +0 -0
  1744. package/style/visual-screenshots (1)/images/f75eda47bbe4bbe2ea30a65b7856a44b.png +0 -0
  1745. package/style/visual-screenshots (1)/images/f781be55c666aac6c83ca4d07e9c42ca.png +0 -0
  1746. package/style/visual-screenshots (1)/images/f7bf00972a29fdf599c8217b28de96d6.png +0 -0
  1747. package/style/visual-screenshots (1)/images/f86fea7ffab0866bda8a3b414f7cd3b7.png +0 -0
  1748. package/style/visual-screenshots (1)/images/f87eb71c300ab4b2d498be9a55ee1618.png +0 -0
  1749. package/style/visual-screenshots (1)/images/f8b36602184f5158860506fe64079c89.png +0 -0
  1750. package/style/visual-screenshots (1)/images/f8ee607f6421ba60f973b9bff376ae28.png +0 -0
  1751. package/style/visual-screenshots (1)/images/f9080ba22d397d83f09047ebdfe84239.png +0 -0
  1752. package/style/visual-screenshots (1)/images/f9145ef284d04f6336229ff666af70e3.png +0 -0
  1753. package/style/visual-screenshots (1)/images/f93aaf6c9ea9f70abb350f5255767c3f.png +0 -0
  1754. package/style/visual-screenshots (1)/images/f95685e60e185b4b3da22bb8bf70e7e2.png +0 -0
  1755. package/style/visual-screenshots (1)/images/f97ab81b758db662a2eb1617a6efe217.png +0 -0
  1756. package/style/visual-screenshots (1)/images/fa7325e4f52bb809c79c2f8df2699b93.png +0 -0
  1757. package/style/visual-screenshots (1)/images/fa793989f4717dd55b1c603086785688.png +0 -0
  1758. package/style/visual-screenshots (1)/images/faab9362d2ff082b2ec255bd3f87f52c.png +0 -0
  1759. package/style/visual-screenshots (1)/images/fad9c13edad825e537ef70d1f5ac9ffc.png +0 -0
  1760. package/style/visual-screenshots (1)/images/faf67bf2491d228a3147ca1b197ce7c0.png +0 -0
  1761. package/style/visual-screenshots (1)/images/fb0bba6fa80d2f1d58b9fe1a3cae80fd.png +0 -0
  1762. package/style/visual-screenshots (1)/images/fb21968682604e963f859ce4a3063449.png +0 -0
  1763. package/style/visual-screenshots (1)/images/fb2756dae46b9f5078e264cd3419bb7f.png +0 -0
  1764. package/style/visual-screenshots (1)/images/fc344f5b8408cc30060f888515927391.png +0 -0
  1765. package/style/visual-screenshots (1)/images/fca29f7a114d6e4df2ca093e1d9cf90a.png +0 -0
  1766. package/style/visual-screenshots (1)/images/fced6958bf1d22d95b4609bb6cb90c07.png +0 -0
  1767. package/style/visual-screenshots (1)/images/fd92b9e1229dbd6160436f5b92cd21b0.png +0 -0
  1768. package/style/visual-screenshots (1)/images/fdf7376c972f3c4f40789c0f217c0480.png +0 -0
  1769. package/style/visual-screenshots (1)/images/fe13a66e7e5ede78792937bf010f022c.png +0 -0
  1770. package/style/visual-screenshots (1)/images/fe2c4234c413f4ad2d054fd091242f8e.png +0 -0
  1771. package/style/visual-screenshots (1)/images/fe4603d37d7b7abc55ebda66bb81b8d9.png +0 -0
  1772. package/style/visual-screenshots (1)/images/fe9188d474135ba66971a9ea60921c3d.png +0 -0
  1773. package/style/visual-screenshots (1)/images/febb9b60ded19124b91a836fcbc37936.png +0 -0
  1774. package/style/visual-screenshots (1)/images/fedb6514016e34df2fcb29eef107d385.png +0 -0
  1775. package/style/visual-screenshots (1)/images/ff5d801d62c71a38028c2d406af30b8f.png +0 -0
  1776. package/style/visual-screenshots (1)/images/ffa3e2813a91c22ec33346792ba47461.png +0 -0
  1777. package/style/visual-screenshots (1)/images/ffb7b8ff61c2ce675eaeaa8104a3f178.png +0 -0
@@ -1,4430 +0,0 @@
1
- import { C as ChangeManager } from './change-manager-6a7eb88c.js';
2
- import { d as domNodeSubjectFactory } from './dom-node-subject-observer-factory-4401eb10.js';
3
- import { c as VegaInternalRichTextEditorFlushChanges, d as VegaInternalRichTextEditorSelectionRangeChange } from './vega-internal-event-id-49fef150.js';
4
- import { c as camelToDashCase } from './string-a953eafc.js';
5
- import { L as LogUtility } from './global-slimmer-registry-17c4efd4.js';
6
- import { i as isNonNullable } from './type-guard-12f7654b.js';
7
- import { g as generateUUID } from './create-public-api-runtime-metrics-slimmer-bedf3a1e.js';
8
- import { V as VegaInternalThemeManager } from './dark-mode-style-controller-de88a117.js';
9
- import { c as cleanObject } from './object-66c37948.js';
10
- import { f as findParent } from './ui-bb99c0c2.js';
11
-
12
- var InternalAnnotationTypeEnum;
13
- (function (InternalAnnotationTypeEnum) {
14
- InternalAnnotationTypeEnum["SELECTION_RANGE"] = "SELECTION_RANGE";
15
- InternalAnnotationTypeEnum["CLEAR_FORMATTING"] = "CLEAR_FORMATTING";
16
- InternalAnnotationTypeEnum["LINK_GROUP"] = "LINK_GROUP";
17
- })(InternalAnnotationTypeEnum || (InternalAnnotationTypeEnum = {}));
18
- /**
19
- * Abstract class for all annotations
20
- */
21
- class Annotation {
22
- }
23
-
24
- var BlockAnnotationTypeEnum;
25
- (function (BlockAnnotationTypeEnum) {
26
- BlockAnnotationTypeEnum["ALIGNMENT"] = "ALIGNMENT";
27
- BlockAnnotationTypeEnum["TEXT_STYLE"] = "TEXT_STYLE";
28
- BlockAnnotationTypeEnum["INDENT"] = "INDENT";
29
- BlockAnnotationTypeEnum["LIST"] = "LIST";
30
- BlockAnnotationTypeEnum["INTERNAL_WRAPPER"] = "INTERNAL_WRAPPER";
31
- })(BlockAnnotationTypeEnum || (BlockAnnotationTypeEnum = {}));
32
- /**
33
- * BlockAnnotation is an abstract class that represents a block annotation.
34
- */
35
- class BlockAnnotation extends Annotation {
36
- }
37
-
38
- /**
39
- * This class is responsible for keeping track of the DOM elements and their corresponding entities.
40
- */
41
- class StateEntityRenderingRegistry {
42
- constructor() {
43
- this.domToEntity = new WeakMap();
44
- this.entityToDOM = new WeakMap();
45
- this.contentEntityToRootDom = new Map();
46
- this.rootDomToContentEntity = new WeakMap();
47
- }
48
- /**
49
- * Registers a DOM element and its corresponding entity.
50
- *
51
- * @param {HTMLElement} dom The DOM element to register.
52
- * @param {RTEBlock | RTENode | VegaRTEContent} entity The entity to register.
53
- */
54
- register(dom, entity) {
55
- if (!this.isVegaRTEContent(entity)) {
56
- this.domToEntity.set(dom, entity);
57
- this.entityToDOM.set(entity, dom);
58
- }
59
- else {
60
- this.registerRootDomAndContentEntity(dom, entity);
61
- }
62
- }
63
- /**
64
- * Retrieves the entity corresponding to a DOM element.
65
- *
66
- * @param {HTMLElement} dom The DOM element to retrieve the entity for.
67
- * @returns {Nullable<RTEBlock | RTENode>} The entity corresponding to the DOM element, or null if not found.
68
- */
69
- getEntityByDOM(dom) {
70
- return this.domToEntity.get(dom);
71
- }
72
- /**
73
- * Retrieves the DOM element corresponding to an entity.
74
- *
75
- * @param {RTEBlock | RTENode} entity The entity to retrieve the DOM element for.
76
- * @returns {Nullable<HTMLElement>} The DOM element corresponding to the entity, or null if not found.
77
- */
78
- getDOMByEntity(entity) {
79
- if (!this.isVegaRTEContent(entity)) {
80
- return this.entityToDOM.get(entity);
81
- }
82
- else {
83
- return this.contentEntityToRootDom.get(entity);
84
- }
85
- }
86
- /**
87
- * Delete the dirty element to entity ref.
88
- *
89
- * @example Convert text node to the link node, the old span will change to the link wrapper element, and there will be a new text span, so we need remove the old span ref from the map.
90
- * @param {HTMLElement} dom - The dirty element ref.
91
- */
92
- removeDirtyDomRef(dom) {
93
- this.domToEntity.delete(dom);
94
- }
95
- /**
96
- * Bind the root dom ref and content entity.
97
- *
98
- * @param {HTMLElement} dom - The vega rich text editor ref.
99
- * @param {VegaRTEContent} contentEntity - The rich text editor value content.
100
- */
101
- registerRootDomAndContentEntity(dom, contentEntity) {
102
- const oldContent = this.rootDomToContentEntity.get(dom);
103
- if (oldContent && oldContent !== contentEntity) {
104
- this.contentEntityToRootDom.delete(oldContent);
105
- }
106
- this.rootDomToContentEntity.set(dom, contentEntity);
107
- this.contentEntityToRootDom.set(contentEntity, dom);
108
- }
109
- /**
110
- * Check the entity is VegaRTEContent instance.
111
- *
112
- * @param {VegaRTEContent | RTEBlock | RTENode} entity - The entity to check.
113
- * @returns {entity is VegaRTEContent} - True if the entity is a VegaRTEContent instance, false otherwise.
114
- */
115
- isVegaRTEContent(entity) {
116
- return entity && entity.constructor.name === 'VegaRTEContent';
117
- }
118
- }
119
- const stateEntityRenderingRegistry = new StateEntityRenderingRegistry();
120
-
121
- var ModifyContentActionType;
122
- (function (ModifyContentActionType) {
123
- ModifyContentActionType["DELETE_CHILDREN"] = "DELETE_CHILDREN";
124
- ModifyContentActionType["DELETE_NEST_LIST"] = "DELETE_NEST_LIST";
125
- ModifyContentActionType["UPDATE_TEXT"] = "UPDATE_TEXT";
126
- ModifyContentActionType["REPLACE_SELECTED_TEXT"] = "REPLACE_SELECTED_TEXT";
127
- ModifyContentActionType["APPEND_CHILDREN"] = "APPEND_CHILDREN";
128
- ModifyContentActionType["INSERT_CHILDREN_AFTER"] = "INSERT_CHILDREN_AFTER";
129
- ModifyContentActionType["INSERT_CHILDREN_BEFORE"] = "INSERT_CHILDREN_BEFORE";
130
- ModifyContentActionType["SPLIT_BLOCK_WITH_NODE"] = "SPLIT_BLOCK_WITH_NODE";
131
- ModifyContentActionType["REPLACE_CHILD_NODES"] = "REPLACE_CHILD_NODES";
132
- ModifyContentActionType["REPLACE_NEST_LIST"] = "REPLACE_NEST_LIST";
133
- ModifyContentActionType["MERGE_TWO_BLOCKS_NODES"] = "MERGE_TWO_BLOCKS_NODES";
134
- ModifyContentActionType["INSERT_NEW_PARAGRAPH"] = "INSERT_NEW_PARAGRAPH";
135
- ModifyContentActionType["LINE_BREAK_SINGLE_BLOCK"] = "LINE_BREAK_SINGLE_BLOCK";
136
- ModifyContentActionType["LINE_BREAK_MULTIPLE_BLOCKS"] = "LINE_BREAK_MULTIPLE_BLOCKS";
137
- ModifyContentActionType["TRANSFORM_LIST_BLOCK"] = "TRANSFORM_LIST_BLOCK";
138
- ModifyContentActionType["TRANSFORM_PARAGRAPH_BLOCK"] = "TRANSFORM_PARAGRAPH_BLOCK";
139
- ModifyContentActionType["DELETE_BLOCK_CONTENT"] = "DELETE_BLOCK_CONTENT";
140
- ModifyContentActionType["INSERT_IMAGE_TO_BLOCK"] = "INSERT_IMAGE_TO_BLOCK";
141
- ModifyContentActionType["UPDATE_IMAGE_NODE_URL"] = "UPDATE_IMAGE_NODE_URL";
142
- ModifyContentActionType["TRANSFORM_TO_CODE_BLOCK"] = "TRANSFORM_TO_CODE_BLOCK";
143
- ModifyContentActionType["UPDATE_CODE_BLOCK"] = "UPDATE_CODE_BLOCK";
144
- ModifyContentActionType["SWITCH_OUT_FROM_CODE_BLOCK"] = "SWITCH_OUT_FROM_CODE_BLOCK";
145
- ModifyContentActionType["DELETE_CODE_BLOCK"] = "DELETE_CODE_BLOCK";
146
- ModifyContentActionType["UNLINK_LINK_GROUP"] = "UNLINK_LINK_GROUP";
147
- ModifyContentActionType["LINK_GROUP_NODE_SPLIT"] = "LINK_GROUP_NODE_SPLIT";
148
- ModifyContentActionType["DELETE_LINK_GROUP"] = "DELETE_LINK_GROUP";
149
- ModifyContentActionType["UPDATE_CURSOR_POSITION"] = "UPDATE_CURSOR_POSITION";
150
- ModifyContentActionType["INSERT_TEXT_TO_DECORATOR_NODE"] = "INSERT_TEXT_TO_DECORATOR_NODE";
151
- ModifyContentActionType["INSERT_NODE_TO_NEAREST_ROOT"] = "INSERT_NODE_TO_NEAREST_ROOT";
152
- ModifyContentActionType["PASTE_CONTENT"] = "PASTE_CONTENT";
153
- })(ModifyContentActionType || (ModifyContentActionType = {}));
154
- /**
155
- * Abstract class for update node content, delete node, insert node
156
- */
157
- class ModifyContentAction {
158
- constructor() {
159
- this.isFlushable = false;
160
- }
161
- }
162
-
163
- /**
164
- * Annotation to represent a link of grouped nodes
165
- */
166
- class LinkGroupAnnotation extends Annotation {
167
- constructor(groupKey) {
168
- super();
169
- this.type = InternalAnnotationTypeEnum.LINK_GROUP;
170
- this.linkGroups = new Map();
171
- this.linkGroups = new Map([[groupKey, []]]);
172
- }
173
- clone() {
174
- const clonedAnnotation = new LinkGroupAnnotation('');
175
- this.linkGroups.forEach((nodes, key) => {
176
- clonedAnnotation.linkGroups.set(key, nodes.map((node) => node.clone(node.parent)));
177
- });
178
- return clonedAnnotation;
179
- }
180
- /**
181
- * Convert the custom style, class and attribute to string which html can used
182
- *
183
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
184
- * @param {RTERenderContext} options - options.
185
- * @returns {string} - string.
186
- */
187
- toString(linkAnnotation, options) {
188
- const attributes = this.toJsx(linkAnnotation, options);
189
- return Object.entries(attributes)
190
- .map(([key, value]) => {
191
- const valueString = typeof value === 'string' ? value : this.formatStyleToString(value);
192
- return `${camelToDashCase(key)}="${valueString}"`;
193
- })
194
- .join(' ');
195
- }
196
- /**
197
- * Convert the custom style, class and attribute to JSX attributes
198
- *
199
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
200
- * @param {RTERenderContext} options - options.
201
- * @returns {Record<string, string | AnnotationStyle>} JSX used attributes.
202
- */
203
- toJsx(linkAnnotation, options) {
204
- const linkStyle = this.getStyle(linkAnnotation, options);
205
- const linkClass = this.getClass(linkAnnotation, options);
206
- const attributes = this.getAttribute(linkAnnotation);
207
- if (linkClass.length > 0) {
208
- attributes.class = linkClass.join(' ');
209
- }
210
- if (linkStyle && Object.keys(linkStyle).length > 0) {
211
- attributes.style = linkStyle;
212
- }
213
- return attributes;
214
- }
215
- /**
216
- * Get the custom class for the annotation
217
- *
218
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
219
- * @param {RTERenderContext} options - options.
220
- * @returns {string[]} Link class
221
- */
222
- getClass(linkAnnotation, options) {
223
- const linkClass = [];
224
- if (linkAnnotation.link.customClass)
225
- linkClass.push(...linkAnnotation.link.customClass);
226
- if (!(options === null || options === void 0 ? void 0 : options.standalone) && linkAnnotation.useInternalStyle)
227
- linkClass.push('v-rte--link');
228
- return linkClass;
229
- }
230
- /**
231
- * Get the custom style for the annotation
232
- *
233
- * @param {LinkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
234
- * @param {RTERenderContext} options - options.
235
- * @returns {AnnotationStyle} Link style
236
- */
237
- getStyle(linkAnnotation, options) {
238
- const linkStyle = {};
239
- if (linkAnnotation.link.customStyle)
240
- Object.assign(linkStyle, linkAnnotation.link.customStyle);
241
- if ((options === null || options === void 0 ? void 0 : options.standalone) && linkAnnotation.useInternalStyle) {
242
- linkStyle.color = 'rgba(var(--v-text-link, 19, 98, 226, 1))';
243
- }
244
- return linkStyle;
245
- }
246
- /**
247
- * Get the custom attribute for the annotation
248
- *
249
- * @param {LinkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
250
- * @returns {Record<string, string>} Link attributes
251
- */
252
- getAttribute(linkAnnotation) {
253
- const { href, customAttribute = {} } = linkAnnotation.link;
254
- const useInternalStyle = linkAnnotation.useInternalStyle;
255
- const target = customAttribute.target || (useInternalStyle ? '_blank' : '');
256
- return Object.assign(Object.assign(Object.assign({}, customAttribute), (href ? { href } : useInternalStyle ? { href } : {})), (target ? { target } : {}));
257
- }
258
- /**
259
- * Convert style to string which can be used to html string.
260
- *
261
- * @param {AnnotationStyle} style Style object.
262
- * @returns {string} Style string
263
- */
264
- formatStyleToString(style) {
265
- return Object.entries(style)
266
- .map(([key, value]) => `${camelToDashCase(key)}: ${value};`)
267
- .join(' ');
268
- }
269
- }
270
-
271
- /**
272
- * Annotation to make block with horizontal alignment
273
- */
274
- class HorizontalAlignmentAnnotation extends BlockAnnotation {
275
- constructor(textAlign) {
276
- super();
277
- this.type = BlockAnnotationTypeEnum.ALIGNMENT;
278
- this.textAlign = textAlign;
279
- }
280
- /**
281
- * Generate the map item for the annotation
282
- *
283
- * @param {VegaRTEBlockAlignment} textAlign - Text alignment
284
- * @returns {[BlockAnnotationTypeEnum.ALIGNMENT, HorizontalAlignmentAnnotation]} Map item for the annotation
285
- */
286
- static from(textAlign) {
287
- return [BlockAnnotationTypeEnum.ALIGNMENT, new HorizontalAlignmentAnnotation(textAlign)];
288
- }
289
- /**
290
- * Generate the JSON item of the annotation
291
- *
292
- * @returns {Record<string, unknown>} JSON representation of the annotation
293
- */
294
- toJSON() {
295
- return {
296
- textAlign: this.textAlign,
297
- };
298
- }
299
- /**
300
- * @inheritDoc
301
- */
302
- renderClass(options) {
303
- if (options === null || options === void 0 ? void 0 : options.standalone)
304
- return null;
305
- switch (this.textAlign) {
306
- case 'right':
307
- case 'center':
308
- case 'justify':
309
- return `v-rte--horizontal-alignment-${this.textAlign}`;
310
- case 'left':
311
- default:
312
- return `v-rte--horizontal-alignment-left`;
313
- }
314
- }
315
- /**
316
- * @inheritDoc
317
- */
318
- clone() {
319
- return new HorizontalAlignmentAnnotation(this.textAlign);
320
- }
321
- /**
322
- * @inheritDoc
323
- */
324
- renderStyle(options) {
325
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
326
- return null;
327
- switch (this.textAlign) {
328
- case 'right':
329
- case 'center':
330
- case 'justify':
331
- return { textAlign: this.textAlign };
332
- case 'left':
333
- default:
334
- return { textAlign: 'left' };
335
- }
336
- }
337
- }
338
-
339
- /**
340
- * Annotation for block indentation
341
- */
342
- class IndentAnnotation extends BlockAnnotation {
343
- constructor(indent) {
344
- super();
345
- this.type = BlockAnnotationTypeEnum.INDENT;
346
- this.indent = Math.max(0, indent);
347
- }
348
- /**
349
- * Generate the map item for the annotation
350
- *
351
- * @param {number} indent - Text alignment
352
- * @returns {[BlockAnnotationTypeEnum.INDENT, IndentAnnotation]} Map item for the annotation
353
- */
354
- static from(indent) {
355
- return [BlockAnnotationTypeEnum.INDENT, new IndentAnnotation(indent)];
356
- }
357
- /**
358
- * Generate the JSON item of the annotation
359
- *
360
- * @returns {Nullable<Record<string, unknown>>} JSON representation of the annotation
361
- */
362
- toJSON() {
363
- return this.indent > 0 ? { indent: this.indent } : null;
364
- }
365
- /**
366
- * @inheritDoc
367
- */
368
- clone() {
369
- return new IndentAnnotation(this.indent);
370
- }
371
- /**
372
- * @inheritDoc
373
- */
374
- renderClass() {
375
- return null;
376
- }
377
- /**
378
- * Generate the style for the annotation
379
- *
380
- * @returns {Nullable<AnnotationStyle>} - Annotation style
381
- */
382
- renderStyle() {
383
- return this.indent > 0 ? { marginLeft: `${this.indent * 16}px` } : null;
384
- }
385
- }
386
-
387
- /**
388
- * Registry for action handler interceptors, which can register and retrieve interceptors for specific actions and targets.
389
- */
390
- class ActionHandlerInterceptorRegistry {
391
- /**
392
- * Bind a specific strategy to a special action type of the rich text node.
393
- *
394
- * @param {string} actionType - The special action type or the action class name.
395
- * @param {string} targetClass - The rich text node class name.
396
- * @param {ActionHandlerInterceptor} strategy - The action handle strategy instance.
397
- */
398
- static register(actionType, targetClass, strategy) {
399
- if (!this.registry.has(targetClass)) {
400
- this.registry.set(targetClass, new Map());
401
- }
402
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
403
- if (!this.registry.get(targetClass).has(actionType)) {
404
- this.registry.get(targetClass).set(actionType, new Set());
405
- }
406
- this.registry.get(targetClass).get(actionType).add(strategy);
407
- /* eslint-enable @typescript-eslint/no-non-null-assertion */
408
- }
409
- /**
410
- * Unregister the strategy for the specific action type and target class.
411
- *
412
- * @param {string} actionType - The special action type or the action class name.
413
- * @param {string} targetClass - The rich text node class name.
414
- * @param {ActionHandlerInterceptor} strategy - The action handler interceptor instance.
415
- */
416
- static unregister(actionType, targetClass, strategy) {
417
- const strategyMap = this.registry.get(targetClass);
418
- if (strategyMap) {
419
- const strategySet = strategyMap.get(actionType);
420
- if (strategySet) {
421
- strategySet.delete(strategy);
422
- }
423
- }
424
- }
425
- /**
426
- * Get the special interceptor strategy that before handle the action logic.
427
- *
428
- * @typedef T generic type
429
- * @typedef target generic type
430
- * @param {RTEActionType} action - The special action .
431
- * @param {string} targetClass - The rich text node class name.
432
- * @returns {Nullable<ActionHandlerInterceptor<T, target>>} - The action handler interceptor instance or null if not found.
433
- */
434
- static get(action, targetClass) {
435
- const targetClassName = targetClass.constructor.name;
436
- const actionType = action instanceof ModifyContentAction ? action.type : action.constructor.name;
437
- const strategyMap = this.registry.get(targetClassName);
438
- if (strategyMap) {
439
- const set = strategyMap.get(actionType);
440
- if (set && set.size > 0) {
441
- return Array.from(set).find((interceptor) => interceptor.canIntercept(action, targetClass));
442
- }
443
- }
444
- }
445
- }
446
- ActionHandlerInterceptorRegistry.registry = new Map();
447
-
448
- /**
449
- * The strategies registry, contains static methods `register`, `get` and `getStrategyAndExecute`.
450
- */
451
- class ActionHandleStrategyRegistry {
452
- /**
453
- * Bind a specific strategy to a special action type of the rich text node.
454
- *
455
- * @param {string} actionType - The special action type or the action class name.
456
- * @param {string} targetClass - The rich text node class name.
457
- * @param {ActionHandleStrategy} strategy - The action handle strategy instance.
458
- */
459
- static register(actionType, targetClass, strategy) {
460
- if (!this.registry.has(targetClass)) {
461
- this.registry.set(targetClass, new Map());
462
- }
463
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
464
- this.registry.get(targetClass).set(actionType, strategy);
465
- }
466
- /**
467
- * Unregister the strategy for the specific action type and target class.
468
- *
469
- * @param {string} actionType - The special action type or the action class name.
470
- * @param {string} targetClass - The rich text node class name.
471
- */
472
- static unregister(actionType, targetClass) {
473
- const strategyMap = this.registry.get(targetClass);
474
- if (strategyMap) {
475
- strategyMap.delete(actionType);
476
- }
477
- }
478
- /**
479
- * Get the special strategy that handle the action logic.
480
- *
481
- * @typedef T generic type
482
- * @typedef target generic type
483
- * @typedef R generic type
484
- * @param {string} actionType - The special action type or the action class name.
485
- * @param {string} targetClass - The rich text node class name.
486
- * @returns {Nullable<ActionHandleStrategy<T, target, R>>} - The action handle strategy instance if defined.
487
- */
488
- static get(actionType, targetClass) {
489
- const strategyMap = this.registry.get(targetClass);
490
- if (strategyMap) {
491
- return strategyMap.get(actionType);
492
- }
493
- }
494
- /**
495
- * Get the special strategy from the registry and run the strategy execute method.
496
- *
497
- * @typedef R generic type
498
- * @param {ModifyContentAction | AnnotationAction} action - The update node action instance.
499
- * @param {RTENode | RTEBlock | VegaRTEContent} RTEInstance - The rich text editor node.
500
- * @returns {R | undefined} The return value of the strategy method execute invoke result.
501
- */
502
- static executeTheStrategy(action, RTEInstance) {
503
- const interceptor = ActionHandlerInterceptorRegistry.get(action, RTEInstance);
504
- // eslint-disable-next-line jsdoc/require-jsdoc
505
- const executeStrategy = () => {
506
- const actionType = action instanceof ModifyContentAction ? action.type : action.constructor.name;
507
- const strategy = ActionHandleStrategyRegistry.get(actionType, RTEInstance.constructor.name);
508
- if (strategy) {
509
- action['executedFlag'] = true;
510
- return strategy.execute(action, RTEInstance);
511
- }
512
- else {
513
- LogUtility.warn(`Type ${actionType} action handle strategy is not registered in class ${RTEInstance.constructor.name}`);
514
- }
515
- };
516
- if (interceptor) {
517
- return interceptor.intercept(executeStrategy, action, RTEInstance);
518
- }
519
- else {
520
- return executeStrategy();
521
- }
522
- }
523
- /**
524
- * Check if the action type can be handled by strategy for the specific RTE instance.
525
- *
526
- * @param {string} actionType - The special action type or the action class name.
527
- * @param {RTENode | RTEBlock | VegaRTEContent} RTEInstance - The rich text editor node.
528
- * @returns {boolean} - Whether the action type can be handled by the strategy.
529
- */
530
- static canHandle(actionType, RTEInstance) {
531
- const strategy = ActionHandleStrategyRegistry.get(actionType, RTEInstance.constructor.name);
532
- return strategy ? true : false;
533
- }
534
- }
535
- ActionHandleStrategyRegistry.registry = new Map();
536
-
537
- var CommonAnnotationTypeEnum;
538
- (function (CommonAnnotationTypeEnum) {
539
- CommonAnnotationTypeEnum["CUSTOM_ATTRIBUTE"] = "CUSTOM_ATTRIBUTE";
540
- CommonAnnotationTypeEnum["CUSTOM_CLASS"] = "CUSTOM_CLASS";
541
- CommonAnnotationTypeEnum["CUSTOM_STYLE"] = "CUSTOM_STYLE";
542
- })(CommonAnnotationTypeEnum || (CommonAnnotationTypeEnum = {}));
543
- /**
544
- * CommonAnnotation is an abstract class that represents common annotation for block and node.
545
- */
546
- class CommonAnnotation extends Annotation {
547
- }
548
-
549
- /**
550
- * Annotation to add custom attributes of element
551
- */
552
- class CustomAttributeAnnotation extends CommonAnnotation {
553
- constructor(customAttribute) {
554
- super();
555
- this.type = CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE;
556
- this.BOOLEAN_ATTRS = new Set([
557
- 'controls',
558
- 'disabled',
559
- 'checked',
560
- 'readonly',
561
- 'multiple',
562
- 'required',
563
- 'autoplay',
564
- 'muted',
565
- ]);
566
- this.customAttribute = customAttribute;
567
- }
568
- /**
569
- * Generate the map item for the annotation
570
- *
571
- * @param {Record<string, string>} customizeAttribute - custom attribute annotation
572
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE, CustomAttributeAnnotation]} Map item for the annotation
573
- */
574
- static from(customizeAttribute) {
575
- return [CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE, new CustomAttributeAnnotation(customizeAttribute)];
576
- }
577
- /**
578
- * Generate the JSON representation of the annotation
579
- *
580
- * @returns {Record<string, unknown>} JSON representation of the annotation
581
- */
582
- toJSON() {
583
- return {
584
- customAttribute: this.customAttribute,
585
- };
586
- }
587
- /**
588
- * Create a new custom attribute annotation
589
- *
590
- * @returns {CustomAttributeAnnotation} - Custom attribute annotation
591
- */
592
- clone() {
593
- return new CustomAttributeAnnotation(this.customAttribute);
594
- }
595
- /**
596
- * Generate the custom attribute of current element, excluding 'style' and 'class'
597
- *
598
- * @param {string[]} filterAttr - should filter these existed attrs
599
- * @returns {string[]} - Custom attributes
600
- */
601
- toString(filterAttr = []) {
602
- const filterAttrKeys = filterAttr.map((attr) => attr.split('=')[0]);
603
- return Object.keys(this.customAttribute)
604
- .map((key) => {
605
- return !filterAttrKeys.includes(key) ? `${key}="${this.customAttribute[key]}"` : null;
606
- })
607
- .filter(isNonNullable);
608
- }
609
- /**
610
- * Generate the custom attribute for the annotation
611
- *
612
- * @param {RTERenderCustomAttributes} options - should filter these certain attrs
613
- * @returns {Record<string, string>} custom attribute
614
- */
615
- render(options = {}) {
616
- var _a;
617
- const customAttribute = Object.assign({}, this.customAttribute);
618
- (_a = options.filterAttributes) === null || _a === void 0 ? void 0 : _a.forEach((attr) => delete customAttribute[attr]);
619
- Object.keys(customAttribute).forEach((key) => {
620
- if (this.BOOLEAN_ATTRS.has(key) && customAttribute[key] === '') {
621
- customAttribute[key] = 'true';
622
- }
623
- });
624
- return customAttribute;
625
- }
626
- }
627
-
628
- /**
629
- * Annotation to add custom class of element
630
- */
631
- class CustomClassAnnotation extends CommonAnnotation {
632
- constructor(customClass) {
633
- super();
634
- this.type = CommonAnnotationTypeEnum.CUSTOM_CLASS;
635
- this.customClass = customClass;
636
- }
637
- /**
638
- * Generate the map item for the annotation
639
- *
640
- * @param {string[]} customClass - custom class annotation
641
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_CLASS, CustomClassAnnotation]} Map item for the annotation
642
- */
643
- static from(customClass) {
644
- return [CommonAnnotationTypeEnum.CUSTOM_CLASS, new CustomClassAnnotation(customClass)];
645
- }
646
- /**
647
- * Generate the JSON representation of the annotation
648
- *
649
- * @returns {Record<string, unknown>} JSON representation of the annotation
650
- */
651
- toJSON() {
652
- return {
653
- customClass: this.customClass,
654
- };
655
- }
656
- /**
657
- * Create a new custom class annotation
658
- *
659
- * @returns {CustomClassAnnotation} - Custom class annotation
660
- */
661
- clone() {
662
- return new CustomClassAnnotation(this.customClass);
663
- }
664
- /**
665
- * Generate the custom class of current element
666
- *
667
- * @returns {string} - Custom class
668
- */
669
- toString() {
670
- return `class="${this.customClass.join(' ')}"`;
671
- }
672
- /**
673
- * Generate the custom attribute for the annotation
674
- *
675
- * @returns {string[]} custom classes
676
- */
677
- renderClass() {
678
- return this.customClass;
679
- }
680
- }
681
-
682
- /**
683
- * Annotation to add custom attributes of element
684
- */
685
- class CustomStyleAnnotation extends CommonAnnotation {
686
- constructor(customStyle) {
687
- super();
688
- this.type = CommonAnnotationTypeEnum.CUSTOM_STYLE;
689
- this.customStyle = customStyle;
690
- }
691
- /**
692
- * Generate the map item for the annotation
693
- *
694
- * @param {AnnotationStyle} customStyle - custom attribute annotation
695
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_STYLE, CustomStyleAnnotation]} Map item for the annotation
696
- */
697
- static from(customStyle) {
698
- return [CommonAnnotationTypeEnum.CUSTOM_STYLE, new CustomStyleAnnotation(customStyle)];
699
- }
700
- /**
701
- * Generate the JSON representation of the annotation
702
- *
703
- * @returns {Record<string, unknown>} JSON representation of the annotation
704
- */
705
- toJSON() {
706
- return {
707
- customStyle: this.customStyle,
708
- };
709
- }
710
- /**
711
- * Create a new custom attribute annotation
712
- *
713
- * @returns {CustomStyleAnnotation} - Custom attribute annotation
714
- */
715
- clone() {
716
- return new CustomStyleAnnotation(this.customStyle);
717
- }
718
- /**
719
- * Generate the custom attribute for the annotation
720
- *
721
- * @returns {AnnotationStyle} custom attribute
722
- */
723
- renderStyle() {
724
- return this.customStyle;
725
- }
726
- /**
727
- * Remove the style
728
- *
729
- * @param {string[]} styleKeys - custom attribute annotation
730
- * @returns {AnnotationStyle} Map item for the annotation
731
- */
732
- removeStyles(styleKeys) {
733
- const customStyle = Object.assign({}, this.customStyle);
734
- styleKeys.forEach((item) => delete customStyle[item]);
735
- return customStyle;
736
- }
737
- /**
738
- * Generate the custom style string for the annotation
739
- *
740
- * @returns {string} custom style string
741
- */
742
- toString() {
743
- return `style="${Object.entries(this.customStyle)
744
- .map(([key, value]) => `${key}: ${value};`)
745
- .join(' ')}"`;
746
- }
747
- }
748
-
749
- /**
750
- * Internal wrapper annotation for block node.
751
- */
752
- class InternalWrapperAnnotation extends BlockAnnotation {
753
- constructor(internalWrapper) {
754
- super();
755
- this.type = BlockAnnotationTypeEnum.INTERNAL_WRAPPER;
756
- this.internalWrapper = internalWrapper;
757
- }
758
- /**
759
- * @inheritDoc
760
- */
761
- static from(internalWrapper) {
762
- return [BlockAnnotationTypeEnum.INTERNAL_WRAPPER, new InternalWrapperAnnotation(internalWrapper)];
763
- }
764
- /**
765
- * @inheritDoc
766
- */
767
- clone() {
768
- return new InternalWrapperAnnotation(this.internalWrapper);
769
- }
770
- /**
771
- * @inheritDoc
772
- */
773
- renderClass() {
774
- return undefined;
775
- }
776
- /**
777
- * @inheritDoc
778
- */
779
- renderStyle() {
780
- return undefined;
781
- }
782
- /**
783
- * @inheritDoc
784
- */
785
- toJSON() {
786
- return this.internalWrapper ? { internalWrapper: this.internalWrapper } : undefined;
787
- }
788
- }
789
-
790
- var NodeAnnotationTypeEnum;
791
- (function (NodeAnnotationTypeEnum) {
792
- NodeAnnotationTypeEnum["BOLD"] = "BOLD";
793
- NodeAnnotationTypeEnum["ITALIC"] = "ITALIC";
794
- NodeAnnotationTypeEnum["UNDERLINE"] = "UNDERLINE";
795
- NodeAnnotationTypeEnum["STRIKETHROUGH"] = "STRIKETHROUGH";
796
- NodeAnnotationTypeEnum["SELECTION_RANGE"] = "SELECTION_RANGE";
797
- NodeAnnotationTypeEnum["IMAGE"] = "IMAGE";
798
- NodeAnnotationTypeEnum["CODE"] = "CODE";
799
- NodeAnnotationTypeEnum["TEXT_COLOR"] = "TEXT_COLOR";
800
- NodeAnnotationTypeEnum["LINK"] = "LINK";
801
- NodeAnnotationTypeEnum["INLINE_HTML"] = "INLINE_HTML";
802
- NodeAnnotationTypeEnum["PLAIN_TEXT"] = "PLAIN_TEXT";
803
- })(NodeAnnotationTypeEnum || (NodeAnnotationTypeEnum = {}));
804
- /**
805
- * Abstract class for all annotations
806
- */
807
- class NodeAnnotation extends Annotation {
808
- }
809
-
810
- /**
811
- * Class to handle the style representation of annotations for RTE blocks and nodes.
812
- */
813
- class RTEAnnotationStyle {
814
- constructor(dto) {
815
- this.dtoType = dto instanceof RTEBlock ? 'block' : 'node';
816
- this.annotationMap = dto.annotationMap;
817
- }
818
- /**
819
- * Convert an AnnotationStyle object to a CSS text string.
820
- *
821
- * @param {RTERenderContext} options - Rendering context options.
822
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
823
- * @param {Nullable<AnnotationStyle>} annotationStyle - The annotation style object, if null, get from toJSON().
824
- * @returns {string} A string representing the CSS text.
825
- */
826
- toCssText(options = { standalone: false }, canMergeKeyList, annotationStyle) {
827
- annotationStyle = annotationStyle ? annotationStyle : this.toJSON(options, canMergeKeyList);
828
- return Object.entries(Object.assign({}, annotationStyle))
829
- .map(([key, value]) => `${camelToDashCase(key)}: ${value};`)
830
- .join('');
831
- }
832
- /**
833
- * Convert the annotation map to a JSON representation.
834
- *
835
- * @param {RTERenderContext} options - Rendering context options.
836
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
837
- * @returns {AnnotationStyle} - The JSON representation of the annotation styles.
838
- */
839
- toJSON(options = { standalone: false }, canMergeKeyList) {
840
- const styles = Array.from(this.annotationMap.values())
841
- .filter((annotation) => this.filterAnnotation(annotation) || annotation instanceof CustomStyleAnnotation)
842
- .map((annotation) => annotation.renderStyle(options))
843
- .filter(isNonNullable);
844
- if (canMergeKeyList && canMergeKeyList.length > 0) {
845
- return this.mergeAnnotationStyles(styles, canMergeKeyList);
846
- }
847
- else {
848
- return styles.reduce((current, obj) => (Object.assign(Object.assign({}, current), obj)), {});
849
- }
850
- }
851
- /**
852
- * Filter annotations based on whether they are block or node annotations.
853
- *
854
- * @param {RTENodeAnnotationMapValue | RTEBlockAnnotationMapValue} annotation - The annotation to filter.
855
- * @returns {boolean} - True if the annotation matches the DTO type, false otherwise.
856
- */
857
- filterAnnotation(annotation) {
858
- return this.dtoType === 'block'
859
- ? annotation instanceof BlockAnnotation
860
- : annotation instanceof NodeAnnotation;
861
- }
862
- /**
863
- * Merge an array of annotation styles into a single style object.
864
- * e.g.,
865
- * { textDecoration: 'underline', textDecoration: 'line-through' }
866
- * -> { textDecoration: 'underline line-through' }
867
- *
868
- * @param {AnnotationStyle[]} styles - Array of annotation style objects to merge.
869
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
870
- * @returns {AnnotationStyle} - The merged annotation style object.
871
- */
872
- mergeAnnotationStyles(styles, canMergeKeyList) {
873
- const merged = {};
874
- for (const style of styles) {
875
- for (const key in style) {
876
- const value = style[key];
877
- const existing = merged[key];
878
- if (typeof existing === 'string' &&
879
- typeof value === 'string' &&
880
- canMergeKeyList.includes(key)) {
881
- merged[key] = Array.from(new Set(`${existing} ${value}`.split(/\s+/).filter(Boolean))).join(' ');
882
- }
883
- else {
884
- merged[key] = value;
885
- }
886
- }
887
- }
888
- return merged;
889
- }
890
- }
891
-
892
- var NodeTypeEnum;
893
- (function (NodeTypeEnum) {
894
- NodeTypeEnum["TEXT"] = "TEXT";
895
- NodeTypeEnum["IMAGE"] = "IMAGE";
896
- NodeTypeEnum["CODE_BLOCK_NODE"] = "CODE_BLOCK_NODE";
897
- })(NodeTypeEnum || (NodeTypeEnum = {}));
898
- /**
899
- * Abstract class for all nodes
900
- */
901
- class RTENode {
902
- constructor(id, annotationMap) {
903
- this.annotationMap = new Map();
904
- this.id = id;
905
- if (annotationMap) {
906
- this.annotationMap = annotationMap;
907
- }
908
- }
909
- /**
910
- * Creates a new instance of the RTENode from the given JSON data.
911
- *
912
- * @param {unknown} json - The JSON data to create the node from.
913
- * @param {RTEBlock} parentBlock - The parent block of the node.
914
- * @param {VegaRTETransformOptions} options - Options for transforming the node.
915
- */
916
- static from(json, parentBlock, options) {
917
- throw new Error(`[Vega] ${this.constructor.name}.from(${JSON.stringify(json)}, ${parentBlock}, ${options}) is not implemented. Please implement this method in the subclass.`);
918
- }
919
- /**
920
- * Creates different types of text annotations based on the provided type and value.
921
- *
922
- * @param {keyof VegaRTETextAnnotations} type - The key of the type.
923
- * @param {unknown} value - The value that will be used to create the specific type of annotation entity based on the `type` provided.
924
- * @returns {Nullable<[RTENodeAnnotationMapKey, RTENodeAnnotationMapValue]>} Returning a nullable tuple containing a key and a
925
- * value from the `RTENodeAnnotationMapKey` and `RTENodeAnnotationMapValue` types.
926
- */
927
- static createAnnotationEntity(type, value) {
928
- switch (type) {
929
- case 'customAttribute':
930
- return CustomAttributeAnnotation.from(value);
931
- case 'customClass':
932
- return CustomClassAnnotation.from(value);
933
- case 'customStyle':
934
- return CustomStyleAnnotation.from(value);
935
- }
936
- }
937
- /**
938
- * Get annotation by type
939
- *
940
- * @typedef T generic type
941
- * @param {RTENodeAnnotationMapKey} type - Annotation type
942
- * @returns {Nullable<T>} - Annotation
943
- */
944
- getAnnotationByType(type) {
945
- return this.annotationMap.get(type);
946
- }
947
- /**
948
- * Delete annotation by type
949
- *
950
- * @param {RTENodeAnnotationMapKey} type - Annotation type
951
- */
952
- deleteAnnotationByType(type) {
953
- this.annotationMap.delete(type);
954
- this.flushChange();
955
- }
956
- /**
957
- * Apply action to node
958
- *
959
- * @param {AnnotationAction} action - Annotation action
960
- * @returns {this} - Node
961
- */
962
- apply(action) {
963
- this.doApply(action);
964
- if (action.isFlushable) {
965
- this.flushChange();
966
- }
967
- return this;
968
- }
969
- /**
970
- * Get styles from annotations
971
- *
972
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
973
- * @returns {AnnotationStyle} - Annotation styles
974
- */
975
- getStyles(options = { standalone: false }) {
976
- const rteAnnotationStyle = new RTEAnnotationStyle(this);
977
- return rteAnnotationStyle.toJSON(options, ['textDecoration']);
978
- }
979
- /**
980
- * Get classes from annotations
981
- *
982
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
983
- * @returns {string} - Annotation style
984
- */
985
- getClasses(options = { standalone: false }) {
986
- return Array.from(this.annotationMap.values())
987
- .filter((annotation) => annotation instanceof NodeAnnotation || annotation instanceof CustomClassAnnotation)
988
- .map((annotation) => annotation.renderClass(options))
989
- .filter(isNonNullable)
990
- .reduce((pre, cur) => [pre, cur].join(' ').trim(), '');
991
- }
992
- /**
993
- * Get custom attribute annotation, excluding "class" and "style"
994
- *
995
- * @returns {CustomAttributeAnnotation} - custom attribute annotation
996
- */
997
- getCustomAttributesAnnotation() {
998
- return this.annotationMap.get(CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE);
999
- }
1000
- /**
1001
- * Check if the node is a text node.
1002
- *
1003
- * @returns {boolean} - True if the node is a text node, false otherwise.
1004
- */
1005
- isTextNode() {
1006
- return false;
1007
- }
1008
- /**
1009
- * Get the HTMLElement reference associated with this node.
1010
- *
1011
- * @returns {Nullable<HTMLElement>} The HTMLElement reference or null if not found.
1012
- */
1013
- getElementRef() {
1014
- return stateEntityRenderingRegistry.getDOMByEntity(this);
1015
- }
1016
- /**
1017
- * Generate attributes as string
1018
- *
1019
- * @param {...string} attrs - Additional attributes to include
1020
- * @returns {string} - Attributes as string
1021
- */
1022
- generateAttributeString(...attrs) {
1023
- var _a;
1024
- const nodeAnnotationStyle = new RTEAnnotationStyle(this);
1025
- const styles = nodeAnnotationStyle.toCssText({ standalone: true }, [
1026
- 'textDecoration',
1027
- ]);
1028
- const customClassAnnotation = this.annotationMap.get(CommonAnnotationTypeEnum.CUSTOM_CLASS);
1029
- const customAttributeString = ((_a = this.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.toString(attrs)) || [];
1030
- const attributes = [
1031
- ...customAttributeString,
1032
- customClassAnnotation === null || customClassAnnotation === void 0 ? void 0 : customClassAnnotation.toString(),
1033
- styles ? `style="${styles}"` : null,
1034
- ...attrs,
1035
- ].filter(isNonNullable);
1036
- return attributes.length ? ` ${attributes.join(' ')}` : '';
1037
- }
1038
- /**
1039
- * apply annotation action or modify content action
1040
- *
1041
- * @param {AnnotationAction | ModifyContentAction} action annotation type action or modify content type action
1042
- */
1043
- doApply(action) {
1044
- if (action instanceof ModifyContentAction) {
1045
- this.doModifyActionApply(action);
1046
- }
1047
- else {
1048
- this.doAnnotationActionApply(action);
1049
- }
1050
- }
1051
- /**
1052
- * Flush the value change
1053
- */
1054
- flushChange() {
1055
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
1056
- if (domNode) {
1057
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, VegaInternalRichTextEditorFlushChanges);
1058
- if (nodeSubject) {
1059
- ChangeManager.notify(nodeSubject, {});
1060
- }
1061
- }
1062
- }
1063
- /**
1064
- * Clones the annotations of the current RTETextNode.
1065
- *
1066
- * @returns {NodeAnnotations} A new Map containing cloned annotations.
1067
- */
1068
- cloneAnnotations() {
1069
- return new Map(Array.from(this.annotationMap.entries()).map(([key, value]) => [key, value.clone()]));
1070
- }
1071
- /* istanbul ignore next */
1072
- /**
1073
- * Placeholder for the method to be implemented in sub classes.
1074
- *
1075
- * @param {AnnotationAction} action Annotation action
1076
- */
1077
- doAnnotationActionApply(action) {
1078
- }
1079
- /* istanbul ignore next */
1080
- /**
1081
- * Placeholder for the method to be implemented in sub classes.
1082
- *
1083
- * @param {ModifyContentAction} action ModifyContentAction
1084
- */
1085
- doModifyActionApply(action) {
1086
- }
1087
- }
1088
-
1089
- /**
1090
- * RTEDTOClassManager is a singleton class that manages the registration and retrieval of RTE DTO classes.
1091
- * It allows for the dynamic handling of different RTE blocks and nodes by their types.
1092
- */
1093
- class RTEDTOClassManager {
1094
- constructor() {
1095
- // Register RTE Block DTO classes.
1096
- this.RTE_BLOCK_DTO_CLASS_MAP = new Map();
1097
- // Register RTE Block DTO classes.
1098
- this.RTE_NODE_DTO_CLASS_MAP = new Map();
1099
- }
1100
- /**
1101
- * Registers a new RTE DTO class.
1102
- *
1103
- * @typedef T - The type of the RTE DTO class to register.
1104
- * @param {string} type - The type identifier for the RTE DTO class.
1105
- * @param {ClassType<T>} RTEDTOClass - The class constructor for the RTE DTO.
1106
- */
1107
- registerRTEDTOClass(type, RTEDTOClass) {
1108
- if (RTEDTOClass.prototype instanceof RTEBlock) {
1109
- this.RTE_BLOCK_DTO_CLASS_MAP.set(type, RTEDTOClass);
1110
- }
1111
- else if (RTEDTOClass.prototype instanceof RTENode) {
1112
- this.RTE_NODE_DTO_CLASS_MAP.set(type, RTEDTOClass);
1113
- }
1114
- else {
1115
- throw new Error(`Invalid RTE DTO class type: ${type}`);
1116
- }
1117
- }
1118
- /**
1119
- * Retrieves the RTE block class for a given type.
1120
- *
1121
- * @param {string} type - The type identifier for the RTE block.
1122
- * @returns {Nullable<RTEBlockDTOClass>} - The class constructor for the RTE block, or null if not found.
1123
- */
1124
- getRTEBlockClass(type) {
1125
- return this.RTE_BLOCK_DTO_CLASS_MAP.get(type);
1126
- }
1127
- /**
1128
- * Retrieves the RTE node class for a given type.
1129
- *
1130
- * @param {string} type - The type identifier for the RTE node.
1131
- * @returns {Nullable<RTENodeDTOClass>} - The class constructor for the RTE node, or null if not found.
1132
- */
1133
- getRTENodeClass(type) {
1134
- return this.RTE_NODE_DTO_CLASS_MAP.get(type);
1135
- }
1136
- }
1137
- const RTEDTOClassManager$1 = new RTEDTOClassManager();
1138
-
1139
- /**
1140
- * Abstract class for block
1141
- */
1142
- class RTEBlock {
1143
- constructor(id) {
1144
- this.annotationMap = new Map();
1145
- this.id = id;
1146
- }
1147
- /**
1148
- * Creates a new instance of the block from the given JSON object.
1149
- *
1150
- * @param {unknown} json - The JSON object to create the block from.
1151
- * @param {VegaRTETransformOptions} options - Options for transforming the block.
1152
- */
1153
- static from(json, options) {
1154
- throw new Error(`[Vega] ${this.constructor.name}.from(${JSON.stringify(json)}, ${options}) is not implemented. Please implement this method in the subclass.`);
1155
- }
1156
- /**
1157
- * Generates block children from an array of VegaRTEContentBlock.
1158
- *
1159
- * @param {VegaRTEContentBlock[]} blockArray - The array of VegaRTEContentBlock to generate children from.
1160
- * @param {VegaRTETransformOptions} [options] - Optional transformation options.
1161
- * @param {VegaRTEContent | RTEBlock} [parentBlock] - Optional parent block.
1162
- * @returns {RTEBlock[]} An array of generated RTEBlock children.
1163
- */
1164
- static generateBlockChildren(blockArray, options, parentBlock) {
1165
- return blockArray
1166
- .map((child) => {
1167
- const BlockClass = RTEDTOClassManager$1.getRTEBlockClass(child.type);
1168
- if (BlockClass) {
1169
- const block = BlockClass.from(child, options);
1170
- block.parent = parentBlock;
1171
- return block;
1172
- }
1173
- })
1174
- .filter(isNonNullable);
1175
- }
1176
- /**
1177
- * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
1178
- * and value.
1179
- *
1180
- * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
1181
- * the type of annotation entity to create.
1182
- * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
1183
- * that will be used to create the annotation entity. It can be of any type depending on the specific
1184
- * annotation being created.
1185
- * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
1186
- * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
1187
- */
1188
- static createAnnotationEntity(type, value) {
1189
- switch (type) {
1190
- case 'textAlign':
1191
- return HorizontalAlignmentAnnotation.from(value);
1192
- case 'indent':
1193
- return IndentAnnotation.from(value);
1194
- case 'customAttribute':
1195
- return CustomAttributeAnnotation.from(value);
1196
- case 'customClass':
1197
- return CustomClassAnnotation.from(value);
1198
- case 'customStyle':
1199
- return CustomStyleAnnotation.from(value);
1200
- case 'internalWrapper':
1201
- return InternalWrapperAnnotation.from(value);
1202
- }
1203
- }
1204
- /**
1205
- * Converts annotations to an array of block annotation entities.
1206
- *
1207
- * @param {BlockAnnotations} annotationMap - The map to store the converted annotations.
1208
- * @param {VegaRTEBlockAnnotations} annotations - The annotations to convert.
1209
- */
1210
- static convertAnnotationsToMap(annotationMap, annotations) {
1211
- Object.entries(annotations).forEach(([type, value]) => {
1212
- const item = this.createAnnotationEntity(type, value);
1213
- if (isNonNullable(item)) {
1214
- annotationMap.set(...item);
1215
- }
1216
- });
1217
- }
1218
- /**
1219
- * Check if the block should be rendered as a wrapper.
1220
- *
1221
- * @returns {boolean} - Returns true if the block is an internal wrapper.
1222
- */
1223
- shouldRenderAsInternalWrapper() {
1224
- const internalWrapperAnnotation = this.getAnnotationByType(BlockAnnotationTypeEnum.INTERNAL_WRAPPER);
1225
- if (internalWrapperAnnotation) {
1226
- return (internalWrapperAnnotation.internalWrapper &&
1227
- Array.from(this.annotationMap.values()).filter((annotation) => !(annotation instanceof LinkGroupAnnotation) &&
1228
- !(annotation instanceof InternalWrapperAnnotation)).length === 0);
1229
- }
1230
- else {
1231
- return false;
1232
- }
1233
- }
1234
- /**
1235
- * Class to JSON object
1236
- *
1237
- * @returns {VegaRTEBlockBase} - JSON object
1238
- */
1239
- toJSON() {
1240
- const annotations = Array.from(this.annotationMap.values())
1241
- .filter((annotation) => annotation instanceof BlockAnnotation || annotation instanceof CommonAnnotation)
1242
- .reduce((record, annotation) => {
1243
- return Object.assign(Object.assign({}, record), annotation.toJSON());
1244
- }, {});
1245
- return Object.assign({ id: this.id }, (Object.keys(annotations).length > 0 ? { annotations } : {}));
1246
- }
1247
- /**
1248
- * Get annotation by type
1249
- *
1250
- * @typedef T generic type
1251
- * @param {string} type - Annotation type
1252
- * @returns {Nullable<T>} - Annotation
1253
- */
1254
- getAnnotationByType(type) {
1255
- return this.annotationMap.get(type);
1256
- }
1257
- /**
1258
- * Apply action to block
1259
- *
1260
- * @param {AnnotationAction} action - Annotation action
1261
- */
1262
- apply(action) {
1263
- this.doApply(action);
1264
- if (action.isFlushable) {
1265
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
1266
- if (domNode) {
1267
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, VegaInternalRichTextEditorFlushChanges);
1268
- if (nodeSubject) {
1269
- ChangeManager.notify(nodeSubject, {});
1270
- }
1271
- }
1272
- }
1273
- }
1274
- /**
1275
- * Get the first node of the block
1276
- *
1277
- * @returns {Nullable<RTENode>} The first RTENode or null if no children exist.
1278
- */
1279
- getFirstNode() {
1280
- if (!this.children || !this.children[0])
1281
- return null;
1282
- const firstItem = this.children[0];
1283
- if (firstItem instanceof RTEBlock) {
1284
- return firstItem.getFirstNode();
1285
- }
1286
- return firstItem;
1287
- }
1288
- /**
1289
- * Check if the block is a list item block
1290
- *
1291
- * @returns {boolean} True if the block is a list item block, false otherwise.
1292
- */
1293
- isListItemBlock() {
1294
- return this.type === 'list-item';
1295
- }
1296
- /**
1297
- * Get styles from annotations
1298
- *
1299
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
1300
- * @returns {AnnotationStyle} - Annotation styles
1301
- */
1302
- getStyles(options = { standalone: false }) {
1303
- const rteAnnotationStyle = new RTEAnnotationStyle(this);
1304
- const blockAnnotationStyle = rteAnnotationStyle.toJSON(options);
1305
- return Object.assign(Object.assign({}, blockAnnotationStyle), (this.shouldRenderAsInternalWrapper() ? { display: 'contents' } : {}));
1306
- }
1307
- /**
1308
- * Get classes from annotations
1309
- *
1310
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control standalone mode
1311
- * @returns {string} - Annotation style
1312
- */
1313
- getClasses(options = { standalone: false }) {
1314
- return Array.from(this.annotationMap.values())
1315
- .filter((annotation) => annotation instanceof BlockAnnotation || annotation instanceof CustomClassAnnotation)
1316
- .map((annotation) => annotation.renderClass(options))
1317
- .filter(isNonNullable)
1318
- .reduce((pre, cur) => [pre, cur].join(' ').trim(), '');
1319
- }
1320
- /**
1321
- * Get custom attribute annotation, excluding "class" and "style"
1322
- *
1323
- * @returns {Nullable<CustomAttributeAnnotation>} - custom attribute annotation
1324
- */
1325
- getCustomAttributesAnnotation() {
1326
- return this.annotationMap.get(CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE);
1327
- }
1328
- /**
1329
- * Generate attributes as string
1330
- *
1331
- * @param {...string} attrs - Additional attributes to include
1332
- * @returns {string} - Attributes as string
1333
- */
1334
- generateAttributeString(...attrs) {
1335
- var _a;
1336
- const blockAnnotationStyle = new RTEAnnotationStyle(this);
1337
- const styles = blockAnnotationStyle.toCssText({ standalone: true });
1338
- const customClassAnnotation = this.annotationMap.get(CommonAnnotationTypeEnum.CUSTOM_CLASS);
1339
- const customAttributeString = ((_a = this.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.toString(attrs)) || [];
1340
- const attributes = [
1341
- ...customAttributeString,
1342
- customClassAnnotation === null || customClassAnnotation === void 0 ? void 0 : customClassAnnotation.toString(),
1343
- styles ? `style="${styles}"` : null,
1344
- ...attrs,
1345
- ].filter(isNonNullable);
1346
- return attributes.length ? ` ${attributes.join(' ')}` : '';
1347
- }
1348
- /**
1349
- * Apply action to block
1350
- *
1351
- * @param {AnnotationAction|ModifyContentAction} action - Annotation action
1352
- */
1353
- doApply(action) {
1354
- if (action instanceof ModifyContentAction) {
1355
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
1356
- }
1357
- else {
1358
- this.applyAnnotationAction(action);
1359
- }
1360
- }
1361
- /**
1362
- * Apply annotation action to block
1363
- *
1364
- * @param {AnnotationAction} action - Annotation action
1365
- */
1366
- applyAnnotationAction(action) {
1367
- const annotation = action.toAnnotation();
1368
- if (!(annotation instanceof LinkGroupAnnotation)) {
1369
- this.annotationMap.set(annotation.type, annotation);
1370
- }
1371
- typeof this.doAnnotationActionApply === 'function' && this.doAnnotationActionApply(action);
1372
- }
1373
- /**
1374
- * clone annotations of the block
1375
- *
1376
- * @returns {BlockAnnotations} - Cloned annotations
1377
- */
1378
- cloneAnnotations() {
1379
- return new Map(Array.from(this.annotationMap.entries()).map(([key, value]) => [key, value.clone()]));
1380
- }
1381
- }
1382
-
1383
- /**
1384
- * Abstract class for annotation actions
1385
- */
1386
- class AnnotationAction {
1387
- }
1388
-
1389
- /**
1390
- * Abstract class for which can be splittable
1391
- */
1392
- class TextSplittableAction extends AnnotationAction {
1393
- constructor() {
1394
- super(...arguments);
1395
- /**
1396
- * Whether the action should split the node
1397
- */
1398
- this.doSplit = true;
1399
- }
1400
- }
1401
-
1402
- /**
1403
- * Annotation to represent a selection range
1404
- */
1405
- class SelectionRangeAnnotation extends Annotation {
1406
- constructor(range) {
1407
- super();
1408
- this.type = InternalAnnotationTypeEnum.SELECTION_RANGE;
1409
- this.range = range;
1410
- }
1411
- /**
1412
- * Clone the selection range annotation
1413
- *
1414
- * @returns {SelectionRangeAnnotation} A cloned instance of the selection range annotation
1415
- */
1416
- clone() {
1417
- return new SelectionRangeAnnotation(this.range);
1418
- }
1419
- }
1420
-
1421
- /**
1422
- * Annotation to make text with strikethrough
1423
- */
1424
- class StrikethroughAnnotation extends NodeAnnotation {
1425
- constructor(underline) {
1426
- super();
1427
- this.type = NodeAnnotationTypeEnum.STRIKETHROUGH;
1428
- this.strikethrough = underline;
1429
- }
1430
- /**
1431
- * Generate the map item for the annotation
1432
- *
1433
- * @param {Nullable<boolean>} strikethrough - Strikethrough annotation
1434
- * @returns {[NodeAnnotationTypeEnum.STRIKETHROUGH, StrikethroughAnnotation]} Map item for the annotation
1435
- */
1436
- static from(strikethrough) {
1437
- return [NodeAnnotationTypeEnum.STRIKETHROUGH, new StrikethroughAnnotation(strikethrough)];
1438
- }
1439
- /**
1440
- * Generate the JSON representation of the annotation
1441
- *
1442
- * @returns {Record<string, unknown>} JSON representation of the annotation
1443
- */
1444
- toJSON() {
1445
- return {
1446
- strikethrough: this.strikethrough,
1447
- };
1448
- }
1449
- /**
1450
- * @inheritDoc
1451
- */
1452
- clone() {
1453
- return new StrikethroughAnnotation(this.strikethrough);
1454
- }
1455
- /**
1456
- * @inheritDoc
1457
- */
1458
- renderClass(options) {
1459
- if (options === null || options === void 0 ? void 0 : options.standalone)
1460
- return null;
1461
- return this.strikethrough ? 'v-rte--strikethrough' : null;
1462
- }
1463
- /**
1464
- * @inheritDoc
1465
- */
1466
- renderStyle(options) {
1467
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1468
- return null;
1469
- return this.strikethrough ? { textDecoration: 'line-through' } : null;
1470
- }
1471
- }
1472
-
1473
- /**
1474
- * Annotation to make text with underline
1475
- */
1476
- class UnderlineAnnotation extends NodeAnnotation {
1477
- constructor(underline) {
1478
- super();
1479
- this.type = NodeAnnotationTypeEnum.UNDERLINE;
1480
- this.underline = underline;
1481
- }
1482
- /**
1483
- * Generate the map item for the annotation
1484
- *
1485
- * @param {boolean} underline - Underline annotation
1486
- * @returns {[NodeAnnotationTypeEnum.UNDERLINE, UnderlineAnnotation]} Map item for the annotation
1487
- */
1488
- static from(underline) {
1489
- return [NodeAnnotationTypeEnum.UNDERLINE, new UnderlineAnnotation(underline)];
1490
- }
1491
- /**
1492
- * Generate the JSON representation of the annotation
1493
- *
1494
- * @returns {Record<string, unknown>} JSON representation of the annotation
1495
- */
1496
- toJSON() {
1497
- return {
1498
- underline: this.underline,
1499
- };
1500
- }
1501
- /**
1502
- * @inheritDoc
1503
- */
1504
- clone() {
1505
- return new UnderlineAnnotation(this.underline);
1506
- }
1507
- /**
1508
- * @inheritDoc
1509
- */
1510
- renderClass(options) {
1511
- if (options === null || options === void 0 ? void 0 : options.standalone)
1512
- return null;
1513
- return this.underline ? 'v-rte--underline' : null;
1514
- }
1515
- /**
1516
- * @inheritDoc
1517
- */
1518
- renderStyle(options) {
1519
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1520
- return null;
1521
- return this.underline ? { textDecoration: 'underline' } : null;
1522
- }
1523
- }
1524
-
1525
- /**
1526
- * Annotation to make text Italic
1527
- */
1528
- class ItalicAnnotation extends NodeAnnotation {
1529
- constructor(italic) {
1530
- super();
1531
- this.type = NodeAnnotationTypeEnum.ITALIC;
1532
- this.italic = italic;
1533
- }
1534
- /**
1535
- * Generate the map item for the annotation
1536
- *
1537
- * @param {boolean} italic - Italic annotation
1538
- * @returns {[NodeAnnotationTypeEnum.ITALIC, ItalicAnnotation]} Map item for the annotation
1539
- */
1540
- static from(italic) {
1541
- return [NodeAnnotationTypeEnum.ITALIC, new ItalicAnnotation(italic)];
1542
- }
1543
- /**
1544
- * Generate the JSON representation of the annotation
1545
- *
1546
- * @returns {Record<string, unknown>} JSON representation of the annotation
1547
- */
1548
- toJSON() {
1549
- return {
1550
- italic: this.italic,
1551
- };
1552
- }
1553
- /**
1554
- * @inheritDoc
1555
- */
1556
- clone() {
1557
- return new ItalicAnnotation(this.italic);
1558
- }
1559
- /**
1560
- * @inheritDoc
1561
- */
1562
- renderClass(options) {
1563
- if (options === null || options === void 0 ? void 0 : options.standalone)
1564
- return null;
1565
- return this.italic ? 'v-rte--italic' : null;
1566
- }
1567
- /**
1568
- * @inheritDoc
1569
- */
1570
- renderStyle(options) {
1571
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1572
- return null;
1573
- return this.italic ? { fontStyle: 'italic' } : null;
1574
- }
1575
- }
1576
-
1577
- /**
1578
- * Annotation to make text bold
1579
- */
1580
- class BoldAnnotation extends NodeAnnotation {
1581
- constructor(bold) {
1582
- super();
1583
- this.type = NodeAnnotationTypeEnum.BOLD;
1584
- this.bold = bold;
1585
- }
1586
- /**
1587
- * Generate the map item for the annotation
1588
- *
1589
- * @param {boolean} bold - Bold annotation
1590
- * @returns {[NodeAnnotationTypeEnum.BOLD, BoldAnnotation]} Map item for the annotation
1591
- */
1592
- static from(bold) {
1593
- return [NodeAnnotationTypeEnum.BOLD, new BoldAnnotation(bold)];
1594
- }
1595
- /**
1596
- * Generate the JSON representation of the annotation
1597
- *
1598
- * @returns {Record<string, unknown>} JSON representation of the annotation
1599
- */
1600
- toJSON() {
1601
- return {
1602
- bold: this.bold,
1603
- };
1604
- }
1605
- /**
1606
- * @inheritDoc
1607
- */
1608
- clone() {
1609
- return new BoldAnnotation(this.bold);
1610
- }
1611
- /**
1612
- * @inheritDoc
1613
- */
1614
- renderClass(options) {
1615
- if (options === null || options === void 0 ? void 0 : options.standalone)
1616
- return null;
1617
- return this.bold ? 'v-rte--bold' : null;
1618
- }
1619
- /**
1620
- * @inheritDoc
1621
- */
1622
- renderStyle(options) {
1623
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1624
- return null;
1625
- return this.bold ? { fontWeight: '700' } : null;
1626
- }
1627
- }
1628
-
1629
- /**
1630
- * Annotation to make text code
1631
- */
1632
- class CodeAnnotation extends NodeAnnotation {
1633
- constructor(code, useInternalStyle = true) {
1634
- super();
1635
- this.type = NodeAnnotationTypeEnum.CODE;
1636
- this.code = code;
1637
- this.useInternalStyle = useInternalStyle;
1638
- }
1639
- /**
1640
- * Generate the map item for the annotation
1641
- *
1642
- * @param {boolean} code - Bold annotation
1643
- * @param {boolean} useInternalStyle - Whether to use default style for the link
1644
- * @returns {[NodeAnnotationTypeEnum.CODE, CodeAnnotation]} Map item for the annotation
1645
- */
1646
- static from(code, useInternalStyle) {
1647
- return [NodeAnnotationTypeEnum.CODE, new CodeAnnotation(code, useInternalStyle)];
1648
- }
1649
- /**
1650
- * Generate the JSON representation of the annotation
1651
- *
1652
- * @returns {Record<string, unknown>} JSON representation of the annotation
1653
- */
1654
- toJSON() {
1655
- return {
1656
- code: this.code,
1657
- };
1658
- }
1659
- /**
1660
- * @inheritDoc
1661
- */
1662
- clone() {
1663
- return new CodeAnnotation(this.code, this.useInternalStyle);
1664
- }
1665
- /**
1666
- * @inheritDoc
1667
- */
1668
- renderClass(options) {
1669
- if (options === null || options === void 0 ? void 0 : options.standalone)
1670
- return null;
1671
- return this.code && this.useInternalStyle ? 'v-rte--code' : null;
1672
- }
1673
- /**
1674
- * @inheritDoc
1675
- */
1676
- renderStyle(options) {
1677
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1678
- return null;
1679
- return this.code && this.useInternalStyle
1680
- ? {
1681
- fontFamily: 'Roboto Mono',
1682
- whiteSpace: 'pre-wrap',
1683
- }
1684
- : null;
1685
- }
1686
- }
1687
-
1688
- const RTE_DEFAULT_TEXT_COLOR = {
1689
- key: 'black',
1690
- light: '#111128',
1691
- dark: '#E3E3E8',
1692
- };
1693
- const RTE_TEXT_COLORS = [
1694
- RTE_DEFAULT_TEXT_COLOR,
1695
- {
1696
- key: 'gray',
1697
- light: '#5E5E6D',
1698
- dark: '#B9B9C1',
1699
- },
1700
- {
1701
- key: 'green',
1702
- light: '#01801F',
1703
- dark: '#59D977',
1704
- },
1705
- {
1706
- key: 'red',
1707
- light: '#BD2947',
1708
- dark: '#FFB2B5',
1709
- },
1710
- {
1711
- key: 'purple',
1712
- light: '#563D82',
1713
- dark: '#BEB2FF',
1714
- },
1715
- {
1716
- key: 'teal',
1717
- light: '#17758F',
1718
- dark: '#4CD8FF',
1719
- },
1720
- ];
1721
- const ZERO_WIDTH_SPACE = '\u200b';
1722
- const VegaRTEPresetToolbarItems = [
1723
- ['textStyles'],
1724
- ['bold', 'italic', 'underline', 'strikethrough', 'code'],
1725
- ['textColor'],
1726
- ['horizontalAlignment', 'bulletsNumbers'],
1727
- ['moreIndent', 'lessIndent'],
1728
- ['link'],
1729
- ['image'],
1730
- ['clearStyle'],
1731
- ];
1732
-
1733
- /**
1734
- * Annotation to make text with text color
1735
- */
1736
- class TextColorAnnotation extends NodeAnnotation {
1737
- constructor(textColor) {
1738
- super();
1739
- this.type = NodeAnnotationTypeEnum.TEXT_COLOR;
1740
- this.textColor = this.formatTextColor(textColor);
1741
- }
1742
- /**
1743
- * Generate the map item for the annotation
1744
- *
1745
- * @param {string} textColor - text color annotation
1746
- * @returns {[NodeAnnotationTypeEnum.TEXT_COLOR, TextColorAnnotation]} Map item for the annotation
1747
- */
1748
- static from(textColor) {
1749
- return [NodeAnnotationTypeEnum.TEXT_COLOR, new TextColorAnnotation(textColor)];
1750
- }
1751
- /**
1752
- * Generate the JSON representation of the annotation
1753
- *
1754
- * @returns {Record<string, unknown>} JSON representation of the annotation
1755
- */
1756
- toJSON() {
1757
- return {
1758
- textColor: this.textColor.key,
1759
- };
1760
- }
1761
- /**
1762
- * @inheritDoc
1763
- */
1764
- clone() {
1765
- return new TextColorAnnotation(this.textColor.key);
1766
- }
1767
- /**
1768
- * @inheritDoc
1769
- */
1770
- renderClass() {
1771
- return null;
1772
- }
1773
- /**
1774
- * @inheritDoc
1775
- */
1776
- renderStyle() {
1777
- return {
1778
- color: VegaInternalThemeManager.isDarkMode() ? this.textColor.dark : this.textColor.light,
1779
- };
1780
- }
1781
- /**
1782
- * format text color
1783
- *
1784
- * @param {string} textColor - text color
1785
- * @returns {VegaRTEColorSchema} - VegaRTEColorSchema
1786
- */
1787
- formatTextColor(textColor) {
1788
- return (RTE_TEXT_COLORS.find((item) => item.key === textColor) || RTE_TEXT_COLORS[0]);
1789
- }
1790
- }
1791
-
1792
- /**
1793
- * Annotation to make text a link
1794
- */
1795
- class LinkAnnotation extends NodeAnnotation {
1796
- constructor(link, useInternalStyle = true) {
1797
- super();
1798
- this.type = NodeAnnotationTypeEnum.LINK;
1799
- this.link = link;
1800
- this.useInternalStyle = useInternalStyle;
1801
- }
1802
- /**
1803
- * Generate the map item for the annotation
1804
- *
1805
- * @param {VegaRTELink} link - Bold annotation
1806
- * @param {boolean} useInternalStyle - Whether to use default style for the link
1807
- * @returns {[NodeAnnotationTypeEnum.LINK, LinkAnnotation]} Map item for the annotation
1808
- */
1809
- static from(link, useInternalStyle = true) {
1810
- return [NodeAnnotationTypeEnum.LINK, new LinkAnnotation(link, useInternalStyle)];
1811
- }
1812
- /**
1813
- * Generate the JSON representation of the annotation
1814
- *
1815
- * @returns {Record<'link', VegaRTELink>} JSON representation of the annotation
1816
- */
1817
- toJSON() {
1818
- return {
1819
- link: this.link,
1820
- };
1821
- }
1822
- /**
1823
- * @inheritDoc
1824
- */
1825
- clone() {
1826
- return new LinkAnnotation(this.link, this.useInternalStyle);
1827
- }
1828
- /**
1829
- * Verify whether two link annotation is same or not
1830
- *
1831
- * @param {LinkAnnotation} annotation - Compared annotation
1832
- * @returns {boolean} Whether two link annotation is same or not
1833
- */
1834
- toEqual(annotation) {
1835
- return this.link.groupKey === annotation.link.groupKey;
1836
- }
1837
- /**
1838
- * @inheritDoc
1839
- */
1840
- renderClass() {
1841
- return null;
1842
- }
1843
- /**
1844
- * @inheritDoc
1845
- */
1846
- renderStyle() {
1847
- return null;
1848
- }
1849
- }
1850
-
1851
- /**
1852
- * Action to link a group of nodes
1853
- */
1854
- class LinkGroupAnnotationAction extends AnnotationAction {
1855
- constructor(groupKey, nodes, type) {
1856
- super();
1857
- this.isFlushable = false;
1858
- this.groupKey = groupKey;
1859
- this.nodes = nodes;
1860
- this.type = type;
1861
- }
1862
- /**
1863
- * Converts the action to an annotation
1864
- *
1865
- * @returns {Annotation} The annotation
1866
- */
1867
- toAnnotation() {
1868
- return new LinkGroupAnnotation(this.groupKey);
1869
- }
1870
- }
1871
-
1872
- /**
1873
- * Sync up selection action
1874
- */
1875
- class SyncUpSelectionAction extends AnnotationAction {
1876
- constructor() {
1877
- super();
1878
- this.isFlushable = false;
1879
- }
1880
- /**
1881
- * annotation null
1882
- *
1883
- * @returns {Nullable<Annotation>} null
1884
- */
1885
- toAnnotation() {
1886
- return null;
1887
- }
1888
- }
1889
-
1890
- /**
1891
- * The base action handle strategy class, use to modify the rich text node content or modify the annotation.
1892
- */
1893
- class ActionHandleStrategy {
1894
- /**
1895
- * Public method to invoke the handle logic.
1896
- *
1897
- * @typedef R generic type
1898
- * @param {ModifyContentAction | AnnotationAction} action - The action instance. Contains the action type and necessary params.
1899
- * @param {RTENode | RTEBlock | VegaRTEContent} target - The rich text node instance that will be modified.
1900
- * @returns {R} - The invoke result in special strategy.
1901
- */
1902
- execute(action, target) {
1903
- LogUtility.log(`Executing action ${action.constructor.name} on ${target.constructor.name} ${target['id']}`);
1904
- return this.handleAction(action, target);
1905
- }
1906
- /**
1907
- * Update the custom style annotation of a block or node
1908
- *
1909
- * @param {RTEBlock | RTETextNode} item - block or node
1910
- * @param {string[]} styleKeys - custom style keys, for examples ['fontSize', 'fontWeight'].
1911
- */
1912
- updateCustomStyleAnnotation(item, styleKeys) {
1913
- const customStyleAnnotation = item.annotationMap.get(CommonAnnotationTypeEnum.CUSTOM_STYLE);
1914
- if (customStyleAnnotation && this.isCustomStyle(customStyleAnnotation, styleKeys)) {
1915
- item.annotationMap.set(customStyleAnnotation.type, new CustomStyleAnnotation(customStyleAnnotation.removeStyles(styleKeys)));
1916
- }
1917
- }
1918
- /**
1919
- * Create a new paragraph block with the given text.
1920
- *
1921
- * @param {string} text - The text content for the new paragraph.
1922
- * @returns {Nullable<RTETextBlock>} - The newly created paragraph block, or null if creation failed.
1923
- */
1924
- createNewParagraph(text) {
1925
- const dtoClass = RTEDTOClassManager$1.getRTEBlockClass('paragraph');
1926
- if (dtoClass) {
1927
- const newParagraph = dtoClass.from({
1928
- id: generateUUID(),
1929
- type: 'paragraph',
1930
- nodes: [{ id: generateUUID(), type: 'text', text }],
1931
- });
1932
- return newParagraph;
1933
- }
1934
- }
1935
- /**
1936
- * Get the root content from a child block or node.
1937
- *
1938
- * @param {RTEBlock | RTENode} child - The child block or node.
1939
- * @returns {Nullable<VegaRTEContent>} The root content, if found.
1940
- */
1941
- getRootContent(child) {
1942
- const parent = child.parent;
1943
- if (parent) {
1944
- if (parent.constructor.name === 'VegaRTEContent') {
1945
- return parent;
1946
- }
1947
- else {
1948
- return this.getRootContent(parent);
1949
- }
1950
- }
1951
- }
1952
- /**
1953
- * Check the caret position at the start of a block.
1954
- *
1955
- * @param {RTEBlock} block - The RTE Block.
1956
- * @param {RTENode} node - The RTE Node.
1957
- * @param {number} offset - The offset position.
1958
- * @returns {boolean} - Whether the caret is at the start of the block.
1959
- */
1960
- isCaretPositionAtBlockStart(block, node, offset) {
1961
- return node === block.children[0] && offset === 0;
1962
- }
1963
- /**
1964
- * Check the caret position at the end of a block.
1965
- *
1966
- * @param {RTEBlock} block - The RTE Block.
1967
- * @param {RTENode} node - The RTE Node.
1968
- * @param {number} offset - The offset position.
1969
- * @returns {boolean} - Whether the caret is at the end of the block.
1970
- */
1971
- isCaretPositionAtBlockEnd(block, node, offset) {
1972
- if (!node.isContentEditable()) {
1973
- return this.isCaretPositionAtDecoratorBlockEnd(block, node, offset);
1974
- }
1975
- else {
1976
- return this.isCaretPositionAtTextBlockEnd(block, node, offset);
1977
- }
1978
- }
1979
- /**
1980
- * Checks if the caret position is at the end of a specified RTETextNode.
1981
- *
1982
- * @param {RTETextBlock} textBlock - `RTETextBlock` - a text block.
1983
- * @param {RTETextNode} node - `RTETextNode` - a node representing an image in a rich text editor.
1984
- * @param {number} startOffset - The position within the text node where the caret is located.
1985
- * @returns {boolean} a boolean value, which indicates whether the caret position is at the start of the RTETextNode.
1986
- */
1987
- isCaretPositionAtTextBlockEnd(textBlock, node, startOffset) {
1988
- const lastNode = textBlock.children[textBlock.children.length - 1];
1989
- return node === lastNode && (node.isEmpty() || startOffset === lastNode.text.length);
1990
- }
1991
- /**
1992
- * Checks if the caret position is at the end of a given decorator node.
1993
- *
1994
- * @param {RTEBlock} target - The image block.
1995
- * @param {RTENode} node - `node` is a RTEDecoratorNode or non-editable text node.
1996
- * @param {number} startOffset - The position within the `RTEDecoratorNode` where the caret is located.
1997
- * @returns {boolean}Returns a boolean value indicating whether the caret position is at the end of the `RTEDecoratorNode`.
1998
- */
1999
- isCaretPositionAtDecoratorBlockEnd(target, node, startOffset) {
2000
- return node === target.children[target.children.length - 1] && startOffset !== 0;
2001
- }
2002
- /**
2003
- * Determines if the custom style annotation includes any the custom style.
2004
- *
2005
- * @param {CustomStyleAnnotation} customStyleAnnotation - custom style annotation
2006
- * @param {string[]} styleKeys - custom style keys, for examples ['fontSize', 'fontWeight'].
2007
- * @returns {boolean} - True if the custom key includes the custom style, false otherwise.
2008
- */
2009
- isCustomStyle(customStyleAnnotation, styleKeys) {
2010
- return styleKeys.some((item) => Object.keys(customStyleAnnotation.customStyle).includes(item));
2011
- }
2012
- }
2013
-
2014
- /**
2015
- * Split the corresponding link group nodes *
2016
- */
2017
- class LinkGroupNodeSplitAction extends ModifyContentAction {
2018
- constructor(splittedTextNodes) {
2019
- super();
2020
- this.type = ModifyContentActionType.LINK_GROUP_NODE_SPLIT;
2021
- this.splittedTextNodes = splittedTextNodes;
2022
- }
2023
- }
2024
-
2025
- /**
2026
- * Split the text node into two or there nodes according to the rules.
2027
- */
2028
- class NodeSplitTextStrategy extends ActionHandleStrategy {
2029
- constructor() {
2030
- super(...arguments);
2031
- // The new create node that need apply annotation or the current target. This property used to export after the execute method invoke.
2032
- this.applyTargetNode = null;
2033
- }
2034
- /**
2035
- * Split the text node.
2036
- *
2037
- * @param {TextSplittableAction} action - The split action.
2038
- * @param {RTETextNode} target - The text node that need to be splited.
2039
- * @returns {Nullable<RTETextNode>} - The new insert text node or the current text node that need to apply the action.
2040
- */
2041
- handleAction(action, target) {
2042
- const selectionRangeAnnotation = target.getAnnotationByType(InternalAnnotationTypeEnum.SELECTION_RANGE);
2043
- this.setApplyTargetNode(null);
2044
- if (action instanceof TextSplittableAction && action.doSplit && selectionRangeAnnotation) {
2045
- const { startContainer, endContainer, startOffset, endOffset } = selectionRangeAnnotation.range;
2046
- const noTextRangeSelected = startContainer === endContainer && startOffset === endOffset;
2047
- target.parent.children = target.parent.children.flatMap((item) => {
2048
- if (item.id === target.id) {
2049
- if (noTextRangeSelected) {
2050
- return this.insertNewNode(startOffset, target);
2051
- }
2052
- if (this.shouldSplitSelection(selectionRangeAnnotation.range) &&
2053
- target.isContentEditable()) {
2054
- const splittedTextNodes = this.splitTextNode(selectionRangeAnnotation.range, target);
2055
- if (item.annotationMap.has('LINK')) {
2056
- item.apply(new LinkGroupNodeSplitAction(splittedTextNodes));
2057
- }
2058
- return splittedTextNodes;
2059
- }
2060
- else {
2061
- this.setApplyTargetNode(target);
2062
- return target;
2063
- }
2064
- }
2065
- return item;
2066
- });
2067
- }
2068
- return this.applyTargetNode;
2069
- }
2070
- /**
2071
- * Insert the new node at the start offset
2072
- *
2073
- * @param {number} startOffset - The start position offset
2074
- * @param {RTETextNode} target - RTETextNode
2075
- * @returns {RTETextNode[]} - RTETextNode array
2076
- */
2077
- insertNewNode(startOffset, target) {
2078
- const newNode = target.cloneWithText('');
2079
- this.setApplyTargetNode(newNode);
2080
- const index = target.parent.children.findIndex((node) => node === target);
2081
- if (startOffset === 0 || (!target.isContentEditable() && startOffset === index)) {
2082
- return [newNode, target];
2083
- }
2084
- if (startOffset === target.text.length ||
2085
- (!target.isContentEditable() && startOffset === index + 1)) {
2086
- return [target, newNode];
2087
- }
2088
- const beforeNode = target.cloneWithText(target.text.substring(0, startOffset));
2089
- const afterNode = target.cloneWithText(target.text.substring(startOffset));
2090
- return [beforeNode, newNode, afterNode];
2091
- }
2092
- /**
2093
- * Whether a given range should be split based on various conditions within the range.
2094
- *
2095
- * @param {Range} range - Selection range
2096
- * @returns {boolean} Returns a boolean value indicating whether the selection range should be split.
2097
- */
2098
- shouldSplitSelection(range) {
2099
- const { startContainer, endContainer, startOffset, endOffset } = range;
2100
- const isCrossNode = startContainer !== endContainer;
2101
- const isPartialStart = startOffset > 0;
2102
- const isPartialEnd = endOffset < (endContainer.textContent ? endContainer.textContent.length : 0);
2103
- const isPartialSelection = isPartialStart || isPartialEnd;
2104
- return isCrossNode || isPartialSelection;
2105
- }
2106
- /**
2107
- * Split text node with range
2108
- *
2109
- * @param {Range} range - Selection range
2110
- * @param {RTETextNode} target - RTETextNode
2111
- * @returns {RTETextNode[] | RTETextNode} RTETextNode array
2112
- */
2113
- splitTextNode(range, target) {
2114
- const { startContainer, endContainer, startOffset } = range;
2115
- const startNode = startContainer.parentElement;
2116
- const endNode = endContainer.parentElement;
2117
- /**
2118
- * Split the text from the start offset to the end offset
2119
- *
2120
- * @param {string} text - The text string
2121
- * @param {number} startOffset - The start offset position
2122
- * @param {number} endOffset - The end offset position
2123
- * @returns {RTETextNode[]} - The split text node array
2124
- */
2125
- const splitText = (text, startOffset, endOffset) => {
2126
- const beforeText = text.substring(0, startOffset);
2127
- const selectedText = text.substring(startOffset, endOffset);
2128
- const afterText = text.substring(endOffset);
2129
- return [
2130
- target.cloneWithText(beforeText),
2131
- target.cloneWithText(selectedText),
2132
- target.cloneWithText(afterText),
2133
- ];
2134
- };
2135
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
2136
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
2137
- if (startItemDto && startItemDto.id === target.id) {
2138
- const endOffset = startContainer === endContainer ? range.endOffset : target.text.length;
2139
- const [beforeNode, selectedNode, afterNode] = splitText(target.text, startOffset, endOffset);
2140
- this.setApplyTargetNode(selectedNode);
2141
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
2142
- }
2143
- else if (endItemDto && endItemDto.id === target.id) {
2144
- const [beforeNode, selectedNode, afterNode] = splitText(target.text, 0, range.endOffset);
2145
- this.setApplyTargetNode(selectedNode);
2146
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
2147
- }
2148
- else {
2149
- this.setApplyTargetNode(target);
2150
- return target;
2151
- }
2152
- }
2153
- /**
2154
- * Store the text node which need to apply the annotation. Clear the value if the input is null.
2155
- *
2156
- * @param {RTETextNode | null} node - The new text node.
2157
- */
2158
- setApplyTargetNode(node) {
2159
- this.applyTargetNode = node;
2160
- }
2161
- }
2162
-
2163
- /**
2164
- * Action to toggle bold annotation
2165
- */
2166
- class BoldAnnotationAction extends TextSplittableAction {
2167
- constructor(bold) {
2168
- super();
2169
- this.isFlushable = true;
2170
- this.bold = bold;
2171
- }
2172
- /**
2173
- * Converts the action to an annotation
2174
- *
2175
- * @returns {BoldAnnotation} the annotation
2176
- */
2177
- toAnnotation() {
2178
- return new BoldAnnotation(this.bold);
2179
- }
2180
- }
2181
-
2182
- /**
2183
- * Annotation to host which annotations will be clear formatting
2184
- */
2185
- class ClearFormattingAnnotation extends Annotation {
2186
- constructor() {
2187
- super(...arguments);
2188
- this.type = InternalAnnotationTypeEnum.CLEAR_FORMATTING;
2189
- this.items = [
2190
- NodeAnnotationTypeEnum.BOLD,
2191
- NodeAnnotationTypeEnum.ITALIC,
2192
- NodeAnnotationTypeEnum.UNDERLINE,
2193
- NodeAnnotationTypeEnum.STRIKETHROUGH,
2194
- NodeAnnotationTypeEnum.TEXT_COLOR,
2195
- NodeAnnotationTypeEnum.CODE,
2196
- CommonAnnotationTypeEnum.CUSTOM_STYLE,
2197
- ];
2198
- }
2199
- }
2200
-
2201
- /**
2202
- * Action to toggle clear formatting
2203
- */
2204
- class ClearFormattingAnnotationAction extends TextSplittableAction {
2205
- constructor() {
2206
- super(...arguments);
2207
- this.isFlushable = true;
2208
- }
2209
- /**
2210
- * Converts the action to an annotation
2211
- *
2212
- * @returns {Annotation} the annotation
2213
- */
2214
- toAnnotation() {
2215
- return new ClearFormattingAnnotation();
2216
- }
2217
- }
2218
-
2219
- /**
2220
- * Action to toggle code annotation
2221
- */
2222
- class CodeAnnotationAction extends TextSplittableAction {
2223
- constructor(code) {
2224
- super();
2225
- this.isFlushable = true;
2226
- this.code = code;
2227
- }
2228
- /**
2229
- * Converts the action to an annotation
2230
- *
2231
- * @returns {CodeAnnotation} the annotation
2232
- */
2233
- toAnnotation() {
2234
- return new CodeAnnotation(this.code);
2235
- }
2236
- }
2237
-
2238
- /**
2239
- * Delete the node annotation by type
2240
- */
2241
- class DeleteNodeAnnotationAction extends AnnotationAction {
2242
- constructor(annotationType) {
2243
- super();
2244
- this.isFlushable = true;
2245
- this.annotationType = annotationType;
2246
- }
2247
- /**
2248
- * Don't need this for this action
2249
- *
2250
- * @returns {Nullable<Annotation>} undefined
2251
- */
2252
- toAnnotation() {
2253
- return undefined;
2254
- }
2255
- }
2256
-
2257
- /**
2258
- * Action to toggle the italic annotation
2259
- */
2260
- class ItalicAnnotationAction extends TextSplittableAction {
2261
- constructor(italic) {
2262
- super();
2263
- this.isFlushable = true;
2264
- this.italic = italic;
2265
- }
2266
- /**
2267
- * Converts the action to an annotation
2268
- *
2269
- * @returns {ItalicAnnotation} The annotation
2270
- */
2271
- toAnnotation() {
2272
- return new ItalicAnnotation(this.italic);
2273
- }
2274
- }
2275
-
2276
- /**
2277
- * Action to toggle link annotation
2278
- */
2279
- class LinkAnnotationAction extends TextSplittableAction {
2280
- constructor({ link, newText, needMergeNode, doSplit, type, }) {
2281
- super();
2282
- this.isFlushable = true;
2283
- this.link = link;
2284
- this.needMergeNode = needMergeNode;
2285
- this.newText = newText;
2286
- this.type = type;
2287
- if (isNonNullable(doSplit)) {
2288
- this.doSplit = doSplit;
2289
- }
2290
- }
2291
- /**
2292
- * Converts the action to an annotation
2293
- *
2294
- * @returns {LinkAnnotation} the annotation
2295
- */
2296
- toAnnotation() {
2297
- return new LinkAnnotation(this.link);
2298
- }
2299
- }
2300
-
2301
- /**
2302
- * Action to toggle the strikethrough annotation
2303
- */
2304
- class StrikethroughAnnotationAction extends TextSplittableAction {
2305
- constructor(underline) {
2306
- super();
2307
- this.isFlushable = true;
2308
- this.strikethrough = underline;
2309
- }
2310
- /**
2311
- * Converts the action to an annotation
2312
- *
2313
- * @returns {Annotation} the annotation
2314
- */
2315
- toAnnotation() {
2316
- return new StrikethroughAnnotation(this.strikethrough);
2317
- }
2318
- }
2319
-
2320
- /**
2321
- * Action to toggle the underline annotation
2322
- */
2323
- class UnderlineAnnotationAction extends TextSplittableAction {
2324
- constructor(underline) {
2325
- super();
2326
- this.isFlushable = true;
2327
- this.underline = underline;
2328
- }
2329
- /**
2330
- * Converts the action to an annotation
2331
- *
2332
- * @returns {Annotation} the annotation
2333
- */
2334
- toAnnotation() {
2335
- return new UnderlineAnnotation(this.underline);
2336
- }
2337
- }
2338
-
2339
- /**
2340
- * The current strategy used to modify the text node annotation map.
2341
- */
2342
- class NodeUpdateAnnotationMapStrategy extends ActionHandleStrategy {
2343
- /**
2344
- * Remove or set annotation to the text node annotation map.
2345
- *
2346
- * @param {AnnotationAction} action - The annotation action instance.
2347
- * @param {RTETextNode} target - The current text node.
2348
- */
2349
- handleAction(action, target) {
2350
- const annotation = action.toAnnotation();
2351
- if (action instanceof DeleteNodeAnnotationAction) {
2352
- target.annotationMap.delete(action.annotationType);
2353
- return;
2354
- }
2355
- if (annotation instanceof ClearFormattingAnnotation) {
2356
- annotation.items.forEach((item) => {
2357
- target.deleteAnnotationByType(item);
2358
- });
2359
- return;
2360
- }
2361
- if (annotation instanceof NodeAnnotation || annotation instanceof SelectionRangeAnnotation) {
2362
- if (action instanceof LinkAnnotationAction) {
2363
- if (isNonNullable(action.newText)) {
2364
- target.text = action.newText;
2365
- }
2366
- target.parent.apply(new LinkGroupAnnotationAction(action.link.groupKey, [target], action.type));
2367
- }
2368
- if (action instanceof CodeAnnotationAction) {
2369
- this.handleAction(new ClearFormattingAnnotationAction(), target);
2370
- }
2371
- if (action instanceof BoldAnnotationAction) {
2372
- this.updateCustomStyleAnnotation(target, ['fontWeight']);
2373
- }
2374
- if (action instanceof ItalicAnnotationAction) {
2375
- this.updateCustomStyleAnnotation(target, ['fontStyle']);
2376
- }
2377
- if (action instanceof UnderlineAnnotationAction ||
2378
- action instanceof StrikethroughAnnotationAction) {
2379
- this.updateCustomStyleAnnotation(target, ['textDecoration']);
2380
- }
2381
- target.annotationMap.set(annotation.type, annotation);
2382
- return;
2383
- }
2384
- }
2385
- }
2386
-
2387
- /**
2388
- * Delete the corresponding link group according to the text node *
2389
- */
2390
- class DeleteLinkGroupAction extends ModifyContentAction {
2391
- constructor() {
2392
- super(...arguments);
2393
- this.type = ModifyContentActionType.DELETE_LINK_GROUP;
2394
- }
2395
- }
2396
-
2397
- /**
2398
- * Update the editor text node text content strategy.
2399
- */
2400
- class NodeUpdateTextStrategy extends ActionHandleStrategy {
2401
- /**
2402
- * Updates the text content of a node and unlink the node if it is a link node and the text is deleted.
2403
- *
2404
- * @param {UpdateTextAction} action - The update text action instance.
2405
- * @param {RTETextNode} target - The text node instance which need update the text.
2406
- */
2407
- handleAction(action, target) {
2408
- target.text = action.newTextContent;
2409
- // The link node should unlink when delete all text
2410
- if (!target.text && target.annotationMap.has('LINK')) {
2411
- target.apply(new DeleteLinkGroupAction());
2412
- }
2413
- }
2414
- }
2415
-
2416
- /**
2417
- * Update the text node property text action
2418
- *
2419
- * @example textNode.apply(new UpdateTextAction(newText))
2420
- */
2421
- class UpdateTextAction extends ModifyContentAction {
2422
- constructor(text) {
2423
- super();
2424
- this.type = ModifyContentActionType.UPDATE_TEXT;
2425
- this.newTextContent = '';
2426
- this.newTextContent = text;
2427
- }
2428
- }
2429
-
2430
- /**
2431
- * Replaces the rich text node selected text strategy.
2432
- */
2433
- class NodeReplaceSelectedTextStrategy extends ActionHandleStrategy {
2434
- /**
2435
- * @inheritDoc
2436
- */
2437
- handleAction(action, target) {
2438
- this.replaceSelectedText(action.textToBeInsert, action.currentRange, target);
2439
- }
2440
- /**
2441
- * Replaces the selected text within a given range with a new text in a TypeScript class.
2442
- *
2443
- * @param {string} text - The new text that will replace the currently selected text within the specified range.
2444
- * @param {RTERange} currentRange - A range of text within a Rich Text Editor (RTE).
2445
- * @param {RTETextNode} target - The RTE text node instance.
2446
- */
2447
- replaceSelectedText(text, currentRange, target) {
2448
- if (currentRange && currentRange.startContainer && currentRange.endContainer) {
2449
- const { startContainer, endContainer, startOffset, endOffset } = currentRange;
2450
- let newText = target.text;
2451
- if (startContainer === endContainer && startOffset === endOffset && text) {
2452
- newText = target.text.slice(0, startOffset) + text + target.text.slice(startOffset);
2453
- }
2454
- else {
2455
- const startNode = startContainer.parentElement;
2456
- const endNode = endContainer.parentElement;
2457
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
2458
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
2459
- let startIndex = 0, endIndex = target.text.length;
2460
- if (startItemDto && startItemDto === target) {
2461
- startIndex = startOffset;
2462
- endIndex = startContainer === endContainer ? endOffset : endIndex;
2463
- }
2464
- else if (endItemDto && endItemDto === target) {
2465
- endIndex = endOffset;
2466
- }
2467
- newText = target.text.slice(0, startIndex) + text + target.text.slice(endIndex);
2468
- }
2469
- target.apply(new UpdateTextAction(newText));
2470
- }
2471
- }
2472
- }
2473
-
2474
- /**
2475
- * Inline HTML annotation
2476
- */
2477
- class InlineHtmlAnnotation extends Annotation {
2478
- constructor(htmlTag) {
2479
- super();
2480
- this.type = NodeAnnotationTypeEnum.INLINE_HTML;
2481
- this.htmlTag = htmlTag;
2482
- }
2483
- /**
2484
- * Generate the map item for the annotation
2485
- *
2486
- * @param {VegaInlineHtmlSchema} inlineHtml - Inline HTML node
2487
- * @returns {[NodeAnnotationTypeEnum.INLINE_HTML, InlineHtmlAnnotation]} Map item for the annotation
2488
- */
2489
- static from(inlineHtml) {
2490
- const { htmlTag, child, customStyle, customClass, customAttribute } = inlineHtml;
2491
- const inlineHtmlAnnotation = new InlineHtmlAnnotation(htmlTag);
2492
- inlineHtmlAnnotation.child = child ? InlineHtmlAnnotation.from(child)[1] : undefined;
2493
- inlineHtmlAnnotation.customAttribute = customAttribute
2494
- ? CustomAttributeAnnotation.from(customAttribute)[1]
2495
- : undefined;
2496
- inlineHtmlAnnotation.customClass = customClass
2497
- ? CustomClassAnnotation.from(customClass)[1]
2498
- : undefined;
2499
- inlineHtmlAnnotation.customStyle = customStyle
2500
- ? CustomStyleAnnotation.from(customStyle)[1]
2501
- : undefined;
2502
- return [NodeAnnotationTypeEnum.INLINE_HTML, inlineHtmlAnnotation];
2503
- }
2504
- /**
2505
- * Create a new inline HTML annotation
2506
- *
2507
- * @returns {InlineHtmlAnnotation} - Inline HTML annotation
2508
- */
2509
- clone() {
2510
- var _a, _b, _c, _d;
2511
- const inlineHtmlAnnotation = new InlineHtmlAnnotation(this.htmlTag);
2512
- inlineHtmlAnnotation.child = (_a = this.child) === null || _a === void 0 ? void 0 : _a.clone();
2513
- inlineHtmlAnnotation.customAttribute = (_b = this.customAttribute) === null || _b === void 0 ? void 0 : _b.clone();
2514
- inlineHtmlAnnotation.customClass = (_c = this.customClass) === null || _c === void 0 ? void 0 : _c.clone();
2515
- inlineHtmlAnnotation.customStyle = (_d = this.customStyle) === null || _d === void 0 ? void 0 : _d.clone();
2516
- return inlineHtmlAnnotation;
2517
- }
2518
- /**
2519
- * Generate the JSON representation of the annotation
2520
- *
2521
- * @returns {Record<string, unknown>} JSON representation of the annotation
2522
- */
2523
- toJSON() {
2524
- var _a, _b, _c, _d;
2525
- return {
2526
- inlineHtml: cleanObject({
2527
- htmlTag: this.htmlTag,
2528
- child: (_a = this.child) === null || _a === void 0 ? void 0 : _a.toJSON().inlineHtml,
2529
- customAttribute: (_b = this.customAttribute) === null || _b === void 0 ? void 0 : _b.toJSON().customAttribute,
2530
- customClass: (_c = this.customClass) === null || _c === void 0 ? void 0 : _c.toJSON().customClass,
2531
- customStyle: (_d = this.customStyle) === null || _d === void 0 ? void 0 : _d.toJSON().customStyle,
2532
- }),
2533
- };
2534
- }
2535
- }
2536
-
2537
- /**
2538
- * Split the link nodes in the corresponding link group
2539
- */
2540
- class LinkGroupNodeSplitStrategy extends ActionHandleStrategy {
2541
- /**
2542
- * Split the text node.
2543
- *
2544
- * @param {LinkGroupNodeSplitAction} action - The split action.
2545
- * @param {RTETextNode} target - The text node that need to be splitted.
2546
- */
2547
- handleAction(action, target) {
2548
- const linkGroupAnnotation = target.parent.getAnnotationByType(InternalAnnotationTypeEnum.LINK_GROUP);
2549
- if (linkGroupAnnotation) {
2550
- const currentGroupKey = target.annotationMap.get('LINK').link
2551
- .groupKey;
2552
- const currentLinkGroup = linkGroupAnnotation.linkGroups.get(currentGroupKey);
2553
- if (currentLinkGroup) {
2554
- const index = currentLinkGroup.indexOf(target);
2555
- if (index !== -1) {
2556
- /* istanbul ignore next */
2557
- currentLinkGroup.splice(index, 1, ...(Array.isArray(action.splittedTextNodes)
2558
- ? action.splittedTextNodes
2559
- : [action.splittedTextNodes]));
2560
- linkGroupAnnotation.linkGroups.set(currentGroupKey, currentLinkGroup);
2561
- }
2562
- }
2563
- }
2564
- }
2565
- }
2566
-
2567
- /**
2568
- * Delete the corresponding link group
2569
- */
2570
- class DeleteLinkGroupStrategy extends ActionHandleStrategy {
2571
- /**
2572
- * Delete the corresponding link group
2573
- *
2574
- * @param {DeleteLinkGroupAction} _action - The delete link group action.
2575
- * @param {RTETextNode} target - The text node that need to remove link annotation.
2576
- */
2577
- handleAction(_action, target) {
2578
- const linkGroupAnnotation = target.parent.getAnnotationByType(InternalAnnotationTypeEnum.LINK_GROUP);
2579
- if (linkGroupAnnotation) {
2580
- const currentGroupKey = target.annotationMap.get(NodeAnnotationTypeEnum.LINK).link.groupKey;
2581
- const currentLinkGroup = linkGroupAnnotation.linkGroups.get(currentGroupKey);
2582
- if (currentLinkGroup) {
2583
- const index = currentLinkGroup.indexOf(target);
2584
- if (index !== -1) {
2585
- currentLinkGroup.splice(index, 1);
2586
- }
2587
- if (currentLinkGroup.length === 0) {
2588
- linkGroupAnnotation.linkGroups.delete(currentGroupKey);
2589
- }
2590
- if (linkGroupAnnotation.linkGroups.size === 0) {
2591
- target.parent.annotationMap.delete(InternalAnnotationTypeEnum.LINK_GROUP);
2592
- }
2593
- }
2594
- }
2595
- target.annotationMap.delete(NodeAnnotationTypeEnum.LINK);
2596
- }
2597
- }
2598
-
2599
- /**
2600
- * Annotation to make text as plain text
2601
- */
2602
- class PlainTextAnnotation extends NodeAnnotation {
2603
- constructor(plainText) {
2604
- super();
2605
- this.type = NodeAnnotationTypeEnum.PLAIN_TEXT;
2606
- this.plainText = true;
2607
- this.plainText = plainText;
2608
- }
2609
- /**
2610
- * @inheritDoc
2611
- */
2612
- static from(plainText) {
2613
- return [NodeAnnotationTypeEnum.PLAIN_TEXT, new PlainTextAnnotation(plainText)];
2614
- }
2615
- /**
2616
- * @inheritDoc
2617
- */
2618
- clone() {
2619
- return new PlainTextAnnotation(this.plainText);
2620
- }
2621
- /**
2622
- * @inheritDoc
2623
- */
2624
- renderClass() {
2625
- return undefined;
2626
- }
2627
- /**
2628
- * @inheritDoc
2629
- */
2630
- renderStyle() {
2631
- return undefined;
2632
- }
2633
- /**
2634
- * @inheritDoc
2635
- */
2636
- toJSON() {
2637
- return { plainText: this.plainText };
2638
- }
2639
- }
2640
-
2641
- /**
2642
- * Action to toggle the text color annotation visibility/state.
2643
- */
2644
- class TextColorAnnotationAction extends TextSplittableAction {
2645
- constructor(textColor) {
2646
- super();
2647
- this.isFlushable = true;
2648
- this.textColor = textColor;
2649
- }
2650
- /**
2651
- * Converts the action into a text color annotation.
2652
- *
2653
- * @returns {Annotation} the annotation
2654
- */
2655
- toAnnotation() {
2656
- return new TextColorAnnotation(this.textColor);
2657
- }
2658
- }
2659
-
2660
- /**
2661
- * Text node
2662
- */
2663
- class RTETextNode extends RTENode {
2664
- constructor(id, text, parentBlock, annotationMap) {
2665
- super(id, annotationMap);
2666
- this.type = NodeTypeEnum.TEXT;
2667
- this.parent = parentBlock;
2668
- this.text = text;
2669
- this.registerModifyStrategy();
2670
- }
2671
- /**
2672
- * Determines if the given HTML tag is supported by the RTETextNode.
2673
- *
2674
- * @param {string} tag - The HTML tag to check.
2675
- * @returns {boolean} `true` if the tag is supported, otherwise `false`.
2676
- */
2677
- static supportsHtmlTag(tag) {
2678
- return ['span', 'code'].includes(tag);
2679
- }
2680
- /**
2681
- * Creates an RTETextNode from a VegaRTETextNode with annotations and a parent RTETextBlock.
2682
- *
2683
- * @param {VegaRTETextNode} richText - A rich text node
2684
- * @param {RTETextBlock} parentBlock - Parent block
2685
- * @param {VegaRTETransformOptions} options - Optional transformation options.
2686
- * @returns {RTETextNode} an RTETextNode
2687
- */
2688
- static from(richText, parentBlock, options = { autoMatchFormat: true }) {
2689
- const textNode = new RTETextNode(richText.id, richText.text, parentBlock);
2690
- const { annotations } = richText;
2691
- if (annotations) {
2692
- textNode.annotationMap = this.generateTextAnnotationMap(annotations, options, parentBlock, textNode);
2693
- }
2694
- return textNode;
2695
- }
2696
- /**
2697
- * Generates a map of text annotations for the given set of annotations.
2698
- *
2699
- * @param {VegaRTETextAnnotations} annotations - The annotations to be converted into a map.
2700
- * @param {VegaRTETransformOptions} options - Optional transformation options.
2701
- * @param {RTETextBlock} parentBlock - The parent text block.
2702
- * @param {RTETextNode} textNode - The text node.
2703
- * @returns {NodeAnnotations} The map of text annotations.
2704
- */
2705
- static generateTextAnnotationMap(annotations, options, parentBlock, textNode) {
2706
- return new Map(Object.keys(annotations)
2707
- .map((type) => {
2708
- if (type === 'link' && annotations.link && parentBlock && textNode) {
2709
- parentBlock.apply(new LinkGroupAnnotationAction(annotations.link.groupKey, [textNode], 'link'));
2710
- }
2711
- return this.createAnnotationEntity(type, annotations[type], options);
2712
- })
2713
- .filter(isNonNullable));
2714
- }
2715
- /**
2716
- * Creates different types of text annotations based on the provided type and value.
2717
- *
2718
- * @param {keyof VegaRTETextAnnotations} type - The key of the type.
2719
- * @param {unknown} value - The value that will be used to create the specific type of annotation entity based on the `type` provided.
2720
- * @param {VegaRTETransformOptions} [options] - Optional transformation options that may be used for creating the annotation entity.
2721
- * @returns {Nullable<[RTENodeAnnotationMapKey, RTENodeAnnotationMapValue]>} Returning a nullable tuple containing a key and a
2722
- * value from the `RTENodeAnnotationMapKey` and `RTENodeAnnotationMapValue` types.
2723
- */
2724
- static createAnnotationEntity(type, value, options) {
2725
- const autoMatchFormat = !!(options && options.autoMatchFormat);
2726
- switch (type) {
2727
- case 'bold':
2728
- return BoldAnnotation.from(value);
2729
- case 'italic':
2730
- return ItalicAnnotation.from(value);
2731
- case 'underline':
2732
- return UnderlineAnnotation.from(value);
2733
- case 'strikethrough':
2734
- return StrikethroughAnnotation.from(value);
2735
- case 'code':
2736
- return CodeAnnotation.from(value, autoMatchFormat);
2737
- case 'textColor':
2738
- return TextColorAnnotation.from(value);
2739
- case 'link':
2740
- return LinkAnnotation.from(value, autoMatchFormat);
2741
- case 'inlineHtml': {
2742
- return InlineHtmlAnnotation.from(value);
2743
- }
2744
- case 'plainText': {
2745
- return PlainTextAnnotation.from(value);
2746
- }
2747
- }
2748
- return RTENode.createAnnotationEntity(type, value);
2749
- }
2750
- /**
2751
- * @inheritDoc
2752
- */
2753
- toJSON() {
2754
- const annotations = Array.from(this.annotationMap.values())
2755
- .filter((annotation) => annotation instanceof NodeAnnotation ||
2756
- annotation instanceof CommonAnnotation ||
2757
- annotation instanceof InlineHtmlAnnotation)
2758
- .reduce((record, annotation) => {
2759
- return Object.assign(Object.assign({}, record), annotation.toJSON());
2760
- }, {});
2761
- return Object.assign(Object.assign({ id: this.id }, (Object.keys(annotations).length > 0 ? { annotations } : {})), { type: 'text', text: this.text });
2762
- }
2763
- /**
2764
- * @inheritDoc
2765
- */
2766
- toHtml() {
2767
- const inlineHtmlAnnotation = this.getAnnotationByType(NodeAnnotationTypeEnum.INLINE_HTML);
2768
- return inlineHtmlAnnotation ? this.renderWithWrapperStr(inlineHtmlAnnotation) : this.renderTextStr();
2769
- }
2770
- /**
2771
- * Creates a new RTETextNode with the specified text and copies the parent block and annotation map from the original node.
2772
- *
2773
- * @param {string} text - The text content of the RTETextNode that will be created.
2774
- * @returns {RTETextNode} An new RTETextNode
2775
- */
2776
- cloneWithText(text) {
2777
- const cloned = new RTETextNode(generateUUID(), text, this.parent, super.cloneAnnotations());
2778
- return cloned;
2779
- }
2780
- /**
2781
- * @inheritDoc
2782
- */
2783
- clone(parent) {
2784
- const cloned = new RTETextNode(this.id, this.text, parent, super.cloneAnnotations());
2785
- return cloned;
2786
- }
2787
- /**
2788
- * Checks if a node is empty
2789
- *
2790
- * @returns {boolean} It returns `true` if the node is empty
2791
- */
2792
- isEmpty() {
2793
- return !this.text || this.text === ZERO_WIDTH_SPACE || this.text === '\n';
2794
- }
2795
- /**
2796
- * @inheritDoc
2797
- */
2798
- isTextNode() {
2799
- return true;
2800
- }
2801
- /**
2802
- * @inheritDoc
2803
- */
2804
- getRangeEndOffset() {
2805
- if (!this.isContentEditable() && this.parent) {
2806
- const parent = this.parent;
2807
- const nodeIndex = parent.children.indexOf(this);
2808
- return nodeIndex + 1; // place the cursor after the non-editable text node;
2809
- }
2810
- return this.text === '\n' ? 0 : this.text.length;
2811
- }
2812
- /**
2813
- * @inheritDoc
2814
- */
2815
- getRangeContainer() {
2816
- const element = this.getElementRef();
2817
- if (element) {
2818
- if (this.isContentEditable()) {
2819
- return element.firstChild;
2820
- }
2821
- else {
2822
- return element.parentElement;
2823
- }
2824
- }
2825
- }
2826
- /**
2827
- * @inheritDoc
2828
- */
2829
- isContentEditable() {
2830
- return true;
2831
- }
2832
- /**
2833
- * Registers the action strategies for the RTETextNode.
2834
- */
2835
- registerModifyStrategy() {
2836
- const dtoClassName = this.constructor.name;
2837
- if (!RTETextNode.registerActionStrategyStatus[dtoClassName]) {
2838
- if (this.isContentEditable()) {
2839
- ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_TEXT, dtoClassName, new NodeUpdateTextStrategy());
2840
- ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_SELECTED_TEXT, dtoClassName, new NodeReplaceSelectedTextStrategy());
2841
- ActionHandleStrategyRegistry.register(ModifyContentActionType.LINK_GROUP_NODE_SPLIT, dtoClassName, new LinkGroupNodeSplitStrategy());
2842
- ActionHandleStrategyRegistry.register(LinkAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2843
- }
2844
- ActionHandleStrategyRegistry.register(TextSplittableAction.name, dtoClassName, new NodeSplitTextStrategy());
2845
- ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_LINK_GROUP, dtoClassName, new DeleteLinkGroupStrategy());
2846
- ActionHandleStrategyRegistry.register(BoldAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2847
- ActionHandleStrategyRegistry.register(ClearFormattingAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2848
- ActionHandleStrategyRegistry.register(ItalicAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2849
- ActionHandleStrategyRegistry.register(UnderlineAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2850
- ActionHandleStrategyRegistry.register(TextColorAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2851
- ActionHandleStrategyRegistry.register(StrikethroughAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2852
- ActionHandleStrategyRegistry.register(CodeAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2853
- ActionHandleStrategyRegistry.register(AnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2854
- RTETextNode.registerActionStrategyStatus[dtoClassName] = true;
2855
- }
2856
- }
2857
- /**
2858
- * @inheritDoc
2859
- */
2860
- doAnnotationActionApply(action) {
2861
- const selectionRangeAnnotation = this.getAnnotationByType(InternalAnnotationTypeEnum.SELECTION_RANGE);
2862
- if (action instanceof TextSplittableAction && action.doSplit && selectionRangeAnnotation) {
2863
- const splitStrategy = ActionHandleStrategyRegistry.get(TextSplittableAction.name, this.constructor.name);
2864
- if (splitStrategy) {
2865
- const newNode = splitStrategy.execute(action, this);
2866
- if (newNode) {
2867
- this.applyActionToNode(newNode, action);
2868
- }
2869
- }
2870
- }
2871
- else {
2872
- this.applyActionToNode(this, action);
2873
- }
2874
- if (typeof this.parent.mergeNodes === 'function') {
2875
- this.parent.mergeNodes(action);
2876
- }
2877
- }
2878
- /**
2879
- * @inheritDoc
2880
- */
2881
- doModifyActionApply(action) {
2882
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
2883
- }
2884
- /**
2885
- * Apply action to node
2886
- *
2887
- * @param {RTETextNode} node - Text node
2888
- * @param {AnnotationAction} action - AnnotationAction
2889
- */
2890
- applyActionToNode(node, action) {
2891
- const annotation = action.toAnnotation();
2892
- if (action instanceof SyncUpSelectionAction) {
2893
- this.syncUpSelectedNodes(node);
2894
- return;
2895
- }
2896
- // Sync up RTETextNode selected state to selection controller for any action apply, except selection range change.
2897
- if (!(annotation instanceof SelectionRangeAnnotation)) {
2898
- this.syncUpSelectedNodes(node);
2899
- }
2900
- /**
2901
- * 1. Try to get the specific strategy for the action and node type first (e.g., LinkAnnotationAction on RTETextNode).
2902
- * 2. If no specific strategy found, try to get the generic NodeUpdateAnnotationMapStrategy for AnnotationAction on RTETextNode.
2903
- */
2904
- const strategy = ActionHandleStrategyRegistry.get(action.constructor.name, node.constructor.name);
2905
- if (strategy) {
2906
- strategy.execute(action, node);
2907
- return;
2908
- }
2909
- const updateAnnotationMapStrategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTETextNode.name);
2910
- if (updateAnnotationMapStrategy) {
2911
- updateAnnotationMapStrategy.execute(action, node);
2912
- return;
2913
- }
2914
- }
2915
- /**
2916
- * Sync up the selected node by change manager
2917
- *
2918
- * @param {RTETextNode} selectedNode - The selected node
2919
- */
2920
- syncUpSelectedNodes(selectedNode) {
2921
- const currentNodeDom = this.getElementRef();
2922
- if (currentNodeDom) {
2923
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(currentNodeDom, VegaInternalRichTextEditorSelectionRangeChange);
2924
- if (nodeSubject) {
2925
- ChangeManager.notify(nodeSubject, { node: selectedNode });
2926
- }
2927
- }
2928
- }
2929
- /**
2930
- * Render the text node with the inline HTML wrapper.
2931
- *
2932
- * @param {VegaInlineHtmlSchema} inlineHtmlNode - The inline HTML schema to wrap the text node.
2933
- * @returns {string} The HTML string representation of the text node wrapped with the inline HTML.
2934
- */
2935
- renderWithWrapperStr(inlineHtmlNode) {
2936
- const { htmlTag, customAttribute, customClass, customStyle, child } = inlineHtmlNode;
2937
- const attrs = [
2938
- ...((customAttribute === null || customAttribute === void 0 ? void 0 : customAttribute.toString()) || []),
2939
- customClass === null || customClass === void 0 ? void 0 : customClass.toString(),
2940
- customStyle === null || customStyle === void 0 ? void 0 : customStyle.toString(),
2941
- ].filter(isNonNullable);
2942
- const attrStr = attrs.length > 0 ? ` ${attrs.join(' ')}` : '';
2943
- if (!child) {
2944
- return `<${htmlTag}${attrStr}>${this.renderTextStr()}</${htmlTag}>`;
2945
- }
2946
- return `<${htmlTag}${attrStr}>${this.renderWithWrapperStr(child)}</${htmlTag}>`;
2947
- }
2948
- /**
2949
- * Generates the HTML representation of the text node.
2950
- *
2951
- * @returns {string} The HTML string representation of the text node.
2952
- */
2953
- renderTextStr() {
2954
- var _a;
2955
- const NodeTag = ((_a = this.getAnnotationByType(NodeAnnotationTypeEnum.CODE)) === null || _a === void 0 ? void 0 : _a.code)
2956
- ? 'code'
2957
- : 'span';
2958
- const attrStr = super.generateAttributeString();
2959
- // If the text contains a newline character, we need to replace it with a <br> tag.
2960
- if (this.text === '\n') {
2961
- return `<br>`;
2962
- }
2963
- return this.shouldRenderAsPlainText() ? this.text : `<${NodeTag}${attrStr}>${this.text}</${NodeTag}>`;
2964
- }
2965
- /**
2966
- * Determines if the text node should be rendered as plain text.
2967
- *
2968
- * @returns {boolean} `true` if the text node should be rendered as plain text, otherwise `false`.
2969
- */
2970
- shouldRenderAsPlainText() {
2971
- const plainTextAnnotation = super.getAnnotationByType(NodeAnnotationTypeEnum.PLAIN_TEXT);
2972
- if (plainTextAnnotation) {
2973
- return (plainTextAnnotation.plainText &&
2974
- Array.from(this.annotationMap.values()).filter((annotation) => (annotation instanceof NodeAnnotation &&
2975
- !(annotation instanceof LinkAnnotation) &&
2976
- !(annotation instanceof PlainTextAnnotation)) ||
2977
- annotation instanceof CommonAnnotation).length === 0);
2978
- }
2979
- else {
2980
- return false;
2981
- }
2982
- }
2983
- }
2984
- RTETextNode.registerActionStrategyStatus = {};
2985
- RTETextNode.htmlTag = 'span';
2986
-
2987
- /**
2988
- * Append children to a block or rte content
2989
- *
2990
- * @example parent.apply(new AppendChildrenAction([newChildren]))
2991
- */
2992
- class AppendChildrenAction extends ModifyContentAction {
2993
- constructor(childNodes) {
2994
- super();
2995
- this.type = ModifyContentActionType.APPEND_CHILDREN;
2996
- this.entityToBeAppended = childNodes;
2997
- }
2998
- }
2999
-
3000
- /**
3001
- * Text style annotation
3002
- */
3003
- class TextStyleAnnotation extends BlockAnnotation {
3004
- constructor(textStyle) {
3005
- super();
3006
- this.type = BlockAnnotationTypeEnum.TEXT_STYLE;
3007
- this.textStyle = textStyle;
3008
- }
3009
- /**
3010
- * Generate the map item for the annotations
3011
- *
3012
- * @param {VegaRTETextStyleType} textStyle - the text style type
3013
- * @returns {[BlockAnnotationTypeEnum.TEXT_STYLE, TextStyleAnnotation]} Map item for the annotation
3014
- */
3015
- static from(textStyle) {
3016
- return [BlockAnnotationTypeEnum.TEXT_STYLE, new TextStyleAnnotation(textStyle)];
3017
- }
3018
- /**
3019
- * Generate the JSON representation of the annotation
3020
- *
3021
- * @returns {Nullable<Record<string, unknown>>} JSON representation of the annotation
3022
- */
3023
- toJSON() {
3024
- return { textStyle: this.textStyle };
3025
- }
3026
- /**
3027
- * @inheritDoc
3028
- */
3029
- clone() {
3030
- return new TextStyleAnnotation(this.textStyle);
3031
- }
3032
- /**
3033
- * @inheritDoc
3034
- */
3035
- renderClass(options) {
3036
- if (options === null || options === void 0 ? void 0 : options.standalone)
3037
- return null;
3038
- return this.textStyle ? `v-rte--text-style-${this.textStyle}` : null;
3039
- }
3040
- /**
3041
- * @inheritDoc
3042
- */
3043
- renderStyle(options) {
3044
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
3045
- return null;
3046
- const paragraphStyle = {
3047
- fontFamily: 'Inter',
3048
- fontSize: '16px',
3049
- lineHeight: '22px',
3050
- fontWeight: '500',
3051
- marginTop: '0px',
3052
- marginBottom: '0px',
3053
- };
3054
- switch (this.textStyle) {
3055
- case 'paragraph': {
3056
- return paragraphStyle;
3057
- }
3058
- case 'title': {
3059
- return {
3060
- fontFamily: 'Inter',
3061
- fontSize: '36px',
3062
- lineHeight: '40px',
3063
- fontWeight: '500',
3064
- };
3065
- }
3066
- case 'subtitle': {
3067
- return {
3068
- fontFamily: 'Inter',
3069
- fontSize: '28px',
3070
- lineHeight: '32px',
3071
- fontWeight: '500',
3072
- };
3073
- }
3074
- case 'heading-1': {
3075
- return {
3076
- fontFamily: 'Inter',
3077
- fontSize: '22px',
3078
- lineHeight: '24px',
3079
- fontWeight: '500',
3080
- marginTop: '0px',
3081
- marginBottom: '0px',
3082
- };
3083
- }
3084
- case 'heading-2': {
3085
- return {
3086
- fontFamily: 'Inter',
3087
- fontSize: '20px',
3088
- lineHeight: '24px',
3089
- fontWeight: '500',
3090
- marginTop: '0px',
3091
- marginBottom: '0px',
3092
- };
3093
- }
3094
- case 'heading-3': {
3095
- return {
3096
- fontFamily: 'Inter',
3097
- fontSize: '18px',
3098
- lineHeight: '22px',
3099
- fontWeight: '500',
3100
- marginTop: '0px',
3101
- marginBottom: '0px',
3102
- };
3103
- }
3104
- case 'heading-4': {
3105
- return {
3106
- fontFamily: 'Inter',
3107
- fontSize: '16px',
3108
- lineHeight: '22px',
3109
- fontWeight: '500',
3110
- marginTop: '0px',
3111
- marginBottom: '0px',
3112
- };
3113
- }
3114
- case 'heading-5': {
3115
- return {
3116
- fontFamily: 'Inter',
3117
- fontSize: '14px',
3118
- lineHeight: '22px',
3119
- fontWeight: '500',
3120
- marginTop: '0px',
3121
- marginBottom: '0px',
3122
- };
3123
- }
3124
- case 'heading-6': {
3125
- return {
3126
- fontFamily: 'Inter',
3127
- fontSize: '12px',
3128
- lineHeight: '22px',
3129
- fontWeight: '500',
3130
- marginTop: '0px',
3131
- marginBottom: '0px',
3132
- };
3133
- }
3134
- }
3135
- }
3136
- }
3137
-
3138
- /**
3139
- * Action to change the text style of a block
3140
- */
3141
- class TextStyleAnnotationAction extends AnnotationAction {
3142
- constructor(textStyle, bold) {
3143
- super();
3144
- this.isFlushable = true;
3145
- this.textStyle = textStyle;
3146
- this.bold = bold;
3147
- }
3148
- /**
3149
- * Converts the action to a block annotation
3150
- *
3151
- * @returns {BlockAnnotation} the block annotation
3152
- */
3153
- toAnnotation() {
3154
- return new TextStyleAnnotation(this.textStyle);
3155
- }
3156
- }
3157
-
3158
- /**
3159
- * Update the text block text style strategy.
3160
- */
3161
- class BlockUpdateTextStyleStrategy extends ActionHandleStrategy {
3162
- /**
3163
- * Update the text block type and add or remove the bold style from child nodes.
3164
- *
3165
- * @param {TextStyleAnnotationAction} action - The text style annotation action.
3166
- * @param {RTETextBlock} target - The current text block.
3167
- */
3168
- handleAction(action, target) {
3169
- if (target.type !== 'list-item') {
3170
- target.type = action.textStyle;
3171
- }
3172
- if (action.bold) {
3173
- target.children.forEach((node) => {
3174
- const boldAnnotationAction = new BoldAnnotationAction(true);
3175
- boldAnnotationAction.doSplit = false;
3176
- node.apply(boldAnnotationAction);
3177
- });
3178
- }
3179
- else {
3180
- target.children.forEach((node) => {
3181
- node.apply(new DeleteNodeAnnotationAction(NodeAnnotationTypeEnum.BOLD));
3182
- });
3183
- }
3184
- this.updateCustomStyleAnnotation(target, ['fontFamily', 'lineHeight', 'fontWeight', 'fontSize']);
3185
- }
3186
- }
3187
-
3188
- /**
3189
- * Update the text block link group annotation strategy.
3190
- */
3191
- class BlockUpdateLinkGroupStrategy extends ActionHandleStrategy {
3192
- /**
3193
- * Update link group after the child link node update.
3194
- *
3195
- * @param {LinkGroupAnnotationAction} action - The link group annotation action instance.
3196
- * @param {RTETextBlock} target - The current text block.
3197
- */
3198
- handleAction(action, target) {
3199
- let linkGroupAnnotation = target.getAnnotationByType(InternalAnnotationTypeEnum.LINK_GROUP);
3200
- if (action.type === 'update_link') {
3201
- if (linkGroupAnnotation) {
3202
- const linkGroup = linkGroupAnnotation.linkGroups.get(action.groupKey);
3203
- if (linkGroup) {
3204
- linkGroupAnnotation.linkGroups.set(action.groupKey, [linkGroup[0]]);
3205
- }
3206
- }
3207
- }
3208
- else {
3209
- if (linkGroupAnnotation) {
3210
- const linkGroup = linkGroupAnnotation.linkGroups.get(action.groupKey) || [];
3211
- linkGroupAnnotation.linkGroups.set(action.groupKey, [...linkGroup, ...action.nodes]);
3212
- }
3213
- else {
3214
- linkGroupAnnotation = action.toAnnotation();
3215
- linkGroupAnnotation.linkGroups.set(action.groupKey, [...action.nodes]);
3216
- }
3217
- target.annotationMap.set(InternalAnnotationTypeEnum.LINK_GROUP, linkGroupAnnotation);
3218
- }
3219
- }
3220
- }
3221
-
3222
- /**
3223
- * Insert a new children after a existing children
3224
- *
3225
- * @example parent.apply(new InsertChildrenAfterAction(existingChildren, newChildren, ...))
3226
- */
3227
- class InsertChildrenAfterAction extends ModifyContentAction {
3228
- constructor(referBlock, ...blocksToBeInserted) {
3229
- super();
3230
- this.type = ModifyContentActionType.INSERT_CHILDREN_AFTER;
3231
- this.referChildren = referBlock;
3232
- this.childrenToBeInserted = blocksToBeInserted;
3233
- }
3234
- }
3235
-
3236
- /**
3237
- * Clear the current block nodes and append new nodes
3238
- *
3239
- * @example block.apply(new ReplaceChildNodesAction(newNodes))
3240
- */
3241
- class ReplaceChildNodesAction extends ModifyContentAction {
3242
- constructor(newChildNodes) {
3243
- super();
3244
- this.type = ModifyContentActionType.REPLACE_CHILD_NODES;
3245
- this.newChildNodes = newChildNodes;
3246
- }
3247
- }
3248
-
3249
- /**
3250
- * Split the current node with a special position strategy.
3251
- */
3252
- class BlockSplitWithTextNodeStrategy extends ActionHandleStrategy {
3253
- /**
3254
- * @inheritDoc
3255
- */
3256
- handleAction(action, target) {
3257
- action.newBlock = this.splitTextNodeBlock(action.splitPointNode, action.startOffsetOfNode, target);
3258
- }
3259
- /**
3260
- * Splits a text node at a specified offset within a block of nodes and returns a new block with the split nodes.
3261
- *
3262
- * @param {RTETextNode} splitNode - The text node that will be split
3263
- * @param {number} startOffsetOfNode - The index at which will split the text content of the `splitNode`.
3264
- * @param {RTETextBlock} textBlock - The text block need to be splited.
3265
- * @returns {Nullable<RTEBlock>} return either an RTEBlock object or null.
3266
- */
3267
- splitTextNodeBlock(splitNode, startOffsetOfNode, textBlock) {
3268
- if (splitNode) {
3269
- const beforeText = splitNode.text.slice(0, startOffsetOfNode);
3270
- const afterText = splitNode.text.slice(startOffsetOfNode);
3271
- const nodesSplitIndex = textBlock.children.indexOf(splitNode);
3272
- if (nodesSplitIndex > -1) {
3273
- const beforeNodes = textBlock.children.slice(0, nodesSplitIndex);
3274
- const afterNodes = textBlock.children.slice(nodesSplitIndex + 1);
3275
- if (beforeText) {
3276
- beforeNodes.push(splitNode.cloneWithText(beforeText));
3277
- }
3278
- if (afterText) {
3279
- afterNodes.unshift(splitNode.cloneWithText(afterText));
3280
- }
3281
- textBlock.apply(new ReplaceChildNodesAction(beforeNodes));
3282
- const newBlock = textBlock.cloneWithNodes(afterNodes);
3283
- textBlock.parent.apply(new InsertChildrenAfterAction(textBlock, newBlock));
3284
- return newBlock;
3285
- }
3286
- }
3287
- }
3288
- }
3289
-
3290
- /**
3291
- * Remove all nodes and append new nodes strategy.
3292
- */
3293
- class BlockReplaceNodesStrategy extends ActionHandleStrategy {
3294
- /**
3295
- * Empty the text block or image block nodes and add new nodes.
3296
- *
3297
- * @param {ReplaceChildNodesAction} action - The replace child nodes action instance.
3298
- * @param {RTETextBlock | RTEImageBlock} target - The text block or the image block.
3299
- */
3300
- handleAction(action, target) {
3301
- target.children = [];
3302
- target.apply(new AppendChildrenAction(action.newChildNodes));
3303
- }
3304
- }
3305
-
3306
- /**
3307
- * Remove a children from the current block
3308
- *
3309
- * @example needRemovedChildren.parent.apply(new RemoveChildrenAction(needRemovedChildren))
3310
- */
3311
- class RemoveChildrenAction extends ModifyContentAction {
3312
- constructor(childNode) {
3313
- super();
3314
- this.type = ModifyContentActionType.DELETE_CHILDREN;
3315
- this.entityToBeRemoved = childNode;
3316
- }
3317
- }
3318
-
3319
- /**
3320
- * Append the second block child nodes to the first block child nodes and remove the second block strategy.
3321
- */
3322
- class BlockMergeNodesStrategy extends ActionHandleStrategy {
3323
- /**
3324
- * Merges the child nodes of two RTEBlocks if they have the same type or both are not images.
3325
- *
3326
- * @param {MergeTwoBlocksNodesAction} action - The merge block nodes action instance.
3327
- * @param {RTETextBlock | RTEImageBlock} target - The first text block or image block.
3328
- */
3329
- handleAction(action, target) {
3330
- const anotherBlock = action.blockNeedToBeMerged;
3331
- if (target.type === anotherBlock.type || (target.type !== 'image' && anotherBlock.type !== 'image')) {
3332
- let shouldMergeNodes = anotherBlock.children;
3333
- if (anotherBlock.type !== 'image') {
3334
- shouldMergeNodes = anotherBlock.children.filter((node) => node.text);
3335
- }
3336
- target.apply(new AppendChildrenAction(shouldMergeNodes));
3337
- anotherBlock.parent.apply(new RemoveChildrenAction(anotherBlock));
3338
- }
3339
- }
3340
- }
3341
-
3342
- /**
3343
- * Insert a line break node into current text block at special position strategy.
3344
- */
3345
- class BlockInsertLineBreakStrategy extends ActionHandleStrategy {
3346
- /**
3347
- * @inheritDoc
3348
- */
3349
- handleAction(action, target) {
3350
- action.lineBreakNode = this.lineBreakSingleBlock(action.startContainerNode, action.startOffset, target);
3351
- }
3352
- /**
3353
- * lineBreakSingleBlock
3354
- *
3355
- * @param {RTETextNode} splitNode -
3356
- * @param {number} startOffsetOfNode -
3357
- * @param {RTETextBlock} target -
3358
- * @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
3359
- */
3360
- lineBreakSingleBlock(splitNode, startOffsetOfNode, target) {
3361
- if (splitNode) {
3362
- const lineBreakNode = new RTETextNode(generateUUID(), '\n', target);
3363
- const beforeText = splitNode.text.slice(0, startOffsetOfNode);
3364
- const afterText = splitNode.text.slice(startOffsetOfNode);
3365
- const nodesSplitIndex = target.children.indexOf(splitNode);
3366
- if (nodesSplitIndex > -1) {
3367
- const beforeNodes = target.children.slice(0, nodesSplitIndex);
3368
- const afterNodes = target.children.slice(nodesSplitIndex + 1);
3369
- if (beforeText) {
3370
- beforeNodes.push(splitNode.cloneWithText(beforeText));
3371
- }
3372
- if (afterText) {
3373
- afterNodes.unshift(splitNode.cloneWithText(afterText));
3374
- }
3375
- this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
3376
- }
3377
- return lineBreakNode;
3378
- }
3379
- }
3380
- /**
3381
- * mergeLineBreakNodes
3382
- *
3383
- * @param {RTENode[]} beforeNodes -
3384
- * @param {RTETextNode} lineBreakNode -
3385
- * @param {RTENode[]} afterNodes -
3386
- * @param {RTETextBlock} target -
3387
- */
3388
- mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
3389
- if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
3390
- afterNodes.push(new RTETextNode(generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
3391
- }
3392
- target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
3393
- }
3394
- }
3395
-
3396
- /**
3397
- * Insert a line break node into multiple blocks selection at special position strategy.
3398
- */
3399
- class BlockInsertLineBreakWithBlocksStrategy extends ActionHandleStrategy {
3400
- /**
3401
- * @inheritDoc
3402
- */
3403
- handleAction(action, target) {
3404
- action.lineBreakNode = this.lineBreakMultipleBlocks(action.selectedBlocks, target);
3405
- }
3406
- /**
3407
- * lineBreakMultipleBlocks
3408
- *
3409
- * @param {RTEBlock[]} selectedBlocks -
3410
- * @param {RTETextBlock} target -
3411
- * @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
3412
- */
3413
- lineBreakMultipleBlocks(selectedBlocks, target) {
3414
- const beforeNodes = target.children;
3415
- const lineBreakNode = new RTETextNode(generateUUID(), '\n', target);
3416
- const afterNodes = this.concatBlocksNodes(selectedBlocks.slice(1));
3417
- this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
3418
- return lineBreakNode;
3419
- }
3420
- /**
3421
- * Concat the child nodes of multiple RTEBlocks if both are not images.
3422
- *
3423
- * @param {RTEBlock[]} blocks - multiple block of content in a rich text editor, such as a paragraph, heading, image, etc.
3424
- * @returns {RTENode[]} Array of connected block nodes
3425
- */
3426
- concatBlocksNodes(blocks) {
3427
- const nodes = [];
3428
- blocks.map((block) => {
3429
- if (block.type !== 'image') {
3430
- nodes.push(...block.children);
3431
- block.parent.apply(new RemoveChildrenAction(block));
3432
- }
3433
- });
3434
- return nodes;
3435
- }
3436
- /**
3437
- * mergeLineBreakNodes
3438
- *
3439
- * @param {RTENode[]} beforeNodes -
3440
- * @param {RTETextNode} lineBreakNode -
3441
- * @param {RTENode[]} afterNodes -
3442
- * @param {RTETextBlock} target -
3443
- */
3444
- mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
3445
- if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
3446
- afterNodes.push(new RTETextNode(generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
3447
- }
3448
- target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
3449
- }
3450
- }
3451
-
3452
- /**
3453
- * Insert a children before a existing children
3454
- *
3455
- * @example parent.apply(new InsertChildrenBeforeAction(existingChildren, newChildren, ...))
3456
- */
3457
- class InsertChildrenBeforeAction extends ModifyContentAction {
3458
- constructor(referChildren, ...childrenToBeInserted) {
3459
- super();
3460
- this.type = ModifyContentActionType.INSERT_CHILDREN_BEFORE;
3461
- this.referChildren = referChildren;
3462
- this.childrenToBeInserted = childrenToBeInserted;
3463
- }
3464
- }
3465
-
3466
- /**
3467
- * Split the block with a split point node.
3468
- * The property `newBlock` use to store the new create block if need.
3469
- *
3470
- * @example block.apply(new SplitBlockWithNodeAction(node, offset))
3471
- */
3472
- class SplitBlockWithNodeAction extends ModifyContentAction {
3473
- constructor(splitPointNode, startOffsetOfNode) {
3474
- super();
3475
- this.type = ModifyContentActionType.SPLIT_BLOCK_WITH_NODE;
3476
- this.splitPointNode = splitPointNode;
3477
- this.startOffsetOfNode = startOffsetOfNode;
3478
- }
3479
- }
3480
-
3481
- /**
3482
- * Insert a image block into the text block at special position strategy.
3483
- */
3484
- class BlockInsertImageIntoTextStrategy extends ActionHandleStrategy {
3485
- /**
3486
- * insertImage
3487
- *
3488
- * @param {InsertImageToBlockAction} action - Insert image action instance.
3489
- * @param {RTETextBlock} target - The text block.
3490
- */
3491
- handleAction(action, target) {
3492
- const splitNode = action.splitPointNode;
3493
- const startOffsetOfNode = action.startOffsetOfNode;
3494
- const newImageBlock = action.imageBlockToBeInserted;
3495
- if (this.isCaretPositionAtBlockEnd(target, splitNode, startOffsetOfNode)) {
3496
- target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
3497
- }
3498
- else if (this.isCaretPositionAtBlockStart(target, splitNode, startOffsetOfNode)) {
3499
- target.parent.apply(new InsertChildrenBeforeAction(target, newImageBlock));
3500
- }
3501
- else {
3502
- const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
3503
- target.apply(splitBlockAction);
3504
- target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
3505
- }
3506
- }
3507
- }
3508
-
3509
- /**
3510
- * Convert the selected blocks to list strategy.
3511
- */
3512
- class BlockTransformToListStrategy extends ActionHandleStrategy {
3513
- /**
3514
- * This method will create a empty list block and append all selected blocks as list item block.
3515
- *
3516
- * @param {TransformListAction} action - The transform list action instance.
3517
- * @param {RTETextBlock} target - The first item of the selected block.
3518
- */
3519
- handleAction(action, target) {
3520
- const contentState = target.parent;
3521
- const bulletList = contentState.createList(action.listType);
3522
- const selectedBlocks = action.selectedBlocks;
3523
- const listItems = selectedBlocks.map((block) => contentState.toListItem(block));
3524
- bulletList.apply(new AppendChildrenAction(listItems));
3525
- contentState.apply(new InsertChildrenAfterAction(action.selectedBlocks[0], bulletList));
3526
- selectedBlocks.forEach((block) => {
3527
- block.parent.apply(new RemoveChildrenAction(block));
3528
- });
3529
- }
3530
- }
3531
-
3532
- /**
3533
- * Action to toggle block horizontal alignment annotation
3534
- */
3535
- class HorizontalAlignmentAnnotationAction extends AnnotationAction {
3536
- constructor(textAlign) {
3537
- super();
3538
- this.isFlushable = true;
3539
- this.textAlign = textAlign;
3540
- }
3541
- /**
3542
- * Converts the action to an annotation
3543
- *
3544
- * @returns {HorizontalAlignmentAnnotation} The annotation
3545
- */
3546
- toAnnotation() {
3547
- return new HorizontalAlignmentAnnotation(this.textAlign);
3548
- }
3549
- }
3550
-
3551
- /**
3552
- * Update the text block and image block horizontal alignment strategy.
3553
- */
3554
- class BlockUpdateHorizontalAlignmentStrategy extends ActionHandleStrategy {
3555
- /**
3556
- * Updating the horizontal alignment of a block requires cascading updates to the custom style.
3557
- *
3558
- * @param {HorizontalAlignmentAnnotationAction} _action - The horizontal alignment annotation action.
3559
- * @param {RTETextBlock} target - The current text block.
3560
- */
3561
- handleAction(_action, target) {
3562
- this.updateCustomStyleAnnotation(target, ['textAlign']);
3563
- }
3564
- }
3565
-
3566
- /**
3567
- * Update the text block and image block horizontal alignment strategy.
3568
- */
3569
- class BlockUpdateIndentStrategy extends ActionHandleStrategy {
3570
- /**
3571
- * Updating the indent of a block requires cascading updates to the custom style.
3572
- *
3573
- * @param {IndentAnnotationAction} _action - The indent annotation action.
3574
- * @param {RTETextBlock} target - The current text block.
3575
- */
3576
- handleAction(_action, target) {
3577
- this.updateCustomStyleAnnotation(target, ['marginLeft']);
3578
- }
3579
- }
3580
-
3581
- /**
3582
- * Action to toggle block indent annotation
3583
- */
3584
- class IndentAnnotationAction extends AnnotationAction {
3585
- constructor(indent) {
3586
- super();
3587
- this.isFlushable = true;
3588
- this.indent = indent;
3589
- }
3590
- /**
3591
- * Converts the action to an annotation
3592
- *
3593
- * @returns {Annotation} The annotation
3594
- */
3595
- toAnnotation() {
3596
- return new IndentAnnotation(this.indent);
3597
- }
3598
- }
3599
-
3600
- /**
3601
- * Unlink the text block link group annotation strategy.
3602
- */
3603
- class BlockUnlinkLinkGroupStrategy extends ActionHandleStrategy {
3604
- /**
3605
- * Unlink the link group based on group key
3606
- *
3607
- * @param {UnlinkLinkGroupAction} action - The unlink link group action instance.
3608
- * @param {RTETextBlock} target - The current text block.
3609
- */
3610
- handleAction(action, target) {
3611
- const linkGroupAnnotation = target.getAnnotationByType(InternalAnnotationTypeEnum.LINK_GROUP);
3612
- if (linkGroupAnnotation) {
3613
- if (linkGroupAnnotation.linkGroups.size > 1) {
3614
- linkGroupAnnotation.linkGroups.delete(action.groupKey);
3615
- }
3616
- else {
3617
- target.annotationMap.delete(InternalAnnotationTypeEnum.LINK_GROUP);
3618
- }
3619
- }
3620
- }
3621
- }
3622
-
3623
- /**
3624
- * Text block
3625
- */
3626
- class RTETextBlock extends RTEBlock {
3627
- constructor(id, type, options) {
3628
- super(id);
3629
- this.children = [];
3630
- this.type = type;
3631
- const { autoMatchFormat } = options || { autoMatchFormat: true };
3632
- if (autoMatchFormat) {
3633
- if (RTETextBlock.isAcceptableTextStyle(type)) {
3634
- this.annotationMap = new Map([TextStyleAnnotation.from(type)]);
3635
- }
3636
- else {
3637
- this.annotationMap = new Map([TextStyleAnnotation.from('paragraph')]);
3638
- }
3639
- }
3640
- }
3641
- /**
3642
- * Converts a VegaRTETextBlock into an RTETextBlock.
3643
- *
3644
- * @param {VegaRTETextBlock} block - The block object
3645
- * @param {VegaRTETransformOptions} options - Optional transformation options.
3646
- * @returns {RTETextBlock} A RTETextBlock class
3647
- */
3648
- static from(block, options = { autoMatchFormat: true }) {
3649
- var _a, _b;
3650
- const textBlock = new RTETextBlock(block.id, block.type, options);
3651
- const annotations = options.autoMatchFormat
3652
- ? Object.assign(Object.assign({}, block.annotations), { textStyle: (_b = (_a = block.annotations) === null || _a === void 0 ? void 0 : _a.textStyle) !== null && _b !== void 0 ? _b : textBlock.type }) : block.annotations;
3653
- textBlock.children = block.nodes
3654
- .map((richText) => {
3655
- const NodeClass = RTEDTOClassManager$1.getRTENodeClass(richText.type);
3656
- if (NodeClass) {
3657
- return NodeClass.from(richText, textBlock, options);
3658
- }
3659
- })
3660
- .filter(isNonNullable);
3661
- if (annotations) {
3662
- super.convertAnnotationsToMap(textBlock.annotationMap, annotations);
3663
- }
3664
- return textBlock;
3665
- }
3666
- /**
3667
- * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
3668
- * and value.
3669
- *
3670
- * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
3671
- * the type of annotation entity to create.
3672
- * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
3673
- * that will be used to create the annotation entity. It can be of any type depending on the specific
3674
- * annotation being created.
3675
- * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
3676
- * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
3677
- */
3678
- static createAnnotationEntity(type, value) {
3679
- if (type === 'textStyle') {
3680
- return TextStyleAnnotation.from(value);
3681
- }
3682
- else {
3683
- return super.createAnnotationEntity(type, value);
3684
- }
3685
- }
3686
- /**
3687
- * Checks if a given text block type is one of the acceptable text styles.
3688
- *
3689
- * @param {VegaRTETextBlockType} type - The text block type
3690
- * @returns {boolean} Return a boolean value indicating whether the `type` parameter is valid.
3691
- */
3692
- static isAcceptableTextStyle(type) {
3693
- return [
3694
- 'title',
3695
- 'subtitle',
3696
- 'paragraph',
3697
- 'heading-1',
3698
- 'heading-2',
3699
- 'heading-3',
3700
- 'heading-4',
3701
- 'heading-5',
3702
- 'heading-6',
3703
- ].includes(type);
3704
- }
3705
- /**
3706
- * Merges RTETextNode nodes based on certain conditions.
3707
- *
3708
- * @param {AnnotationAction} action - AnnotationAction
3709
- */
3710
- mergeNodes(action) {
3711
- this.children = this.children.reduce((prev, cur) => {
3712
- const lastNode = prev.at(-1);
3713
- if (action instanceof LinkAnnotationAction && action.needMergeNode) {
3714
- const lastNodeLinkAnnotation = lastNode === null || lastNode === void 0 ? void 0 : lastNode.getAnnotationByType(NodeAnnotationTypeEnum.LINK);
3715
- const curNodeLinkAnnotation = cur.getAnnotationByType(NodeAnnotationTypeEnum.LINK);
3716
- if (lastNodeLinkAnnotation &&
3717
- curNodeLinkAnnotation &&
3718
- lastNodeLinkAnnotation.toEqual(curNodeLinkAnnotation)) {
3719
- return prev;
3720
- }
3721
- }
3722
- // TODO: handle other cases like merge bold nodes
3723
- return [...prev, cur];
3724
- }, []);
3725
- }
3726
- /**
3727
- * @inheritDoc
3728
- */
3729
- toJSON() {
3730
- return Object.assign(Object.assign({}, super.toJSON()), { type: this.type, nodes: this.children.map((node) => node.toJSON()) });
3731
- }
3732
- /**
3733
- * @inheritDoc
3734
- */
3735
- toHtml() {
3736
- const BlockTag = this.getBlockTag();
3737
- const attrStr = super.generateAttributeString();
3738
- const nodesHtml = this.getChildrenHtml();
3739
- return super.shouldRenderAsInternalWrapper()
3740
- ? nodesHtml
3741
- : [`<${BlockTag}${attrStr}>`, nodesHtml, `</${BlockTag}>`].join('');
3742
- }
3743
- /**
3744
- * Clone the nodes to a new block
3745
- *
3746
- * @param {RTEBlock} nodes - The nodes will be copied
3747
- * @returns {RTETextBlock} New block
3748
- */
3749
- cloneWithNodes(nodes) {
3750
- const block = new RTETextBlock(generateUUID(), this.type);
3751
- block.annotationMap = super.cloneAnnotations();
3752
- block.apply(new AppendChildrenAction(nodes));
3753
- return block;
3754
- }
3755
- /**
3756
- * @inheritDoc
3757
- */
3758
- clone(parent) {
3759
- const clonedBlock = new RTETextBlock(this.id, this.type);
3760
- clonedBlock.children = this.children.map((node) => node.clone(clonedBlock));
3761
- clonedBlock.annotationMap = super.cloneAnnotations();
3762
- clonedBlock.parent = parent;
3763
- return clonedBlock;
3764
- }
3765
- /**
3766
- * @inheritDoc
3767
- */
3768
- isNotEmpty() {
3769
- return this.children.length > 0 && this.children.some((node) => !node.isEmpty());
3770
- }
3771
- /**
3772
- * @inheritDoc
3773
- */
3774
- getLastNode() {
3775
- return this.children[this.children.length - 1];
3776
- }
3777
- /**
3778
- * Get the HTML tag for the block based on its type.
3779
- *
3780
- * @returns {RTETextBlockTagType} The HTML tag for the block.
3781
- */
3782
- getBlockTag() {
3783
- switch (this.type) {
3784
- case 'title':
3785
- case 'subtitle':
3786
- return `div`;
3787
- case 'heading-1':
3788
- return `h1`;
3789
- case 'heading-2':
3790
- return `h2`;
3791
- case 'heading-3':
3792
- return `h3`;
3793
- case 'heading-4':
3794
- return `h4`;
3795
- case 'heading-5':
3796
- return `h5`;
3797
- case 'heading-6':
3798
- return `h6`;
3799
- case 'paragraph':
3800
- default:
3801
- return 'p';
3802
- }
3803
- }
3804
- /**
3805
- * Get the HTML string for the children nodes, including handling link group annotations.
3806
- *
3807
- * @returns {string} The HTML string representing the children nodes.
3808
- */
3809
- getChildrenHtml() {
3810
- const linkGroupAnnotation = this.getAnnotationByType(InternalAnnotationTypeEnum.LINK_GROUP);
3811
- let nodesHtml = this.children.map((node) => node.toHtml()).join('');
3812
- if (linkGroupAnnotation && this.children.length > 0) {
3813
- nodesHtml = this.generateLinkHtml(linkGroupAnnotation, nodesHtml);
3814
- }
3815
- return nodesHtml;
3816
- }
3817
- /**
3818
- * @inheritDoc
3819
- */
3820
- doAnnotationActionApply(action) {
3821
- const strategy = ActionHandleStrategyRegistry.get(action.constructor.name, RTETextBlock.name);
3822
- if (strategy) {
3823
- strategy.execute(action, this);
3824
- }
3825
- }
3826
- /**
3827
- * Generate Link Html
3828
- *
3829
- * @param {LinkGroupAnnotation} linkGroupAnnotation - linkGroupAnnotation
3830
- * @param {string} nodesHtml - The nodes html
3831
- * @returns {string} link html
3832
- */
3833
- generateLinkHtml(linkGroupAnnotation, nodesHtml) {
3834
- nodesHtml = '';
3835
- let linkGroupNodes = [];
3836
- for (let i = 0; i < this.children.length; i++) {
3837
- const currentLinkAnnotation = this.children[i].getAnnotationByType(NodeAnnotationTypeEnum.LINK);
3838
- const nextLinkAnnotation = this.children[i + 1]
3839
- ? this.children[i + 1].getAnnotationByType(NodeAnnotationTypeEnum.LINK)
3840
- : null;
3841
- if (currentLinkAnnotation) {
3842
- linkGroupNodes.push(this.children[i]);
3843
- if (!nextLinkAnnotation ||
3844
- currentLinkAnnotation.link.groupKey !== nextLinkAnnotation.link.groupKey) {
3845
- const linkAttributes = linkGroupAnnotation.toString(currentLinkAnnotation, {
3846
- standalone: true,
3847
- });
3848
- nodesHtml += [
3849
- `<a${linkAttributes ? ` ${linkAttributes}` : ''}>`,
3850
- linkGroupNodes.map((linkNode) => linkNode.toHtml()).join(''),
3851
- `</a>`,
3852
- ].join('');
3853
- linkGroupNodes = [];
3854
- }
3855
- }
3856
- else {
3857
- nodesHtml += this.children[i].toHtml();
3858
- }
3859
- }
3860
- return nodesHtml;
3861
- }
3862
- }
3863
- (() => {
3864
- ActionHandleStrategyRegistry.register(TextStyleAnnotationAction.name, RTETextBlock.name, new BlockUpdateTextStyleStrategy());
3865
- ActionHandleStrategyRegistry.register(HorizontalAlignmentAnnotationAction.name, RTETextBlock.name, new BlockUpdateHorizontalAlignmentStrategy());
3866
- ActionHandleStrategyRegistry.register(IndentAnnotationAction.name, RTETextBlock.name, new BlockUpdateIndentStrategy());
3867
- ActionHandleStrategyRegistry.register(LinkGroupAnnotationAction.name, RTETextBlock.name, new BlockUpdateLinkGroupStrategy());
3868
- ActionHandleStrategyRegistry.register(ModifyContentActionType.UNLINK_LINK_GROUP, RTETextBlock.name, new BlockUnlinkLinkGroupStrategy());
3869
- ActionHandleStrategyRegistry.register(ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTETextBlock.name, new BlockSplitWithTextNodeStrategy());
3870
- ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_CHILD_NODES, RTETextBlock.name, new BlockReplaceNodesStrategy());
3871
- ActionHandleStrategyRegistry.register(ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTETextBlock.name, new BlockMergeNodesStrategy());
3872
- ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTETextBlock.name, new BlockInsertLineBreakStrategy());
3873
- ActionHandleStrategyRegistry.register(ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTETextBlock.name, new BlockInsertLineBreakWithBlocksStrategy());
3874
- ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTETextBlock.name, new BlockInsertImageIntoTextStrategy());
3875
- ActionHandleStrategyRegistry.register(ModifyContentActionType.TRANSFORM_LIST_BLOCK, RTETextBlock.name, new BlockTransformToListStrategy());
3876
- })();
3877
-
3878
- /**
3879
- * The delete node content contains some common functions that used for image block delete the image node or text block delete text node.
3880
- */
3881
- class BlockDeleteNodeContentStrategy extends ActionHandleStrategy {
3882
- /**
3883
- * Returns the previous node relative to the current node in a rich text editor structure.
3884
- *
3885
- * @param {RTENode} currentNode - An object of type `RTENode`.
3886
- * @returns {Nullable<RTENode>} the previous block last node
3887
- */
3888
- getPreviousNode(currentNode) {
3889
- const currentBlock = currentNode.parent;
3890
- const currentIndex = currentBlock.children.indexOf(currentNode);
3891
- if (currentIndex > 0) {
3892
- return currentBlock.children[currentIndex - 1];
3893
- }
3894
- else if (currentBlock.parent) {
3895
- const previousBlock = this.getPreviousBlock(currentBlock);
3896
- if (previousBlock) {
3897
- return this.getBlockLastNode(previousBlock);
3898
- }
3899
- }
3900
- }
3901
- /**
3902
- * Returns the next node relative to the current node in a rich text editor structure.
3903
- *
3904
- * @param {RTENode} currentNode - An object of type `RTENode`.
3905
- * @returns {Nullable<RTENode>} the next block first node
3906
- */
3907
- getNextNode(currentNode) {
3908
- const currentBlock = currentNode.parent;
3909
- const currentIndex = currentBlock.children.indexOf(currentNode);
3910
- if (currentBlock.children[currentIndex + 1]) {
3911
- return currentBlock.children[currentIndex + 1];
3912
- }
3913
- else if (currentBlock.parent) {
3914
- const nextBlock = this.getNextBlock(currentBlock);
3915
- if (nextBlock) {
3916
- return this.getBlockFirstNode(nextBlock);
3917
- }
3918
- }
3919
- }
3920
- /**
3921
- * Determines if a given node is the first node within the current state.
3922
- *
3923
- * @param {RTENode} currentNode - An object representing a node in a rich text editor (RTE).
3924
- * @returns {boolean} True or false;
3925
- */
3926
- isContentFirstNode(currentNode) {
3927
- const currentBlock = currentNode.parent;
3928
- const currentIndex = currentBlock.children.indexOf(currentNode);
3929
- const parent = currentBlock.parent;
3930
- if (currentBlock.isListItemBlock()) {
3931
- const listParent = parent.parent;
3932
- return (currentIndex === 0 &&
3933
- Array.isArray(parent.children) &&
3934
- parent.children[0] === currentBlock &&
3935
- listParent['type'] !== 'list-item' &&
3936
- Array.isArray(listParent.children) &&
3937
- listParent.children[0] === parent);
3938
- }
3939
- else {
3940
- return (currentIndex === 0 && Array.isArray(parent.children) && parent.children[0] === currentBlock);
3941
- }
3942
- }
3943
- /**
3944
- * TODO: The getPreviousBlock add nest list support
3945
- * This function retrieves the previous block in a rich text editor, considering different scenarios such as being in a bullet list.
3946
- *
3947
- * @param {RTEBlock} currentBlock - Used to retrieve the previous block relative to the given `currentBlock` within a rich text editor context.
3948
- * @returns {Nullable<RTEBlock>} The previous block if existing
3949
- */
3950
- getPreviousBlock(currentBlock) {
3951
- if (currentBlock && currentBlock.parent && currentBlock.parent.children) {
3952
- const currentBlockIndex = currentBlock.parent.children.indexOf(currentBlock);
3953
- if (currentBlockIndex > 0) {
3954
- return currentBlock.parent.children[currentBlockIndex - 1];
3955
- }
3956
- else if (this.isRTEBlock(currentBlock.parent) && currentBlockIndex === 0) {
3957
- return this.getPreviousBlock(currentBlock.parent);
3958
- }
3959
- }
3960
- }
3961
- /**
3962
- * Returns the last node within a given RTE block, handling different block types accordingly.
3963
- *
3964
- * @param {RTEBlock} currentBlock - Returns the last node within that block.
3965
- * @returns {Nullable<RTENode>} Returns the last node of the given `currentBlock` object.
3966
- */
3967
- getBlockLastNode(currentBlock) {
3968
- return currentBlock.getLastNode();
3969
- }
3970
- /**
3971
- * Returns the first node within a given RTE block, handling different block types accordingly.
3972
- *
3973
- * @param {RTEBlock} currentBlock - Returns the first node within that block.
3974
- * @returns {Nullable<RTENode>} Returns the first node of the given `currentBlock` object.
3975
- */
3976
- getBlockFirstNode(currentBlock) {
3977
- if (currentBlock.type === 'number-list' || currentBlock.type === 'bullet-list') {
3978
- if (currentBlock.children) {
3979
- const firstListItem = currentBlock.children[0];
3980
- return this.getBlockFirstNode(firstListItem);
3981
- }
3982
- }
3983
- else {
3984
- if (currentBlock.children) {
3985
- return currentBlock.children[0];
3986
- }
3987
- }
3988
- }
3989
- /**
3990
- * This function retrieves the next block in a rich text editor, considering different scenarios such as being in a bullet list.
3991
- *
3992
- * @param {RTEBlock} currentBlock - Used to retrieve the next block relative to the given `currentBlock` within a rich text editor context.
3993
- * @returns {Nullable<RTEBlock>} The next block if existing
3994
- */
3995
- getNextBlock(currentBlock) {
3996
- if (currentBlock && currentBlock.parent && currentBlock.parent.children) {
3997
- const currentBlockIndex = currentBlock.parent.children.indexOf(currentBlock);
3998
- if (currentBlock.parent.children[currentBlockIndex + 1]) {
3999
- return currentBlock.parent.children[currentBlockIndex + 1];
4000
- }
4001
- else if (currentBlock.type === 'list-item' &&
4002
- currentBlock.parent.children.length === currentBlockIndex + 1) {
4003
- return this.getNextBlock(currentBlock.parent);
4004
- }
4005
- }
4006
- }
4007
- /**
4008
- * Checks if the given instance is not the root content block.
4009
- *
4010
- * @param {RTEBlock | VegaRTEContent} block - The instance to check.
4011
- * @returns {boolean} True if the block is not the root content block, false otherwise.
4012
- */
4013
- isRTEBlock(block) {
4014
- return block && block.constructor.name !== 'VegaRTEContent';
4015
- }
4016
- }
4017
-
4018
- /**
4019
- * Remove the code block from the value, call this action if want to flush value after action.
4020
- */
4021
- class CodeBlockRemoveSelfStrategy extends BlockDeleteNodeContentStrategy {
4022
- /**
4023
- * @inheritDoc
4024
- */
4025
- handleAction(_action, target) {
4026
- const node = target.children[0];
4027
- const parent = target.parent;
4028
- if (parent) {
4029
- let focusNode = this.getPreviousNode(node);
4030
- let offset = this.getRTENodeEndOffset(focusNode);
4031
- if (!focusNode) {
4032
- focusNode = this.getNextNode(node);
4033
- offset = 0;
4034
- }
4035
- parent.apply(new RemoveChildrenAction(target));
4036
- const focusElement = focusNode
4037
- ? stateEntityRenderingRegistry.getDOMByEntity(focusNode)
4038
- : null;
4039
- if (parent.children.length === 0) {
4040
- const defaultParagraph = RTETextBlock.from({
4041
- id: generateUUID(),
4042
- type: 'paragraph',
4043
- nodes: [{ id: generateUUID(), type: 'text', text: '' }],
4044
- });
4045
- target.parent.apply(new AppendChildrenAction([defaultParagraph]));
4046
- focusNode = defaultParagraph.children[0];
4047
- offset = 0;
4048
- }
4049
- this.notifyUpdateSelection(focusNode, focusElement, offset, target);
4050
- }
4051
- }
4052
- /**
4053
- * Update the rich text next selection range.
4054
- *
4055
- * @param {RTENode} focusNode - The next focus node dto.
4056
- * @param {Nullable<HTMLElement>} focusElement - The next focus element. The update selection task could run directly when the element is exist.
4057
- * @param {number} offset - The next focus text offset.
4058
- * @param {RTECodeBlock} target - The code block dto.
4059
- */
4060
- notifyUpdateSelection(focusNode, focusElement, offset, target) {
4061
- const targetDom = stateEntityRenderingRegistry.getDOMByEntity(target);
4062
- if (targetDom) {
4063
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(targetDom, VegaInternalRichTextEditorSelectionRangeChange);
4064
- if (nodeSubject) {
4065
- ChangeManager.notify(nodeSubject, {
4066
- node: focusNode,
4067
- updateDirectly: focusElement ? true : false,
4068
- offset,
4069
- });
4070
- }
4071
- }
4072
- }
4073
- /**
4074
- * Get the node content end offset.
4075
- *
4076
- * @param {Nullable<RTENode>} node - The RTENode.
4077
- * @returns {number} - The number value.
4078
- */
4079
- getRTENodeEndOffset(node) {
4080
- if (node) {
4081
- return node.getRangeEndOffset();
4082
- }
4083
- return 0;
4084
- }
4085
- }
4086
-
4087
- /**
4088
- * Update the code block content or language action.
4089
- *
4090
- * @example codeNode.apply(new UpdateCodeBlockAction(content, language))
4091
- */
4092
- class UpdateCodeBlockAction extends ModifyContentAction {
4093
- constructor(content, language) {
4094
- super();
4095
- this.isFlushable = true;
4096
- this.type = ModifyContentActionType.UPDATE_CODE_BLOCK;
4097
- this.content = content;
4098
- this.language = language;
4099
- }
4100
- }
4101
-
4102
- /**
4103
- * Remove the line break and insert new paragraph after code block.
4104
- */
4105
- class SwitchOutFromCodeBlockStrategy extends ActionHandleStrategy {
4106
- /**
4107
- * @inheritDoc
4108
- */
4109
- handleAction(action, target) {
4110
- const { content, language } = action;
4111
- const textArray = content.split('\n');
4112
- const updateAction = new UpdateCodeBlockAction(textArray.slice(0, textArray.length - 2).join('\n'), language);
4113
- updateAction.isFlushable = false;
4114
- target.children[0].apply(updateAction);
4115
- const textBlock = RTETextBlock.from({
4116
- id: generateUUID(),
4117
- type: 'paragraph',
4118
- nodes: [{ id: generateUUID(), text: '', type: 'text' }],
4119
- });
4120
- target.parent.apply(new InsertChildrenAfterAction(target, textBlock));
4121
- // Focus the next text node after value update.
4122
- const currentNodeDom = stateEntityRenderingRegistry.getDOMByEntity(target);
4123
- if (currentNodeDom) {
4124
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(currentNodeDom, VegaInternalRichTextEditorSelectionRangeChange);
4125
- if (nodeSubject) {
4126
- ChangeManager.notify(nodeSubject, { node: textBlock.children[0] });
4127
- }
4128
- }
4129
- }
4130
- }
4131
-
4132
- /**
4133
- * Update the language or content of code block strategy.
4134
- */
4135
- class UpdateCodeBlockStrategy extends ActionHandleStrategy {
4136
- /**
4137
- * @inheritDoc
4138
- */
4139
- handleAction(action, target) {
4140
- const { content, language } = action;
4141
- target.language = language;
4142
- target.text = content;
4143
- }
4144
- }
4145
-
4146
- /**
4147
- * Action to change the selection range
4148
- */
4149
- class SelectionChangeAction extends AnnotationAction {
4150
- constructor(range) {
4151
- super();
4152
- this.isFlushable = false;
4153
- this.range = range;
4154
- }
4155
- /**
4156
- * Converts the action to an annotation
4157
- *
4158
- * @returns {SelectionRangeAnnotation} The annotation
4159
- */
4160
- toAnnotation() {
4161
- return new SelectionRangeAnnotation(this.range);
4162
- }
4163
- }
4164
-
4165
- /**
4166
- * Update the code block node annotation map strategy.
4167
- */
4168
- class CodeNodeSetSelectionRangeAnnotationStrategy extends ActionHandleStrategy {
4169
- /**
4170
- * @inheritDoc
4171
- */
4172
- handleAction(action, target) {
4173
- target.annotationMap.set(InternalAnnotationTypeEnum.SELECTION_RANGE, action.toAnnotation());
4174
- }
4175
- }
4176
-
4177
- /**
4178
- * Abstract class for decorator nodes. A decorator node modifies content like an image node that will delete the whole node when the delete button is pressed.
4179
- */
4180
- class RTEDecoratorNode extends RTENode {
4181
- constructor() {
4182
- super(...arguments);
4183
- this.type = 'decorator-node';
4184
- this.isSelected = false;
4185
- }
4186
- /**
4187
- * Check the element is a decorator node container.
4188
- *
4189
- * @param {HTMLElement} element - The checked element.
4190
- * @returns {boolean} - The result of the check.
4191
- */
4192
- static isDecoratorNodeContainerElement(element) {
4193
- return element && element.classList.contains(RTEDecoratorNode.DECORATOR_CONTAINER_CLASS);
4194
- }
4195
- /**
4196
- * Get the decorator node element within the container.
4197
- *
4198
- * @param {HTMLElement} container - The container element.
4199
- * @returns {Nullable<HTMLElement>} - The decorator node element, if found.
4200
- */
4201
- static getDecoratorNodeElement(container) {
4202
- return container.querySelector(`.${RTEDecoratorNode.DECORATOR_NODE_CLASS}`);
4203
- }
4204
- /**
4205
- * @inheritDoc
4206
- */
4207
- getRangeEndOffset() {
4208
- return 1;
4209
- }
4210
- /**
4211
- * @inheritDoc
4212
- */
4213
- getRangeContainer() {
4214
- const element = this.getElementRef();
4215
- if (element) {
4216
- return findParent(element, `.${RTEDecoratorNode.DECORATOR_CONTAINER_CLASS}`);
4217
- }
4218
- }
4219
- /**
4220
- * The decorator node is not content editable from the outside.
4221
- *
4222
- * @returns {boolean} - Always returns false for decorator nodes.
4223
- */
4224
- isContentEditable() {
4225
- return false;
4226
- }
4227
- }
4228
- // CSS class names for the decorator node parent element
4229
- RTEDecoratorNode.DECORATOR_CONTAINER_CLASS = 'v-internal-decorator-container';
4230
- // CSS class names for the decorator node element
4231
- RTEDecoratorNode.DECORATOR_NODE_CLASS = 'v-internal-decorator-node';
4232
-
4233
- /**
4234
- * RTE code node DTO class.
4235
- */
4236
- class RTECodeBlockNode extends RTEDecoratorNode {
4237
- constructor(id, content, language, parentBlock) {
4238
- super(id);
4239
- this.type = NodeTypeEnum.CODE_BLOCK_NODE;
4240
- this.text = '';
4241
- this.annotationMap = new Map();
4242
- this.text = content;
4243
- this.parent = parentBlock;
4244
- this.language = language;
4245
- }
4246
- /**
4247
- * The code node toJSON method will called internal.
4248
- *
4249
- * @returns {VegaRTECodeNode} - An object contains content property.
4250
- */
4251
- toJSON() {
4252
- return { id: this.id, type: 'text', text: this.text, language: this.language };
4253
- }
4254
- /**
4255
- * @inheritDoc
4256
- */
4257
- toHtml() {
4258
- return `<code style='box-sizing: border-box;color: rgba(var(--v-text-primary, 32, 54, 69, 1));text-align: left;font-family: "Roboto Mono";font-weight: 400;line-height: 22px;font-size: 16px;white-space: pre-wrap;min-height: 22px;tab-size: 2px;'>${this.text}</code>`;
4259
- }
4260
- /**
4261
- * @inheritDoc
4262
- */
4263
- clone(parent) {
4264
- const cloned = new RTECodeBlockNode(this.id, this.text, this.language, parent);
4265
- return cloned;
4266
- }
4267
- /**
4268
- * @inheritDoc
4269
- */
4270
- doAnnotationActionApply(action) {
4271
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4272
- }
4273
- /**
4274
- * @inheritDoc
4275
- */
4276
- doModifyActionApply(action) {
4277
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4278
- }
4279
- }
4280
- (() => {
4281
- ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_CODE_BLOCK, RTECodeBlockNode.name, new UpdateCodeBlockStrategy());
4282
- ActionHandleStrategyRegistry.register(SelectionChangeAction.name, RTECodeBlockNode.name, new CodeNodeSetSelectionRangeAnnotationStrategy());
4283
- })();
4284
-
4285
- /**
4286
- * Insert image behind after code block strategy.
4287
- */
4288
- class CodeBlockInsertImageStrategy extends ActionHandleStrategy {
4289
- /**
4290
- * Insert image block at behind of the RTE code block.
4291
- *
4292
- * @param {InsertImageToBlockAction} action - The insert image action instance.
4293
- * @param {RTECodeBlock} target - The code block.
4294
- */
4295
- handleAction(action, target) {
4296
- const imageBlock = action.imageBlockToBeInserted;
4297
- target.parent.apply(new InsertChildrenAfterAction(target, imageBlock));
4298
- }
4299
- }
4300
-
4301
- var CodeLanguage;
4302
- (function (CodeLanguage) {
4303
- CodeLanguage["CSS"] = "css";
4304
- CodeLanguage["HTML"] = "html";
4305
- CodeLanguage["JavaScript"] = "js";
4306
- CodeLanguage["JSX"] = "jsx";
4307
- CodeLanguage["Plain Text"] = "plainText";
4308
- CodeLanguage["TypeScript"] = "ts";
4309
- CodeLanguage["TSX"] = "tsx";
4310
- })(CodeLanguage || (CodeLanguage = {}));
4311
-
4312
- /**
4313
- * Remove the node from the text block or image block strategy.
4314
- */
4315
- class RemoveChildrenStrategy extends ActionHandleStrategy {
4316
- /**
4317
- * Remove the node or block from the parent.
4318
- * Remove the block if the block children is empty after delete the current element.
4319
- *
4320
- * @param {RemoveChildrenAction} action - The remove child action instance.
4321
- * @param {RTEBlock | VegaRTEContent} target - The parent block of the node that will be removed.
4322
- */
4323
- handleAction(action, target) {
4324
- const arrayFixed = target.children;
4325
- target.children = arrayFixed.filter((node) => node !== action.entityToBeRemoved);
4326
- if (target.children.length === 0 && 'parent' in target && target.parent) {
4327
- if (!target.isListItemBlock()) {
4328
- target.parent.apply(new RemoveChildrenAction(target));
4329
- }
4330
- else if (!target.nestList || !target.nestList.length) {
4331
- target.parent.apply(new RemoveChildrenAction(target));
4332
- }
4333
- }
4334
- }
4335
- }
4336
-
4337
- /**
4338
- * The code block DTO class.
4339
- */
4340
- class RTECodeBlock extends RTEBlock {
4341
- constructor(id, content, language) {
4342
- super(id);
4343
- this.type = 'code-block';
4344
- this.children = [new RTECodeBlockNode(`${id}-1`, content, language, this)];
4345
- }
4346
- /**
4347
- * Converts a VegaRTECodeBlock into an RTECodeBlock.
4348
- *
4349
- * @param {VegaRTECodeBlock} block - The block object
4350
- * @returns {RTECodeBlock} A RTECodeBlock class
4351
- */
4352
- static from(block) {
4353
- return new RTECodeBlock(block.id, block.content, block.language);
4354
- }
4355
- /**
4356
- * @inheritDoc
4357
- */
4358
- toJSON() {
4359
- const { language, text } = this.children[0];
4360
- return {
4361
- id: this.id,
4362
- type: 'code-block',
4363
- content: text,
4364
- language,
4365
- };
4366
- }
4367
- /**
4368
- * @inheritDoc
4369
- */
4370
- toHtml() {
4371
- const { language = CodeLanguage['Plain Text'] } = this.children[0];
4372
- return `<pre data-language="${language}" style="background-color: rgba(var(--v-bg-secondary, 245, 247, 247, 1)); padding: 12px">${this.children.map((node) => node.toHtml())}</pre>`;
4373
- }
4374
- /**
4375
- * @inheritDoc
4376
- */
4377
- clone(parent) {
4378
- const cloneCodeBlock = RTECodeBlock.from(this.toJSON());
4379
- cloneCodeBlock.parent = parent;
4380
- return cloneCodeBlock;
4381
- }
4382
- /**
4383
- * Apply action to block
4384
- *
4385
- * @param {ModifyContentAction} action - modify content action.
4386
- */
4387
- apply(action) {
4388
- if (action instanceof ModifyContentAction) {
4389
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4390
- }
4391
- if (action.isFlushable) {
4392
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
4393
- if (domNode) {
4394
- const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, VegaInternalRichTextEditorFlushChanges);
4395
- if (nodeSubject) {
4396
- ChangeManager.notify(nodeSubject, {});
4397
- }
4398
- }
4399
- }
4400
- }
4401
- /**
4402
- * @inheritDoc
4403
- */
4404
- isNotEmpty() {
4405
- return !!this.children.length;
4406
- }
4407
- /**
4408
- * @inheritDoc
4409
- */
4410
- getLastNode() {
4411
- return this.children[0];
4412
- }
4413
- /**
4414
- * The code block is selected or not.
4415
- *
4416
- * @returns {boolean} - The boolean result.
4417
- */
4418
- isSelected() {
4419
- return this.children[0].annotationMap.has(InternalAnnotationTypeEnum.SELECTION_RANGE);
4420
- }
4421
- }
4422
- (() => {
4423
- ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_CODE_BLOCK, RTECodeBlock.name, new CodeBlockRemoveSelfStrategy());
4424
- ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_CHILDREN, RTECodeBlock.name, new RemoveChildrenStrategy());
4425
- ActionHandleStrategyRegistry.register(ModifyContentActionType.SWITCH_OUT_FROM_CODE_BLOCK, RTECodeBlock.name, new SwitchOutFromCodeBlockStrategy());
4426
- ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTECodeBlock.name, new CodeBlockInsertImageStrategy());
4427
- })();
4428
- RTECodeBlock.CODE_BLOCK_PLACEHOLDER_CLASS_NAME = 'code-block-placeholder-element';
4429
-
4430
- export { TextColorAnnotationAction as $, ActionHandleStrategyRegistry as A, BlockAnnotation as B, CustomStyleAnnotation as C, NodeTypeEnum as D, CommonAnnotation as E, AnnotationAction as F, ReplaceChildNodesAction as G, HorizontalAlignmentAnnotationAction as H, InsertChildrenAfterAction as I, SplitBlockWithNodeAction as J, BlockDeleteNodeContentStrategy as K, RemoveChildrenStrategy as L, ModifyContentAction as M, NodeAnnotation as N, RTE_TEXT_COLORS as O, RTE_DEFAULT_TEXT_COLOR as P, CodeLanguage as Q, RTEDTOClassManager$1 as R, SyncUpSelectionAction as S, TextStyleAnnotationAction as T, UpdateTextAction as U, VegaRTEPresetToolbarItems as V, LinkAnnotationAction as W, CommonAnnotationTypeEnum as X, UpdateCodeBlockAction as Y, ZERO_WIDTH_SPACE as Z, SelectionChangeAction as _, ActionHandlerInterceptorRegistry as a, RTECodeBlockNode as a0, BoldAnnotationAction as a1, ItalicAnnotationAction as a2, UnderlineAnnotationAction as a3, TextStyleAnnotation as a4, BoldAnnotation as a5, ClearFormattingAnnotationAction as a6, CodeAnnotationAction as a7, StrikethroughAnnotationAction as a8, IndentAnnotationAction as a9, RTETextNode as b, ModifyContentActionType as c, ActionHandleStrategy as d, RTETextBlock as e, RTEBlock as f, RTEAnnotationStyle as g, AppendChildrenAction as h, RTENode as i, InsertChildrenBeforeAction as j, InternalAnnotationTypeEnum as k, RemoveChildrenAction as l, BlockUpdateTextStyleStrategy as m, BlockUpdateHorizontalAlignmentStrategy as n, BlockInsertLineBreakStrategy as o, BlockInsertLineBreakWithBlocksStrategy as p, BlockSplitWithTextNodeStrategy as q, BlockReplaceNodesStrategy as r, stateEntityRenderingRegistry as s, BlockMergeNodesStrategy as t, BlockAnnotationTypeEnum as u, CustomClassAnnotation as v, CustomAttributeAnnotation as w, RTECodeBlock as x, NodeAnnotationTypeEnum as y, RTEDecoratorNode as z };