@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,4488 +0,0 @@
1
- 'use strict';
2
-
3
- const changeManager = require('./change-manager-a297e4d2.js');
4
- const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-f040608b.js');
5
- const vegaInternalEventId = require('./vega-internal-event-id-6d4a2c53.js');
6
- const string = require('./string-39438062.js');
7
- const globalSlimmerRegistry = require('./global-slimmer-registry-b3bce7e0.js');
8
- const typeGuard = require('./type-guard-f12b5bae.js');
9
- const createPublicApiRuntimeMetricsSlimmer = require('./create-public-api-runtime-metrics-slimmer-e2e274e1.js');
10
- const darkModeStyleController = require('./dark-mode-style-controller-c21172aa.js');
11
- const object = require('./object-e2e28e3d.js');
12
- const ui = require('./ui-9e181079.js');
13
-
14
- exports.InternalAnnotationTypeEnum = void 0;
15
- (function (InternalAnnotationTypeEnum) {
16
- InternalAnnotationTypeEnum["SELECTION_RANGE"] = "SELECTION_RANGE";
17
- InternalAnnotationTypeEnum["CLEAR_FORMATTING"] = "CLEAR_FORMATTING";
18
- InternalAnnotationTypeEnum["LINK_GROUP"] = "LINK_GROUP";
19
- })(exports.InternalAnnotationTypeEnum || (exports.InternalAnnotationTypeEnum = {}));
20
- /**
21
- * Abstract class for all annotations
22
- */
23
- class Annotation {
24
- }
25
-
26
- exports.BlockAnnotationTypeEnum = void 0;
27
- (function (BlockAnnotationTypeEnum) {
28
- BlockAnnotationTypeEnum["ALIGNMENT"] = "ALIGNMENT";
29
- BlockAnnotationTypeEnum["TEXT_STYLE"] = "TEXT_STYLE";
30
- BlockAnnotationTypeEnum["INDENT"] = "INDENT";
31
- BlockAnnotationTypeEnum["LIST"] = "LIST";
32
- BlockAnnotationTypeEnum["INTERNAL_WRAPPER"] = "INTERNAL_WRAPPER";
33
- })(exports.BlockAnnotationTypeEnum || (exports.BlockAnnotationTypeEnum = {}));
34
- /**
35
- * BlockAnnotation is an abstract class that represents a block annotation.
36
- */
37
- class BlockAnnotation extends Annotation {
38
- }
39
-
40
- /**
41
- * This class is responsible for keeping track of the DOM elements and their corresponding entities.
42
- */
43
- class StateEntityRenderingRegistry {
44
- constructor() {
45
- this.domToEntity = new WeakMap();
46
- this.entityToDOM = new WeakMap();
47
- this.contentEntityToRootDom = new Map();
48
- this.rootDomToContentEntity = new WeakMap();
49
- }
50
- /**
51
- * Registers a DOM element and its corresponding entity.
52
- *
53
- * @param {HTMLElement} dom The DOM element to register.
54
- * @param {RTEBlock | RTENode | VegaRTEContent} entity The entity to register.
55
- */
56
- register(dom, entity) {
57
- if (!this.isVegaRTEContent(entity)) {
58
- this.domToEntity.set(dom, entity);
59
- this.entityToDOM.set(entity, dom);
60
- }
61
- else {
62
- this.registerRootDomAndContentEntity(dom, entity);
63
- }
64
- }
65
- /**
66
- * Retrieves the entity corresponding to a DOM element.
67
- *
68
- * @param {HTMLElement} dom The DOM element to retrieve the entity for.
69
- * @returns {Nullable<RTEBlock | RTENode>} The entity corresponding to the DOM element, or null if not found.
70
- */
71
- getEntityByDOM(dom) {
72
- return this.domToEntity.get(dom);
73
- }
74
- /**
75
- * Retrieves the DOM element corresponding to an entity.
76
- *
77
- * @param {RTEBlock | RTENode} entity The entity to retrieve the DOM element for.
78
- * @returns {Nullable<HTMLElement>} The DOM element corresponding to the entity, or null if not found.
79
- */
80
- getDOMByEntity(entity) {
81
- if (!this.isVegaRTEContent(entity)) {
82
- return this.entityToDOM.get(entity);
83
- }
84
- else {
85
- return this.contentEntityToRootDom.get(entity);
86
- }
87
- }
88
- /**
89
- * Delete the dirty element to entity ref.
90
- *
91
- * @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.
92
- * @param {HTMLElement} dom - The dirty element ref.
93
- */
94
- removeDirtyDomRef(dom) {
95
- this.domToEntity.delete(dom);
96
- }
97
- /**
98
- * Bind the root dom ref and content entity.
99
- *
100
- * @param {HTMLElement} dom - The vega rich text editor ref.
101
- * @param {VegaRTEContent} contentEntity - The rich text editor value content.
102
- */
103
- registerRootDomAndContentEntity(dom, contentEntity) {
104
- const oldContent = this.rootDomToContentEntity.get(dom);
105
- if (oldContent && oldContent !== contentEntity) {
106
- this.contentEntityToRootDom.delete(oldContent);
107
- }
108
- this.rootDomToContentEntity.set(dom, contentEntity);
109
- this.contentEntityToRootDom.set(contentEntity, dom);
110
- }
111
- /**
112
- * Check the entity is VegaRTEContent instance.
113
- *
114
- * @param {VegaRTEContent | RTEBlock | RTENode} entity - The entity to check.
115
- * @returns {entity is VegaRTEContent} - True if the entity is a VegaRTEContent instance, false otherwise.
116
- */
117
- isVegaRTEContent(entity) {
118
- return entity && entity.constructor.name === 'VegaRTEContent';
119
- }
120
- }
121
- const stateEntityRenderingRegistry = new StateEntityRenderingRegistry();
122
-
123
- exports.ModifyContentActionType = void 0;
124
- (function (ModifyContentActionType) {
125
- ModifyContentActionType["DELETE_CHILDREN"] = "DELETE_CHILDREN";
126
- ModifyContentActionType["DELETE_NEST_LIST"] = "DELETE_NEST_LIST";
127
- ModifyContentActionType["UPDATE_TEXT"] = "UPDATE_TEXT";
128
- ModifyContentActionType["REPLACE_SELECTED_TEXT"] = "REPLACE_SELECTED_TEXT";
129
- ModifyContentActionType["APPEND_CHILDREN"] = "APPEND_CHILDREN";
130
- ModifyContentActionType["INSERT_CHILDREN_AFTER"] = "INSERT_CHILDREN_AFTER";
131
- ModifyContentActionType["INSERT_CHILDREN_BEFORE"] = "INSERT_CHILDREN_BEFORE";
132
- ModifyContentActionType["SPLIT_BLOCK_WITH_NODE"] = "SPLIT_BLOCK_WITH_NODE";
133
- ModifyContentActionType["REPLACE_CHILD_NODES"] = "REPLACE_CHILD_NODES";
134
- ModifyContentActionType["REPLACE_NEST_LIST"] = "REPLACE_NEST_LIST";
135
- ModifyContentActionType["MERGE_TWO_BLOCKS_NODES"] = "MERGE_TWO_BLOCKS_NODES";
136
- ModifyContentActionType["INSERT_NEW_PARAGRAPH"] = "INSERT_NEW_PARAGRAPH";
137
- ModifyContentActionType["LINE_BREAK_SINGLE_BLOCK"] = "LINE_BREAK_SINGLE_BLOCK";
138
- ModifyContentActionType["LINE_BREAK_MULTIPLE_BLOCKS"] = "LINE_BREAK_MULTIPLE_BLOCKS";
139
- ModifyContentActionType["TRANSFORM_LIST_BLOCK"] = "TRANSFORM_LIST_BLOCK";
140
- ModifyContentActionType["TRANSFORM_PARAGRAPH_BLOCK"] = "TRANSFORM_PARAGRAPH_BLOCK";
141
- ModifyContentActionType["DELETE_BLOCK_CONTENT"] = "DELETE_BLOCK_CONTENT";
142
- ModifyContentActionType["INSERT_IMAGE_TO_BLOCK"] = "INSERT_IMAGE_TO_BLOCK";
143
- ModifyContentActionType["UPDATE_IMAGE_NODE_URL"] = "UPDATE_IMAGE_NODE_URL";
144
- ModifyContentActionType["TRANSFORM_TO_CODE_BLOCK"] = "TRANSFORM_TO_CODE_BLOCK";
145
- ModifyContentActionType["UPDATE_CODE_BLOCK"] = "UPDATE_CODE_BLOCK";
146
- ModifyContentActionType["SWITCH_OUT_FROM_CODE_BLOCK"] = "SWITCH_OUT_FROM_CODE_BLOCK";
147
- ModifyContentActionType["DELETE_CODE_BLOCK"] = "DELETE_CODE_BLOCK";
148
- ModifyContentActionType["UNLINK_LINK_GROUP"] = "UNLINK_LINK_GROUP";
149
- ModifyContentActionType["LINK_GROUP_NODE_SPLIT"] = "LINK_GROUP_NODE_SPLIT";
150
- ModifyContentActionType["DELETE_LINK_GROUP"] = "DELETE_LINK_GROUP";
151
- ModifyContentActionType["UPDATE_CURSOR_POSITION"] = "UPDATE_CURSOR_POSITION";
152
- ModifyContentActionType["INSERT_TEXT_TO_DECORATOR_NODE"] = "INSERT_TEXT_TO_DECORATOR_NODE";
153
- ModifyContentActionType["INSERT_NODE_TO_NEAREST_ROOT"] = "INSERT_NODE_TO_NEAREST_ROOT";
154
- ModifyContentActionType["PASTE_CONTENT"] = "PASTE_CONTENT";
155
- })(exports.ModifyContentActionType || (exports.ModifyContentActionType = {}));
156
- /**
157
- * Abstract class for update node content, delete node, insert node
158
- */
159
- class ModifyContentAction {
160
- constructor() {
161
- this.isFlushable = false;
162
- }
163
- }
164
-
165
- /**
166
- * Annotation to represent a link of grouped nodes
167
- */
168
- class LinkGroupAnnotation extends Annotation {
169
- constructor(groupKey) {
170
- super();
171
- this.type = exports.InternalAnnotationTypeEnum.LINK_GROUP;
172
- this.linkGroups = new Map();
173
- this.linkGroups = new Map([[groupKey, []]]);
174
- }
175
- clone() {
176
- const clonedAnnotation = new LinkGroupAnnotation('');
177
- this.linkGroups.forEach((nodes, key) => {
178
- clonedAnnotation.linkGroups.set(key, nodes.map((node) => node.clone(node.parent)));
179
- });
180
- return clonedAnnotation;
181
- }
182
- /**
183
- * Convert the custom style, class and attribute to string which html can used
184
- *
185
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
186
- * @param {RTERenderContext} options - options.
187
- * @returns {string} - string.
188
- */
189
- toString(linkAnnotation, options) {
190
- const attributes = this.toJsx(linkAnnotation, options);
191
- return Object.entries(attributes)
192
- .map(([key, value]) => {
193
- const valueString = typeof value === 'string' ? value : this.formatStyleToString(value);
194
- return `${string.camelToDashCase(key)}="${valueString}"`;
195
- })
196
- .join(' ');
197
- }
198
- /**
199
- * Convert the custom style, class and attribute to JSX attributes
200
- *
201
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
202
- * @param {RTERenderContext} options - options.
203
- * @returns {Record<string, string | AnnotationStyle>} JSX used attributes.
204
- */
205
- toJsx(linkAnnotation, options) {
206
- const linkStyle = this.getStyle(linkAnnotation, options);
207
- const linkClass = this.getClass(linkAnnotation, options);
208
- const attributes = this.getAttribute(linkAnnotation);
209
- if (linkClass.length > 0) {
210
- attributes.class = linkClass.join(' ');
211
- }
212
- if (linkStyle && Object.keys(linkStyle).length > 0) {
213
- attributes.style = linkStyle;
214
- }
215
- return attributes;
216
- }
217
- /**
218
- * Get the custom class for the annotation
219
- *
220
- * @param {linkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
221
- * @param {RTERenderContext} options - options.
222
- * @returns {string[]} Link class
223
- */
224
- getClass(linkAnnotation, options) {
225
- const linkClass = [];
226
- if (linkAnnotation.link.customClass)
227
- linkClass.push(...linkAnnotation.link.customClass);
228
- if (!(options === null || options === void 0 ? void 0 : options.standalone) && linkAnnotation.useInternalStyle)
229
- linkClass.push('v-rte--link');
230
- return linkClass;
231
- }
232
- /**
233
- * Get the custom style for the annotation
234
- *
235
- * @param {LinkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
236
- * @param {RTERenderContext} options - options.
237
- * @returns {AnnotationStyle} Link style
238
- */
239
- getStyle(linkAnnotation, options) {
240
- const linkStyle = {};
241
- if (linkAnnotation.link.customStyle)
242
- Object.assign(linkStyle, linkAnnotation.link.customStyle);
243
- if ((options === null || options === void 0 ? void 0 : options.standalone) && linkAnnotation.useInternalStyle) {
244
- linkStyle.color = 'rgba(var(--v-text-link, 19, 98, 226, 1))';
245
- }
246
- return linkStyle;
247
- }
248
- /**
249
- * Get the custom attribute for the annotation
250
- *
251
- * @param {LinkAnnotation} linkAnnotation current link annotation which saved custom style, class and attribute.
252
- * @returns {Record<string, string>} Link attributes
253
- */
254
- getAttribute(linkAnnotation) {
255
- const { href, customAttribute = {} } = linkAnnotation.link;
256
- const useInternalStyle = linkAnnotation.useInternalStyle;
257
- const target = customAttribute.target || (useInternalStyle ? '_blank' : '');
258
- return Object.assign(Object.assign(Object.assign({}, customAttribute), (href ? { href } : useInternalStyle ? { href } : {})), (target ? { target } : {}));
259
- }
260
- /**
261
- * Convert style to string which can be used to html string.
262
- *
263
- * @param {AnnotationStyle} style Style object.
264
- * @returns {string} Style string
265
- */
266
- formatStyleToString(style) {
267
- return Object.entries(style)
268
- .map(([key, value]) => `${string.camelToDashCase(key)}: ${value};`)
269
- .join(' ');
270
- }
271
- }
272
-
273
- /**
274
- * Annotation to make block with horizontal alignment
275
- */
276
- class HorizontalAlignmentAnnotation extends BlockAnnotation {
277
- constructor(textAlign) {
278
- super();
279
- this.type = exports.BlockAnnotationTypeEnum.ALIGNMENT;
280
- this.textAlign = textAlign;
281
- }
282
- /**
283
- * Generate the map item for the annotation
284
- *
285
- * @param {VegaRTEBlockAlignment} textAlign - Text alignment
286
- * @returns {[BlockAnnotationTypeEnum.ALIGNMENT, HorizontalAlignmentAnnotation]} Map item for the annotation
287
- */
288
- static from(textAlign) {
289
- return [exports.BlockAnnotationTypeEnum.ALIGNMENT, new HorizontalAlignmentAnnotation(textAlign)];
290
- }
291
- /**
292
- * Generate the JSON item of the annotation
293
- *
294
- * @returns {Record<string, unknown>} JSON representation of the annotation
295
- */
296
- toJSON() {
297
- return {
298
- textAlign: this.textAlign,
299
- };
300
- }
301
- /**
302
- * @inheritDoc
303
- */
304
- renderClass(options) {
305
- if (options === null || options === void 0 ? void 0 : options.standalone)
306
- return null;
307
- switch (this.textAlign) {
308
- case 'right':
309
- case 'center':
310
- case 'justify':
311
- return `v-rte--horizontal-alignment-${this.textAlign}`;
312
- case 'left':
313
- default:
314
- return `v-rte--horizontal-alignment-left`;
315
- }
316
- }
317
- /**
318
- * @inheritDoc
319
- */
320
- clone() {
321
- return new HorizontalAlignmentAnnotation(this.textAlign);
322
- }
323
- /**
324
- * @inheritDoc
325
- */
326
- renderStyle(options) {
327
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
328
- return null;
329
- switch (this.textAlign) {
330
- case 'right':
331
- case 'center':
332
- case 'justify':
333
- return { textAlign: this.textAlign };
334
- case 'left':
335
- default:
336
- return { textAlign: 'left' };
337
- }
338
- }
339
- }
340
-
341
- /**
342
- * Annotation for block indentation
343
- */
344
- class IndentAnnotation extends BlockAnnotation {
345
- constructor(indent) {
346
- super();
347
- this.type = exports.BlockAnnotationTypeEnum.INDENT;
348
- this.indent = Math.max(0, indent);
349
- }
350
- /**
351
- * Generate the map item for the annotation
352
- *
353
- * @param {number} indent - Text alignment
354
- * @returns {[BlockAnnotationTypeEnum.INDENT, IndentAnnotation]} Map item for the annotation
355
- */
356
- static from(indent) {
357
- return [exports.BlockAnnotationTypeEnum.INDENT, new IndentAnnotation(indent)];
358
- }
359
- /**
360
- * Generate the JSON item of the annotation
361
- *
362
- * @returns {Nullable<Record<string, unknown>>} JSON representation of the annotation
363
- */
364
- toJSON() {
365
- return this.indent > 0 ? { indent: this.indent } : null;
366
- }
367
- /**
368
- * @inheritDoc
369
- */
370
- clone() {
371
- return new IndentAnnotation(this.indent);
372
- }
373
- /**
374
- * @inheritDoc
375
- */
376
- renderClass() {
377
- return null;
378
- }
379
- /**
380
- * Generate the style for the annotation
381
- *
382
- * @returns {Nullable<AnnotationStyle>} - Annotation style
383
- */
384
- renderStyle() {
385
- return this.indent > 0 ? { marginLeft: `${this.indent * 16}px` } : null;
386
- }
387
- }
388
-
389
- /**
390
- * Registry for action handler interceptors, which can register and retrieve interceptors for specific actions and targets.
391
- */
392
- class ActionHandlerInterceptorRegistry {
393
- /**
394
- * Bind a specific strategy to a special action type of the rich text node.
395
- *
396
- * @param {string} actionType - The special action type or the action class name.
397
- * @param {string} targetClass - The rich text node class name.
398
- * @param {ActionHandlerInterceptor} strategy - The action handle strategy instance.
399
- */
400
- static register(actionType, targetClass, strategy) {
401
- if (!this.registry.has(targetClass)) {
402
- this.registry.set(targetClass, new Map());
403
- }
404
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
405
- if (!this.registry.get(targetClass).has(actionType)) {
406
- this.registry.get(targetClass).set(actionType, new Set());
407
- }
408
- this.registry.get(targetClass).get(actionType).add(strategy);
409
- /* eslint-enable @typescript-eslint/no-non-null-assertion */
410
- }
411
- /**
412
- * Unregister the strategy for the specific action type and target class.
413
- *
414
- * @param {string} actionType - The special action type or the action class name.
415
- * @param {string} targetClass - The rich text node class name.
416
- * @param {ActionHandlerInterceptor} strategy - The action handler interceptor instance.
417
- */
418
- static unregister(actionType, targetClass, strategy) {
419
- const strategyMap = this.registry.get(targetClass);
420
- if (strategyMap) {
421
- const strategySet = strategyMap.get(actionType);
422
- if (strategySet) {
423
- strategySet.delete(strategy);
424
- }
425
- }
426
- }
427
- /**
428
- * Get the special interceptor strategy that before handle the action logic.
429
- *
430
- * @typedef T generic type
431
- * @typedef target generic type
432
- * @param {RTEActionType} action - The special action .
433
- * @param {string} targetClass - The rich text node class name.
434
- * @returns {Nullable<ActionHandlerInterceptor<T, target>>} - The action handler interceptor instance or null if not found.
435
- */
436
- static get(action, targetClass) {
437
- const targetClassName = targetClass.constructor.name;
438
- const actionType = action instanceof ModifyContentAction ? action.type : action.constructor.name;
439
- const strategyMap = this.registry.get(targetClassName);
440
- if (strategyMap) {
441
- const set = strategyMap.get(actionType);
442
- if (set && set.size > 0) {
443
- return Array.from(set).find((interceptor) => interceptor.canIntercept(action, targetClass));
444
- }
445
- }
446
- }
447
- }
448
- ActionHandlerInterceptorRegistry.registry = new Map();
449
-
450
- /**
451
- * The strategies registry, contains static methods `register`, `get` and `getStrategyAndExecute`.
452
- */
453
- class ActionHandleStrategyRegistry {
454
- /**
455
- * Bind a specific strategy to a special action type of the rich text node.
456
- *
457
- * @param {string} actionType - The special action type or the action class name.
458
- * @param {string} targetClass - The rich text node class name.
459
- * @param {ActionHandleStrategy} strategy - The action handle strategy instance.
460
- */
461
- static register(actionType, targetClass, strategy) {
462
- if (!this.registry.has(targetClass)) {
463
- this.registry.set(targetClass, new Map());
464
- }
465
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
466
- this.registry.get(targetClass).set(actionType, strategy);
467
- }
468
- /**
469
- * Unregister the strategy for the specific action type and target class.
470
- *
471
- * @param {string} actionType - The special action type or the action class name.
472
- * @param {string} targetClass - The rich text node class name.
473
- */
474
- static unregister(actionType, targetClass) {
475
- const strategyMap = this.registry.get(targetClass);
476
- if (strategyMap) {
477
- strategyMap.delete(actionType);
478
- }
479
- }
480
- /**
481
- * Get the special strategy that handle the action logic.
482
- *
483
- * @typedef T generic type
484
- * @typedef target generic type
485
- * @typedef R generic type
486
- * @param {string} actionType - The special action type or the action class name.
487
- * @param {string} targetClass - The rich text node class name.
488
- * @returns {Nullable<ActionHandleStrategy<T, target, R>>} - The action handle strategy instance if defined.
489
- */
490
- static get(actionType, targetClass) {
491
- const strategyMap = this.registry.get(targetClass);
492
- if (strategyMap) {
493
- return strategyMap.get(actionType);
494
- }
495
- }
496
- /**
497
- * Get the special strategy from the registry and run the strategy execute method.
498
- *
499
- * @typedef R generic type
500
- * @param {ModifyContentAction | AnnotationAction} action - The update node action instance.
501
- * @param {RTENode | RTEBlock | VegaRTEContent} RTEInstance - The rich text editor node.
502
- * @returns {R | undefined} The return value of the strategy method execute invoke result.
503
- */
504
- static executeTheStrategy(action, RTEInstance) {
505
- const interceptor = ActionHandlerInterceptorRegistry.get(action, RTEInstance);
506
- // eslint-disable-next-line jsdoc/require-jsdoc
507
- const executeStrategy = () => {
508
- const actionType = action instanceof ModifyContentAction ? action.type : action.constructor.name;
509
- const strategy = ActionHandleStrategyRegistry.get(actionType, RTEInstance.constructor.name);
510
- if (strategy) {
511
- action['executedFlag'] = true;
512
- return strategy.execute(action, RTEInstance);
513
- }
514
- else {
515
- globalSlimmerRegistry.LogUtility.warn(`Type ${actionType} action handle strategy is not registered in class ${RTEInstance.constructor.name}`);
516
- }
517
- };
518
- if (interceptor) {
519
- return interceptor.intercept(executeStrategy, action, RTEInstance);
520
- }
521
- else {
522
- return executeStrategy();
523
- }
524
- }
525
- /**
526
- * Check if the action type can be handled by strategy for the specific RTE instance.
527
- *
528
- * @param {string} actionType - The special action type or the action class name.
529
- * @param {RTENode | RTEBlock | VegaRTEContent} RTEInstance - The rich text editor node.
530
- * @returns {boolean} - Whether the action type can be handled by the strategy.
531
- */
532
- static canHandle(actionType, RTEInstance) {
533
- const strategy = ActionHandleStrategyRegistry.get(actionType, RTEInstance.constructor.name);
534
- return strategy ? true : false;
535
- }
536
- }
537
- ActionHandleStrategyRegistry.registry = new Map();
538
-
539
- exports.CommonAnnotationTypeEnum = void 0;
540
- (function (CommonAnnotationTypeEnum) {
541
- CommonAnnotationTypeEnum["CUSTOM_ATTRIBUTE"] = "CUSTOM_ATTRIBUTE";
542
- CommonAnnotationTypeEnum["CUSTOM_CLASS"] = "CUSTOM_CLASS";
543
- CommonAnnotationTypeEnum["CUSTOM_STYLE"] = "CUSTOM_STYLE";
544
- })(exports.CommonAnnotationTypeEnum || (exports.CommonAnnotationTypeEnum = {}));
545
- /**
546
- * CommonAnnotation is an abstract class that represents common annotation for block and node.
547
- */
548
- class CommonAnnotation extends Annotation {
549
- }
550
-
551
- /**
552
- * Annotation to add custom attributes of element
553
- */
554
- class CustomAttributeAnnotation extends CommonAnnotation {
555
- constructor(customAttribute) {
556
- super();
557
- this.type = exports.CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE;
558
- this.BOOLEAN_ATTRS = new Set([
559
- 'controls',
560
- 'disabled',
561
- 'checked',
562
- 'readonly',
563
- 'multiple',
564
- 'required',
565
- 'autoplay',
566
- 'muted',
567
- ]);
568
- this.customAttribute = customAttribute;
569
- }
570
- /**
571
- * Generate the map item for the annotation
572
- *
573
- * @param {Record<string, string>} customizeAttribute - custom attribute annotation
574
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE, CustomAttributeAnnotation]} Map item for the annotation
575
- */
576
- static from(customizeAttribute) {
577
- return [exports.CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE, new CustomAttributeAnnotation(customizeAttribute)];
578
- }
579
- /**
580
- * Generate the JSON representation of the annotation
581
- *
582
- * @returns {Record<string, unknown>} JSON representation of the annotation
583
- */
584
- toJSON() {
585
- return {
586
- customAttribute: this.customAttribute,
587
- };
588
- }
589
- /**
590
- * Create a new custom attribute annotation
591
- *
592
- * @returns {CustomAttributeAnnotation} - Custom attribute annotation
593
- */
594
- clone() {
595
- return new CustomAttributeAnnotation(this.customAttribute);
596
- }
597
- /**
598
- * Generate the custom attribute of current element, excluding 'style' and 'class'
599
- *
600
- * @param {string[]} filterAttr - should filter these existed attrs
601
- * @returns {string[]} - Custom attributes
602
- */
603
- toString(filterAttr = []) {
604
- const filterAttrKeys = filterAttr.map((attr) => attr.split('=')[0]);
605
- return Object.keys(this.customAttribute)
606
- .map((key) => {
607
- return !filterAttrKeys.includes(key) ? `${key}="${this.customAttribute[key]}"` : null;
608
- })
609
- .filter(typeGuard.isNonNullable);
610
- }
611
- /**
612
- * Generate the custom attribute for the annotation
613
- *
614
- * @param {RTERenderCustomAttributes} options - should filter these certain attrs
615
- * @returns {Record<string, string>} custom attribute
616
- */
617
- render(options = {}) {
618
- var _a;
619
- const customAttribute = Object.assign({}, this.customAttribute);
620
- (_a = options.filterAttributes) === null || _a === void 0 ? void 0 : _a.forEach((attr) => delete customAttribute[attr]);
621
- Object.keys(customAttribute).forEach((key) => {
622
- if (this.BOOLEAN_ATTRS.has(key) && customAttribute[key] === '') {
623
- customAttribute[key] = 'true';
624
- }
625
- });
626
- return customAttribute;
627
- }
628
- }
629
-
630
- /**
631
- * Annotation to add custom class of element
632
- */
633
- class CustomClassAnnotation extends CommonAnnotation {
634
- constructor(customClass) {
635
- super();
636
- this.type = exports.CommonAnnotationTypeEnum.CUSTOM_CLASS;
637
- this.customClass = customClass;
638
- }
639
- /**
640
- * Generate the map item for the annotation
641
- *
642
- * @param {string[]} customClass - custom class annotation
643
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_CLASS, CustomClassAnnotation]} Map item for the annotation
644
- */
645
- static from(customClass) {
646
- return [exports.CommonAnnotationTypeEnum.CUSTOM_CLASS, new CustomClassAnnotation(customClass)];
647
- }
648
- /**
649
- * Generate the JSON representation of the annotation
650
- *
651
- * @returns {Record<string, unknown>} JSON representation of the annotation
652
- */
653
- toJSON() {
654
- return {
655
- customClass: this.customClass,
656
- };
657
- }
658
- /**
659
- * Create a new custom class annotation
660
- *
661
- * @returns {CustomClassAnnotation} - Custom class annotation
662
- */
663
- clone() {
664
- return new CustomClassAnnotation(this.customClass);
665
- }
666
- /**
667
- * Generate the custom class of current element
668
- *
669
- * @returns {string} - Custom class
670
- */
671
- toString() {
672
- return `class="${this.customClass.join(' ')}"`;
673
- }
674
- /**
675
- * Generate the custom attribute for the annotation
676
- *
677
- * @returns {string[]} custom classes
678
- */
679
- renderClass() {
680
- return this.customClass;
681
- }
682
- }
683
-
684
- /**
685
- * Annotation to add custom attributes of element
686
- */
687
- class CustomStyleAnnotation extends CommonAnnotation {
688
- constructor(customStyle) {
689
- super();
690
- this.type = exports.CommonAnnotationTypeEnum.CUSTOM_STYLE;
691
- this.customStyle = customStyle;
692
- }
693
- /**
694
- * Generate the map item for the annotation
695
- *
696
- * @param {AnnotationStyle} customStyle - custom attribute annotation
697
- * @returns {[CommonAnnotationTypeEnum.CUSTOM_STYLE, CustomStyleAnnotation]} Map item for the annotation
698
- */
699
- static from(customStyle) {
700
- return [exports.CommonAnnotationTypeEnum.CUSTOM_STYLE, new CustomStyleAnnotation(customStyle)];
701
- }
702
- /**
703
- * Generate the JSON representation of the annotation
704
- *
705
- * @returns {Record<string, unknown>} JSON representation of the annotation
706
- */
707
- toJSON() {
708
- return {
709
- customStyle: this.customStyle,
710
- };
711
- }
712
- /**
713
- * Create a new custom attribute annotation
714
- *
715
- * @returns {CustomStyleAnnotation} - Custom attribute annotation
716
- */
717
- clone() {
718
- return new CustomStyleAnnotation(this.customStyle);
719
- }
720
- /**
721
- * Generate the custom attribute for the annotation
722
- *
723
- * @returns {AnnotationStyle} custom attribute
724
- */
725
- renderStyle() {
726
- return this.customStyle;
727
- }
728
- /**
729
- * Remove the style
730
- *
731
- * @param {string[]} styleKeys - custom attribute annotation
732
- * @returns {AnnotationStyle} Map item for the annotation
733
- */
734
- removeStyles(styleKeys) {
735
- const customStyle = Object.assign({}, this.customStyle);
736
- styleKeys.forEach((item) => delete customStyle[item]);
737
- return customStyle;
738
- }
739
- /**
740
- * Generate the custom style string for the annotation
741
- *
742
- * @returns {string} custom style string
743
- */
744
- toString() {
745
- return `style="${Object.entries(this.customStyle)
746
- .map(([key, value]) => `${key}: ${value};`)
747
- .join(' ')}"`;
748
- }
749
- }
750
-
751
- /**
752
- * Internal wrapper annotation for block node.
753
- */
754
- class InternalWrapperAnnotation extends BlockAnnotation {
755
- constructor(internalWrapper) {
756
- super();
757
- this.type = exports.BlockAnnotationTypeEnum.INTERNAL_WRAPPER;
758
- this.internalWrapper = internalWrapper;
759
- }
760
- /**
761
- * @inheritDoc
762
- */
763
- static from(internalWrapper) {
764
- return [exports.BlockAnnotationTypeEnum.INTERNAL_WRAPPER, new InternalWrapperAnnotation(internalWrapper)];
765
- }
766
- /**
767
- * @inheritDoc
768
- */
769
- clone() {
770
- return new InternalWrapperAnnotation(this.internalWrapper);
771
- }
772
- /**
773
- * @inheritDoc
774
- */
775
- renderClass() {
776
- return undefined;
777
- }
778
- /**
779
- * @inheritDoc
780
- */
781
- renderStyle() {
782
- return undefined;
783
- }
784
- /**
785
- * @inheritDoc
786
- */
787
- toJSON() {
788
- return this.internalWrapper ? { internalWrapper: this.internalWrapper } : undefined;
789
- }
790
- }
791
-
792
- exports.NodeAnnotationTypeEnum = void 0;
793
- (function (NodeAnnotationTypeEnum) {
794
- NodeAnnotationTypeEnum["BOLD"] = "BOLD";
795
- NodeAnnotationTypeEnum["ITALIC"] = "ITALIC";
796
- NodeAnnotationTypeEnum["UNDERLINE"] = "UNDERLINE";
797
- NodeAnnotationTypeEnum["STRIKETHROUGH"] = "STRIKETHROUGH";
798
- NodeAnnotationTypeEnum["SELECTION_RANGE"] = "SELECTION_RANGE";
799
- NodeAnnotationTypeEnum["IMAGE"] = "IMAGE";
800
- NodeAnnotationTypeEnum["CODE"] = "CODE";
801
- NodeAnnotationTypeEnum["TEXT_COLOR"] = "TEXT_COLOR";
802
- NodeAnnotationTypeEnum["LINK"] = "LINK";
803
- NodeAnnotationTypeEnum["INLINE_HTML"] = "INLINE_HTML";
804
- NodeAnnotationTypeEnum["PLAIN_TEXT"] = "PLAIN_TEXT";
805
- })(exports.NodeAnnotationTypeEnum || (exports.NodeAnnotationTypeEnum = {}));
806
- /**
807
- * Abstract class for all annotations
808
- */
809
- class NodeAnnotation extends Annotation {
810
- }
811
-
812
- /**
813
- * Class to handle the style representation of annotations for RTE blocks and nodes.
814
- */
815
- class RTEAnnotationStyle {
816
- constructor(dto) {
817
- this.dtoType = dto instanceof RTEBlock ? 'block' : 'node';
818
- this.annotationMap = dto.annotationMap;
819
- }
820
- /**
821
- * Convert an AnnotationStyle object to a CSS text string.
822
- *
823
- * @param {RTERenderContext} options - Rendering context options.
824
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
825
- * @param {Nullable<AnnotationStyle>} annotationStyle - The annotation style object, if null, get from toJSON().
826
- * @returns {string} A string representing the CSS text.
827
- */
828
- toCssText(options = { standalone: false }, canMergeKeyList, annotationStyle) {
829
- annotationStyle = annotationStyle ? annotationStyle : this.toJSON(options, canMergeKeyList);
830
- return Object.entries(Object.assign({}, annotationStyle))
831
- .map(([key, value]) => `${string.camelToDashCase(key)}: ${value};`)
832
- .join('');
833
- }
834
- /**
835
- * Convert the annotation map to a JSON representation.
836
- *
837
- * @param {RTERenderContext} options - Rendering context options.
838
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
839
- * @returns {AnnotationStyle} - The JSON representation of the annotation styles.
840
- */
841
- toJSON(options = { standalone: false }, canMergeKeyList) {
842
- const styles = Array.from(this.annotationMap.values())
843
- .filter((annotation) => this.filterAnnotation(annotation) || annotation instanceof CustomStyleAnnotation)
844
- .map((annotation) => annotation.renderStyle(options))
845
- .filter(typeGuard.isNonNullable);
846
- if (canMergeKeyList && canMergeKeyList.length > 0) {
847
- return this.mergeAnnotationStyles(styles, canMergeKeyList);
848
- }
849
- else {
850
- return styles.reduce((current, obj) => (Object.assign(Object.assign({}, current), obj)), {});
851
- }
852
- }
853
- /**
854
- * Filter annotations based on whether they are block or node annotations.
855
- *
856
- * @param {RTENodeAnnotationMapValue | RTEBlockAnnotationMapValue} annotation - The annotation to filter.
857
- * @returns {boolean} - True if the annotation matches the DTO type, false otherwise.
858
- */
859
- filterAnnotation(annotation) {
860
- return this.dtoType === 'block'
861
- ? annotation instanceof BlockAnnotation
862
- : annotation instanceof NodeAnnotation;
863
- }
864
- /**
865
- * Merge an array of annotation styles into a single style object.
866
- * e.g.,
867
- * { textDecoration: 'underline', textDecoration: 'line-through' }
868
- * -> { textDecoration: 'underline line-through' }
869
- *
870
- * @param {AnnotationStyle[]} styles - Array of annotation style objects to merge.
871
- * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
872
- * @returns {AnnotationStyle} - The merged annotation style object.
873
- */
874
- mergeAnnotationStyles(styles, canMergeKeyList) {
875
- const merged = {};
876
- for (const style of styles) {
877
- for (const key in style) {
878
- const value = style[key];
879
- const existing = merged[key];
880
- if (typeof existing === 'string' &&
881
- typeof value === 'string' &&
882
- canMergeKeyList.includes(key)) {
883
- merged[key] = Array.from(new Set(`${existing} ${value}`.split(/\s+/).filter(Boolean))).join(' ');
884
- }
885
- else {
886
- merged[key] = value;
887
- }
888
- }
889
- }
890
- return merged;
891
- }
892
- }
893
-
894
- exports.NodeTypeEnum = void 0;
895
- (function (NodeTypeEnum) {
896
- NodeTypeEnum["TEXT"] = "TEXT";
897
- NodeTypeEnum["IMAGE"] = "IMAGE";
898
- NodeTypeEnum["CODE_BLOCK_NODE"] = "CODE_BLOCK_NODE";
899
- })(exports.NodeTypeEnum || (exports.NodeTypeEnum = {}));
900
- /**
901
- * Abstract class for all nodes
902
- */
903
- class RTENode {
904
- constructor(id, annotationMap) {
905
- this.annotationMap = new Map();
906
- this.id = id;
907
- if (annotationMap) {
908
- this.annotationMap = annotationMap;
909
- }
910
- }
911
- /**
912
- * Creates a new instance of the RTENode from the given JSON data.
913
- *
914
- * @param {unknown} json - The JSON data to create the node from.
915
- * @param {RTEBlock} parentBlock - The parent block of the node.
916
- * @param {VegaRTETransformOptions} options - Options for transforming the node.
917
- */
918
- static from(json, parentBlock, options) {
919
- throw new Error(`[Vega] ${this.constructor.name}.from(${JSON.stringify(json)}, ${parentBlock}, ${options}) is not implemented. Please implement this method in the subclass.`);
920
- }
921
- /**
922
- * Creates different types of text annotations based on the provided type and value.
923
- *
924
- * @param {keyof VegaRTETextAnnotations} type - The key of the type.
925
- * @param {unknown} value - The value that will be used to create the specific type of annotation entity based on the `type` provided.
926
- * @returns {Nullable<[RTENodeAnnotationMapKey, RTENodeAnnotationMapValue]>} Returning a nullable tuple containing a key and a
927
- * value from the `RTENodeAnnotationMapKey` and `RTENodeAnnotationMapValue` types.
928
- */
929
- static createAnnotationEntity(type, value) {
930
- switch (type) {
931
- case 'customAttribute':
932
- return CustomAttributeAnnotation.from(value);
933
- case 'customClass':
934
- return CustomClassAnnotation.from(value);
935
- case 'customStyle':
936
- return CustomStyleAnnotation.from(value);
937
- }
938
- }
939
- /**
940
- * Get annotation by type
941
- *
942
- * @typedef T generic type
943
- * @param {RTENodeAnnotationMapKey} type - Annotation type
944
- * @returns {Nullable<T>} - Annotation
945
- */
946
- getAnnotationByType(type) {
947
- return this.annotationMap.get(type);
948
- }
949
- /**
950
- * Delete annotation by type
951
- *
952
- * @param {RTENodeAnnotationMapKey} type - Annotation type
953
- */
954
- deleteAnnotationByType(type) {
955
- this.annotationMap.delete(type);
956
- this.flushChange();
957
- }
958
- /**
959
- * Apply action to node
960
- *
961
- * @param {AnnotationAction} action - Annotation action
962
- * @returns {this} - Node
963
- */
964
- apply(action) {
965
- this.doApply(action);
966
- if (action.isFlushable) {
967
- this.flushChange();
968
- }
969
- return this;
970
- }
971
- /**
972
- * Get styles from annotations
973
- *
974
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
975
- * @returns {AnnotationStyle} - Annotation styles
976
- */
977
- getStyles(options = { standalone: false }) {
978
- const rteAnnotationStyle = new RTEAnnotationStyle(this);
979
- return rteAnnotationStyle.toJSON(options, ['textDecoration']);
980
- }
981
- /**
982
- * Get classes from annotations
983
- *
984
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
985
- * @returns {string} - Annotation style
986
- */
987
- getClasses(options = { standalone: false }) {
988
- return Array.from(this.annotationMap.values())
989
- .filter((annotation) => annotation instanceof NodeAnnotation || annotation instanceof CustomClassAnnotation)
990
- .map((annotation) => annotation.renderClass(options))
991
- .filter(typeGuard.isNonNullable)
992
- .reduce((pre, cur) => [pre, cur].join(' ').trim(), '');
993
- }
994
- /**
995
- * Get custom attribute annotation, excluding "class" and "style"
996
- *
997
- * @returns {CustomAttributeAnnotation} - custom attribute annotation
998
- */
999
- getCustomAttributesAnnotation() {
1000
- return this.annotationMap.get(exports.CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE);
1001
- }
1002
- /**
1003
- * Check if the node is a text node.
1004
- *
1005
- * @returns {boolean} - True if the node is a text node, false otherwise.
1006
- */
1007
- isTextNode() {
1008
- return false;
1009
- }
1010
- /**
1011
- * Get the HTMLElement reference associated with this node.
1012
- *
1013
- * @returns {Nullable<HTMLElement>} The HTMLElement reference or null if not found.
1014
- */
1015
- getElementRef() {
1016
- return stateEntityRenderingRegistry.getDOMByEntity(this);
1017
- }
1018
- /**
1019
- * Generate attributes as string
1020
- *
1021
- * @param {...string} attrs - Additional attributes to include
1022
- * @returns {string} - Attributes as string
1023
- */
1024
- generateAttributeString(...attrs) {
1025
- var _a;
1026
- const nodeAnnotationStyle = new RTEAnnotationStyle(this);
1027
- const styles = nodeAnnotationStyle.toCssText({ standalone: true }, [
1028
- 'textDecoration',
1029
- ]);
1030
- const customClassAnnotation = this.annotationMap.get(exports.CommonAnnotationTypeEnum.CUSTOM_CLASS);
1031
- const customAttributeString = ((_a = this.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.toString(attrs)) || [];
1032
- const attributes = [
1033
- ...customAttributeString,
1034
- customClassAnnotation === null || customClassAnnotation === void 0 ? void 0 : customClassAnnotation.toString(),
1035
- styles ? `style="${styles}"` : null,
1036
- ...attrs,
1037
- ].filter(typeGuard.isNonNullable);
1038
- return attributes.length ? ` ${attributes.join(' ')}` : '';
1039
- }
1040
- /**
1041
- * apply annotation action or modify content action
1042
- *
1043
- * @param {AnnotationAction | ModifyContentAction} action annotation type action or modify content type action
1044
- */
1045
- doApply(action) {
1046
- if (action instanceof ModifyContentAction) {
1047
- this.doModifyActionApply(action);
1048
- }
1049
- else {
1050
- this.doAnnotationActionApply(action);
1051
- }
1052
- }
1053
- /**
1054
- * Flush the value change
1055
- */
1056
- flushChange() {
1057
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
1058
- if (domNode) {
1059
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, vegaInternalEventId.VegaInternalRichTextEditorFlushChanges);
1060
- if (nodeSubject) {
1061
- changeManager.ChangeManager.notify(nodeSubject, {});
1062
- }
1063
- }
1064
- }
1065
- /**
1066
- * Clones the annotations of the current RTETextNode.
1067
- *
1068
- * @returns {NodeAnnotations} A new Map containing cloned annotations.
1069
- */
1070
- cloneAnnotations() {
1071
- return new Map(Array.from(this.annotationMap.entries()).map(([key, value]) => [key, value.clone()]));
1072
- }
1073
- /* istanbul ignore next */
1074
- /**
1075
- * Placeholder for the method to be implemented in sub classes.
1076
- *
1077
- * @param {AnnotationAction} action Annotation action
1078
- */
1079
- doAnnotationActionApply(action) {
1080
- }
1081
- /* istanbul ignore next */
1082
- /**
1083
- * Placeholder for the method to be implemented in sub classes.
1084
- *
1085
- * @param {ModifyContentAction} action ModifyContentAction
1086
- */
1087
- doModifyActionApply(action) {
1088
- }
1089
- }
1090
-
1091
- /**
1092
- * RTEDTOClassManager is a singleton class that manages the registration and retrieval of RTE DTO classes.
1093
- * It allows for the dynamic handling of different RTE blocks and nodes by their types.
1094
- */
1095
- class RTEDTOClassManager {
1096
- constructor() {
1097
- // Register RTE Block DTO classes.
1098
- this.RTE_BLOCK_DTO_CLASS_MAP = new Map();
1099
- // Register RTE Block DTO classes.
1100
- this.RTE_NODE_DTO_CLASS_MAP = new Map();
1101
- }
1102
- /**
1103
- * Registers a new RTE DTO class.
1104
- *
1105
- * @typedef T - The type of the RTE DTO class to register.
1106
- * @param {string} type - The type identifier for the RTE DTO class.
1107
- * @param {ClassType<T>} RTEDTOClass - The class constructor for the RTE DTO.
1108
- */
1109
- registerRTEDTOClass(type, RTEDTOClass) {
1110
- if (RTEDTOClass.prototype instanceof RTEBlock) {
1111
- this.RTE_BLOCK_DTO_CLASS_MAP.set(type, RTEDTOClass);
1112
- }
1113
- else if (RTEDTOClass.prototype instanceof RTENode) {
1114
- this.RTE_NODE_DTO_CLASS_MAP.set(type, RTEDTOClass);
1115
- }
1116
- else {
1117
- throw new Error(`Invalid RTE DTO class type: ${type}`);
1118
- }
1119
- }
1120
- /**
1121
- * Retrieves the RTE block class for a given type.
1122
- *
1123
- * @param {string} type - The type identifier for the RTE block.
1124
- * @returns {Nullable<RTEBlockDTOClass>} - The class constructor for the RTE block, or null if not found.
1125
- */
1126
- getRTEBlockClass(type) {
1127
- return this.RTE_BLOCK_DTO_CLASS_MAP.get(type);
1128
- }
1129
- /**
1130
- * Retrieves the RTE node class for a given type.
1131
- *
1132
- * @param {string} type - The type identifier for the RTE node.
1133
- * @returns {Nullable<RTENodeDTOClass>} - The class constructor for the RTE node, or null if not found.
1134
- */
1135
- getRTENodeClass(type) {
1136
- return this.RTE_NODE_DTO_CLASS_MAP.get(type);
1137
- }
1138
- }
1139
- const RTEDTOClassManager$1 = new RTEDTOClassManager();
1140
-
1141
- /**
1142
- * Abstract class for block
1143
- */
1144
- class RTEBlock {
1145
- constructor(id) {
1146
- this.annotationMap = new Map();
1147
- this.id = id;
1148
- }
1149
- /**
1150
- * Creates a new instance of the block from the given JSON object.
1151
- *
1152
- * @param {unknown} json - The JSON object to create the block from.
1153
- * @param {VegaRTETransformOptions} options - Options for transforming the block.
1154
- */
1155
- static from(json, options) {
1156
- throw new Error(`[Vega] ${this.constructor.name}.from(${JSON.stringify(json)}, ${options}) is not implemented. Please implement this method in the subclass.`);
1157
- }
1158
- /**
1159
- * Generates block children from an array of VegaRTEContentBlock.
1160
- *
1161
- * @param {VegaRTEContentBlock[]} blockArray - The array of VegaRTEContentBlock to generate children from.
1162
- * @param {VegaRTETransformOptions} [options] - Optional transformation options.
1163
- * @param {VegaRTEContent | RTEBlock} [parentBlock] - Optional parent block.
1164
- * @returns {RTEBlock[]} An array of generated RTEBlock children.
1165
- */
1166
- static generateBlockChildren(blockArray, options, parentBlock) {
1167
- return blockArray
1168
- .map((child) => {
1169
- const BlockClass = RTEDTOClassManager$1.getRTEBlockClass(child.type);
1170
- if (BlockClass) {
1171
- const block = BlockClass.from(child, options);
1172
- block.parent = parentBlock;
1173
- return block;
1174
- }
1175
- })
1176
- .filter(typeGuard.isNonNullable);
1177
- }
1178
- /**
1179
- * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
1180
- * and value.
1181
- *
1182
- * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
1183
- * the type of annotation entity to create.
1184
- * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
1185
- * that will be used to create the annotation entity. It can be of any type depending on the specific
1186
- * annotation being created.
1187
- * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
1188
- * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
1189
- */
1190
- static createAnnotationEntity(type, value) {
1191
- switch (type) {
1192
- case 'textAlign':
1193
- return HorizontalAlignmentAnnotation.from(value);
1194
- case 'indent':
1195
- return IndentAnnotation.from(value);
1196
- case 'customAttribute':
1197
- return CustomAttributeAnnotation.from(value);
1198
- case 'customClass':
1199
- return CustomClassAnnotation.from(value);
1200
- case 'customStyle':
1201
- return CustomStyleAnnotation.from(value);
1202
- case 'internalWrapper':
1203
- return InternalWrapperAnnotation.from(value);
1204
- }
1205
- }
1206
- /**
1207
- * Converts annotations to an array of block annotation entities.
1208
- *
1209
- * @param {BlockAnnotations} annotationMap - The map to store the converted annotations.
1210
- * @param {VegaRTEBlockAnnotations} annotations - The annotations to convert.
1211
- */
1212
- static convertAnnotationsToMap(annotationMap, annotations) {
1213
- Object.entries(annotations).forEach(([type, value]) => {
1214
- const item = this.createAnnotationEntity(type, value);
1215
- if (typeGuard.isNonNullable(item)) {
1216
- annotationMap.set(...item);
1217
- }
1218
- });
1219
- }
1220
- /**
1221
- * Check if the block should be rendered as a wrapper.
1222
- *
1223
- * @returns {boolean} - Returns true if the block is an internal wrapper.
1224
- */
1225
- shouldRenderAsInternalWrapper() {
1226
- const internalWrapperAnnotation = this.getAnnotationByType(exports.BlockAnnotationTypeEnum.INTERNAL_WRAPPER);
1227
- if (internalWrapperAnnotation) {
1228
- return (internalWrapperAnnotation.internalWrapper &&
1229
- Array.from(this.annotationMap.values()).filter((annotation) => !(annotation instanceof LinkGroupAnnotation) &&
1230
- !(annotation instanceof InternalWrapperAnnotation)).length === 0);
1231
- }
1232
- else {
1233
- return false;
1234
- }
1235
- }
1236
- /**
1237
- * Class to JSON object
1238
- *
1239
- * @returns {VegaRTEBlockBase} - JSON object
1240
- */
1241
- toJSON() {
1242
- const annotations = Array.from(this.annotationMap.values())
1243
- .filter((annotation) => annotation instanceof BlockAnnotation || annotation instanceof CommonAnnotation)
1244
- .reduce((record, annotation) => {
1245
- return Object.assign(Object.assign({}, record), annotation.toJSON());
1246
- }, {});
1247
- return Object.assign({ id: this.id }, (Object.keys(annotations).length > 0 ? { annotations } : {}));
1248
- }
1249
- /**
1250
- * Get annotation by type
1251
- *
1252
- * @typedef T generic type
1253
- * @param {string} type - Annotation type
1254
- * @returns {Nullable<T>} - Annotation
1255
- */
1256
- getAnnotationByType(type) {
1257
- return this.annotationMap.get(type);
1258
- }
1259
- /**
1260
- * Apply action to block
1261
- *
1262
- * @param {AnnotationAction} action - Annotation action
1263
- */
1264
- apply(action) {
1265
- this.doApply(action);
1266
- if (action.isFlushable) {
1267
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
1268
- if (domNode) {
1269
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, vegaInternalEventId.VegaInternalRichTextEditorFlushChanges);
1270
- if (nodeSubject) {
1271
- changeManager.ChangeManager.notify(nodeSubject, {});
1272
- }
1273
- }
1274
- }
1275
- }
1276
- /**
1277
- * Get the first node of the block
1278
- *
1279
- * @returns {Nullable<RTENode>} The first RTENode or null if no children exist.
1280
- */
1281
- getFirstNode() {
1282
- if (!this.children || !this.children[0])
1283
- return null;
1284
- const firstItem = this.children[0];
1285
- if (firstItem instanceof RTEBlock) {
1286
- return firstItem.getFirstNode();
1287
- }
1288
- return firstItem;
1289
- }
1290
- /**
1291
- * Check if the block is a list item block
1292
- *
1293
- * @returns {boolean} True if the block is a list item block, false otherwise.
1294
- */
1295
- isListItemBlock() {
1296
- return this.type === 'list-item';
1297
- }
1298
- /**
1299
- * Get styles from annotations
1300
- *
1301
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control style mode
1302
- * @returns {AnnotationStyle} - Annotation styles
1303
- */
1304
- getStyles(options = { standalone: false }) {
1305
- const rteAnnotationStyle = new RTEAnnotationStyle(this);
1306
- const blockAnnotationStyle = rteAnnotationStyle.toJSON(options);
1307
- return Object.assign(Object.assign({}, blockAnnotationStyle), (this.shouldRenderAsInternalWrapper() ? { display: 'contents' } : {}));
1308
- }
1309
- /**
1310
- * Get classes from annotations
1311
- *
1312
- * @param {RTERenderContext} [options={ standalone: false }] - Options to control standalone mode
1313
- * @returns {string} - Annotation style
1314
- */
1315
- getClasses(options = { standalone: false }) {
1316
- return Array.from(this.annotationMap.values())
1317
- .filter((annotation) => annotation instanceof BlockAnnotation || annotation instanceof CustomClassAnnotation)
1318
- .map((annotation) => annotation.renderClass(options))
1319
- .filter(typeGuard.isNonNullable)
1320
- .reduce((pre, cur) => [pre, cur].join(' ').trim(), '');
1321
- }
1322
- /**
1323
- * Get custom attribute annotation, excluding "class" and "style"
1324
- *
1325
- * @returns {Nullable<CustomAttributeAnnotation>} - custom attribute annotation
1326
- */
1327
- getCustomAttributesAnnotation() {
1328
- return this.annotationMap.get(exports.CommonAnnotationTypeEnum.CUSTOM_ATTRIBUTE);
1329
- }
1330
- /**
1331
- * Generate attributes as string
1332
- *
1333
- * @param {...string} attrs - Additional attributes to include
1334
- * @returns {string} - Attributes as string
1335
- */
1336
- generateAttributeString(...attrs) {
1337
- var _a;
1338
- const blockAnnotationStyle = new RTEAnnotationStyle(this);
1339
- const styles = blockAnnotationStyle.toCssText({ standalone: true });
1340
- const customClassAnnotation = this.annotationMap.get(exports.CommonAnnotationTypeEnum.CUSTOM_CLASS);
1341
- const customAttributeString = ((_a = this.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.toString(attrs)) || [];
1342
- const attributes = [
1343
- ...customAttributeString,
1344
- customClassAnnotation === null || customClassAnnotation === void 0 ? void 0 : customClassAnnotation.toString(),
1345
- styles ? `style="${styles}"` : null,
1346
- ...attrs,
1347
- ].filter(typeGuard.isNonNullable);
1348
- return attributes.length ? ` ${attributes.join(' ')}` : '';
1349
- }
1350
- /**
1351
- * Apply action to block
1352
- *
1353
- * @param {AnnotationAction|ModifyContentAction} action - Annotation action
1354
- */
1355
- doApply(action) {
1356
- if (action instanceof ModifyContentAction) {
1357
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
1358
- }
1359
- else {
1360
- this.applyAnnotationAction(action);
1361
- }
1362
- }
1363
- /**
1364
- * Apply annotation action to block
1365
- *
1366
- * @param {AnnotationAction} action - Annotation action
1367
- */
1368
- applyAnnotationAction(action) {
1369
- const annotation = action.toAnnotation();
1370
- if (!(annotation instanceof LinkGroupAnnotation)) {
1371
- this.annotationMap.set(annotation.type, annotation);
1372
- }
1373
- typeof this.doAnnotationActionApply === 'function' && this.doAnnotationActionApply(action);
1374
- }
1375
- /**
1376
- * clone annotations of the block
1377
- *
1378
- * @returns {BlockAnnotations} - Cloned annotations
1379
- */
1380
- cloneAnnotations() {
1381
- return new Map(Array.from(this.annotationMap.entries()).map(([key, value]) => [key, value.clone()]));
1382
- }
1383
- }
1384
-
1385
- /**
1386
- * Abstract class for annotation actions
1387
- */
1388
- class AnnotationAction {
1389
- }
1390
-
1391
- /**
1392
- * Abstract class for which can be splittable
1393
- */
1394
- class TextSplittableAction extends AnnotationAction {
1395
- constructor() {
1396
- super(...arguments);
1397
- /**
1398
- * Whether the action should split the node
1399
- */
1400
- this.doSplit = true;
1401
- }
1402
- }
1403
-
1404
- /**
1405
- * Annotation to represent a selection range
1406
- */
1407
- class SelectionRangeAnnotation extends Annotation {
1408
- constructor(range) {
1409
- super();
1410
- this.type = exports.InternalAnnotationTypeEnum.SELECTION_RANGE;
1411
- this.range = range;
1412
- }
1413
- /**
1414
- * Clone the selection range annotation
1415
- *
1416
- * @returns {SelectionRangeAnnotation} A cloned instance of the selection range annotation
1417
- */
1418
- clone() {
1419
- return new SelectionRangeAnnotation(this.range);
1420
- }
1421
- }
1422
-
1423
- /**
1424
- * Annotation to make text with strikethrough
1425
- */
1426
- class StrikethroughAnnotation extends NodeAnnotation {
1427
- constructor(underline) {
1428
- super();
1429
- this.type = exports.NodeAnnotationTypeEnum.STRIKETHROUGH;
1430
- this.strikethrough = underline;
1431
- }
1432
- /**
1433
- * Generate the map item for the annotation
1434
- *
1435
- * @param {Nullable<boolean>} strikethrough - Strikethrough annotation
1436
- * @returns {[NodeAnnotationTypeEnum.STRIKETHROUGH, StrikethroughAnnotation]} Map item for the annotation
1437
- */
1438
- static from(strikethrough) {
1439
- return [exports.NodeAnnotationTypeEnum.STRIKETHROUGH, new StrikethroughAnnotation(strikethrough)];
1440
- }
1441
- /**
1442
- * Generate the JSON representation of the annotation
1443
- *
1444
- * @returns {Record<string, unknown>} JSON representation of the annotation
1445
- */
1446
- toJSON() {
1447
- return {
1448
- strikethrough: this.strikethrough,
1449
- };
1450
- }
1451
- /**
1452
- * @inheritDoc
1453
- */
1454
- clone() {
1455
- return new StrikethroughAnnotation(this.strikethrough);
1456
- }
1457
- /**
1458
- * @inheritDoc
1459
- */
1460
- renderClass(options) {
1461
- if (options === null || options === void 0 ? void 0 : options.standalone)
1462
- return null;
1463
- return this.strikethrough ? 'v-rte--strikethrough' : null;
1464
- }
1465
- /**
1466
- * @inheritDoc
1467
- */
1468
- renderStyle(options) {
1469
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1470
- return null;
1471
- return this.strikethrough ? { textDecoration: 'line-through' } : null;
1472
- }
1473
- }
1474
-
1475
- /**
1476
- * Annotation to make text with underline
1477
- */
1478
- class UnderlineAnnotation extends NodeAnnotation {
1479
- constructor(underline) {
1480
- super();
1481
- this.type = exports.NodeAnnotationTypeEnum.UNDERLINE;
1482
- this.underline = underline;
1483
- }
1484
- /**
1485
- * Generate the map item for the annotation
1486
- *
1487
- * @param {boolean} underline - Underline annotation
1488
- * @returns {[NodeAnnotationTypeEnum.UNDERLINE, UnderlineAnnotation]} Map item for the annotation
1489
- */
1490
- static from(underline) {
1491
- return [exports.NodeAnnotationTypeEnum.UNDERLINE, new UnderlineAnnotation(underline)];
1492
- }
1493
- /**
1494
- * Generate the JSON representation of the annotation
1495
- *
1496
- * @returns {Record<string, unknown>} JSON representation of the annotation
1497
- */
1498
- toJSON() {
1499
- return {
1500
- underline: this.underline,
1501
- };
1502
- }
1503
- /**
1504
- * @inheritDoc
1505
- */
1506
- clone() {
1507
- return new UnderlineAnnotation(this.underline);
1508
- }
1509
- /**
1510
- * @inheritDoc
1511
- */
1512
- renderClass(options) {
1513
- if (options === null || options === void 0 ? void 0 : options.standalone)
1514
- return null;
1515
- return this.underline ? 'v-rte--underline' : null;
1516
- }
1517
- /**
1518
- * @inheritDoc
1519
- */
1520
- renderStyle(options) {
1521
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1522
- return null;
1523
- return this.underline ? { textDecoration: 'underline' } : null;
1524
- }
1525
- }
1526
-
1527
- /**
1528
- * Annotation to make text Italic
1529
- */
1530
- class ItalicAnnotation extends NodeAnnotation {
1531
- constructor(italic) {
1532
- super();
1533
- this.type = exports.NodeAnnotationTypeEnum.ITALIC;
1534
- this.italic = italic;
1535
- }
1536
- /**
1537
- * Generate the map item for the annotation
1538
- *
1539
- * @param {boolean} italic - Italic annotation
1540
- * @returns {[NodeAnnotationTypeEnum.ITALIC, ItalicAnnotation]} Map item for the annotation
1541
- */
1542
- static from(italic) {
1543
- return [exports.NodeAnnotationTypeEnum.ITALIC, new ItalicAnnotation(italic)];
1544
- }
1545
- /**
1546
- * Generate the JSON representation of the annotation
1547
- *
1548
- * @returns {Record<string, unknown>} JSON representation of the annotation
1549
- */
1550
- toJSON() {
1551
- return {
1552
- italic: this.italic,
1553
- };
1554
- }
1555
- /**
1556
- * @inheritDoc
1557
- */
1558
- clone() {
1559
- return new ItalicAnnotation(this.italic);
1560
- }
1561
- /**
1562
- * @inheritDoc
1563
- */
1564
- renderClass(options) {
1565
- if (options === null || options === void 0 ? void 0 : options.standalone)
1566
- return null;
1567
- return this.italic ? 'v-rte--italic' : null;
1568
- }
1569
- /**
1570
- * @inheritDoc
1571
- */
1572
- renderStyle(options) {
1573
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1574
- return null;
1575
- return this.italic ? { fontStyle: 'italic' } : null;
1576
- }
1577
- }
1578
-
1579
- /**
1580
- * Annotation to make text bold
1581
- */
1582
- class BoldAnnotation extends NodeAnnotation {
1583
- constructor(bold) {
1584
- super();
1585
- this.type = exports.NodeAnnotationTypeEnum.BOLD;
1586
- this.bold = bold;
1587
- }
1588
- /**
1589
- * Generate the map item for the annotation
1590
- *
1591
- * @param {boolean} bold - Bold annotation
1592
- * @returns {[NodeAnnotationTypeEnum.BOLD, BoldAnnotation]} Map item for the annotation
1593
- */
1594
- static from(bold) {
1595
- return [exports.NodeAnnotationTypeEnum.BOLD, new BoldAnnotation(bold)];
1596
- }
1597
- /**
1598
- * Generate the JSON representation of the annotation
1599
- *
1600
- * @returns {Record<string, unknown>} JSON representation of the annotation
1601
- */
1602
- toJSON() {
1603
- return {
1604
- bold: this.bold,
1605
- };
1606
- }
1607
- /**
1608
- * @inheritDoc
1609
- */
1610
- clone() {
1611
- return new BoldAnnotation(this.bold);
1612
- }
1613
- /**
1614
- * @inheritDoc
1615
- */
1616
- renderClass(options) {
1617
- if (options === null || options === void 0 ? void 0 : options.standalone)
1618
- return null;
1619
- return this.bold ? 'v-rte--bold' : null;
1620
- }
1621
- /**
1622
- * @inheritDoc
1623
- */
1624
- renderStyle(options) {
1625
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1626
- return null;
1627
- return this.bold ? { fontWeight: '700' } : null;
1628
- }
1629
- }
1630
-
1631
- /**
1632
- * Annotation to make text code
1633
- */
1634
- class CodeAnnotation extends NodeAnnotation {
1635
- constructor(code, useInternalStyle = true) {
1636
- super();
1637
- this.type = exports.NodeAnnotationTypeEnum.CODE;
1638
- this.code = code;
1639
- this.useInternalStyle = useInternalStyle;
1640
- }
1641
- /**
1642
- * Generate the map item for the annotation
1643
- *
1644
- * @param {boolean} code - Bold annotation
1645
- * @param {boolean} useInternalStyle - Whether to use default style for the link
1646
- * @returns {[NodeAnnotationTypeEnum.CODE, CodeAnnotation]} Map item for the annotation
1647
- */
1648
- static from(code, useInternalStyle) {
1649
- return [exports.NodeAnnotationTypeEnum.CODE, new CodeAnnotation(code, useInternalStyle)];
1650
- }
1651
- /**
1652
- * Generate the JSON representation of the annotation
1653
- *
1654
- * @returns {Record<string, unknown>} JSON representation of the annotation
1655
- */
1656
- toJSON() {
1657
- return {
1658
- code: this.code,
1659
- };
1660
- }
1661
- /**
1662
- * @inheritDoc
1663
- */
1664
- clone() {
1665
- return new CodeAnnotation(this.code, this.useInternalStyle);
1666
- }
1667
- /**
1668
- * @inheritDoc
1669
- */
1670
- renderClass(options) {
1671
- if (options === null || options === void 0 ? void 0 : options.standalone)
1672
- return null;
1673
- return this.code && this.useInternalStyle ? 'v-rte--code' : null;
1674
- }
1675
- /**
1676
- * @inheritDoc
1677
- */
1678
- renderStyle(options) {
1679
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
1680
- return null;
1681
- return this.code && this.useInternalStyle
1682
- ? {
1683
- fontFamily: 'Roboto Mono',
1684
- whiteSpace: 'pre-wrap',
1685
- }
1686
- : null;
1687
- }
1688
- }
1689
-
1690
- const RTE_DEFAULT_TEXT_COLOR = {
1691
- key: 'black',
1692
- light: '#111128',
1693
- dark: '#E3E3E8',
1694
- };
1695
- const RTE_TEXT_COLORS = [
1696
- RTE_DEFAULT_TEXT_COLOR,
1697
- {
1698
- key: 'gray',
1699
- light: '#5E5E6D',
1700
- dark: '#B9B9C1',
1701
- },
1702
- {
1703
- key: 'green',
1704
- light: '#01801F',
1705
- dark: '#59D977',
1706
- },
1707
- {
1708
- key: 'red',
1709
- light: '#BD2947',
1710
- dark: '#FFB2B5',
1711
- },
1712
- {
1713
- key: 'purple',
1714
- light: '#563D82',
1715
- dark: '#BEB2FF',
1716
- },
1717
- {
1718
- key: 'teal',
1719
- light: '#17758F',
1720
- dark: '#4CD8FF',
1721
- },
1722
- ];
1723
- const ZERO_WIDTH_SPACE = '\u200b';
1724
- const VegaRTEPresetToolbarItems = [
1725
- ['textStyles'],
1726
- ['bold', 'italic', 'underline', 'strikethrough', 'code'],
1727
- ['textColor'],
1728
- ['horizontalAlignment', 'bulletsNumbers'],
1729
- ['moreIndent', 'lessIndent'],
1730
- ['link'],
1731
- ['image'],
1732
- ['clearStyle'],
1733
- ];
1734
-
1735
- /**
1736
- * Annotation to make text with text color
1737
- */
1738
- class TextColorAnnotation extends NodeAnnotation {
1739
- constructor(textColor) {
1740
- super();
1741
- this.type = exports.NodeAnnotationTypeEnum.TEXT_COLOR;
1742
- this.textColor = this.formatTextColor(textColor);
1743
- }
1744
- /**
1745
- * Generate the map item for the annotation
1746
- *
1747
- * @param {string} textColor - text color annotation
1748
- * @returns {[NodeAnnotationTypeEnum.TEXT_COLOR, TextColorAnnotation]} Map item for the annotation
1749
- */
1750
- static from(textColor) {
1751
- return [exports.NodeAnnotationTypeEnum.TEXT_COLOR, new TextColorAnnotation(textColor)];
1752
- }
1753
- /**
1754
- * Generate the JSON representation of the annotation
1755
- *
1756
- * @returns {Record<string, unknown>} JSON representation of the annotation
1757
- */
1758
- toJSON() {
1759
- return {
1760
- textColor: this.textColor.key,
1761
- };
1762
- }
1763
- /**
1764
- * @inheritDoc
1765
- */
1766
- clone() {
1767
- return new TextColorAnnotation(this.textColor.key);
1768
- }
1769
- /**
1770
- * @inheritDoc
1771
- */
1772
- renderClass() {
1773
- return null;
1774
- }
1775
- /**
1776
- * @inheritDoc
1777
- */
1778
- renderStyle() {
1779
- return {
1780
- color: darkModeStyleController.VegaInternalThemeManager.isDarkMode() ? this.textColor.dark : this.textColor.light,
1781
- };
1782
- }
1783
- /**
1784
- * format text color
1785
- *
1786
- * @param {string} textColor - text color
1787
- * @returns {VegaRTEColorSchema} - VegaRTEColorSchema
1788
- */
1789
- formatTextColor(textColor) {
1790
- return (RTE_TEXT_COLORS.find((item) => item.key === textColor) || RTE_TEXT_COLORS[0]);
1791
- }
1792
- }
1793
-
1794
- /**
1795
- * Annotation to make text a link
1796
- */
1797
- class LinkAnnotation extends NodeAnnotation {
1798
- constructor(link, useInternalStyle = true) {
1799
- super();
1800
- this.type = exports.NodeAnnotationTypeEnum.LINK;
1801
- this.link = link;
1802
- this.useInternalStyle = useInternalStyle;
1803
- }
1804
- /**
1805
- * Generate the map item for the annotation
1806
- *
1807
- * @param {VegaRTELink} link - Bold annotation
1808
- * @param {boolean} useInternalStyle - Whether to use default style for the link
1809
- * @returns {[NodeAnnotationTypeEnum.LINK, LinkAnnotation]} Map item for the annotation
1810
- */
1811
- static from(link, useInternalStyle = true) {
1812
- return [exports.NodeAnnotationTypeEnum.LINK, new LinkAnnotation(link, useInternalStyle)];
1813
- }
1814
- /**
1815
- * Generate the JSON representation of the annotation
1816
- *
1817
- * @returns {Record<'link', VegaRTELink>} JSON representation of the annotation
1818
- */
1819
- toJSON() {
1820
- return {
1821
- link: this.link,
1822
- };
1823
- }
1824
- /**
1825
- * @inheritDoc
1826
- */
1827
- clone() {
1828
- return new LinkAnnotation(this.link, this.useInternalStyle);
1829
- }
1830
- /**
1831
- * Verify whether two link annotation is same or not
1832
- *
1833
- * @param {LinkAnnotation} annotation - Compared annotation
1834
- * @returns {boolean} Whether two link annotation is same or not
1835
- */
1836
- toEqual(annotation) {
1837
- return this.link.groupKey === annotation.link.groupKey;
1838
- }
1839
- /**
1840
- * @inheritDoc
1841
- */
1842
- renderClass() {
1843
- return null;
1844
- }
1845
- /**
1846
- * @inheritDoc
1847
- */
1848
- renderStyle() {
1849
- return null;
1850
- }
1851
- }
1852
-
1853
- /**
1854
- * Action to link a group of nodes
1855
- */
1856
- class LinkGroupAnnotationAction extends AnnotationAction {
1857
- constructor(groupKey, nodes, type) {
1858
- super();
1859
- this.isFlushable = false;
1860
- this.groupKey = groupKey;
1861
- this.nodes = nodes;
1862
- this.type = type;
1863
- }
1864
- /**
1865
- * Converts the action to an annotation
1866
- *
1867
- * @returns {Annotation} The annotation
1868
- */
1869
- toAnnotation() {
1870
- return new LinkGroupAnnotation(this.groupKey);
1871
- }
1872
- }
1873
-
1874
- /**
1875
- * Sync up selection action
1876
- */
1877
- class SyncUpSelectionAction extends AnnotationAction {
1878
- constructor() {
1879
- super();
1880
- this.isFlushable = false;
1881
- }
1882
- /**
1883
- * annotation null
1884
- *
1885
- * @returns {Nullable<Annotation>} null
1886
- */
1887
- toAnnotation() {
1888
- return null;
1889
- }
1890
- }
1891
-
1892
- /**
1893
- * The base action handle strategy class, use to modify the rich text node content or modify the annotation.
1894
- */
1895
- class ActionHandleStrategy {
1896
- /**
1897
- * Public method to invoke the handle logic.
1898
- *
1899
- * @typedef R generic type
1900
- * @param {ModifyContentAction | AnnotationAction} action - The action instance. Contains the action type and necessary params.
1901
- * @param {RTENode | RTEBlock | VegaRTEContent} target - The rich text node instance that will be modified.
1902
- * @returns {R} - The invoke result in special strategy.
1903
- */
1904
- execute(action, target) {
1905
- globalSlimmerRegistry.LogUtility.log(`Executing action ${action.constructor.name} on ${target.constructor.name} ${target['id']}`);
1906
- return this.handleAction(action, target);
1907
- }
1908
- /**
1909
- * Update the custom style annotation of a block or node
1910
- *
1911
- * @param {RTEBlock | RTETextNode} item - block or node
1912
- * @param {string[]} styleKeys - custom style keys, for examples ['fontSize', 'fontWeight'].
1913
- */
1914
- updateCustomStyleAnnotation(item, styleKeys) {
1915
- const customStyleAnnotation = item.annotationMap.get(exports.CommonAnnotationTypeEnum.CUSTOM_STYLE);
1916
- if (customStyleAnnotation && this.isCustomStyle(customStyleAnnotation, styleKeys)) {
1917
- item.annotationMap.set(customStyleAnnotation.type, new CustomStyleAnnotation(customStyleAnnotation.removeStyles(styleKeys)));
1918
- }
1919
- }
1920
- /**
1921
- * Create a new paragraph block with the given text.
1922
- *
1923
- * @param {string} text - The text content for the new paragraph.
1924
- * @returns {Nullable<RTETextBlock>} - The newly created paragraph block, or null if creation failed.
1925
- */
1926
- createNewParagraph(text) {
1927
- const dtoClass = RTEDTOClassManager$1.getRTEBlockClass('paragraph');
1928
- if (dtoClass) {
1929
- const newParagraph = dtoClass.from({
1930
- id: createPublicApiRuntimeMetricsSlimmer.generateUUID(),
1931
- type: 'paragraph',
1932
- nodes: [{ id: createPublicApiRuntimeMetricsSlimmer.generateUUID(), type: 'text', text }],
1933
- });
1934
- return newParagraph;
1935
- }
1936
- }
1937
- /**
1938
- * Get the root content from a child block or node.
1939
- *
1940
- * @param {RTEBlock | RTENode} child - The child block or node.
1941
- * @returns {Nullable<VegaRTEContent>} The root content, if found.
1942
- */
1943
- getRootContent(child) {
1944
- const parent = child.parent;
1945
- if (parent) {
1946
- if (parent.constructor.name === 'VegaRTEContent') {
1947
- return parent;
1948
- }
1949
- else {
1950
- return this.getRootContent(parent);
1951
- }
1952
- }
1953
- }
1954
- /**
1955
- * Check the caret position at the start of a block.
1956
- *
1957
- * @param {RTEBlock} block - The RTE Block.
1958
- * @param {RTENode} node - The RTE Node.
1959
- * @param {number} offset - The offset position.
1960
- * @returns {boolean} - Whether the caret is at the start of the block.
1961
- */
1962
- isCaretPositionAtBlockStart(block, node, offset) {
1963
- return node === block.children[0] && offset === 0;
1964
- }
1965
- /**
1966
- * Check the caret position at the end of a block.
1967
- *
1968
- * @param {RTEBlock} block - The RTE Block.
1969
- * @param {RTENode} node - The RTE Node.
1970
- * @param {number} offset - The offset position.
1971
- * @returns {boolean} - Whether the caret is at the end of the block.
1972
- */
1973
- isCaretPositionAtBlockEnd(block, node, offset) {
1974
- if (!node.isContentEditable()) {
1975
- return this.isCaretPositionAtDecoratorBlockEnd(block, node, offset);
1976
- }
1977
- else {
1978
- return this.isCaretPositionAtTextBlockEnd(block, node, offset);
1979
- }
1980
- }
1981
- /**
1982
- * Checks if the caret position is at the end of a specified RTETextNode.
1983
- *
1984
- * @param {RTETextBlock} textBlock - `RTETextBlock` - a text block.
1985
- * @param {RTETextNode} node - `RTETextNode` - a node representing an image in a rich text editor.
1986
- * @param {number} startOffset - The position within the text node where the caret is located.
1987
- * @returns {boolean} a boolean value, which indicates whether the caret position is at the start of the RTETextNode.
1988
- */
1989
- isCaretPositionAtTextBlockEnd(textBlock, node, startOffset) {
1990
- const lastNode = textBlock.children[textBlock.children.length - 1];
1991
- return node === lastNode && (node.isEmpty() || startOffset === lastNode.text.length);
1992
- }
1993
- /**
1994
- * Checks if the caret position is at the end of a given decorator node.
1995
- *
1996
- * @param {RTEBlock} target - The image block.
1997
- * @param {RTENode} node - `node` is a RTEDecoratorNode or non-editable text node.
1998
- * @param {number} startOffset - The position within the `RTEDecoratorNode` where the caret is located.
1999
- * @returns {boolean}Returns a boolean value indicating whether the caret position is at the end of the `RTEDecoratorNode`.
2000
- */
2001
- isCaretPositionAtDecoratorBlockEnd(target, node, startOffset) {
2002
- return node === target.children[target.children.length - 1] && startOffset !== 0;
2003
- }
2004
- /**
2005
- * Determines if the custom style annotation includes any the custom style.
2006
- *
2007
- * @param {CustomStyleAnnotation} customStyleAnnotation - custom style annotation
2008
- * @param {string[]} styleKeys - custom style keys, for examples ['fontSize', 'fontWeight'].
2009
- * @returns {boolean} - True if the custom key includes the custom style, false otherwise.
2010
- */
2011
- isCustomStyle(customStyleAnnotation, styleKeys) {
2012
- return styleKeys.some((item) => Object.keys(customStyleAnnotation.customStyle).includes(item));
2013
- }
2014
- }
2015
-
2016
- /**
2017
- * Split the corresponding link group nodes *
2018
- */
2019
- class LinkGroupNodeSplitAction extends ModifyContentAction {
2020
- constructor(splittedTextNodes) {
2021
- super();
2022
- this.type = exports.ModifyContentActionType.LINK_GROUP_NODE_SPLIT;
2023
- this.splittedTextNodes = splittedTextNodes;
2024
- }
2025
- }
2026
-
2027
- /**
2028
- * Split the text node into two or there nodes according to the rules.
2029
- */
2030
- class NodeSplitTextStrategy extends ActionHandleStrategy {
2031
- constructor() {
2032
- super(...arguments);
2033
- // The new create node that need apply annotation or the current target. This property used to export after the execute method invoke.
2034
- this.applyTargetNode = null;
2035
- }
2036
- /**
2037
- * Split the text node.
2038
- *
2039
- * @param {TextSplittableAction} action - The split action.
2040
- * @param {RTETextNode} target - The text node that need to be splited.
2041
- * @returns {Nullable<RTETextNode>} - The new insert text node or the current text node that need to apply the action.
2042
- */
2043
- handleAction(action, target) {
2044
- const selectionRangeAnnotation = target.getAnnotationByType(exports.InternalAnnotationTypeEnum.SELECTION_RANGE);
2045
- this.setApplyTargetNode(null);
2046
- if (action instanceof TextSplittableAction && action.doSplit && selectionRangeAnnotation) {
2047
- const { startContainer, endContainer, startOffset, endOffset } = selectionRangeAnnotation.range;
2048
- const noTextRangeSelected = startContainer === endContainer && startOffset === endOffset;
2049
- target.parent.children = target.parent.children.flatMap((item) => {
2050
- if (item.id === target.id) {
2051
- if (noTextRangeSelected) {
2052
- return this.insertNewNode(startOffset, target);
2053
- }
2054
- if (this.shouldSplitSelection(selectionRangeAnnotation.range) &&
2055
- target.isContentEditable()) {
2056
- const splittedTextNodes = this.splitTextNode(selectionRangeAnnotation.range, target);
2057
- if (item.annotationMap.has('LINK')) {
2058
- item.apply(new LinkGroupNodeSplitAction(splittedTextNodes));
2059
- }
2060
- return splittedTextNodes;
2061
- }
2062
- else {
2063
- this.setApplyTargetNode(target);
2064
- return target;
2065
- }
2066
- }
2067
- return item;
2068
- });
2069
- }
2070
- return this.applyTargetNode;
2071
- }
2072
- /**
2073
- * Insert the new node at the start offset
2074
- *
2075
- * @param {number} startOffset - The start position offset
2076
- * @param {RTETextNode} target - RTETextNode
2077
- * @returns {RTETextNode[]} - RTETextNode array
2078
- */
2079
- insertNewNode(startOffset, target) {
2080
- const newNode = target.cloneWithText('');
2081
- this.setApplyTargetNode(newNode);
2082
- const index = target.parent.children.findIndex((node) => node === target);
2083
- if (startOffset === 0 || (!target.isContentEditable() && startOffset === index)) {
2084
- return [newNode, target];
2085
- }
2086
- if (startOffset === target.text.length ||
2087
- (!target.isContentEditable() && startOffset === index + 1)) {
2088
- return [target, newNode];
2089
- }
2090
- const beforeNode = target.cloneWithText(target.text.substring(0, startOffset));
2091
- const afterNode = target.cloneWithText(target.text.substring(startOffset));
2092
- return [beforeNode, newNode, afterNode];
2093
- }
2094
- /**
2095
- * Whether a given range should be split based on various conditions within the range.
2096
- *
2097
- * @param {Range} range - Selection range
2098
- * @returns {boolean} Returns a boolean value indicating whether the selection range should be split.
2099
- */
2100
- shouldSplitSelection(range) {
2101
- const { startContainer, endContainer, startOffset, endOffset } = range;
2102
- const isCrossNode = startContainer !== endContainer;
2103
- const isPartialStart = startOffset > 0;
2104
- const isPartialEnd = endOffset < (endContainer.textContent ? endContainer.textContent.length : 0);
2105
- const isPartialSelection = isPartialStart || isPartialEnd;
2106
- return isCrossNode || isPartialSelection;
2107
- }
2108
- /**
2109
- * Split text node with range
2110
- *
2111
- * @param {Range} range - Selection range
2112
- * @param {RTETextNode} target - RTETextNode
2113
- * @returns {RTETextNode[] | RTETextNode} RTETextNode array
2114
- */
2115
- splitTextNode(range, target) {
2116
- const { startContainer, endContainer, startOffset } = range;
2117
- const startNode = startContainer.parentElement;
2118
- const endNode = endContainer.parentElement;
2119
- /**
2120
- * Split the text from the start offset to the end offset
2121
- *
2122
- * @param {string} text - The text string
2123
- * @param {number} startOffset - The start offset position
2124
- * @param {number} endOffset - The end offset position
2125
- * @returns {RTETextNode[]} - The split text node array
2126
- */
2127
- const splitText = (text, startOffset, endOffset) => {
2128
- const beforeText = text.substring(0, startOffset);
2129
- const selectedText = text.substring(startOffset, endOffset);
2130
- const afterText = text.substring(endOffset);
2131
- return [
2132
- target.cloneWithText(beforeText),
2133
- target.cloneWithText(selectedText),
2134
- target.cloneWithText(afterText),
2135
- ];
2136
- };
2137
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
2138
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
2139
- if (startItemDto && startItemDto.id === target.id) {
2140
- const endOffset = startContainer === endContainer ? range.endOffset : target.text.length;
2141
- const [beforeNode, selectedNode, afterNode] = splitText(target.text, startOffset, endOffset);
2142
- this.setApplyTargetNode(selectedNode);
2143
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
2144
- }
2145
- else if (endItemDto && endItemDto.id === target.id) {
2146
- const [beforeNode, selectedNode, afterNode] = splitText(target.text, 0, range.endOffset);
2147
- this.setApplyTargetNode(selectedNode);
2148
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
2149
- }
2150
- else {
2151
- this.setApplyTargetNode(target);
2152
- return target;
2153
- }
2154
- }
2155
- /**
2156
- * Store the text node which need to apply the annotation. Clear the value if the input is null.
2157
- *
2158
- * @param {RTETextNode | null} node - The new text node.
2159
- */
2160
- setApplyTargetNode(node) {
2161
- this.applyTargetNode = node;
2162
- }
2163
- }
2164
-
2165
- /**
2166
- * Action to toggle bold annotation
2167
- */
2168
- class BoldAnnotationAction extends TextSplittableAction {
2169
- constructor(bold) {
2170
- super();
2171
- this.isFlushable = true;
2172
- this.bold = bold;
2173
- }
2174
- /**
2175
- * Converts the action to an annotation
2176
- *
2177
- * @returns {BoldAnnotation} the annotation
2178
- */
2179
- toAnnotation() {
2180
- return new BoldAnnotation(this.bold);
2181
- }
2182
- }
2183
-
2184
- /**
2185
- * Annotation to host which annotations will be clear formatting
2186
- */
2187
- class ClearFormattingAnnotation extends Annotation {
2188
- constructor() {
2189
- super(...arguments);
2190
- this.type = exports.InternalAnnotationTypeEnum.CLEAR_FORMATTING;
2191
- this.items = [
2192
- exports.NodeAnnotationTypeEnum.BOLD,
2193
- exports.NodeAnnotationTypeEnum.ITALIC,
2194
- exports.NodeAnnotationTypeEnum.UNDERLINE,
2195
- exports.NodeAnnotationTypeEnum.STRIKETHROUGH,
2196
- exports.NodeAnnotationTypeEnum.TEXT_COLOR,
2197
- exports.NodeAnnotationTypeEnum.CODE,
2198
- exports.CommonAnnotationTypeEnum.CUSTOM_STYLE,
2199
- ];
2200
- }
2201
- }
2202
-
2203
- /**
2204
- * Action to toggle clear formatting
2205
- */
2206
- class ClearFormattingAnnotationAction extends TextSplittableAction {
2207
- constructor() {
2208
- super(...arguments);
2209
- this.isFlushable = true;
2210
- }
2211
- /**
2212
- * Converts the action to an annotation
2213
- *
2214
- * @returns {Annotation} the annotation
2215
- */
2216
- toAnnotation() {
2217
- return new ClearFormattingAnnotation();
2218
- }
2219
- }
2220
-
2221
- /**
2222
- * Action to toggle code annotation
2223
- */
2224
- class CodeAnnotationAction extends TextSplittableAction {
2225
- constructor(code) {
2226
- super();
2227
- this.isFlushable = true;
2228
- this.code = code;
2229
- }
2230
- /**
2231
- * Converts the action to an annotation
2232
- *
2233
- * @returns {CodeAnnotation} the annotation
2234
- */
2235
- toAnnotation() {
2236
- return new CodeAnnotation(this.code);
2237
- }
2238
- }
2239
-
2240
- /**
2241
- * Delete the node annotation by type
2242
- */
2243
- class DeleteNodeAnnotationAction extends AnnotationAction {
2244
- constructor(annotationType) {
2245
- super();
2246
- this.isFlushable = true;
2247
- this.annotationType = annotationType;
2248
- }
2249
- /**
2250
- * Don't need this for this action
2251
- *
2252
- * @returns {Nullable<Annotation>} undefined
2253
- */
2254
- toAnnotation() {
2255
- return undefined;
2256
- }
2257
- }
2258
-
2259
- /**
2260
- * Action to toggle the italic annotation
2261
- */
2262
- class ItalicAnnotationAction extends TextSplittableAction {
2263
- constructor(italic) {
2264
- super();
2265
- this.isFlushable = true;
2266
- this.italic = italic;
2267
- }
2268
- /**
2269
- * Converts the action to an annotation
2270
- *
2271
- * @returns {ItalicAnnotation} The annotation
2272
- */
2273
- toAnnotation() {
2274
- return new ItalicAnnotation(this.italic);
2275
- }
2276
- }
2277
-
2278
- /**
2279
- * Action to toggle link annotation
2280
- */
2281
- class LinkAnnotationAction extends TextSplittableAction {
2282
- constructor({ link, newText, needMergeNode, doSplit, type, }) {
2283
- super();
2284
- this.isFlushable = true;
2285
- this.link = link;
2286
- this.needMergeNode = needMergeNode;
2287
- this.newText = newText;
2288
- this.type = type;
2289
- if (typeGuard.isNonNullable(doSplit)) {
2290
- this.doSplit = doSplit;
2291
- }
2292
- }
2293
- /**
2294
- * Converts the action to an annotation
2295
- *
2296
- * @returns {LinkAnnotation} the annotation
2297
- */
2298
- toAnnotation() {
2299
- return new LinkAnnotation(this.link);
2300
- }
2301
- }
2302
-
2303
- /**
2304
- * Action to toggle the strikethrough annotation
2305
- */
2306
- class StrikethroughAnnotationAction extends TextSplittableAction {
2307
- constructor(underline) {
2308
- super();
2309
- this.isFlushable = true;
2310
- this.strikethrough = underline;
2311
- }
2312
- /**
2313
- * Converts the action to an annotation
2314
- *
2315
- * @returns {Annotation} the annotation
2316
- */
2317
- toAnnotation() {
2318
- return new StrikethroughAnnotation(this.strikethrough);
2319
- }
2320
- }
2321
-
2322
- /**
2323
- * Action to toggle the underline annotation
2324
- */
2325
- class UnderlineAnnotationAction extends TextSplittableAction {
2326
- constructor(underline) {
2327
- super();
2328
- this.isFlushable = true;
2329
- this.underline = underline;
2330
- }
2331
- /**
2332
- * Converts the action to an annotation
2333
- *
2334
- * @returns {Annotation} the annotation
2335
- */
2336
- toAnnotation() {
2337
- return new UnderlineAnnotation(this.underline);
2338
- }
2339
- }
2340
-
2341
- /**
2342
- * The current strategy used to modify the text node annotation map.
2343
- */
2344
- class NodeUpdateAnnotationMapStrategy extends ActionHandleStrategy {
2345
- /**
2346
- * Remove or set annotation to the text node annotation map.
2347
- *
2348
- * @param {AnnotationAction} action - The annotation action instance.
2349
- * @param {RTETextNode} target - The current text node.
2350
- */
2351
- handleAction(action, target) {
2352
- const annotation = action.toAnnotation();
2353
- if (action instanceof DeleteNodeAnnotationAction) {
2354
- target.annotationMap.delete(action.annotationType);
2355
- return;
2356
- }
2357
- if (annotation instanceof ClearFormattingAnnotation) {
2358
- annotation.items.forEach((item) => {
2359
- target.deleteAnnotationByType(item);
2360
- });
2361
- return;
2362
- }
2363
- if (annotation instanceof NodeAnnotation || annotation instanceof SelectionRangeAnnotation) {
2364
- if (action instanceof LinkAnnotationAction) {
2365
- if (typeGuard.isNonNullable(action.newText)) {
2366
- target.text = action.newText;
2367
- }
2368
- target.parent.apply(new LinkGroupAnnotationAction(action.link.groupKey, [target], action.type));
2369
- }
2370
- if (action instanceof CodeAnnotationAction) {
2371
- this.handleAction(new ClearFormattingAnnotationAction(), target);
2372
- }
2373
- if (action instanceof BoldAnnotationAction) {
2374
- this.updateCustomStyleAnnotation(target, ['fontWeight']);
2375
- }
2376
- if (action instanceof ItalicAnnotationAction) {
2377
- this.updateCustomStyleAnnotation(target, ['fontStyle']);
2378
- }
2379
- if (action instanceof UnderlineAnnotationAction ||
2380
- action instanceof StrikethroughAnnotationAction) {
2381
- this.updateCustomStyleAnnotation(target, ['textDecoration']);
2382
- }
2383
- target.annotationMap.set(annotation.type, annotation);
2384
- return;
2385
- }
2386
- }
2387
- }
2388
-
2389
- /**
2390
- * Delete the corresponding link group according to the text node *
2391
- */
2392
- class DeleteLinkGroupAction extends ModifyContentAction {
2393
- constructor() {
2394
- super(...arguments);
2395
- this.type = exports.ModifyContentActionType.DELETE_LINK_GROUP;
2396
- }
2397
- }
2398
-
2399
- /**
2400
- * Update the editor text node text content strategy.
2401
- */
2402
- class NodeUpdateTextStrategy extends ActionHandleStrategy {
2403
- /**
2404
- * Updates the text content of a node and unlink the node if it is a link node and the text is deleted.
2405
- *
2406
- * @param {UpdateTextAction} action - The update text action instance.
2407
- * @param {RTETextNode} target - The text node instance which need update the text.
2408
- */
2409
- handleAction(action, target) {
2410
- target.text = action.newTextContent;
2411
- // The link node should unlink when delete all text
2412
- if (!target.text && target.annotationMap.has('LINK')) {
2413
- target.apply(new DeleteLinkGroupAction());
2414
- }
2415
- }
2416
- }
2417
-
2418
- /**
2419
- * Update the text node property text action
2420
- *
2421
- * @example textNode.apply(new UpdateTextAction(newText))
2422
- */
2423
- class UpdateTextAction extends ModifyContentAction {
2424
- constructor(text) {
2425
- super();
2426
- this.type = exports.ModifyContentActionType.UPDATE_TEXT;
2427
- this.newTextContent = '';
2428
- this.newTextContent = text;
2429
- }
2430
- }
2431
-
2432
- /**
2433
- * Replaces the rich text node selected text strategy.
2434
- */
2435
- class NodeReplaceSelectedTextStrategy extends ActionHandleStrategy {
2436
- /**
2437
- * @inheritDoc
2438
- */
2439
- handleAction(action, target) {
2440
- this.replaceSelectedText(action.textToBeInsert, action.currentRange, target);
2441
- }
2442
- /**
2443
- * Replaces the selected text within a given range with a new text in a TypeScript class.
2444
- *
2445
- * @param {string} text - The new text that will replace the currently selected text within the specified range.
2446
- * @param {RTERange} currentRange - A range of text within a Rich Text Editor (RTE).
2447
- * @param {RTETextNode} target - The RTE text node instance.
2448
- */
2449
- replaceSelectedText(text, currentRange, target) {
2450
- if (currentRange && currentRange.startContainer && currentRange.endContainer) {
2451
- const { startContainer, endContainer, startOffset, endOffset } = currentRange;
2452
- let newText = target.text;
2453
- if (startContainer === endContainer && startOffset === endOffset && text) {
2454
- newText = target.text.slice(0, startOffset) + text + target.text.slice(startOffset);
2455
- }
2456
- else {
2457
- const startNode = startContainer.parentElement;
2458
- const endNode = endContainer.parentElement;
2459
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
2460
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
2461
- let startIndex = 0, endIndex = target.text.length;
2462
- if (startItemDto && startItemDto === target) {
2463
- startIndex = startOffset;
2464
- endIndex = startContainer === endContainer ? endOffset : endIndex;
2465
- }
2466
- else if (endItemDto && endItemDto === target) {
2467
- endIndex = endOffset;
2468
- }
2469
- newText = target.text.slice(0, startIndex) + text + target.text.slice(endIndex);
2470
- }
2471
- target.apply(new UpdateTextAction(newText));
2472
- }
2473
- }
2474
- }
2475
-
2476
- /**
2477
- * Inline HTML annotation
2478
- */
2479
- class InlineHtmlAnnotation extends Annotation {
2480
- constructor(htmlTag) {
2481
- super();
2482
- this.type = exports.NodeAnnotationTypeEnum.INLINE_HTML;
2483
- this.htmlTag = htmlTag;
2484
- }
2485
- /**
2486
- * Generate the map item for the annotation
2487
- *
2488
- * @param {VegaInlineHtmlSchema} inlineHtml - Inline HTML node
2489
- * @returns {[NodeAnnotationTypeEnum.INLINE_HTML, InlineHtmlAnnotation]} Map item for the annotation
2490
- */
2491
- static from(inlineHtml) {
2492
- const { htmlTag, child, customStyle, customClass, customAttribute } = inlineHtml;
2493
- const inlineHtmlAnnotation = new InlineHtmlAnnotation(htmlTag);
2494
- inlineHtmlAnnotation.child = child ? InlineHtmlAnnotation.from(child)[1] : undefined;
2495
- inlineHtmlAnnotation.customAttribute = customAttribute
2496
- ? CustomAttributeAnnotation.from(customAttribute)[1]
2497
- : undefined;
2498
- inlineHtmlAnnotation.customClass = customClass
2499
- ? CustomClassAnnotation.from(customClass)[1]
2500
- : undefined;
2501
- inlineHtmlAnnotation.customStyle = customStyle
2502
- ? CustomStyleAnnotation.from(customStyle)[1]
2503
- : undefined;
2504
- return [exports.NodeAnnotationTypeEnum.INLINE_HTML, inlineHtmlAnnotation];
2505
- }
2506
- /**
2507
- * Create a new inline HTML annotation
2508
- *
2509
- * @returns {InlineHtmlAnnotation} - Inline HTML annotation
2510
- */
2511
- clone() {
2512
- var _a, _b, _c, _d;
2513
- const inlineHtmlAnnotation = new InlineHtmlAnnotation(this.htmlTag);
2514
- inlineHtmlAnnotation.child = (_a = this.child) === null || _a === void 0 ? void 0 : _a.clone();
2515
- inlineHtmlAnnotation.customAttribute = (_b = this.customAttribute) === null || _b === void 0 ? void 0 : _b.clone();
2516
- inlineHtmlAnnotation.customClass = (_c = this.customClass) === null || _c === void 0 ? void 0 : _c.clone();
2517
- inlineHtmlAnnotation.customStyle = (_d = this.customStyle) === null || _d === void 0 ? void 0 : _d.clone();
2518
- return inlineHtmlAnnotation;
2519
- }
2520
- /**
2521
- * Generate the JSON representation of the annotation
2522
- *
2523
- * @returns {Record<string, unknown>} JSON representation of the annotation
2524
- */
2525
- toJSON() {
2526
- var _a, _b, _c, _d;
2527
- return {
2528
- inlineHtml: object.cleanObject({
2529
- htmlTag: this.htmlTag,
2530
- child: (_a = this.child) === null || _a === void 0 ? void 0 : _a.toJSON().inlineHtml,
2531
- customAttribute: (_b = this.customAttribute) === null || _b === void 0 ? void 0 : _b.toJSON().customAttribute,
2532
- customClass: (_c = this.customClass) === null || _c === void 0 ? void 0 : _c.toJSON().customClass,
2533
- customStyle: (_d = this.customStyle) === null || _d === void 0 ? void 0 : _d.toJSON().customStyle,
2534
- }),
2535
- };
2536
- }
2537
- }
2538
-
2539
- /**
2540
- * Split the link nodes in the corresponding link group
2541
- */
2542
- class LinkGroupNodeSplitStrategy extends ActionHandleStrategy {
2543
- /**
2544
- * Split the text node.
2545
- *
2546
- * @param {LinkGroupNodeSplitAction} action - The split action.
2547
- * @param {RTETextNode} target - The text node that need to be splitted.
2548
- */
2549
- handleAction(action, target) {
2550
- const linkGroupAnnotation = target.parent.getAnnotationByType(exports.InternalAnnotationTypeEnum.LINK_GROUP);
2551
- if (linkGroupAnnotation) {
2552
- const currentGroupKey = target.annotationMap.get('LINK').link
2553
- .groupKey;
2554
- const currentLinkGroup = linkGroupAnnotation.linkGroups.get(currentGroupKey);
2555
- if (currentLinkGroup) {
2556
- const index = currentLinkGroup.indexOf(target);
2557
- if (index !== -1) {
2558
- /* istanbul ignore next */
2559
- currentLinkGroup.splice(index, 1, ...(Array.isArray(action.splittedTextNodes)
2560
- ? action.splittedTextNodes
2561
- : [action.splittedTextNodes]));
2562
- linkGroupAnnotation.linkGroups.set(currentGroupKey, currentLinkGroup);
2563
- }
2564
- }
2565
- }
2566
- }
2567
- }
2568
-
2569
- /**
2570
- * Delete the corresponding link group
2571
- */
2572
- class DeleteLinkGroupStrategy extends ActionHandleStrategy {
2573
- /**
2574
- * Delete the corresponding link group
2575
- *
2576
- * @param {DeleteLinkGroupAction} _action - The delete link group action.
2577
- * @param {RTETextNode} target - The text node that need to remove link annotation.
2578
- */
2579
- handleAction(_action, target) {
2580
- const linkGroupAnnotation = target.parent.getAnnotationByType(exports.InternalAnnotationTypeEnum.LINK_GROUP);
2581
- if (linkGroupAnnotation) {
2582
- const currentGroupKey = target.annotationMap.get(exports.NodeAnnotationTypeEnum.LINK).link.groupKey;
2583
- const currentLinkGroup = linkGroupAnnotation.linkGroups.get(currentGroupKey);
2584
- if (currentLinkGroup) {
2585
- const index = currentLinkGroup.indexOf(target);
2586
- if (index !== -1) {
2587
- currentLinkGroup.splice(index, 1);
2588
- }
2589
- if (currentLinkGroup.length === 0) {
2590
- linkGroupAnnotation.linkGroups.delete(currentGroupKey);
2591
- }
2592
- if (linkGroupAnnotation.linkGroups.size === 0) {
2593
- target.parent.annotationMap.delete(exports.InternalAnnotationTypeEnum.LINK_GROUP);
2594
- }
2595
- }
2596
- }
2597
- target.annotationMap.delete(exports.NodeAnnotationTypeEnum.LINK);
2598
- }
2599
- }
2600
-
2601
- /**
2602
- * Annotation to make text as plain text
2603
- */
2604
- class PlainTextAnnotation extends NodeAnnotation {
2605
- constructor(plainText) {
2606
- super();
2607
- this.type = exports.NodeAnnotationTypeEnum.PLAIN_TEXT;
2608
- this.plainText = true;
2609
- this.plainText = plainText;
2610
- }
2611
- /**
2612
- * @inheritDoc
2613
- */
2614
- static from(plainText) {
2615
- return [exports.NodeAnnotationTypeEnum.PLAIN_TEXT, new PlainTextAnnotation(plainText)];
2616
- }
2617
- /**
2618
- * @inheritDoc
2619
- */
2620
- clone() {
2621
- return new PlainTextAnnotation(this.plainText);
2622
- }
2623
- /**
2624
- * @inheritDoc
2625
- */
2626
- renderClass() {
2627
- return undefined;
2628
- }
2629
- /**
2630
- * @inheritDoc
2631
- */
2632
- renderStyle() {
2633
- return undefined;
2634
- }
2635
- /**
2636
- * @inheritDoc
2637
- */
2638
- toJSON() {
2639
- return { plainText: this.plainText };
2640
- }
2641
- }
2642
-
2643
- /**
2644
- * Action to toggle the text color annotation visibility/state.
2645
- */
2646
- class TextColorAnnotationAction extends TextSplittableAction {
2647
- constructor(textColor) {
2648
- super();
2649
- this.isFlushable = true;
2650
- this.textColor = textColor;
2651
- }
2652
- /**
2653
- * Converts the action into a text color annotation.
2654
- *
2655
- * @returns {Annotation} the annotation
2656
- */
2657
- toAnnotation() {
2658
- return new TextColorAnnotation(this.textColor);
2659
- }
2660
- }
2661
-
2662
- /**
2663
- * Text node
2664
- */
2665
- class RTETextNode extends RTENode {
2666
- constructor(id, text, parentBlock, annotationMap) {
2667
- super(id, annotationMap);
2668
- this.type = exports.NodeTypeEnum.TEXT;
2669
- this.parent = parentBlock;
2670
- this.text = text;
2671
- this.registerModifyStrategy();
2672
- }
2673
- /**
2674
- * Determines if the given HTML tag is supported by the RTETextNode.
2675
- *
2676
- * @param {string} tag - The HTML tag to check.
2677
- * @returns {boolean} `true` if the tag is supported, otherwise `false`.
2678
- */
2679
- static supportsHtmlTag(tag) {
2680
- return ['span', 'code'].includes(tag);
2681
- }
2682
- /**
2683
- * Creates an RTETextNode from a VegaRTETextNode with annotations and a parent RTETextBlock.
2684
- *
2685
- * @param {VegaRTETextNode} richText - A rich text node
2686
- * @param {RTETextBlock} parentBlock - Parent block
2687
- * @param {VegaRTETransformOptions} options - Optional transformation options.
2688
- * @returns {RTETextNode} an RTETextNode
2689
- */
2690
- static from(richText, parentBlock, options = { autoMatchFormat: true }) {
2691
- const textNode = new RTETextNode(richText.id, richText.text, parentBlock);
2692
- const { annotations } = richText;
2693
- if (annotations) {
2694
- textNode.annotationMap = this.generateTextAnnotationMap(annotations, options, parentBlock, textNode);
2695
- }
2696
- return textNode;
2697
- }
2698
- /**
2699
- * Generates a map of text annotations for the given set of annotations.
2700
- *
2701
- * @param {VegaRTETextAnnotations} annotations - The annotations to be converted into a map.
2702
- * @param {VegaRTETransformOptions} options - Optional transformation options.
2703
- * @param {RTETextBlock} parentBlock - The parent text block.
2704
- * @param {RTETextNode} textNode - The text node.
2705
- * @returns {NodeAnnotations} The map of text annotations.
2706
- */
2707
- static generateTextAnnotationMap(annotations, options, parentBlock, textNode) {
2708
- return new Map(Object.keys(annotations)
2709
- .map((type) => {
2710
- if (type === 'link' && annotations.link && parentBlock && textNode) {
2711
- parentBlock.apply(new LinkGroupAnnotationAction(annotations.link.groupKey, [textNode], 'link'));
2712
- }
2713
- return this.createAnnotationEntity(type, annotations[type], options);
2714
- })
2715
- .filter(typeGuard.isNonNullable));
2716
- }
2717
- /**
2718
- * Creates different types of text annotations based on the provided type and value.
2719
- *
2720
- * @param {keyof VegaRTETextAnnotations} type - The key of the type.
2721
- * @param {unknown} value - The value that will be used to create the specific type of annotation entity based on the `type` provided.
2722
- * @param {VegaRTETransformOptions} [options] - Optional transformation options that may be used for creating the annotation entity.
2723
- * @returns {Nullable<[RTENodeAnnotationMapKey, RTENodeAnnotationMapValue]>} Returning a nullable tuple containing a key and a
2724
- * value from the `RTENodeAnnotationMapKey` and `RTENodeAnnotationMapValue` types.
2725
- */
2726
- static createAnnotationEntity(type, value, options) {
2727
- const autoMatchFormat = !!(options && options.autoMatchFormat);
2728
- switch (type) {
2729
- case 'bold':
2730
- return BoldAnnotation.from(value);
2731
- case 'italic':
2732
- return ItalicAnnotation.from(value);
2733
- case 'underline':
2734
- return UnderlineAnnotation.from(value);
2735
- case 'strikethrough':
2736
- return StrikethroughAnnotation.from(value);
2737
- case 'code':
2738
- return CodeAnnotation.from(value, autoMatchFormat);
2739
- case 'textColor':
2740
- return TextColorAnnotation.from(value);
2741
- case 'link':
2742
- return LinkAnnotation.from(value, autoMatchFormat);
2743
- case 'inlineHtml': {
2744
- return InlineHtmlAnnotation.from(value);
2745
- }
2746
- case 'plainText': {
2747
- return PlainTextAnnotation.from(value);
2748
- }
2749
- }
2750
- return RTENode.createAnnotationEntity(type, value);
2751
- }
2752
- /**
2753
- * @inheritDoc
2754
- */
2755
- toJSON() {
2756
- const annotations = Array.from(this.annotationMap.values())
2757
- .filter((annotation) => annotation instanceof NodeAnnotation ||
2758
- annotation instanceof CommonAnnotation ||
2759
- annotation instanceof InlineHtmlAnnotation)
2760
- .reduce((record, annotation) => {
2761
- return Object.assign(Object.assign({}, record), annotation.toJSON());
2762
- }, {});
2763
- return Object.assign(Object.assign({ id: this.id }, (Object.keys(annotations).length > 0 ? { annotations } : {})), { type: 'text', text: this.text });
2764
- }
2765
- /**
2766
- * @inheritDoc
2767
- */
2768
- toHtml() {
2769
- const inlineHtmlAnnotation = this.getAnnotationByType(exports.NodeAnnotationTypeEnum.INLINE_HTML);
2770
- return inlineHtmlAnnotation ? this.renderWithWrapperStr(inlineHtmlAnnotation) : this.renderTextStr();
2771
- }
2772
- /**
2773
- * Creates a new RTETextNode with the specified text and copies the parent block and annotation map from the original node.
2774
- *
2775
- * @param {string} text - The text content of the RTETextNode that will be created.
2776
- * @returns {RTETextNode} An new RTETextNode
2777
- */
2778
- cloneWithText(text) {
2779
- const cloned = new RTETextNode(createPublicApiRuntimeMetricsSlimmer.generateUUID(), text, this.parent, super.cloneAnnotations());
2780
- return cloned;
2781
- }
2782
- /**
2783
- * @inheritDoc
2784
- */
2785
- clone(parent) {
2786
- const cloned = new RTETextNode(this.id, this.text, parent, super.cloneAnnotations());
2787
- return cloned;
2788
- }
2789
- /**
2790
- * Checks if a node is empty
2791
- *
2792
- * @returns {boolean} It returns `true` if the node is empty
2793
- */
2794
- isEmpty() {
2795
- return !this.text || this.text === ZERO_WIDTH_SPACE || this.text === '\n';
2796
- }
2797
- /**
2798
- * @inheritDoc
2799
- */
2800
- isTextNode() {
2801
- return true;
2802
- }
2803
- /**
2804
- * @inheritDoc
2805
- */
2806
- getRangeEndOffset() {
2807
- if (!this.isContentEditable() && this.parent) {
2808
- const parent = this.parent;
2809
- const nodeIndex = parent.children.indexOf(this);
2810
- return nodeIndex + 1; // place the cursor after the non-editable text node;
2811
- }
2812
- return this.text === '\n' ? 0 : this.text.length;
2813
- }
2814
- /**
2815
- * @inheritDoc
2816
- */
2817
- getRangeContainer() {
2818
- const element = this.getElementRef();
2819
- if (element) {
2820
- if (this.isContentEditable()) {
2821
- return element.firstChild;
2822
- }
2823
- else {
2824
- return element.parentElement;
2825
- }
2826
- }
2827
- }
2828
- /**
2829
- * @inheritDoc
2830
- */
2831
- isContentEditable() {
2832
- return true;
2833
- }
2834
- /**
2835
- * Registers the action strategies for the RTETextNode.
2836
- */
2837
- registerModifyStrategy() {
2838
- const dtoClassName = this.constructor.name;
2839
- if (!RTETextNode.registerActionStrategyStatus[dtoClassName]) {
2840
- if (this.isContentEditable()) {
2841
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.UPDATE_TEXT, dtoClassName, new NodeUpdateTextStrategy());
2842
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.REPLACE_SELECTED_TEXT, dtoClassName, new NodeReplaceSelectedTextStrategy());
2843
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.LINK_GROUP_NODE_SPLIT, dtoClassName, new LinkGroupNodeSplitStrategy());
2844
- ActionHandleStrategyRegistry.register(LinkAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2845
- }
2846
- ActionHandleStrategyRegistry.register(TextSplittableAction.name, dtoClassName, new NodeSplitTextStrategy());
2847
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.DELETE_LINK_GROUP, dtoClassName, new DeleteLinkGroupStrategy());
2848
- ActionHandleStrategyRegistry.register(BoldAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2849
- ActionHandleStrategyRegistry.register(ClearFormattingAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2850
- ActionHandleStrategyRegistry.register(ItalicAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2851
- ActionHandleStrategyRegistry.register(UnderlineAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2852
- ActionHandleStrategyRegistry.register(TextColorAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2853
- ActionHandleStrategyRegistry.register(StrikethroughAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2854
- ActionHandleStrategyRegistry.register(CodeAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2855
- ActionHandleStrategyRegistry.register(AnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
2856
- RTETextNode.registerActionStrategyStatus[dtoClassName] = true;
2857
- }
2858
- }
2859
- /**
2860
- * @inheritDoc
2861
- */
2862
- doAnnotationActionApply(action) {
2863
- const selectionRangeAnnotation = this.getAnnotationByType(exports.InternalAnnotationTypeEnum.SELECTION_RANGE);
2864
- if (action instanceof TextSplittableAction && action.doSplit && selectionRangeAnnotation) {
2865
- const splitStrategy = ActionHandleStrategyRegistry.get(TextSplittableAction.name, this.constructor.name);
2866
- if (splitStrategy) {
2867
- const newNode = splitStrategy.execute(action, this);
2868
- if (newNode) {
2869
- this.applyActionToNode(newNode, action);
2870
- }
2871
- }
2872
- }
2873
- else {
2874
- this.applyActionToNode(this, action);
2875
- }
2876
- if (typeof this.parent.mergeNodes === 'function') {
2877
- this.parent.mergeNodes(action);
2878
- }
2879
- }
2880
- /**
2881
- * @inheritDoc
2882
- */
2883
- doModifyActionApply(action) {
2884
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
2885
- }
2886
- /**
2887
- * Apply action to node
2888
- *
2889
- * @param {RTETextNode} node - Text node
2890
- * @param {AnnotationAction} action - AnnotationAction
2891
- */
2892
- applyActionToNode(node, action) {
2893
- const annotation = action.toAnnotation();
2894
- if (action instanceof SyncUpSelectionAction) {
2895
- this.syncUpSelectedNodes(node);
2896
- return;
2897
- }
2898
- // Sync up RTETextNode selected state to selection controller for any action apply, except selection range change.
2899
- if (!(annotation instanceof SelectionRangeAnnotation)) {
2900
- this.syncUpSelectedNodes(node);
2901
- }
2902
- /**
2903
- * 1. Try to get the specific strategy for the action and node type first (e.g., LinkAnnotationAction on RTETextNode).
2904
- * 2. If no specific strategy found, try to get the generic NodeUpdateAnnotationMapStrategy for AnnotationAction on RTETextNode.
2905
- */
2906
- const strategy = ActionHandleStrategyRegistry.get(action.constructor.name, node.constructor.name);
2907
- if (strategy) {
2908
- strategy.execute(action, node);
2909
- return;
2910
- }
2911
- const updateAnnotationMapStrategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTETextNode.name);
2912
- if (updateAnnotationMapStrategy) {
2913
- updateAnnotationMapStrategy.execute(action, node);
2914
- return;
2915
- }
2916
- }
2917
- /**
2918
- * Sync up the selected node by change manager
2919
- *
2920
- * @param {RTETextNode} selectedNode - The selected node
2921
- */
2922
- syncUpSelectedNodes(selectedNode) {
2923
- const currentNodeDom = this.getElementRef();
2924
- if (currentNodeDom) {
2925
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(currentNodeDom, vegaInternalEventId.VegaInternalRichTextEditorSelectionRangeChange);
2926
- if (nodeSubject) {
2927
- changeManager.ChangeManager.notify(nodeSubject, { node: selectedNode });
2928
- }
2929
- }
2930
- }
2931
- /**
2932
- * Render the text node with the inline HTML wrapper.
2933
- *
2934
- * @param {VegaInlineHtmlSchema} inlineHtmlNode - The inline HTML schema to wrap the text node.
2935
- * @returns {string} The HTML string representation of the text node wrapped with the inline HTML.
2936
- */
2937
- renderWithWrapperStr(inlineHtmlNode) {
2938
- const { htmlTag, customAttribute, customClass, customStyle, child } = inlineHtmlNode;
2939
- const attrs = [
2940
- ...((customAttribute === null || customAttribute === void 0 ? void 0 : customAttribute.toString()) || []),
2941
- customClass === null || customClass === void 0 ? void 0 : customClass.toString(),
2942
- customStyle === null || customStyle === void 0 ? void 0 : customStyle.toString(),
2943
- ].filter(typeGuard.isNonNullable);
2944
- const attrStr = attrs.length > 0 ? ` ${attrs.join(' ')}` : '';
2945
- if (!child) {
2946
- return `<${htmlTag}${attrStr}>${this.renderTextStr()}</${htmlTag}>`;
2947
- }
2948
- return `<${htmlTag}${attrStr}>${this.renderWithWrapperStr(child)}</${htmlTag}>`;
2949
- }
2950
- /**
2951
- * Generates the HTML representation of the text node.
2952
- *
2953
- * @returns {string} The HTML string representation of the text node.
2954
- */
2955
- renderTextStr() {
2956
- var _a;
2957
- const NodeTag = ((_a = this.getAnnotationByType(exports.NodeAnnotationTypeEnum.CODE)) === null || _a === void 0 ? void 0 : _a.code)
2958
- ? 'code'
2959
- : 'span';
2960
- const attrStr = super.generateAttributeString();
2961
- // If the text contains a newline character, we need to replace it with a <br> tag.
2962
- if (this.text === '\n') {
2963
- return `<br>`;
2964
- }
2965
- return this.shouldRenderAsPlainText() ? this.text : `<${NodeTag}${attrStr}>${this.text}</${NodeTag}>`;
2966
- }
2967
- /**
2968
- * Determines if the text node should be rendered as plain text.
2969
- *
2970
- * @returns {boolean} `true` if the text node should be rendered as plain text, otherwise `false`.
2971
- */
2972
- shouldRenderAsPlainText() {
2973
- const plainTextAnnotation = super.getAnnotationByType(exports.NodeAnnotationTypeEnum.PLAIN_TEXT);
2974
- if (plainTextAnnotation) {
2975
- return (plainTextAnnotation.plainText &&
2976
- Array.from(this.annotationMap.values()).filter((annotation) => (annotation instanceof NodeAnnotation &&
2977
- !(annotation instanceof LinkAnnotation) &&
2978
- !(annotation instanceof PlainTextAnnotation)) ||
2979
- annotation instanceof CommonAnnotation).length === 0);
2980
- }
2981
- else {
2982
- return false;
2983
- }
2984
- }
2985
- }
2986
- RTETextNode.registerActionStrategyStatus = {};
2987
- RTETextNode.htmlTag = 'span';
2988
-
2989
- /**
2990
- * Append children to a block or rte content
2991
- *
2992
- * @example parent.apply(new AppendChildrenAction([newChildren]))
2993
- */
2994
- class AppendChildrenAction extends ModifyContentAction {
2995
- constructor(childNodes) {
2996
- super();
2997
- this.type = exports.ModifyContentActionType.APPEND_CHILDREN;
2998
- this.entityToBeAppended = childNodes;
2999
- }
3000
- }
3001
-
3002
- /**
3003
- * Text style annotation
3004
- */
3005
- class TextStyleAnnotation extends BlockAnnotation {
3006
- constructor(textStyle) {
3007
- super();
3008
- this.type = exports.BlockAnnotationTypeEnum.TEXT_STYLE;
3009
- this.textStyle = textStyle;
3010
- }
3011
- /**
3012
- * Generate the map item for the annotations
3013
- *
3014
- * @param {VegaRTETextStyleType} textStyle - the text style type
3015
- * @returns {[BlockAnnotationTypeEnum.TEXT_STYLE, TextStyleAnnotation]} Map item for the annotation
3016
- */
3017
- static from(textStyle) {
3018
- return [exports.BlockAnnotationTypeEnum.TEXT_STYLE, new TextStyleAnnotation(textStyle)];
3019
- }
3020
- /**
3021
- * Generate the JSON representation of the annotation
3022
- *
3023
- * @returns {Nullable<Record<string, unknown>>} JSON representation of the annotation
3024
- */
3025
- toJSON() {
3026
- return { textStyle: this.textStyle };
3027
- }
3028
- /**
3029
- * @inheritDoc
3030
- */
3031
- clone() {
3032
- return new TextStyleAnnotation(this.textStyle);
3033
- }
3034
- /**
3035
- * @inheritDoc
3036
- */
3037
- renderClass(options) {
3038
- if (options === null || options === void 0 ? void 0 : options.standalone)
3039
- return null;
3040
- return this.textStyle ? `v-rte--text-style-${this.textStyle}` : null;
3041
- }
3042
- /**
3043
- * @inheritDoc
3044
- */
3045
- renderStyle(options) {
3046
- if (!(options === null || options === void 0 ? void 0 : options.standalone))
3047
- return null;
3048
- const paragraphStyle = {
3049
- fontFamily: 'Inter',
3050
- fontSize: '16px',
3051
- lineHeight: '22px',
3052
- fontWeight: '500',
3053
- marginTop: '0px',
3054
- marginBottom: '0px',
3055
- };
3056
- switch (this.textStyle) {
3057
- case 'paragraph': {
3058
- return paragraphStyle;
3059
- }
3060
- case 'title': {
3061
- return {
3062
- fontFamily: 'Inter',
3063
- fontSize: '36px',
3064
- lineHeight: '40px',
3065
- fontWeight: '500',
3066
- };
3067
- }
3068
- case 'subtitle': {
3069
- return {
3070
- fontFamily: 'Inter',
3071
- fontSize: '28px',
3072
- lineHeight: '32px',
3073
- fontWeight: '500',
3074
- };
3075
- }
3076
- case 'heading-1': {
3077
- return {
3078
- fontFamily: 'Inter',
3079
- fontSize: '22px',
3080
- lineHeight: '24px',
3081
- fontWeight: '500',
3082
- marginTop: '0px',
3083
- marginBottom: '0px',
3084
- };
3085
- }
3086
- case 'heading-2': {
3087
- return {
3088
- fontFamily: 'Inter',
3089
- fontSize: '20px',
3090
- lineHeight: '24px',
3091
- fontWeight: '500',
3092
- marginTop: '0px',
3093
- marginBottom: '0px',
3094
- };
3095
- }
3096
- case 'heading-3': {
3097
- return {
3098
- fontFamily: 'Inter',
3099
- fontSize: '18px',
3100
- lineHeight: '22px',
3101
- fontWeight: '500',
3102
- marginTop: '0px',
3103
- marginBottom: '0px',
3104
- };
3105
- }
3106
- case 'heading-4': {
3107
- return {
3108
- fontFamily: 'Inter',
3109
- fontSize: '16px',
3110
- lineHeight: '22px',
3111
- fontWeight: '500',
3112
- marginTop: '0px',
3113
- marginBottom: '0px',
3114
- };
3115
- }
3116
- case 'heading-5': {
3117
- return {
3118
- fontFamily: 'Inter',
3119
- fontSize: '14px',
3120
- lineHeight: '22px',
3121
- fontWeight: '500',
3122
- marginTop: '0px',
3123
- marginBottom: '0px',
3124
- };
3125
- }
3126
- case 'heading-6': {
3127
- return {
3128
- fontFamily: 'Inter',
3129
- fontSize: '12px',
3130
- lineHeight: '22px',
3131
- fontWeight: '500',
3132
- marginTop: '0px',
3133
- marginBottom: '0px',
3134
- };
3135
- }
3136
- }
3137
- }
3138
- }
3139
-
3140
- /**
3141
- * Action to change the text style of a block
3142
- */
3143
- class TextStyleAnnotationAction extends AnnotationAction {
3144
- constructor(textStyle, bold) {
3145
- super();
3146
- this.isFlushable = true;
3147
- this.textStyle = textStyle;
3148
- this.bold = bold;
3149
- }
3150
- /**
3151
- * Converts the action to a block annotation
3152
- *
3153
- * @returns {BlockAnnotation} the block annotation
3154
- */
3155
- toAnnotation() {
3156
- return new TextStyleAnnotation(this.textStyle);
3157
- }
3158
- }
3159
-
3160
- /**
3161
- * Update the text block text style strategy.
3162
- */
3163
- class BlockUpdateTextStyleStrategy extends ActionHandleStrategy {
3164
- /**
3165
- * Update the text block type and add or remove the bold style from child nodes.
3166
- *
3167
- * @param {TextStyleAnnotationAction} action - The text style annotation action.
3168
- * @param {RTETextBlock} target - The current text block.
3169
- */
3170
- handleAction(action, target) {
3171
- if (target.type !== 'list-item') {
3172
- target.type = action.textStyle;
3173
- }
3174
- if (action.bold) {
3175
- target.children.forEach((node) => {
3176
- const boldAnnotationAction = new BoldAnnotationAction(true);
3177
- boldAnnotationAction.doSplit = false;
3178
- node.apply(boldAnnotationAction);
3179
- });
3180
- }
3181
- else {
3182
- target.children.forEach((node) => {
3183
- node.apply(new DeleteNodeAnnotationAction(exports.NodeAnnotationTypeEnum.BOLD));
3184
- });
3185
- }
3186
- this.updateCustomStyleAnnotation(target, ['fontFamily', 'lineHeight', 'fontWeight', 'fontSize']);
3187
- }
3188
- }
3189
-
3190
- /**
3191
- * Update the text block link group annotation strategy.
3192
- */
3193
- class BlockUpdateLinkGroupStrategy extends ActionHandleStrategy {
3194
- /**
3195
- * Update link group after the child link node update.
3196
- *
3197
- * @param {LinkGroupAnnotationAction} action - The link group annotation action instance.
3198
- * @param {RTETextBlock} target - The current text block.
3199
- */
3200
- handleAction(action, target) {
3201
- let linkGroupAnnotation = target.getAnnotationByType(exports.InternalAnnotationTypeEnum.LINK_GROUP);
3202
- if (action.type === 'update_link') {
3203
- if (linkGroupAnnotation) {
3204
- const linkGroup = linkGroupAnnotation.linkGroups.get(action.groupKey);
3205
- if (linkGroup) {
3206
- linkGroupAnnotation.linkGroups.set(action.groupKey, [linkGroup[0]]);
3207
- }
3208
- }
3209
- }
3210
- else {
3211
- if (linkGroupAnnotation) {
3212
- const linkGroup = linkGroupAnnotation.linkGroups.get(action.groupKey) || [];
3213
- linkGroupAnnotation.linkGroups.set(action.groupKey, [...linkGroup, ...action.nodes]);
3214
- }
3215
- else {
3216
- linkGroupAnnotation = action.toAnnotation();
3217
- linkGroupAnnotation.linkGroups.set(action.groupKey, [...action.nodes]);
3218
- }
3219
- target.annotationMap.set(exports.InternalAnnotationTypeEnum.LINK_GROUP, linkGroupAnnotation);
3220
- }
3221
- }
3222
- }
3223
-
3224
- /**
3225
- * Insert a new children after a existing children
3226
- *
3227
- * @example parent.apply(new InsertChildrenAfterAction(existingChildren, newChildren, ...))
3228
- */
3229
- class InsertChildrenAfterAction extends ModifyContentAction {
3230
- constructor(referBlock, ...blocksToBeInserted) {
3231
- super();
3232
- this.type = exports.ModifyContentActionType.INSERT_CHILDREN_AFTER;
3233
- this.referChildren = referBlock;
3234
- this.childrenToBeInserted = blocksToBeInserted;
3235
- }
3236
- }
3237
-
3238
- /**
3239
- * Clear the current block nodes and append new nodes
3240
- *
3241
- * @example block.apply(new ReplaceChildNodesAction(newNodes))
3242
- */
3243
- class ReplaceChildNodesAction extends ModifyContentAction {
3244
- constructor(newChildNodes) {
3245
- super();
3246
- this.type = exports.ModifyContentActionType.REPLACE_CHILD_NODES;
3247
- this.newChildNodes = newChildNodes;
3248
- }
3249
- }
3250
-
3251
- /**
3252
- * Split the current node with a special position strategy.
3253
- */
3254
- class BlockSplitWithTextNodeStrategy extends ActionHandleStrategy {
3255
- /**
3256
- * @inheritDoc
3257
- */
3258
- handleAction(action, target) {
3259
- action.newBlock = this.splitTextNodeBlock(action.splitPointNode, action.startOffsetOfNode, target);
3260
- }
3261
- /**
3262
- * Splits a text node at a specified offset within a block of nodes and returns a new block with the split nodes.
3263
- *
3264
- * @param {RTETextNode} splitNode - The text node that will be split
3265
- * @param {number} startOffsetOfNode - The index at which will split the text content of the `splitNode`.
3266
- * @param {RTETextBlock} textBlock - The text block need to be splited.
3267
- * @returns {Nullable<RTEBlock>} return either an RTEBlock object or null.
3268
- */
3269
- splitTextNodeBlock(splitNode, startOffsetOfNode, textBlock) {
3270
- if (splitNode) {
3271
- const beforeText = splitNode.text.slice(0, startOffsetOfNode);
3272
- const afterText = splitNode.text.slice(startOffsetOfNode);
3273
- const nodesSplitIndex = textBlock.children.indexOf(splitNode);
3274
- if (nodesSplitIndex > -1) {
3275
- const beforeNodes = textBlock.children.slice(0, nodesSplitIndex);
3276
- const afterNodes = textBlock.children.slice(nodesSplitIndex + 1);
3277
- if (beforeText) {
3278
- beforeNodes.push(splitNode.cloneWithText(beforeText));
3279
- }
3280
- if (afterText) {
3281
- afterNodes.unshift(splitNode.cloneWithText(afterText));
3282
- }
3283
- textBlock.apply(new ReplaceChildNodesAction(beforeNodes));
3284
- const newBlock = textBlock.cloneWithNodes(afterNodes);
3285
- textBlock.parent.apply(new InsertChildrenAfterAction(textBlock, newBlock));
3286
- return newBlock;
3287
- }
3288
- }
3289
- }
3290
- }
3291
-
3292
- /**
3293
- * Remove all nodes and append new nodes strategy.
3294
- */
3295
- class BlockReplaceNodesStrategy extends ActionHandleStrategy {
3296
- /**
3297
- * Empty the text block or image block nodes and add new nodes.
3298
- *
3299
- * @param {ReplaceChildNodesAction} action - The replace child nodes action instance.
3300
- * @param {RTETextBlock | RTEImageBlock} target - The text block or the image block.
3301
- */
3302
- handleAction(action, target) {
3303
- target.children = [];
3304
- target.apply(new AppendChildrenAction(action.newChildNodes));
3305
- }
3306
- }
3307
-
3308
- /**
3309
- * Remove a children from the current block
3310
- *
3311
- * @example needRemovedChildren.parent.apply(new RemoveChildrenAction(needRemovedChildren))
3312
- */
3313
- class RemoveChildrenAction extends ModifyContentAction {
3314
- constructor(childNode) {
3315
- super();
3316
- this.type = exports.ModifyContentActionType.DELETE_CHILDREN;
3317
- this.entityToBeRemoved = childNode;
3318
- }
3319
- }
3320
-
3321
- /**
3322
- * Append the second block child nodes to the first block child nodes and remove the second block strategy.
3323
- */
3324
- class BlockMergeNodesStrategy extends ActionHandleStrategy {
3325
- /**
3326
- * Merges the child nodes of two RTEBlocks if they have the same type or both are not images.
3327
- *
3328
- * @param {MergeTwoBlocksNodesAction} action - The merge block nodes action instance.
3329
- * @param {RTETextBlock | RTEImageBlock} target - The first text block or image block.
3330
- */
3331
- handleAction(action, target) {
3332
- const anotherBlock = action.blockNeedToBeMerged;
3333
- if (target.type === anotherBlock.type || (target.type !== 'image' && anotherBlock.type !== 'image')) {
3334
- let shouldMergeNodes = anotherBlock.children;
3335
- if (anotherBlock.type !== 'image') {
3336
- shouldMergeNodes = anotherBlock.children.filter((node) => node.text);
3337
- }
3338
- target.apply(new AppendChildrenAction(shouldMergeNodes));
3339
- anotherBlock.parent.apply(new RemoveChildrenAction(anotherBlock));
3340
- }
3341
- }
3342
- }
3343
-
3344
- /**
3345
- * Insert a line break node into current text block at special position strategy.
3346
- */
3347
- class BlockInsertLineBreakStrategy extends ActionHandleStrategy {
3348
- /**
3349
- * @inheritDoc
3350
- */
3351
- handleAction(action, target) {
3352
- action.lineBreakNode = this.lineBreakSingleBlock(action.startContainerNode, action.startOffset, target);
3353
- }
3354
- /**
3355
- * lineBreakSingleBlock
3356
- *
3357
- * @param {RTETextNode} splitNode -
3358
- * @param {number} startOffsetOfNode -
3359
- * @param {RTETextBlock} target -
3360
- * @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
3361
- */
3362
- lineBreakSingleBlock(splitNode, startOffsetOfNode, target) {
3363
- if (splitNode) {
3364
- const lineBreakNode = new RTETextNode(createPublicApiRuntimeMetricsSlimmer.generateUUID(), '\n', target);
3365
- const beforeText = splitNode.text.slice(0, startOffsetOfNode);
3366
- const afterText = splitNode.text.slice(startOffsetOfNode);
3367
- const nodesSplitIndex = target.children.indexOf(splitNode);
3368
- if (nodesSplitIndex > -1) {
3369
- const beforeNodes = target.children.slice(0, nodesSplitIndex);
3370
- const afterNodes = target.children.slice(nodesSplitIndex + 1);
3371
- if (beforeText) {
3372
- beforeNodes.push(splitNode.cloneWithText(beforeText));
3373
- }
3374
- if (afterText) {
3375
- afterNodes.unshift(splitNode.cloneWithText(afterText));
3376
- }
3377
- this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
3378
- }
3379
- return lineBreakNode;
3380
- }
3381
- }
3382
- /**
3383
- * mergeLineBreakNodes
3384
- *
3385
- * @param {RTENode[]} beforeNodes -
3386
- * @param {RTETextNode} lineBreakNode -
3387
- * @param {RTENode[]} afterNodes -
3388
- * @param {RTETextBlock} target -
3389
- */
3390
- mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
3391
- if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
3392
- afterNodes.push(new RTETextNode(createPublicApiRuntimeMetricsSlimmer.generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
3393
- }
3394
- target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
3395
- }
3396
- }
3397
-
3398
- /**
3399
- * Insert a line break node into multiple blocks selection at special position strategy.
3400
- */
3401
- class BlockInsertLineBreakWithBlocksStrategy extends ActionHandleStrategy {
3402
- /**
3403
- * @inheritDoc
3404
- */
3405
- handleAction(action, target) {
3406
- action.lineBreakNode = this.lineBreakMultipleBlocks(action.selectedBlocks, target);
3407
- }
3408
- /**
3409
- * lineBreakMultipleBlocks
3410
- *
3411
- * @param {RTEBlock[]} selectedBlocks -
3412
- * @param {RTETextBlock} target -
3413
- * @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
3414
- */
3415
- lineBreakMultipleBlocks(selectedBlocks, target) {
3416
- const beforeNodes = target.children;
3417
- const lineBreakNode = new RTETextNode(createPublicApiRuntimeMetricsSlimmer.generateUUID(), '\n', target);
3418
- const afterNodes = this.concatBlocksNodes(selectedBlocks.slice(1));
3419
- this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
3420
- return lineBreakNode;
3421
- }
3422
- /**
3423
- * Concat the child nodes of multiple RTEBlocks if both are not images.
3424
- *
3425
- * @param {RTEBlock[]} blocks - multiple block of content in a rich text editor, such as a paragraph, heading, image, etc.
3426
- * @returns {RTENode[]} Array of connected block nodes
3427
- */
3428
- concatBlocksNodes(blocks) {
3429
- const nodes = [];
3430
- blocks.map((block) => {
3431
- if (block.type !== 'image') {
3432
- nodes.push(...block.children);
3433
- block.parent.apply(new RemoveChildrenAction(block));
3434
- }
3435
- });
3436
- return nodes;
3437
- }
3438
- /**
3439
- * mergeLineBreakNodes
3440
- *
3441
- * @param {RTENode[]} beforeNodes -
3442
- * @param {RTETextNode} lineBreakNode -
3443
- * @param {RTENode[]} afterNodes -
3444
- * @param {RTETextBlock} target -
3445
- */
3446
- mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
3447
- if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
3448
- afterNodes.push(new RTETextNode(createPublicApiRuntimeMetricsSlimmer.generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
3449
- }
3450
- target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
3451
- }
3452
- }
3453
-
3454
- /**
3455
- * Insert a children before a existing children
3456
- *
3457
- * @example parent.apply(new InsertChildrenBeforeAction(existingChildren, newChildren, ...))
3458
- */
3459
- class InsertChildrenBeforeAction extends ModifyContentAction {
3460
- constructor(referChildren, ...childrenToBeInserted) {
3461
- super();
3462
- this.type = exports.ModifyContentActionType.INSERT_CHILDREN_BEFORE;
3463
- this.referChildren = referChildren;
3464
- this.childrenToBeInserted = childrenToBeInserted;
3465
- }
3466
- }
3467
-
3468
- /**
3469
- * Split the block with a split point node.
3470
- * The property `newBlock` use to store the new create block if need.
3471
- *
3472
- * @example block.apply(new SplitBlockWithNodeAction(node, offset))
3473
- */
3474
- class SplitBlockWithNodeAction extends ModifyContentAction {
3475
- constructor(splitPointNode, startOffsetOfNode) {
3476
- super();
3477
- this.type = exports.ModifyContentActionType.SPLIT_BLOCK_WITH_NODE;
3478
- this.splitPointNode = splitPointNode;
3479
- this.startOffsetOfNode = startOffsetOfNode;
3480
- }
3481
- }
3482
-
3483
- /**
3484
- * Insert a image block into the text block at special position strategy.
3485
- */
3486
- class BlockInsertImageIntoTextStrategy extends ActionHandleStrategy {
3487
- /**
3488
- * insertImage
3489
- *
3490
- * @param {InsertImageToBlockAction} action - Insert image action instance.
3491
- * @param {RTETextBlock} target - The text block.
3492
- */
3493
- handleAction(action, target) {
3494
- const splitNode = action.splitPointNode;
3495
- const startOffsetOfNode = action.startOffsetOfNode;
3496
- const newImageBlock = action.imageBlockToBeInserted;
3497
- if (this.isCaretPositionAtBlockEnd(target, splitNode, startOffsetOfNode)) {
3498
- target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
3499
- }
3500
- else if (this.isCaretPositionAtBlockStart(target, splitNode, startOffsetOfNode)) {
3501
- target.parent.apply(new InsertChildrenBeforeAction(target, newImageBlock));
3502
- }
3503
- else {
3504
- const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
3505
- target.apply(splitBlockAction);
3506
- target.parent.apply(new InsertChildrenAfterAction(target, newImageBlock));
3507
- }
3508
- }
3509
- }
3510
-
3511
- /**
3512
- * Convert the selected blocks to list strategy.
3513
- */
3514
- class BlockTransformToListStrategy extends ActionHandleStrategy {
3515
- /**
3516
- * This method will create a empty list block and append all selected blocks as list item block.
3517
- *
3518
- * @param {TransformListAction} action - The transform list action instance.
3519
- * @param {RTETextBlock} target - The first item of the selected block.
3520
- */
3521
- handleAction(action, target) {
3522
- const contentState = target.parent;
3523
- const bulletList = contentState.createList(action.listType);
3524
- const selectedBlocks = action.selectedBlocks;
3525
- const listItems = selectedBlocks.map((block) => contentState.toListItem(block));
3526
- bulletList.apply(new AppendChildrenAction(listItems));
3527
- contentState.apply(new InsertChildrenAfterAction(action.selectedBlocks[0], bulletList));
3528
- selectedBlocks.forEach((block) => {
3529
- block.parent.apply(new RemoveChildrenAction(block));
3530
- });
3531
- }
3532
- }
3533
-
3534
- /**
3535
- * Action to toggle block horizontal alignment annotation
3536
- */
3537
- class HorizontalAlignmentAnnotationAction extends AnnotationAction {
3538
- constructor(textAlign) {
3539
- super();
3540
- this.isFlushable = true;
3541
- this.textAlign = textAlign;
3542
- }
3543
- /**
3544
- * Converts the action to an annotation
3545
- *
3546
- * @returns {HorizontalAlignmentAnnotation} The annotation
3547
- */
3548
- toAnnotation() {
3549
- return new HorizontalAlignmentAnnotation(this.textAlign);
3550
- }
3551
- }
3552
-
3553
- /**
3554
- * Update the text block and image block horizontal alignment strategy.
3555
- */
3556
- class BlockUpdateHorizontalAlignmentStrategy extends ActionHandleStrategy {
3557
- /**
3558
- * Updating the horizontal alignment of a block requires cascading updates to the custom style.
3559
- *
3560
- * @param {HorizontalAlignmentAnnotationAction} _action - The horizontal alignment annotation action.
3561
- * @param {RTETextBlock} target - The current text block.
3562
- */
3563
- handleAction(_action, target) {
3564
- this.updateCustomStyleAnnotation(target, ['textAlign']);
3565
- }
3566
- }
3567
-
3568
- /**
3569
- * Update the text block and image block horizontal alignment strategy.
3570
- */
3571
- class BlockUpdateIndentStrategy extends ActionHandleStrategy {
3572
- /**
3573
- * Updating the indent of a block requires cascading updates to the custom style.
3574
- *
3575
- * @param {IndentAnnotationAction} _action - The indent annotation action.
3576
- * @param {RTETextBlock} target - The current text block.
3577
- */
3578
- handleAction(_action, target) {
3579
- this.updateCustomStyleAnnotation(target, ['marginLeft']);
3580
- }
3581
- }
3582
-
3583
- /**
3584
- * Action to toggle block indent annotation
3585
- */
3586
- class IndentAnnotationAction extends AnnotationAction {
3587
- constructor(indent) {
3588
- super();
3589
- this.isFlushable = true;
3590
- this.indent = indent;
3591
- }
3592
- /**
3593
- * Converts the action to an annotation
3594
- *
3595
- * @returns {Annotation} The annotation
3596
- */
3597
- toAnnotation() {
3598
- return new IndentAnnotation(this.indent);
3599
- }
3600
- }
3601
-
3602
- /**
3603
- * Unlink the text block link group annotation strategy.
3604
- */
3605
- class BlockUnlinkLinkGroupStrategy extends ActionHandleStrategy {
3606
- /**
3607
- * Unlink the link group based on group key
3608
- *
3609
- * @param {UnlinkLinkGroupAction} action - The unlink link group action instance.
3610
- * @param {RTETextBlock} target - The current text block.
3611
- */
3612
- handleAction(action, target) {
3613
- const linkGroupAnnotation = target.getAnnotationByType(exports.InternalAnnotationTypeEnum.LINK_GROUP);
3614
- if (linkGroupAnnotation) {
3615
- if (linkGroupAnnotation.linkGroups.size > 1) {
3616
- linkGroupAnnotation.linkGroups.delete(action.groupKey);
3617
- }
3618
- else {
3619
- target.annotationMap.delete(exports.InternalAnnotationTypeEnum.LINK_GROUP);
3620
- }
3621
- }
3622
- }
3623
- }
3624
-
3625
- /**
3626
- * Text block
3627
- */
3628
- class RTETextBlock extends RTEBlock {
3629
- constructor(id, type, options) {
3630
- super(id);
3631
- this.children = [];
3632
- this.type = type;
3633
- const { autoMatchFormat } = options || { autoMatchFormat: true };
3634
- if (autoMatchFormat) {
3635
- if (RTETextBlock.isAcceptableTextStyle(type)) {
3636
- this.annotationMap = new Map([TextStyleAnnotation.from(type)]);
3637
- }
3638
- else {
3639
- this.annotationMap = new Map([TextStyleAnnotation.from('paragraph')]);
3640
- }
3641
- }
3642
- }
3643
- /**
3644
- * Converts a VegaRTETextBlock into an RTETextBlock.
3645
- *
3646
- * @param {VegaRTETextBlock} block - The block object
3647
- * @param {VegaRTETransformOptions} options - Optional transformation options.
3648
- * @returns {RTETextBlock} A RTETextBlock class
3649
- */
3650
- static from(block, options = { autoMatchFormat: true }) {
3651
- var _a, _b;
3652
- const textBlock = new RTETextBlock(block.id, block.type, options);
3653
- const annotations = options.autoMatchFormat
3654
- ? 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;
3655
- textBlock.children = block.nodes
3656
- .map((richText) => {
3657
- const NodeClass = RTEDTOClassManager$1.getRTENodeClass(richText.type);
3658
- if (NodeClass) {
3659
- return NodeClass.from(richText, textBlock, options);
3660
- }
3661
- })
3662
- .filter(typeGuard.isNonNullable);
3663
- if (annotations) {
3664
- super.convertAnnotationsToMap(textBlock.annotationMap, annotations);
3665
- }
3666
- return textBlock;
3667
- }
3668
- /**
3669
- * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
3670
- * and value.
3671
- *
3672
- * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
3673
- * the type of annotation entity to create.
3674
- * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
3675
- * that will be used to create the annotation entity. It can be of any type depending on the specific
3676
- * annotation being created.
3677
- * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
3678
- * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
3679
- */
3680
- static createAnnotationEntity(type, value) {
3681
- if (type === 'textStyle') {
3682
- return TextStyleAnnotation.from(value);
3683
- }
3684
- else {
3685
- return super.createAnnotationEntity(type, value);
3686
- }
3687
- }
3688
- /**
3689
- * Checks if a given text block type is one of the acceptable text styles.
3690
- *
3691
- * @param {VegaRTETextBlockType} type - The text block type
3692
- * @returns {boolean} Return a boolean value indicating whether the `type` parameter is valid.
3693
- */
3694
- static isAcceptableTextStyle(type) {
3695
- return [
3696
- 'title',
3697
- 'subtitle',
3698
- 'paragraph',
3699
- 'heading-1',
3700
- 'heading-2',
3701
- 'heading-3',
3702
- 'heading-4',
3703
- 'heading-5',
3704
- 'heading-6',
3705
- ].includes(type);
3706
- }
3707
- /**
3708
- * Merges RTETextNode nodes based on certain conditions.
3709
- *
3710
- * @param {AnnotationAction} action - AnnotationAction
3711
- */
3712
- mergeNodes(action) {
3713
- this.children = this.children.reduce((prev, cur) => {
3714
- const lastNode = prev.at(-1);
3715
- if (action instanceof LinkAnnotationAction && action.needMergeNode) {
3716
- const lastNodeLinkAnnotation = lastNode === null || lastNode === void 0 ? void 0 : lastNode.getAnnotationByType(exports.NodeAnnotationTypeEnum.LINK);
3717
- const curNodeLinkAnnotation = cur.getAnnotationByType(exports.NodeAnnotationTypeEnum.LINK);
3718
- if (lastNodeLinkAnnotation &&
3719
- curNodeLinkAnnotation &&
3720
- lastNodeLinkAnnotation.toEqual(curNodeLinkAnnotation)) {
3721
- return prev;
3722
- }
3723
- }
3724
- // TODO: handle other cases like merge bold nodes
3725
- return [...prev, cur];
3726
- }, []);
3727
- }
3728
- /**
3729
- * @inheritDoc
3730
- */
3731
- toJSON() {
3732
- return Object.assign(Object.assign({}, super.toJSON()), { type: this.type, nodes: this.children.map((node) => node.toJSON()) });
3733
- }
3734
- /**
3735
- * @inheritDoc
3736
- */
3737
- toHtml() {
3738
- const BlockTag = this.getBlockTag();
3739
- const attrStr = super.generateAttributeString();
3740
- const nodesHtml = this.getChildrenHtml();
3741
- return super.shouldRenderAsInternalWrapper()
3742
- ? nodesHtml
3743
- : [`<${BlockTag}${attrStr}>`, nodesHtml, `</${BlockTag}>`].join('');
3744
- }
3745
- /**
3746
- * Clone the nodes to a new block
3747
- *
3748
- * @param {RTEBlock} nodes - The nodes will be copied
3749
- * @returns {RTETextBlock} New block
3750
- */
3751
- cloneWithNodes(nodes) {
3752
- const block = new RTETextBlock(createPublicApiRuntimeMetricsSlimmer.generateUUID(), this.type);
3753
- block.annotationMap = super.cloneAnnotations();
3754
- block.apply(new AppendChildrenAction(nodes));
3755
- return block;
3756
- }
3757
- /**
3758
- * @inheritDoc
3759
- */
3760
- clone(parent) {
3761
- const clonedBlock = new RTETextBlock(this.id, this.type);
3762
- clonedBlock.children = this.children.map((node) => node.clone(clonedBlock));
3763
- clonedBlock.annotationMap = super.cloneAnnotations();
3764
- clonedBlock.parent = parent;
3765
- return clonedBlock;
3766
- }
3767
- /**
3768
- * @inheritDoc
3769
- */
3770
- isNotEmpty() {
3771
- return this.children.length > 0 && this.children.some((node) => !node.isEmpty());
3772
- }
3773
- /**
3774
- * @inheritDoc
3775
- */
3776
- getLastNode() {
3777
- return this.children[this.children.length - 1];
3778
- }
3779
- /**
3780
- * Get the HTML tag for the block based on its type.
3781
- *
3782
- * @returns {RTETextBlockTagType} The HTML tag for the block.
3783
- */
3784
- getBlockTag() {
3785
- switch (this.type) {
3786
- case 'title':
3787
- case 'subtitle':
3788
- return `div`;
3789
- case 'heading-1':
3790
- return `h1`;
3791
- case 'heading-2':
3792
- return `h2`;
3793
- case 'heading-3':
3794
- return `h3`;
3795
- case 'heading-4':
3796
- return `h4`;
3797
- case 'heading-5':
3798
- return `h5`;
3799
- case 'heading-6':
3800
- return `h6`;
3801
- case 'paragraph':
3802
- default:
3803
- return 'p';
3804
- }
3805
- }
3806
- /**
3807
- * Get the HTML string for the children nodes, including handling link group annotations.
3808
- *
3809
- * @returns {string} The HTML string representing the children nodes.
3810
- */
3811
- getChildrenHtml() {
3812
- const linkGroupAnnotation = this.getAnnotationByType(exports.InternalAnnotationTypeEnum.LINK_GROUP);
3813
- let nodesHtml = this.children.map((node) => node.toHtml()).join('');
3814
- if (linkGroupAnnotation && this.children.length > 0) {
3815
- nodesHtml = this.generateLinkHtml(linkGroupAnnotation, nodesHtml);
3816
- }
3817
- return nodesHtml;
3818
- }
3819
- /**
3820
- * @inheritDoc
3821
- */
3822
- doAnnotationActionApply(action) {
3823
- const strategy = ActionHandleStrategyRegistry.get(action.constructor.name, RTETextBlock.name);
3824
- if (strategy) {
3825
- strategy.execute(action, this);
3826
- }
3827
- }
3828
- /**
3829
- * Generate Link Html
3830
- *
3831
- * @param {LinkGroupAnnotation} linkGroupAnnotation - linkGroupAnnotation
3832
- * @param {string} nodesHtml - The nodes html
3833
- * @returns {string} link html
3834
- */
3835
- generateLinkHtml(linkGroupAnnotation, nodesHtml) {
3836
- nodesHtml = '';
3837
- let linkGroupNodes = [];
3838
- for (let i = 0; i < this.children.length; i++) {
3839
- const currentLinkAnnotation = this.children[i].getAnnotationByType(exports.NodeAnnotationTypeEnum.LINK);
3840
- const nextLinkAnnotation = this.children[i + 1]
3841
- ? this.children[i + 1].getAnnotationByType(exports.NodeAnnotationTypeEnum.LINK)
3842
- : null;
3843
- if (currentLinkAnnotation) {
3844
- linkGroupNodes.push(this.children[i]);
3845
- if (!nextLinkAnnotation ||
3846
- currentLinkAnnotation.link.groupKey !== nextLinkAnnotation.link.groupKey) {
3847
- const linkAttributes = linkGroupAnnotation.toString(currentLinkAnnotation, {
3848
- standalone: true,
3849
- });
3850
- nodesHtml += [
3851
- `<a${linkAttributes ? ` ${linkAttributes}` : ''}>`,
3852
- linkGroupNodes.map((linkNode) => linkNode.toHtml()).join(''),
3853
- `</a>`,
3854
- ].join('');
3855
- linkGroupNodes = [];
3856
- }
3857
- }
3858
- else {
3859
- nodesHtml += this.children[i].toHtml();
3860
- }
3861
- }
3862
- return nodesHtml;
3863
- }
3864
- }
3865
- (() => {
3866
- ActionHandleStrategyRegistry.register(TextStyleAnnotationAction.name, RTETextBlock.name, new BlockUpdateTextStyleStrategy());
3867
- ActionHandleStrategyRegistry.register(HorizontalAlignmentAnnotationAction.name, RTETextBlock.name, new BlockUpdateHorizontalAlignmentStrategy());
3868
- ActionHandleStrategyRegistry.register(IndentAnnotationAction.name, RTETextBlock.name, new BlockUpdateIndentStrategy());
3869
- ActionHandleStrategyRegistry.register(LinkGroupAnnotationAction.name, RTETextBlock.name, new BlockUpdateLinkGroupStrategy());
3870
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.UNLINK_LINK_GROUP, RTETextBlock.name, new BlockUnlinkLinkGroupStrategy());
3871
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTETextBlock.name, new BlockSplitWithTextNodeStrategy());
3872
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.REPLACE_CHILD_NODES, RTETextBlock.name, new BlockReplaceNodesStrategy());
3873
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTETextBlock.name, new BlockMergeNodesStrategy());
3874
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTETextBlock.name, new BlockInsertLineBreakStrategy());
3875
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTETextBlock.name, new BlockInsertLineBreakWithBlocksStrategy());
3876
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTETextBlock.name, new BlockInsertImageIntoTextStrategy());
3877
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.TRANSFORM_LIST_BLOCK, RTETextBlock.name, new BlockTransformToListStrategy());
3878
- })();
3879
-
3880
- /**
3881
- * The delete node content contains some common functions that used for image block delete the image node or text block delete text node.
3882
- */
3883
- class BlockDeleteNodeContentStrategy extends ActionHandleStrategy {
3884
- /**
3885
- * Returns the previous node relative to the current node in a rich text editor structure.
3886
- *
3887
- * @param {RTENode} currentNode - An object of type `RTENode`.
3888
- * @returns {Nullable<RTENode>} the previous block last node
3889
- */
3890
- getPreviousNode(currentNode) {
3891
- const currentBlock = currentNode.parent;
3892
- const currentIndex = currentBlock.children.indexOf(currentNode);
3893
- if (currentIndex > 0) {
3894
- return currentBlock.children[currentIndex - 1];
3895
- }
3896
- else if (currentBlock.parent) {
3897
- const previousBlock = this.getPreviousBlock(currentBlock);
3898
- if (previousBlock) {
3899
- return this.getBlockLastNode(previousBlock);
3900
- }
3901
- }
3902
- }
3903
- /**
3904
- * Returns the next node relative to the current node in a rich text editor structure.
3905
- *
3906
- * @param {RTENode} currentNode - An object of type `RTENode`.
3907
- * @returns {Nullable<RTENode>} the next block first node
3908
- */
3909
- getNextNode(currentNode) {
3910
- const currentBlock = currentNode.parent;
3911
- const currentIndex = currentBlock.children.indexOf(currentNode);
3912
- if (currentBlock.children[currentIndex + 1]) {
3913
- return currentBlock.children[currentIndex + 1];
3914
- }
3915
- else if (currentBlock.parent) {
3916
- const nextBlock = this.getNextBlock(currentBlock);
3917
- if (nextBlock) {
3918
- return this.getBlockFirstNode(nextBlock);
3919
- }
3920
- }
3921
- }
3922
- /**
3923
- * Determines if a given node is the first node within the current state.
3924
- *
3925
- * @param {RTENode} currentNode - An object representing a node in a rich text editor (RTE).
3926
- * @returns {boolean} True or false;
3927
- */
3928
- isContentFirstNode(currentNode) {
3929
- const currentBlock = currentNode.parent;
3930
- const currentIndex = currentBlock.children.indexOf(currentNode);
3931
- const parent = currentBlock.parent;
3932
- if (currentBlock.isListItemBlock()) {
3933
- const listParent = parent.parent;
3934
- return (currentIndex === 0 &&
3935
- Array.isArray(parent.children) &&
3936
- parent.children[0] === currentBlock &&
3937
- listParent['type'] !== 'list-item' &&
3938
- Array.isArray(listParent.children) &&
3939
- listParent.children[0] === parent);
3940
- }
3941
- else {
3942
- return (currentIndex === 0 && Array.isArray(parent.children) && parent.children[0] === currentBlock);
3943
- }
3944
- }
3945
- /**
3946
- * TODO: The getPreviousBlock add nest list support
3947
- * This function retrieves the previous block in a rich text editor, considering different scenarios such as being in a bullet list.
3948
- *
3949
- * @param {RTEBlock} currentBlock - Used to retrieve the previous block relative to the given `currentBlock` within a rich text editor context.
3950
- * @returns {Nullable<RTEBlock>} The previous block if existing
3951
- */
3952
- getPreviousBlock(currentBlock) {
3953
- if (currentBlock && currentBlock.parent && currentBlock.parent.children) {
3954
- const currentBlockIndex = currentBlock.parent.children.indexOf(currentBlock);
3955
- if (currentBlockIndex > 0) {
3956
- return currentBlock.parent.children[currentBlockIndex - 1];
3957
- }
3958
- else if (this.isRTEBlock(currentBlock.parent) && currentBlockIndex === 0) {
3959
- return this.getPreviousBlock(currentBlock.parent);
3960
- }
3961
- }
3962
- }
3963
- /**
3964
- * Returns the last node within a given RTE block, handling different block types accordingly.
3965
- *
3966
- * @param {RTEBlock} currentBlock - Returns the last node within that block.
3967
- * @returns {Nullable<RTENode>} Returns the last node of the given `currentBlock` object.
3968
- */
3969
- getBlockLastNode(currentBlock) {
3970
- return currentBlock.getLastNode();
3971
- }
3972
- /**
3973
- * Returns the first node within a given RTE block, handling different block types accordingly.
3974
- *
3975
- * @param {RTEBlock} currentBlock - Returns the first node within that block.
3976
- * @returns {Nullable<RTENode>} Returns the first node of the given `currentBlock` object.
3977
- */
3978
- getBlockFirstNode(currentBlock) {
3979
- if (currentBlock.type === 'number-list' || currentBlock.type === 'bullet-list') {
3980
- if (currentBlock.children) {
3981
- const firstListItem = currentBlock.children[0];
3982
- return this.getBlockFirstNode(firstListItem);
3983
- }
3984
- }
3985
- else {
3986
- if (currentBlock.children) {
3987
- return currentBlock.children[0];
3988
- }
3989
- }
3990
- }
3991
- /**
3992
- * This function retrieves the next block in a rich text editor, considering different scenarios such as being in a bullet list.
3993
- *
3994
- * @param {RTEBlock} currentBlock - Used to retrieve the next block relative to the given `currentBlock` within a rich text editor context.
3995
- * @returns {Nullable<RTEBlock>} The next block if existing
3996
- */
3997
- getNextBlock(currentBlock) {
3998
- if (currentBlock && currentBlock.parent && currentBlock.parent.children) {
3999
- const currentBlockIndex = currentBlock.parent.children.indexOf(currentBlock);
4000
- if (currentBlock.parent.children[currentBlockIndex + 1]) {
4001
- return currentBlock.parent.children[currentBlockIndex + 1];
4002
- }
4003
- else if (currentBlock.type === 'list-item' &&
4004
- currentBlock.parent.children.length === currentBlockIndex + 1) {
4005
- return this.getNextBlock(currentBlock.parent);
4006
- }
4007
- }
4008
- }
4009
- /**
4010
- * Checks if the given instance is not the root content block.
4011
- *
4012
- * @param {RTEBlock | VegaRTEContent} block - The instance to check.
4013
- * @returns {boolean} True if the block is not the root content block, false otherwise.
4014
- */
4015
- isRTEBlock(block) {
4016
- return block && block.constructor.name !== 'VegaRTEContent';
4017
- }
4018
- }
4019
-
4020
- /**
4021
- * Remove the code block from the value, call this action if want to flush value after action.
4022
- */
4023
- class CodeBlockRemoveSelfStrategy extends BlockDeleteNodeContentStrategy {
4024
- /**
4025
- * @inheritDoc
4026
- */
4027
- handleAction(_action, target) {
4028
- const node = target.children[0];
4029
- const parent = target.parent;
4030
- if (parent) {
4031
- let focusNode = this.getPreviousNode(node);
4032
- let offset = this.getRTENodeEndOffset(focusNode);
4033
- if (!focusNode) {
4034
- focusNode = this.getNextNode(node);
4035
- offset = 0;
4036
- }
4037
- parent.apply(new RemoveChildrenAction(target));
4038
- const focusElement = focusNode
4039
- ? stateEntityRenderingRegistry.getDOMByEntity(focusNode)
4040
- : null;
4041
- if (parent.children.length === 0) {
4042
- const defaultParagraph = RTETextBlock.from({
4043
- id: createPublicApiRuntimeMetricsSlimmer.generateUUID(),
4044
- type: 'paragraph',
4045
- nodes: [{ id: createPublicApiRuntimeMetricsSlimmer.generateUUID(), type: 'text', text: '' }],
4046
- });
4047
- target.parent.apply(new AppendChildrenAction([defaultParagraph]));
4048
- focusNode = defaultParagraph.children[0];
4049
- offset = 0;
4050
- }
4051
- this.notifyUpdateSelection(focusNode, focusElement, offset, target);
4052
- }
4053
- }
4054
- /**
4055
- * Update the rich text next selection range.
4056
- *
4057
- * @param {RTENode} focusNode - The next focus node dto.
4058
- * @param {Nullable<HTMLElement>} focusElement - The next focus element. The update selection task could run directly when the element is exist.
4059
- * @param {number} offset - The next focus text offset.
4060
- * @param {RTECodeBlock} target - The code block dto.
4061
- */
4062
- notifyUpdateSelection(focusNode, focusElement, offset, target) {
4063
- const targetDom = stateEntityRenderingRegistry.getDOMByEntity(target);
4064
- if (targetDom) {
4065
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(targetDom, vegaInternalEventId.VegaInternalRichTextEditorSelectionRangeChange);
4066
- if (nodeSubject) {
4067
- changeManager.ChangeManager.notify(nodeSubject, {
4068
- node: focusNode,
4069
- updateDirectly: focusElement ? true : false,
4070
- offset,
4071
- });
4072
- }
4073
- }
4074
- }
4075
- /**
4076
- * Get the node content end offset.
4077
- *
4078
- * @param {Nullable<RTENode>} node - The RTENode.
4079
- * @returns {number} - The number value.
4080
- */
4081
- getRTENodeEndOffset(node) {
4082
- if (node) {
4083
- return node.getRangeEndOffset();
4084
- }
4085
- return 0;
4086
- }
4087
- }
4088
-
4089
- /**
4090
- * Update the code block content or language action.
4091
- *
4092
- * @example codeNode.apply(new UpdateCodeBlockAction(content, language))
4093
- */
4094
- class UpdateCodeBlockAction extends ModifyContentAction {
4095
- constructor(content, language) {
4096
- super();
4097
- this.isFlushable = true;
4098
- this.type = exports.ModifyContentActionType.UPDATE_CODE_BLOCK;
4099
- this.content = content;
4100
- this.language = language;
4101
- }
4102
- }
4103
-
4104
- /**
4105
- * Remove the line break and insert new paragraph after code block.
4106
- */
4107
- class SwitchOutFromCodeBlockStrategy extends ActionHandleStrategy {
4108
- /**
4109
- * @inheritDoc
4110
- */
4111
- handleAction(action, target) {
4112
- const { content, language } = action;
4113
- const textArray = content.split('\n');
4114
- const updateAction = new UpdateCodeBlockAction(textArray.slice(0, textArray.length - 2).join('\n'), language);
4115
- updateAction.isFlushable = false;
4116
- target.children[0].apply(updateAction);
4117
- const textBlock = RTETextBlock.from({
4118
- id: createPublicApiRuntimeMetricsSlimmer.generateUUID(),
4119
- type: 'paragraph',
4120
- nodes: [{ id: createPublicApiRuntimeMetricsSlimmer.generateUUID(), text: '', type: 'text' }],
4121
- });
4122
- target.parent.apply(new InsertChildrenAfterAction(target, textBlock));
4123
- // Focus the next text node after value update.
4124
- const currentNodeDom = stateEntityRenderingRegistry.getDOMByEntity(target);
4125
- if (currentNodeDom) {
4126
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(currentNodeDom, vegaInternalEventId.VegaInternalRichTextEditorSelectionRangeChange);
4127
- if (nodeSubject) {
4128
- changeManager.ChangeManager.notify(nodeSubject, { node: textBlock.children[0] });
4129
- }
4130
- }
4131
- }
4132
- }
4133
-
4134
- /**
4135
- * Update the language or content of code block strategy.
4136
- */
4137
- class UpdateCodeBlockStrategy extends ActionHandleStrategy {
4138
- /**
4139
- * @inheritDoc
4140
- */
4141
- handleAction(action, target) {
4142
- const { content, language } = action;
4143
- target.language = language;
4144
- target.text = content;
4145
- }
4146
- }
4147
-
4148
- /**
4149
- * Action to change the selection range
4150
- */
4151
- class SelectionChangeAction extends AnnotationAction {
4152
- constructor(range) {
4153
- super();
4154
- this.isFlushable = false;
4155
- this.range = range;
4156
- }
4157
- /**
4158
- * Converts the action to an annotation
4159
- *
4160
- * @returns {SelectionRangeAnnotation} The annotation
4161
- */
4162
- toAnnotation() {
4163
- return new SelectionRangeAnnotation(this.range);
4164
- }
4165
- }
4166
-
4167
- /**
4168
- * Update the code block node annotation map strategy.
4169
- */
4170
- class CodeNodeSetSelectionRangeAnnotationStrategy extends ActionHandleStrategy {
4171
- /**
4172
- * @inheritDoc
4173
- */
4174
- handleAction(action, target) {
4175
- target.annotationMap.set(exports.InternalAnnotationTypeEnum.SELECTION_RANGE, action.toAnnotation());
4176
- }
4177
- }
4178
-
4179
- /**
4180
- * 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.
4181
- */
4182
- class RTEDecoratorNode extends RTENode {
4183
- constructor() {
4184
- super(...arguments);
4185
- this.type = 'decorator-node';
4186
- this.isSelected = false;
4187
- }
4188
- /**
4189
- * Check the element is a decorator node container.
4190
- *
4191
- * @param {HTMLElement} element - The checked element.
4192
- * @returns {boolean} - The result of the check.
4193
- */
4194
- static isDecoratorNodeContainerElement(element) {
4195
- return element && element.classList.contains(RTEDecoratorNode.DECORATOR_CONTAINER_CLASS);
4196
- }
4197
- /**
4198
- * Get the decorator node element within the container.
4199
- *
4200
- * @param {HTMLElement} container - The container element.
4201
- * @returns {Nullable<HTMLElement>} - The decorator node element, if found.
4202
- */
4203
- static getDecoratorNodeElement(container) {
4204
- return container.querySelector(`.${RTEDecoratorNode.DECORATOR_NODE_CLASS}`);
4205
- }
4206
- /**
4207
- * @inheritDoc
4208
- */
4209
- getRangeEndOffset() {
4210
- return 1;
4211
- }
4212
- /**
4213
- * @inheritDoc
4214
- */
4215
- getRangeContainer() {
4216
- const element = this.getElementRef();
4217
- if (element) {
4218
- return ui.findParent(element, `.${RTEDecoratorNode.DECORATOR_CONTAINER_CLASS}`);
4219
- }
4220
- }
4221
- /**
4222
- * The decorator node is not content editable from the outside.
4223
- *
4224
- * @returns {boolean} - Always returns false for decorator nodes.
4225
- */
4226
- isContentEditable() {
4227
- return false;
4228
- }
4229
- }
4230
- // CSS class names for the decorator node parent element
4231
- RTEDecoratorNode.DECORATOR_CONTAINER_CLASS = 'v-internal-decorator-container';
4232
- // CSS class names for the decorator node element
4233
- RTEDecoratorNode.DECORATOR_NODE_CLASS = 'v-internal-decorator-node';
4234
-
4235
- /**
4236
- * RTE code node DTO class.
4237
- */
4238
- class RTECodeBlockNode extends RTEDecoratorNode {
4239
- constructor(id, content, language, parentBlock) {
4240
- super(id);
4241
- this.type = exports.NodeTypeEnum.CODE_BLOCK_NODE;
4242
- this.text = '';
4243
- this.annotationMap = new Map();
4244
- this.text = content;
4245
- this.parent = parentBlock;
4246
- this.language = language;
4247
- }
4248
- /**
4249
- * The code node toJSON method will called internal.
4250
- *
4251
- * @returns {VegaRTECodeNode} - An object contains content property.
4252
- */
4253
- toJSON() {
4254
- return { id: this.id, type: 'text', text: this.text, language: this.language };
4255
- }
4256
- /**
4257
- * @inheritDoc
4258
- */
4259
- toHtml() {
4260
- 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>`;
4261
- }
4262
- /**
4263
- * @inheritDoc
4264
- */
4265
- clone(parent) {
4266
- const cloned = new RTECodeBlockNode(this.id, this.text, this.language, parent);
4267
- return cloned;
4268
- }
4269
- /**
4270
- * @inheritDoc
4271
- */
4272
- doAnnotationActionApply(action) {
4273
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4274
- }
4275
- /**
4276
- * @inheritDoc
4277
- */
4278
- doModifyActionApply(action) {
4279
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4280
- }
4281
- }
4282
- (() => {
4283
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.UPDATE_CODE_BLOCK, RTECodeBlockNode.name, new UpdateCodeBlockStrategy());
4284
- ActionHandleStrategyRegistry.register(SelectionChangeAction.name, RTECodeBlockNode.name, new CodeNodeSetSelectionRangeAnnotationStrategy());
4285
- })();
4286
-
4287
- /**
4288
- * Insert image behind after code block strategy.
4289
- */
4290
- class CodeBlockInsertImageStrategy extends ActionHandleStrategy {
4291
- /**
4292
- * Insert image block at behind of the RTE code block.
4293
- *
4294
- * @param {InsertImageToBlockAction} action - The insert image action instance.
4295
- * @param {RTECodeBlock} target - The code block.
4296
- */
4297
- handleAction(action, target) {
4298
- const imageBlock = action.imageBlockToBeInserted;
4299
- target.parent.apply(new InsertChildrenAfterAction(target, imageBlock));
4300
- }
4301
- }
4302
-
4303
- exports.CodeLanguage = void 0;
4304
- (function (CodeLanguage) {
4305
- CodeLanguage["CSS"] = "css";
4306
- CodeLanguage["HTML"] = "html";
4307
- CodeLanguage["JavaScript"] = "js";
4308
- CodeLanguage["JSX"] = "jsx";
4309
- CodeLanguage["Plain Text"] = "plainText";
4310
- CodeLanguage["TypeScript"] = "ts";
4311
- CodeLanguage["TSX"] = "tsx";
4312
- })(exports.CodeLanguage || (exports.CodeLanguage = {}));
4313
-
4314
- /**
4315
- * Remove the node from the text block or image block strategy.
4316
- */
4317
- class RemoveChildrenStrategy extends ActionHandleStrategy {
4318
- /**
4319
- * Remove the node or block from the parent.
4320
- * Remove the block if the block children is empty after delete the current element.
4321
- *
4322
- * @param {RemoveChildrenAction} action - The remove child action instance.
4323
- * @param {RTEBlock | VegaRTEContent} target - The parent block of the node that will be removed.
4324
- */
4325
- handleAction(action, target) {
4326
- const arrayFixed = target.children;
4327
- target.children = arrayFixed.filter((node) => node !== action.entityToBeRemoved);
4328
- if (target.children.length === 0 && 'parent' in target && target.parent) {
4329
- if (!target.isListItemBlock()) {
4330
- target.parent.apply(new RemoveChildrenAction(target));
4331
- }
4332
- else if (!target.nestList || !target.nestList.length) {
4333
- target.parent.apply(new RemoveChildrenAction(target));
4334
- }
4335
- }
4336
- }
4337
- }
4338
-
4339
- /**
4340
- * The code block DTO class.
4341
- */
4342
- class RTECodeBlock extends RTEBlock {
4343
- constructor(id, content, language) {
4344
- super(id);
4345
- this.type = 'code-block';
4346
- this.children = [new RTECodeBlockNode(`${id}-1`, content, language, this)];
4347
- }
4348
- /**
4349
- * Converts a VegaRTECodeBlock into an RTECodeBlock.
4350
- *
4351
- * @param {VegaRTECodeBlock} block - The block object
4352
- * @returns {RTECodeBlock} A RTECodeBlock class
4353
- */
4354
- static from(block) {
4355
- return new RTECodeBlock(block.id, block.content, block.language);
4356
- }
4357
- /**
4358
- * @inheritDoc
4359
- */
4360
- toJSON() {
4361
- const { language, text } = this.children[0];
4362
- return {
4363
- id: this.id,
4364
- type: 'code-block',
4365
- content: text,
4366
- language,
4367
- };
4368
- }
4369
- /**
4370
- * @inheritDoc
4371
- */
4372
- toHtml() {
4373
- const { language = exports.CodeLanguage['Plain Text'] } = this.children[0];
4374
- 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>`;
4375
- }
4376
- /**
4377
- * @inheritDoc
4378
- */
4379
- clone(parent) {
4380
- const cloneCodeBlock = RTECodeBlock.from(this.toJSON());
4381
- cloneCodeBlock.parent = parent;
4382
- return cloneCodeBlock;
4383
- }
4384
- /**
4385
- * Apply action to block
4386
- *
4387
- * @param {ModifyContentAction} action - modify content action.
4388
- */
4389
- apply(action) {
4390
- if (action instanceof ModifyContentAction) {
4391
- ActionHandleStrategyRegistry.executeTheStrategy(action, this);
4392
- }
4393
- if (action.isFlushable) {
4394
- const domNode = stateEntityRenderingRegistry.getDOMByEntity(this);
4395
- if (domNode) {
4396
- const nodeSubject = domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubjectFromParentNodeByEventId(domNode, vegaInternalEventId.VegaInternalRichTextEditorFlushChanges);
4397
- if (nodeSubject) {
4398
- changeManager.ChangeManager.notify(nodeSubject, {});
4399
- }
4400
- }
4401
- }
4402
- }
4403
- /**
4404
- * @inheritDoc
4405
- */
4406
- isNotEmpty() {
4407
- return !!this.children.length;
4408
- }
4409
- /**
4410
- * @inheritDoc
4411
- */
4412
- getLastNode() {
4413
- return this.children[0];
4414
- }
4415
- /**
4416
- * The code block is selected or not.
4417
- *
4418
- * @returns {boolean} - The boolean result.
4419
- */
4420
- isSelected() {
4421
- return this.children[0].annotationMap.has(exports.InternalAnnotationTypeEnum.SELECTION_RANGE);
4422
- }
4423
- }
4424
- (() => {
4425
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.DELETE_CODE_BLOCK, RTECodeBlock.name, new CodeBlockRemoveSelfStrategy());
4426
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.DELETE_CHILDREN, RTECodeBlock.name, new RemoveChildrenStrategy());
4427
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.SWITCH_OUT_FROM_CODE_BLOCK, RTECodeBlock.name, new SwitchOutFromCodeBlockStrategy());
4428
- ActionHandleStrategyRegistry.register(exports.ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTECodeBlock.name, new CodeBlockInsertImageStrategy());
4429
- })();
4430
- RTECodeBlock.CODE_BLOCK_PLACEHOLDER_CLASS_NAME = 'code-block-placeholder-element';
4431
-
4432
- exports.ActionHandleStrategy = ActionHandleStrategy;
4433
- exports.ActionHandleStrategyRegistry = ActionHandleStrategyRegistry;
4434
- exports.ActionHandlerInterceptorRegistry = ActionHandlerInterceptorRegistry;
4435
- exports.AnnotationAction = AnnotationAction;
4436
- exports.AppendChildrenAction = AppendChildrenAction;
4437
- exports.BlockAnnotation = BlockAnnotation;
4438
- exports.BlockDeleteNodeContentStrategy = BlockDeleteNodeContentStrategy;
4439
- exports.BlockInsertLineBreakStrategy = BlockInsertLineBreakStrategy;
4440
- exports.BlockInsertLineBreakWithBlocksStrategy = BlockInsertLineBreakWithBlocksStrategy;
4441
- exports.BlockMergeNodesStrategy = BlockMergeNodesStrategy;
4442
- exports.BlockReplaceNodesStrategy = BlockReplaceNodesStrategy;
4443
- exports.BlockSplitWithTextNodeStrategy = BlockSplitWithTextNodeStrategy;
4444
- exports.BlockUpdateHorizontalAlignmentStrategy = BlockUpdateHorizontalAlignmentStrategy;
4445
- exports.BlockUpdateTextStyleStrategy = BlockUpdateTextStyleStrategy;
4446
- exports.BoldAnnotation = BoldAnnotation;
4447
- exports.BoldAnnotationAction = BoldAnnotationAction;
4448
- exports.ClearFormattingAnnotationAction = ClearFormattingAnnotationAction;
4449
- exports.CodeAnnotationAction = CodeAnnotationAction;
4450
- exports.CommonAnnotation = CommonAnnotation;
4451
- exports.CustomAttributeAnnotation = CustomAttributeAnnotation;
4452
- exports.CustomClassAnnotation = CustomClassAnnotation;
4453
- exports.CustomStyleAnnotation = CustomStyleAnnotation;
4454
- exports.HorizontalAlignmentAnnotationAction = HorizontalAlignmentAnnotationAction;
4455
- exports.IndentAnnotationAction = IndentAnnotationAction;
4456
- exports.InsertChildrenAfterAction = InsertChildrenAfterAction;
4457
- exports.InsertChildrenBeforeAction = InsertChildrenBeforeAction;
4458
- exports.ItalicAnnotationAction = ItalicAnnotationAction;
4459
- exports.LinkAnnotationAction = LinkAnnotationAction;
4460
- exports.ModifyContentAction = ModifyContentAction;
4461
- exports.NodeAnnotation = NodeAnnotation;
4462
- exports.RTEAnnotationStyle = RTEAnnotationStyle;
4463
- exports.RTEBlock = RTEBlock;
4464
- exports.RTECodeBlock = RTECodeBlock;
4465
- exports.RTECodeBlockNode = RTECodeBlockNode;
4466
- exports.RTEDTOClassManager = RTEDTOClassManager$1;
4467
- exports.RTEDecoratorNode = RTEDecoratorNode;
4468
- exports.RTENode = RTENode;
4469
- exports.RTETextBlock = RTETextBlock;
4470
- exports.RTETextNode = RTETextNode;
4471
- exports.RTE_DEFAULT_TEXT_COLOR = RTE_DEFAULT_TEXT_COLOR;
4472
- exports.RTE_TEXT_COLORS = RTE_TEXT_COLORS;
4473
- exports.RemoveChildrenAction = RemoveChildrenAction;
4474
- exports.RemoveChildrenStrategy = RemoveChildrenStrategy;
4475
- exports.ReplaceChildNodesAction = ReplaceChildNodesAction;
4476
- exports.SelectionChangeAction = SelectionChangeAction;
4477
- exports.SplitBlockWithNodeAction = SplitBlockWithNodeAction;
4478
- exports.StrikethroughAnnotationAction = StrikethroughAnnotationAction;
4479
- exports.SyncUpSelectionAction = SyncUpSelectionAction;
4480
- exports.TextColorAnnotationAction = TextColorAnnotationAction;
4481
- exports.TextStyleAnnotation = TextStyleAnnotation;
4482
- exports.TextStyleAnnotationAction = TextStyleAnnotationAction;
4483
- exports.UnderlineAnnotationAction = UnderlineAnnotationAction;
4484
- exports.UpdateCodeBlockAction = UpdateCodeBlockAction;
4485
- exports.UpdateTextAction = UpdateTextAction;
4486
- exports.VegaRTEPresetToolbarItems = VegaRTEPresetToolbarItems;
4487
- exports.ZERO_WIDTH_SPACE = ZERO_WIDTH_SPACE;
4488
- exports.stateEntityRenderingRegistry = stateEntityRenderingRegistry;