@talrace/ngx-noder 0.0.7 → 0.0.8

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 (647) hide show
  1. package/README.md +75 -66
  2. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +61 -0
  3. package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +7 -0
  4. package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +47 -0
  5. package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +32 -0
  6. package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +64 -0
  7. package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +89 -0
  8. package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +22 -0
  9. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +111 -0
  10. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +37 -0
  11. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +49 -0
  12. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +90 -0
  13. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +81 -0
  14. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +28 -0
  15. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/heading/heading.component.mjs +22 -0
  16. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +53 -0
  17. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +18 -0
  18. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +27 -0
  19. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +71 -0
  20. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +94 -0
  21. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +24 -0
  22. package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +65 -0
  23. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +84 -0
  24. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +90 -0
  25. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +117 -0
  26. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +8 -0
  27. package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/numbering-templates.const.mjs +6 -6
  28. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +157 -0
  29. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +8 -0
  30. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +11 -0
  31. package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.mjs +1 -1
  32. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +6 -0
  33. package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +34 -0
  34. package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +26 -0
  35. package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +60 -0
  36. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +55 -0
  37. package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +54 -0
  38. package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +84 -0
  39. package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +123 -0
  40. package/esm2022/lib/editor/components/edges/edge-element.model.mjs +9 -0
  41. package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +6 -0
  42. package/esm2022/lib/editor/components/edges/edge.component.mjs +99 -0
  43. package/esm2022/lib/editor/components/edges/edges.mjs +108 -0
  44. package/esm2022/lib/editor/components/edges/page-type.enum.mjs +7 -0
  45. package/esm2022/lib/editor/components/editor.component.mjs +112 -0
  46. package/esm2022/lib/editor/components/external-element/external-element.service.mjs +6 -0
  47. package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +4 -0
  48. package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +2 -0
  49. package/esm2022/lib/editor/components/external-element/external.component.mjs +41 -0
  50. package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +9 -0
  51. package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +11 -0
  52. package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +15 -0
  53. package/esm2022/lib/editor/components/image/components/image.component.mjs +88 -0
  54. package/esm2022/lib/editor/components/image/image-api.service.mjs +36 -0
  55. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +38 -0
  56. package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +2 -0
  57. package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +19 -0
  58. package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +12 -0
  59. package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +106 -0
  60. package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +2 -0
  61. package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +52 -0
  62. package/esm2022/lib/editor/components/image/size.mjs +2 -0
  63. package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +59 -0
  64. package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +18 -0
  65. package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +43 -0
  66. package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +2 -0
  67. package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +3 -0
  68. package/esm2022/lib/editor/components/shared/custom-content.mjs +2 -0
  69. package/esm2022/lib/editor/components/shared/services/component.service.mjs +64 -0
  70. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +163 -0
  71. package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +55 -0
  72. package/esm2022/lib/editor/components/tab/tab.component.mjs +44 -0
  73. package/esm2022/lib/editor/components/tab/tab.helper.mjs +6 -0
  74. package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +118 -0
  75. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +97 -0
  76. package/esm2022/lib/editor/components/table/components/table.component.mjs +401 -0
  77. package/esm2022/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.mjs +1 -1
  78. package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +8 -0
  79. package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +6 -0
  80. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +18 -0
  81. package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +9 -0
  82. package/esm2022/lib/editor/components/table/models/row-data.model.mjs +8 -0
  83. package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +7 -0
  84. package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +74 -0
  85. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +366 -0
  86. package/esm2022/lib/editor/content/constants/display-values.const.mjs +8 -0
  87. package/esm2022/lib/editor/content/constants/document-info.const.mjs +13 -0
  88. package/esm2022/lib/editor/content/constants/editor.const.mjs +62 -0
  89. package/esm2022/lib/editor/content/contents.interface.mjs +2 -0
  90. package/esm2022/lib/editor/content/display-data/display-token.model.mjs +12 -0
  91. package/esm2022/lib/editor/content/display-data/document.mjs +134 -0
  92. package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +10 -0
  93. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +11 -0
  94. package/esm2022/lib/editor/content/display-data/indent.model.mjs +9 -0
  95. package/esm2022/lib/editor/content/display-data/line-info.model.mjs +9 -0
  96. package/esm2022/lib/editor/content/display-data/lines.mjs +96 -0
  97. package/esm2022/lib/editor/content/display-data/pages.wrap.mjs +226 -0
  98. package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +2 -0
  99. package/esm2022/lib/editor/content/display-data/paragraph.mjs +52 -0
  100. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +34 -0
  101. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +2 -0
  102. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +96 -0
  103. package/esm2022/lib/{+shared/editor → editor/content}/helpers/format.helper.mjs +1 -1
  104. package/esm2022/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.mjs +1 -1
  105. package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +9 -0
  106. package/esm2022/lib/editor/content/margin.model.mjs +16 -0
  107. package/esm2022/lib/editor/content/page-vertical-data.model.mjs +9 -0
  108. package/esm2022/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.mjs +1 -1
  109. package/esm2022/lib/editor/core/event-emitting.mjs +56 -0
  110. package/esm2022/lib/editor/display/cell.interface.mjs +2 -0
  111. package/esm2022/lib/editor/display/event.helper.mjs +18 -0
  112. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +101 -0
  113. package/esm2022/lib/editor/display/layers/layer.config.mjs +2 -0
  114. package/esm2022/lib/editor/display/layers/pages.layer.mjs +97 -0
  115. package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +7 -0
  116. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +7 -0
  117. package/esm2022/lib/editor/display/layers/selection.layer.mjs +113 -0
  118. package/esm2022/lib/editor/display/layers/text.layer.mjs +203 -0
  119. package/esm2022/lib/editor/display/print/print.helper.mjs +40 -0
  120. package/esm2022/lib/editor/display/print/print.renderer.mjs +67 -0
  121. package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +7 -0
  122. package/esm2022/lib/editor/display/render-changes.interface.mjs +2 -0
  123. package/esm2022/lib/editor/display/render-changes.model.mjs +25 -0
  124. package/esm2022/lib/editor/display/renderer.mjs +206 -0
  125. package/esm2022/lib/editor/display/rendering.helper.mjs +187 -0
  126. package/esm2022/lib/editor/display/renderloop.mjs +26 -0
  127. package/esm2022/lib/editor/display/virtual.renderer.mjs +317 -0
  128. package/esm2022/lib/editor/display/visible-range.interface.mjs +2 -0
  129. package/esm2022/lib/editor/editor.module.mjs +67 -0
  130. package/esm2022/lib/editor/execution/distance.model.mjs +10 -0
  131. package/esm2022/lib/editor/execution/edit.session.mjs +1117 -0
  132. package/esm2022/lib/editor/execution/editor.mjs +1346 -0
  133. package/esm2022/lib/editor/execution/helpers/delta.helper.mjs +18 -0
  134. package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +42 -0
  135. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +64 -0
  136. package/esm2022/lib/editor/execution/helpers/page.helper.mjs +12 -0
  137. package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +41 -0
  138. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +169 -0
  139. package/esm2022/lib/editor/execution/regulator.service.mjs +198 -0
  140. package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +19 -0
  141. package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +15 -0
  142. package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +8 -0
  143. package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +3 -0
  144. package/esm2022/lib/editor/execution/targeting/session.model.mjs +10 -0
  145. package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +2 -0
  146. package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +2 -0
  147. package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +88 -0
  148. package/esm2022/lib/editor/gadgets/history/operation-history.mjs +206 -0
  149. package/esm2022/lib/editor/gadgets/history/operation.type.mjs +2 -0
  150. package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +7 -0
  151. package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +9 -0
  152. package/esm2022/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.mjs +1 -1
  153. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +82 -0
  154. package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +7 -0
  155. package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +18 -0
  156. package/esm2022/lib/editor/gadgets/scrollbar.mjs +81 -0
  157. package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +2 -0
  158. package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +2 -0
  159. package/esm2022/lib/editor/gadgets/search/search.mjs +231 -0
  160. package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +5 -0
  161. package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +20 -0
  162. package/esm2022/lib/editor/interaction/base.handler.mjs +19 -0
  163. package/esm2022/lib/editor/interaction/document.handler.mjs +27 -0
  164. package/esm2022/lib/editor/interaction/editor.service.mjs +325 -0
  165. package/esm2022/lib/editor/interaction/input.handler.mjs +149 -0
  166. package/esm2022/lib/{+shared/enums → editor/interaction}/mode.enum.mjs +1 -1
  167. package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +7 -0
  168. package/esm2022/lib/editor/interaction/mouse.handler.mjs +49 -0
  169. package/esm2022/lib/editor/interaction/text-input.mjs +53 -0
  170. package/esm2022/lib/editor/operations/commands.service.mjs +20 -0
  171. package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +32 -0
  172. package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +7 -0
  173. package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +9 -0
  174. package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +15 -0
  175. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +55 -0
  176. package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +19 -0
  177. package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +43 -0
  178. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +28 -0
  179. package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +55 -0
  180. package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +114 -0
  181. package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +16 -0
  182. package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +374 -0
  183. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +432 -0
  184. package/esm2022/lib/editor/operations/save-commands.helper.mjs +127 -0
  185. package/esm2022/lib/editor/operations/target-operations.helper.mjs +23 -0
  186. package/esm2022/lib/editor/positioning/alignments.const.mjs +8 -0
  187. package/esm2022/lib/editor/positioning/content.helper.mjs +36 -0
  188. package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +13 -0
  189. package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +2 -0
  190. package/esm2022/lib/editor/positioning/insert-index.interface.mjs +2 -0
  191. package/esm2022/lib/editor/positioning/line-width.helper.mjs +13 -0
  192. package/esm2022/lib/editor/positioning/position.helper.mjs +194 -0
  193. package/esm2022/lib/editor/positioning/range.mjs +94 -0
  194. package/esm2022/lib/editor/positioning/selection.mjs +307 -0
  195. package/esm2022/lib/editor/revision.helper.mjs +91 -0
  196. package/esm2022/lib/models/generated/cell.model.mjs +1 -1
  197. package/esm2022/lib/models/generated/command.model.mjs +5 -1
  198. package/esm2022/lib/models/generated/insert-paragraph.model.mjs +20 -0
  199. package/esm2022/lib/models/generated/replace.model.mjs +5 -1
  200. package/esm2022/public-api.mjs +37 -31
  201. package/fesm2022/talrace-ngx-noder.mjs +3398 -2731
  202. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  203. package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +27 -0
  204. package/lib/apart-components/add-link-dialog/validation.helper.d.ts +5 -0
  205. package/lib/apart-components/add-link-mobile/add-link-mobile.component.d.ts +19 -0
  206. package/lib/{+shared → apart-components}/confirm-dialog/confirm-dialog.component.d.ts +2 -1
  207. package/lib/{+shared → apart-components}/editor-search/editor-search-dialog.component.d.ts +6 -7
  208. package/lib/apart-components/editor-title/editor-title.component.d.ts +25 -0
  209. package/lib/apart-components/editor-title-mobile/editor-title-mobile.component.d.ts +6 -0
  210. package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +49 -0
  211. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/color-picker/color-picker.component.d.ts +1 -1
  212. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font/font.component.d.ts +2 -2
  213. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-size/font-size.component.d.ts +1 -1
  214. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-style/font-style.component.d.ts +1 -1
  215. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/format/format.component.d.ts +2 -2
  216. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/heading/heading.component.d.ts +1 -1
  217. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/numbering/numbering.component.d.ts +3 -3
  218. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/print/print.component.d.ts +1 -1
  219. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/undo-redo/undo-redo.component.d.ts +1 -1
  220. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/zoom/zoom.component.d.ts +1 -1
  221. package/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.d.ts +36 -0
  222. package/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.d.ts +14 -0
  223. package/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.d.ts +23 -0
  224. package/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.d.ts +26 -0
  225. package/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.d.ts +40 -0
  226. package/lib/apart-components/editor-toolbar/editor-toolbar.module.d.ts +32 -0
  227. package/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.d.ts +2 -0
  228. package/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.d.ts +6 -0
  229. package/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.d.ts +9 -0
  230. package/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.d.ts +14 -0
  231. package/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.d.ts +38 -0
  232. package/lib/{+shared/editor-toolbar/helpers → apart-components/editor-toolbar/shared}/toolbar-styles.helper.d.ts +2 -2
  233. package/lib/{+shared → apart-components}/insert-table/insert-table.component.d.ts +1 -1
  234. package/lib/apart-components/insert-table-mobile/insert-table-mobile.component.d.ts +30 -0
  235. package/lib/apart-components/text-format-mobile/text-format-mobile.component.d.ts +35 -0
  236. package/lib/{+shared/editor/core/models → editor/components/edges}/edge-element.model.d.ts +1 -1
  237. package/lib/editor/components/edges/edge.component.d.ts +44 -0
  238. package/lib/{+shared/editor/core → editor}/components/edges/edges.d.ts +7 -7
  239. package/lib/{+shared/editor → editor/components}/editor.component.d.ts +11 -11
  240. package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-sidenav.interface.d.ts +1 -1
  241. package/lib/{+shared/editor/custom-components → editor/components}/external-element/external.component.d.ts +4 -4
  242. package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-element.model.d.ts +2 -1
  243. package/lib/{+shared/editor/custom-components → editor/components}/image/components/image.component.d.ts +4 -4
  244. package/lib/editor/components/image/image-api.service.d.ts +17 -0
  245. package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/resizer.component.d.ts +2 -2
  246. package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-wrapper.d.ts +1 -1
  247. package/lib/{+shared/editor/custom-components → editor/components}/shared/abstract/base.component.d.ts +6 -4
  248. package/lib/editor/components/shared/abstract/destroy.component.d.ts +9 -0
  249. package/lib/{+shared/editor/custom-components/shared/helpers → editor/components/shared}/custom-component.hepler.d.ts +3 -3
  250. package/lib/editor/components/shared/custom-components.interface.d.ts +13 -0
  251. package/lib/editor/components/shared/custom-content.d.ts +5 -0
  252. package/lib/{+shared/editor/custom-components/shared/services/component → editor/components/shared/services}/component.service.d.ts +1 -1
  253. package/lib/editor/components/shared/services/custom-content.service.d.ts +33 -0
  254. package/lib/{+shared/editor/custom-components → editor/components}/tab/tab.component.d.ts +2 -2
  255. package/lib/{+shared/editor/custom-components → editor/components}/table/cell-resizer/cell-resizer.d.ts +2 -1
  256. package/lib/editor/components/table/components/table-cell.component.d.ts +45 -0
  257. package/lib/{+shared/editor/custom-components → editor/components}/table/components/table.component.d.ts +26 -11
  258. package/lib/{+shared/editor/custom-components → editor/components}/table/overlay-menu/overlay-menu.component.d.ts +2 -2
  259. package/lib/{+shared/editor/custom-components → editor/components}/table/selection/table-selection.d.ts +3 -3
  260. package/lib/{+shared/editor/core → editor/content}/constants/editor.const.d.ts +3 -3
  261. package/lib/editor/content/contents.interface.d.ts +22 -0
  262. package/lib/{+shared/editor/core/models → editor/content/display-data}/display-token.model.d.ts +1 -1
  263. package/lib/{+shared/editor/core → editor/content/display-data}/document.d.ts +9 -9
  264. package/lib/{+shared/editor/core/models → editor/content/display-data}/format-ext.model.d.ts +1 -1
  265. package/lib/{+shared/editor/execution/models → editor/content/display-data}/general-properties.model.d.ts +2 -1
  266. package/lib/{+shared/editor/core/models → editor/content/display-data}/line-info.model.d.ts +1 -0
  267. package/lib/{+shared/editor/core/layers → editor/content/display-data}/lines.d.ts +1 -1
  268. package/lib/editor/content/display-data/pages.wrap.d.ts +42 -0
  269. package/lib/{+shared/editor/core/paging → editor/content/display-data}/paragraph.d.ts +8 -5
  270. package/lib/{+shared/editor/core/paging → editor/content/display-data}/text-line-info.d.ts +4 -2
  271. package/lib/editor/content/helpers/content-style.helper.d.ts +11 -0
  272. package/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.d.ts +1 -1
  273. package/lib/editor/content/helpers/scaling.helper.d.ts +4 -0
  274. package/lib/{+shared/editor/core/paging → editor/content}/page-vertical-data.model.d.ts +1 -1
  275. package/lib/{+shared/editor/core/base → editor/core}/event-emitting.d.ts +0 -5
  276. package/lib/{+shared/editor/core → editor/display}/layers/cursor.layer.d.ts +7 -8
  277. package/lib/{+shared/editor/core/interfaces → editor/display/layers}/layer.config.d.ts +2 -2
  278. package/lib/{+shared/editor/core → editor/display}/layers/pages.layer.d.ts +5 -6
  279. package/lib/editor/display/layers/print.text.layer.d.ts +4 -0
  280. package/lib/{+shared/editor/core → editor/display}/layers/selection.layer.d.ts +5 -6
  281. package/lib/editor/display/layers/text.layer.d.ts +34 -0
  282. package/lib/{+shared/helpers → editor/display/print}/print.helper.d.ts +3 -3
  283. package/lib/editor/display/print/print.renderer.d.ts +23 -0
  284. package/lib/{+shared/editor/core/helpers → editor/display/print}/print.rendering.helper.d.ts +2 -2
  285. package/lib/{+shared/editor/core/models → editor/display}/render-changes.model.d.ts +1 -1
  286. package/lib/{+shared/editor/core → editor/display}/renderer.d.ts +10 -13
  287. package/lib/{+shared/editor/core/helpers → editor/display}/rendering.helper.d.ts +10 -10
  288. package/lib/{+shared/editor/core/layers → editor/display}/renderloop.d.ts +2 -2
  289. package/lib/{+shared/editor/core → editor/display}/virtual.renderer.d.ts +14 -29
  290. package/lib/editor/editor.module.d.ts +31 -0
  291. package/lib/{+shared/editor/core → editor/execution}/edit.session.d.ts +65 -63
  292. package/lib/{+shared/editor/core → editor/execution}/editor.d.ts +48 -42
  293. package/lib/editor/execution/helpers/delta.helper.d.ts +6 -0
  294. package/lib/{+shared/editor/core → editor/execution}/helpers/format-style.helper.d.ts +3 -5
  295. package/lib/{+shared/editor/core → editor/execution}/helpers/page.helper.d.ts +1 -1
  296. package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph-style.helper.d.ts +1 -1
  297. package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph.helper.d.ts +14 -8
  298. package/lib/{+shared/editor → editor}/execution/regulator.service.d.ts +16 -15
  299. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/cell-session-source.model.d.ts +3 -3
  300. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/edge-session-source.model.d.ts +3 -3
  301. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/main-session-source.model.d.ts +1 -1
  302. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session-source.model.d.ts +1 -1
  303. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session.model.d.ts +3 -3
  304. package/lib/{+shared/editor/core/helpers → editor/gadgets/font-metrics}/font-metrics.helper.d.ts +1 -1
  305. package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation-history.d.ts +9 -7
  306. package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation.type.d.ts +2 -1
  307. package/lib/{+shared/editor/core/models → editor/gadgets/numbering}/numbering-data.model.d.ts +1 -1
  308. package/lib/{+shared/editor/core/helpers → editor/gadgets/numbering}/numbering.helper.d.ts +8 -8
  309. package/lib/{+shared/editor/helpers → editor/gadgets/page-break}/break.helper.d.ts +2 -2
  310. package/lib/{+shared/editor/core/layers → editor/gadgets}/scrollbar.d.ts +9 -18
  311. package/lib/{+shared/editor/core → editor/gadgets/search}/search.d.ts +4 -4
  312. package/lib/editor/interaction/base.handler.d.ts +9 -0
  313. package/lib/editor/interaction/document.handler.d.ts +10 -0
  314. package/lib/{+shared/editor → editor}/interaction/editor.service.d.ts +24 -18
  315. package/lib/{+shared/editor → editor}/interaction/input.handler.d.ts +4 -5
  316. package/lib/{+shared/editor → editor}/interaction/mouse.handler.d.ts +1 -1
  317. package/lib/{+shared/editor → editor}/operations/enums/command-type.enum.d.ts +11 -10
  318. package/lib/{+shared/editor → editor}/operations/helpers/break-operations.helper.d.ts +2 -2
  319. package/lib/{+shared/editor → editor}/operations/helpers/format-operations.helper.d.ts +2 -2
  320. package/lib/editor/operations/helpers/image-operations.helper.d.ts +7 -0
  321. package/lib/{+shared/editor → editor}/operations/helpers/indexed-element-operations.helper.d.ts +1 -1
  322. package/lib/{+shared/editor → editor}/operations/helpers/link-operations.helper.d.ts +1 -1
  323. package/lib/{+shared/editor → editor}/operations/helpers/numbering-operations.helper.d.ts +3 -3
  324. package/lib/{+shared/editor → editor}/operations/helpers/paragraph-operations.helper.d.ts +3 -2
  325. package/lib/{+shared/editor → editor}/operations/helpers/tab-operations.helper.d.ts +1 -1
  326. package/lib/{+shared/editor → editor}/operations/helpers/table-operations.helper.d.ts +6 -6
  327. package/lib/{+shared/editor/operations/helpers → editor/operations}/operations-helper.helper.d.ts +21 -19
  328. package/lib/{+shared/editor/operations/helpers → editor/operations}/save-commands.helper.d.ts +28 -22
  329. package/lib/editor/operations/target-operations.helper.d.ts +6 -0
  330. package/lib/{+shared/editor/helpers → editor/positioning}/content.helper.d.ts +10 -5
  331. package/lib/editor/positioning/cursor-paragraph.d.ts +7 -0
  332. package/lib/{+shared/editor/core/interfaces → editor/positioning}/cursor-position.interface.d.ts +1 -1
  333. package/lib/{+shared/editor/core/helpers → editor/positioning}/line-width.helper.d.ts +2 -2
  334. package/lib/{+shared/editor/core/helpers → editor/positioning}/position.helper.d.ts +9 -9
  335. package/lib/{+shared/editor/core → editor/positioning}/range.d.ts +12 -12
  336. package/lib/{+shared/editor → editor}/positioning/selection.d.ts +10 -10
  337. package/lib/editor/revision.helper.d.ts +15 -0
  338. package/lib/models/generated/cell.model.d.ts +1 -0
  339. package/lib/models/generated/command.model.d.ts +2 -0
  340. package/lib/models/generated/insert-paragraph.model.d.ts +10 -0
  341. package/lib/models/generated/replace.model.d.ts +2 -0
  342. package/package.json +1 -1
  343. package/public-api.d.ts +36 -30
  344. package/src/_ngx-noder.theme.scss +20 -13
  345. package/src/assets/fonts/nc-iconfont.css +112 -106
  346. package/src/assets/fonts/nc-iconfont.eot +0 -0
  347. package/src/assets/fonts/nc-iconfont.svg +4 -1
  348. package/src/assets/fonts/nc-iconfont.ttf +0 -0
  349. package/src/assets/fonts/nc-iconfont.woff +0 -0
  350. package/src/lib/{+shared → apart-components}/add-link-dialog/_add-link-dialog.theme.scss +4 -4
  351. package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +25 -0
  352. package/src/lib/apart-components/confirm-dialog/_theme.scss +30 -0
  353. package/src/lib/apart-components/editor-title/_editor-title.theme.scss +28 -0
  354. package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +42 -0
  355. package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +27 -0
  356. package/src/lib/apart-components/editor-toolbar/_theme.scss +25 -0
  357. package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +12 -0
  358. package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +12 -0
  359. package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +14 -0
  360. package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +21 -0
  361. package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +21 -0
  362. package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +70 -0
  363. package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +16 -0
  364. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +26 -0
  365. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +33 -0
  366. package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +22 -0
  367. package/src/lib/{+shared → apart-components}/insert-table/_insert-table.theme.scss +10 -7
  368. package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +54 -0
  369. package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +86 -0
  370. package/src/lib/editor/_theme.scss +5 -0
  371. package/src/lib/editor/components/_editor.theme.scss +112 -0
  372. package/src/scss/_fonts.scss +3 -0
  373. package/src/scss/base-editor.scss +329 -0
  374. package/src/styles.scss +3 -58
  375. package/esm2022/lib/+shared/abstract/base-api.service.mjs +0 -99
  376. package/esm2022/lib/+shared/abstract/observer.component.mjs +0 -24
  377. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +0 -28
  378. package/esm2022/lib/+shared/constants/default-file-name.const.mjs +0 -2
  379. package/esm2022/lib/+shared/constants/paginator-sizes.const.mjs +0 -3
  380. package/esm2022/lib/+shared/editor/core/base/event-emitting.mjs +0 -71
  381. package/esm2022/lib/+shared/editor/core/components/edges/edge-type.enum.mjs +0 -6
  382. package/esm2022/lib/+shared/editor/core/components/edges/edge.component.mjs +0 -100
  383. package/esm2022/lib/+shared/editor/core/components/edges/edges.mjs +0 -104
  384. package/esm2022/lib/+shared/editor/core/constants/alignments.const.mjs +0 -8
  385. package/esm2022/lib/+shared/editor/core/constants/clipboardEventTypes.const.mjs +0 -6
  386. package/esm2022/lib/+shared/editor/core/constants/content-style-change.const.mjs +0 -15
  387. package/esm2022/lib/+shared/editor/core/constants/display-values.const.mjs +0 -8
  388. package/esm2022/lib/+shared/editor/core/constants/document-info.const.mjs +0 -13
  389. package/esm2022/lib/+shared/editor/core/constants/editor-version.const.mjs +0 -2
  390. package/esm2022/lib/+shared/editor/core/constants/editor.const.mjs +0 -62
  391. package/esm2022/lib/+shared/editor/core/constants/unicode-chars.const.mjs +0 -5
  392. package/esm2022/lib/+shared/editor/core/document.mjs +0 -134
  393. package/esm2022/lib/+shared/editor/core/edit.session.mjs +0 -1102
  394. package/esm2022/lib/+shared/editor/core/editor.mjs +0 -1279
  395. package/esm2022/lib/+shared/editor/core/enums/break-types.enum.mjs +0 -7
  396. package/esm2022/lib/+shared/editor/core/enums/mouse-button.enum.mjs +0 -7
  397. package/esm2022/lib/+shared/editor/core/enums/page-type.enum.mjs +0 -7
  398. package/esm2022/lib/+shared/editor/core/helpers/content-style.helper.mjs +0 -156
  399. package/esm2022/lib/+shared/editor/core/helpers/delta.helper.mjs +0 -18
  400. package/esm2022/lib/+shared/editor/core/helpers/dom.helper.mjs +0 -42
  401. package/esm2022/lib/+shared/editor/core/helpers/event.helper.mjs +0 -18
  402. package/esm2022/lib/+shared/editor/core/helpers/font-metrics.helper.mjs +0 -88
  403. package/esm2022/lib/+shared/editor/core/helpers/format-style.helper.mjs +0 -72
  404. package/esm2022/lib/+shared/editor/core/helpers/line-width.helper.mjs +0 -13
  405. package/esm2022/lib/+shared/editor/core/helpers/numbering.helper.mjs +0 -83
  406. package/esm2022/lib/+shared/editor/core/helpers/page.helper.mjs +0 -12
  407. package/esm2022/lib/+shared/editor/core/helpers/paragraph-style.helper.mjs +0 -41
  408. package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +0 -132
  409. package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +0 -191
  410. package/esm2022/lib/+shared/editor/core/helpers/print.rendering.helper.mjs +0 -7
  411. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +0 -186
  412. package/esm2022/lib/+shared/editor/core/helpers/unicode.helper.mjs +0 -20
  413. package/esm2022/lib/+shared/editor/core/interfaces/cell.interface.mjs +0 -2
  414. package/esm2022/lib/+shared/editor/core/interfaces/cursor-position.interface.mjs +0 -2
  415. package/esm2022/lib/+shared/editor/core/interfaces/font-metric-size.interface.mjs +0 -2
  416. package/esm2022/lib/+shared/editor/core/interfaces/layer.config.mjs +0 -2
  417. package/esm2022/lib/+shared/editor/core/interfaces/paragraph-info.interface.mjs +0 -2
  418. package/esm2022/lib/+shared/editor/core/interfaces/render-changes.interface.mjs +0 -2
  419. package/esm2022/lib/+shared/editor/core/interfaces/replace.interface.mjs +0 -2
  420. package/esm2022/lib/+shared/editor/core/interfaces/search-iteration.interface.mjs +0 -2
  421. package/esm2022/lib/+shared/editor/core/interfaces/toolbar-styles.interface.mjs +0 -2
  422. package/esm2022/lib/+shared/editor/core/interfaces/visible-line-info.interface.mjs +0 -2
  423. package/esm2022/lib/+shared/editor/core/interfaces/visible-range.interface.mjs +0 -2
  424. package/esm2022/lib/+shared/editor/core/keyboard/text-input.mjs +0 -53
  425. package/esm2022/lib/+shared/editor/core/layers/cursor.layer.mjs +0 -103
  426. package/esm2022/lib/+shared/editor/core/layers/edges.layer.mjs +0 -99
  427. package/esm2022/lib/+shared/editor/core/layers/lines.mjs +0 -96
  428. package/esm2022/lib/+shared/editor/core/layers/pages.layer.mjs +0 -106
  429. package/esm2022/lib/+shared/editor/core/layers/print.edges.layer.mjs +0 -7
  430. package/esm2022/lib/+shared/editor/core/layers/print.pages.layer.mjs +0 -7
  431. package/esm2022/lib/+shared/editor/core/layers/print.text.layer.mjs +0 -7
  432. package/esm2022/lib/+shared/editor/core/layers/renderloop.mjs +0 -26
  433. package/esm2022/lib/+shared/editor/core/layers/scrollbar.mjs +0 -100
  434. package/esm2022/lib/+shared/editor/core/layers/selection.layer.mjs +0 -115
  435. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +0 -124
  436. package/esm2022/lib/+shared/editor/core/models/display-token.model.mjs +0 -12
  437. package/esm2022/lib/+shared/editor/core/models/distance.model.mjs +0 -10
  438. package/esm2022/lib/+shared/editor/core/models/edge-element.model.mjs +0 -9
  439. package/esm2022/lib/+shared/editor/core/models/format-ext.model.mjs +0 -10
  440. package/esm2022/lib/+shared/editor/core/models/indent.model.mjs +0 -9
  441. package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +0 -9
  442. package/esm2022/lib/+shared/editor/core/models/margin.model.mjs +0 -16
  443. package/esm2022/lib/+shared/editor/core/models/numbering-data.model.mjs +0 -9
  444. package/esm2022/lib/+shared/editor/core/models/render-changes.model.mjs +0 -25
  445. package/esm2022/lib/+shared/editor/core/paging/page-vertical-data.model.mjs +0 -9
  446. package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +0 -219
  447. package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +0 -52
  448. package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +0 -34
  449. package/esm2022/lib/+shared/editor/core/point.mjs +0 -13
  450. package/esm2022/lib/+shared/editor/core/print.renderer.mjs +0 -72
  451. package/esm2022/lib/+shared/editor/core/range.mjs +0 -94
  452. package/esm2022/lib/+shared/editor/core/renderer.mjs +0 -217
  453. package/esm2022/lib/+shared/editor/core/search.mjs +0 -231
  454. package/esm2022/lib/+shared/editor/core/virtual.renderer.mjs +0 -356
  455. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
  456. package/esm2022/lib/+shared/editor/custom-components/external-element/external-element.service.mjs +0 -6
  457. package/esm2022/lib/+shared/editor/custom-components/external-element/external-elements.const.mjs +0 -4
  458. package/esm2022/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.mjs +0 -2
  459. package/esm2022/lib/+shared/editor/custom-components/external-element/external.component.mjs +0 -41
  460. package/esm2022/lib/+shared/editor/custom-components/external-element/models/element-data.model.mjs +0 -9
  461. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +0 -10
  462. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.mjs +0 -15
  463. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +0 -87
  464. package/esm2022/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.mjs +0 -38
  465. package/esm2022/lib/+shared/editor/custom-components/image/interfaces/size.mjs +0 -2
  466. package/esm2022/lib/+shared/editor/custom-components/image/resizer/coordinate.mjs +0 -2
  467. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.mjs +0 -19
  468. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction.enum.mjs +0 -12
  469. package/esm2022/lib/+shared/editor/custom-components/image/resizer/resizer.component.mjs +0 -106
  470. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-delta.mjs +0 -2
  471. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-wrapper.mjs +0 -52
  472. package/esm2022/lib/+shared/editor/custom-components/image/services/image-api.service.mjs +0 -14
  473. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +0 -57
  474. package/esm2022/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.mjs +0 -3
  475. package/esm2022/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.mjs +0 -43
  476. package/esm2022/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.mjs +0 -2
  477. package/esm2022/lib/+shared/editor/custom-components/shared/services/component/component.service.mjs +0 -64
  478. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +0 -120
  479. package/esm2022/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.mjs +0 -55
  480. package/esm2022/lib/+shared/editor/custom-components/shared/types/custom-content.mjs +0 -2
  481. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +0 -43
  482. package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +0 -118
  483. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +0 -95
  484. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +0 -293
  485. package/esm2022/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.mjs +0 -8
  486. package/esm2022/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.mjs +0 -6
  487. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-data.model.mjs +0 -18
  488. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.mjs +0 -9
  489. package/esm2022/lib/+shared/editor/custom-components/table/models/row-data.model.mjs +0 -8
  490. package/esm2022/lib/+shared/editor/custom-components/table/models/selection-range.model.mjs +0 -7
  491. package/esm2022/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.mjs +0 -74
  492. package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +0 -358
  493. package/esm2022/lib/+shared/editor/editor.component.mjs +0 -103
  494. package/esm2022/lib/+shared/editor/editor.module.mjs +0 -85
  495. package/esm2022/lib/+shared/editor/execution/models/cell-session-source.model.mjs +0 -19
  496. package/esm2022/lib/+shared/editor/execution/models/edge-session-source.model.mjs +0 -15
  497. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +0 -11
  498. package/esm2022/lib/+shared/editor/execution/models/main-session-source.model.mjs +0 -8
  499. package/esm2022/lib/+shared/editor/execution/models/session-source.model.mjs +0 -3
  500. package/esm2022/lib/+shared/editor/execution/models/session.model.mjs +0 -10
  501. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +0 -193
  502. package/esm2022/lib/+shared/editor/helpers/break.helper.mjs +0 -18
  503. package/esm2022/lib/+shared/editor/helpers/content.helper.mjs +0 -30
  504. package/esm2022/lib/+shared/editor/helpers/tab.helper.mjs +0 -6
  505. package/esm2022/lib/+shared/editor/interaction/editor.service.mjs +0 -309
  506. package/esm2022/lib/+shared/editor/interaction/input.handler.mjs +0 -160
  507. package/esm2022/lib/+shared/editor/interaction/mouse.handler.mjs +0 -49
  508. package/esm2022/lib/+shared/editor/interfaces/contents.interface.mjs +0 -2
  509. package/esm2022/lib/+shared/editor/interfaces/insert-index.interface.mjs +0 -2
  510. package/esm2022/lib/+shared/editor/operation-history/operation-history.mjs +0 -184
  511. package/esm2022/lib/+shared/editor/operation-history/operation.type.mjs +0 -2
  512. package/esm2022/lib/+shared/editor/operation-history/operations-history-info.model.mjs +0 -7
  513. package/esm2022/lib/+shared/editor/operations/enums/command-type.enum.mjs +0 -31
  514. package/esm2022/lib/+shared/editor/operations/enums/target-type.enum.mjs +0 -7
  515. package/esm2022/lib/+shared/editor/operations/helpers/break-operations.helper.mjs +0 -9
  516. package/esm2022/lib/+shared/editor/operations/helpers/content-operations.helper.mjs +0 -15
  517. package/esm2022/lib/+shared/editor/operations/helpers/format-operations.helper.mjs +0 -56
  518. package/esm2022/lib/+shared/editor/operations/helpers/image-operations.helper.mjs +0 -19
  519. package/esm2022/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
  520. package/esm2022/lib/+shared/editor/operations/helpers/link-operations.helper.mjs +0 -28
  521. package/esm2022/lib/+shared/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
  522. package/esm2022/lib/+shared/editor/operations/helpers/operations-helper.helper.mjs +0 -394
  523. package/esm2022/lib/+shared/editor/operations/helpers/paragraph-operations.helper.mjs +0 -83
  524. package/esm2022/lib/+shared/editor/operations/helpers/save-commands.helper.mjs +0 -118
  525. package/esm2022/lib/+shared/editor/operations/helpers/tab-operations.helper.mjs +0 -16
  526. package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +0 -371
  527. package/esm2022/lib/+shared/editor/operations/helpers/target-operations.helper.mjs +0 -23
  528. package/esm2022/lib/+shared/editor/positioning/selection.mjs +0 -307
  529. package/esm2022/lib/+shared/editor/store/editor.actions.mjs +0 -13
  530. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
  531. package/esm2022/lib/+shared/editor-search/editor-search-dialog.component.mjs +0 -71
  532. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +0 -32
  533. package/esm2022/lib/+shared/editor-toolbar/constants/svg-icons.const.mjs +0 -157
  534. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +0 -115
  535. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +0 -107
  536. package/esm2022/lib/+shared/editor-toolbar/enums/alignment.enum.mjs +0 -8
  537. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-type.enum.mjs +0 -6
  538. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +0 -45
  539. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +0 -85
  540. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +0 -80
  541. package/esm2022/lib/+shared/editor-toolbar/format/format.component.mjs +0 -28
  542. package/esm2022/lib/+shared/editor-toolbar/heading/heading.component.mjs +0 -23
  543. package/esm2022/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.mjs +0 -55
  544. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +0 -53
  545. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +0 -18
  546. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +0 -27
  547. package/esm2022/lib/+shared/editor-toolbar/zoom/zoom.component.mjs +0 -74
  548. package/esm2022/lib/+shared/helpers/print.helper.mjs +0 -40
  549. package/esm2022/lib/+shared/insert-table/insert-table.component.mjs +0 -54
  550. package/esm2022/lib/+shared/services/commands.service.mjs +0 -20
  551. package/esm2022/lib/+shared/services/custom-icon.service.mjs +0 -34
  552. package/lib/+shared/abstract/base-api.service.d.ts +0 -23
  553. package/lib/+shared/abstract/observer.component.d.ts +0 -10
  554. package/lib/+shared/constants/default-file-name.const.d.ts +0 -1
  555. package/lib/+shared/constants/paginator-sizes.const.d.ts +0 -2
  556. package/lib/+shared/editor/core/components/edges/edge.component.d.ts +0 -45
  557. package/lib/+shared/editor/core/constants/clipboardEventTypes.const.d.ts +0 -5
  558. package/lib/+shared/editor/core/constants/content-style-change.const.d.ts +0 -14
  559. package/lib/+shared/editor/core/helpers/content-style.helper.d.ts +0 -16
  560. package/lib/+shared/editor/core/helpers/delta.helper.d.ts +0 -6
  561. package/lib/+shared/editor/core/interfaces/visible-line-info.interface.d.ts +0 -5
  562. package/lib/+shared/editor/core/layers/edges.layer.d.ts +0 -24
  563. package/lib/+shared/editor/core/layers/print.edges.layer.d.ts +0 -4
  564. package/lib/+shared/editor/core/layers/print.text.layer.d.ts +0 -5
  565. package/lib/+shared/editor/core/layers/text.layer.d.ts +0 -22
  566. package/lib/+shared/editor/core/paging/pages.wrap.d.ts +0 -41
  567. package/lib/+shared/editor/core/point.d.ts +0 -7
  568. package/lib/+shared/editor/core/print.renderer.d.ts +0 -25
  569. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
  570. package/lib/+shared/editor/custom-components/image/services/image-api.service.d.ts +0 -8
  571. package/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.d.ts +0 -13
  572. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +0 -30
  573. package/lib/+shared/editor/custom-components/shared/types/custom-content.d.ts +0 -5
  574. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +0 -45
  575. package/lib/+shared/editor/editor.module.d.ts +0 -30
  576. package/lib/+shared/editor/interfaces/contents.interface.d.ts +0 -22
  577. package/lib/+shared/editor/operations/helpers/image-operations.helper.d.ts +0 -7
  578. package/lib/+shared/editor/operations/helpers/target-operations.helper.d.ts +0 -6
  579. package/lib/+shared/editor/store/editor.actions.d.ts +0 -11
  580. package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
  581. package/lib/+shared/editor-toolbar/constants/numbering-templates.const.d.ts +0 -6
  582. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +0 -44
  583. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +0 -28
  584. package/src/lib/+shared/editor/_editor.theme.scss +0 -35
  585. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
  586. package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
  587. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +0 -33
  588. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +0 -29
  589. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/svg-icons.const.d.ts +0 -0
  590. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/alignment.enum.d.ts +0 -0
  591. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.d.ts +0 -0
  592. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-type.enum.d.ts +0 -0
  593. /package/lib/{+shared → apart-components/editor-toolbar/shared}/services/custom-icon.service.d.ts +0 -0
  594. /package/lib/{+shared/editor/core → editor}/components/edges/edge-type.enum.d.ts +0 -0
  595. /package/lib/{+shared/editor/core/enums → editor/components/edges}/page-type.enum.d.ts +0 -0
  596. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-element.service.d.ts +0 -0
  597. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-elements.const.d.ts +0 -0
  598. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/element-data.model.d.ts +0 -0
  599. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-sidenav.model.d.ts +0 -0
  600. /package/lib/{+shared/editor/custom-components → editor/components}/image/input-handler/image-input.handler.d.ts +0 -0
  601. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/coordinate.d.ts +0 -0
  602. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction-wrapper.d.ts +0 -0
  603. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction.enum.d.ts +0 -0
  604. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-delta.d.ts +0 -0
  605. /package/lib/{+shared/editor/custom-components/image/interfaces → editor/components/image}/size.d.ts +0 -0
  606. /package/lib/{+shared/editor/custom-components/shared/constants → editor/components/shared}/custom-content-markers.const.d.ts +0 -0
  607. /package/lib/{+shared/editor/custom-components/shared/services/overlay → editor/components/shared/services}/overlay.service.d.ts +0 -0
  608. /package/lib/{+shared/editor/helpers → editor/components/tab}/tab.helper.d.ts +0 -0
  609. /package/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.d.ts +0 -0
  610. /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/reisizer-side.enum.d.ts +0 -0
  611. /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/vertical-merge.enum.d.ts +0 -0
  612. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-data.model.d.ts +0 -0
  613. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-resizer-parameters.model.d.ts +0 -0
  614. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/row-data.model.d.ts +0 -0
  615. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/selection-range.model.d.ts +0 -0
  616. /package/lib/{+shared/editor/core → editor/content}/constants/display-values.const.d.ts +0 -0
  617. /package/lib/{+shared/editor/core → editor/content}/constants/document-info.const.d.ts +0 -0
  618. /package/lib/{+shared/editor/core/models → editor/content/display-data}/indent.model.d.ts +0 -0
  619. /package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/paragraph-info.interface.d.ts +0 -0
  620. /package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/toolbar-styles.interface.d.ts +0 -0
  621. /package/lib/{+shared/editor → editor/content}/helpers/format.helper.d.ts +0 -0
  622. /package/lib/{+shared/editor/core/models → editor/content}/margin.model.d.ts +0 -0
  623. /package/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.d.ts +0 -0
  624. /package/lib/{+shared/editor/core/interfaces → editor/display}/cell.interface.d.ts +0 -0
  625. /package/lib/{+shared/editor/core/helpers → editor/display}/event.helper.d.ts +0 -0
  626. /package/lib/{+shared/editor/core → editor/display}/layers/print.pages.layer.d.ts +0 -0
  627. /package/lib/{+shared/editor/core/interfaces → editor/display}/render-changes.interface.d.ts +0 -0
  628. /package/lib/{+shared/editor/core/interfaces → editor/display}/visible-range.interface.d.ts +0 -0
  629. /package/lib/{+shared/editor/core/models → editor/execution}/distance.model.d.ts +0 -0
  630. /package/lib/{+shared/editor/core → editor/execution}/helpers/dom.helper.d.ts +0 -0
  631. /package/lib/{+shared/editor/core/constants → editor/gadgets/font-metrics}/editor-version.const.d.ts +0 -0
  632. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/font-metrics}/font-metric-size.interface.d.ts +0 -0
  633. /package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operations-history-info.model.d.ts +0 -0
  634. /package/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.d.ts +0 -0
  635. /package/lib/{+shared/editor/core/enums → editor/gadgets/page-break}/break-types.enum.d.ts +0 -0
  636. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/replace.interface.d.ts +0 -0
  637. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/search-iteration.interface.d.ts +0 -0
  638. /package/lib/{+shared/editor/core/constants → editor/gadgets/unicode}/unicode-chars.const.d.ts +0 -0
  639. /package/lib/{+shared/editor/core/helpers → editor/gadgets/unicode}/unicode.helper.d.ts +0 -0
  640. /package/lib/{+shared/enums → editor/interaction}/mode.enum.d.ts +0 -0
  641. /package/lib/{+shared/editor/core/enums → editor/interaction}/mouse-button.enum.d.ts +0 -0
  642. /package/lib/{+shared/editor/core/keyboard → editor/interaction}/text-input.d.ts +0 -0
  643. /package/lib/{+shared/services → editor/operations}/commands.service.d.ts +0 -0
  644. /package/lib/{+shared/editor → editor}/operations/enums/target-type.enum.d.ts +0 -0
  645. /package/lib/{+shared/editor → editor}/operations/helpers/content-operations.helper.d.ts +0 -0
  646. /package/lib/{+shared/editor/core/constants → editor/positioning}/alignments.const.d.ts +0 -0
  647. /package/lib/{+shared/editor/interfaces → editor/positioning}/insert-index.interface.d.ts +0 -0
@@ -0,0 +1,206 @@
1
+ import { CursorLayer } from './layers/cursor.layer';
2
+ import { DistanceModel } from '../execution/distance.model';
3
+ import { DomHelper } from '../execution/helpers/dom.helper';
4
+ import { EventEmitting } from '../core/event-emitting';
5
+ import { PositionHelper } from '../positioning/position.helper';
6
+ import { RenderChangesModel } from './render-changes.model';
7
+ import { RenderLoop } from './renderloop';
8
+ import { SelectionLayer } from './layers/selection.layer';
9
+ import { TextLayer } from './layers/text.layer';
10
+ export class Renderer extends EventEmitting {
11
+ constructor(parentContainer, editorService, session) {
12
+ super();
13
+ this.editorService = editorService;
14
+ this.session = session;
15
+ this.layerConfig = {
16
+ width: 1,
17
+ contentRange: new DistanceModel({ start: 0, end: 0 }),
18
+ minHeight: 1,
19
+ maxHeight: 1,
20
+ offset: 0,
21
+ height: 1,
22
+ scrollTop: 0,
23
+ pages: [],
24
+ visibleRange: {
25
+ startParagraph: 0,
26
+ startLine: 0,
27
+ startScreenLine: 0,
28
+ startScreenFullLine: 0,
29
+ endParagraph: 0,
30
+ endLine: 0,
31
+ endScreenLine: 0,
32
+ endScreenFullLine: 0
33
+ }
34
+ };
35
+ this.changes = new RenderChangesModel();
36
+ this.textareaSize = {
37
+ height: 1,
38
+ width: 1
39
+ };
40
+ this.pagesCountChangedHandler = () => {
41
+ this.loop.schedule({ lines: true, selection: true });
42
+ };
43
+ this.container = parentContainer;
44
+ this.container.className += ' noder-editor';
45
+ this.createContentContainer();
46
+ this.textLayer = new TextLayer(this.content, this.session, this.editorService);
47
+ this.selectionLayer = new SelectionLayer(this.content, 'text-selection', this.session);
48
+ this.cursorLayer = new CursorLayer(this.content, this.session);
49
+ this.loop = new RenderLoop(changes => this.renderChanges(changes));
50
+ this.loop.schedule({ text: true });
51
+ this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);
52
+ }
53
+ renderChanges(changes, force) {
54
+ changes.apply(this.changes);
55
+ this.changes = new RenderChangesModel();
56
+ if (!changes.any && !force) {
57
+ this.changes.apply(changes);
58
+ return;
59
+ }
60
+ // text, scrolling and resize changes can cause the view port size to change
61
+ if (changes.full || changes.size || changes.text || changes.lines || changes.scroll) {
62
+ changes.apply(this.computeLayerConfig());
63
+ DomHelper.translate(this.content, 0, -this.layerConfig.offset);
64
+ DomHelper.setStyle(this.content.style, 'width', `${this.layerConfig.width}px`);
65
+ DomHelper.setStyle(this.content.style, 'height', `${this.layerConfig.height}px`);
66
+ }
67
+ // full
68
+ if (changes.full) {
69
+ this.renderFull();
70
+ this.editorService.rendererUpdated(this.session.sessionId);
71
+ return;
72
+ }
73
+ if (changes.text || changes.scroll) {
74
+ this.renderText();
75
+ }
76
+ if (changes.cursor) {
77
+ this.renderCursor();
78
+ }
79
+ if (changes.marker || changes.selection) {
80
+ this.renderSelection();
81
+ }
82
+ this.editorService.rendererUpdated(this.session.sessionId);
83
+ }
84
+ /**
85
+ * Triggers a partial update of the text, from the range given by the two parameters.
86
+ **/
87
+ updateLines(firstRow, lastRow) {
88
+ // If the change happened offscreen above us then it's possible
89
+ // that a new line wrap will affect the position of the lines on our
90
+ // screen, so they need redrawn.
91
+ if (lastRow < this.layerConfig.contentRange.start || firstRow > this.layerConfig.contentRange.end) {
92
+ return;
93
+ }
94
+ this.loop.schedule({ lines: true });
95
+ }
96
+ moveTextAreaToCursor() {
97
+ if (this.isMousePressed || !this.textarea) {
98
+ return;
99
+ }
100
+ let cursorPosition = this.cursorLayer.cursorPosition;
101
+ if (!cursorPosition) {
102
+ return;
103
+ }
104
+ const posTop = cursorPosition.pageY - this.layerConfig.offset;
105
+ if (posTop < 0 || posTop > this.layerConfig.height - this.textareaSize.height) {
106
+ DomHelper.translate(this.textarea, 0, 0);
107
+ return;
108
+ }
109
+ DomHelper.setStyle(this.textarea.style, 'height', `${this.textareaSize.height}px`);
110
+ DomHelper.setStyle(this.textarea.style, 'width', `${this.textareaSize.width}px`);
111
+ DomHelper.translate(this.textarea, Math.min(cursorPosition.pageX, this.textareaSize.width), Math.min(posTop, this.textareaSize.height));
112
+ }
113
+ updateSelection(range) {
114
+ if (range.isEmpty && this.selectionLayer.marker) {
115
+ this.selectionLayer.marker = null;
116
+ this.loop.schedule({ selection: true });
117
+ }
118
+ else if (!range.isEmpty && !this.selectionLayer.marker?.isEqual(range)) {
119
+ this.selectionLayer.marker = range;
120
+ this.loop.schedule({ selection: true });
121
+ }
122
+ }
123
+ /**
124
+ * Triggers a full update of the text, for all the rows.
125
+ **/
126
+ updateText() {
127
+ this.loop.schedule({ text: true });
128
+ }
129
+ /**
130
+ * Triggers a full update of all the layers, for all the rows.
131
+ **/
132
+ updateFull(force) {
133
+ if (force) {
134
+ this.renderChanges(new RenderChangesModel({ full: true }), true);
135
+ return;
136
+ }
137
+ this.loop.schedule({ full: true });
138
+ }
139
+ updateCursor() {
140
+ this.loop.schedule({ cursor: true });
141
+ }
142
+ screenToTextCoordinates(x, y) {
143
+ const screen = PositionHelper.pixelToScreen(this.session, x, y, this.container.getBoundingClientRect());
144
+ return PositionHelper.screenToDocument(this.session, screen.row, screen.column);
145
+ }
146
+ showCursor() {
147
+ this.cursorLayer.showCursor();
148
+ DomHelper.addCssClass(this.container, 'ace_focus');
149
+ this.editorService.rendererUpdated(this.session.sessionId);
150
+ }
151
+ hideCursor() {
152
+ this.cursorLayer.hideCursor();
153
+ DomHelper.removeCssClass(this.container, 'ace_focus');
154
+ this.editorService.rendererUpdated(this.session.sessionId);
155
+ }
156
+ destroy() {
157
+ this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);
158
+ this.textLayer.destroy();
159
+ DomHelper.removeChildren(this.container);
160
+ }
161
+ renderFull() {
162
+ this.textLayer.updateLines(this.layerConfig);
163
+ this.selectionLayer.update(this.layerConfig);
164
+ this.cursorLayer.update(this.layerConfig);
165
+ this.moveTextAreaToCursor();
166
+ }
167
+ renderText() {
168
+ this.textLayer.updateLines(this.layerConfig);
169
+ this.cursorLayer.detectVisibility();
170
+ }
171
+ renderCursor() {
172
+ this.cursorLayer.update(this.layerConfig);
173
+ this.moveTextAreaToCursor();
174
+ }
175
+ renderSelection() {
176
+ this.selectionLayer.update(this.layerConfig);
177
+ this.cursorLayer.detectVisibility();
178
+ }
179
+ computeLayerConfig() {
180
+ const pagesWrap = this.session.pagesWrap;
181
+ const maxHeight = pagesWrap.allPagesHeight;
182
+ const minHeight = pagesWrap.minHeight;
183
+ const changes = new RenderChangesModel({ scroll: true });
184
+ this.layerConfig = {
185
+ width: this.session.pagesWrap.contentWidth + pagesWrap.documentMargin.left + pagesWrap.documentMargin.right,
186
+ height: pagesWrap.defaultVerticalData.contentHeight,
187
+ contentRange: new DistanceModel({ start: 0, end: pagesWrap.paragraphs.length - 1 }),
188
+ minHeight,
189
+ maxHeight,
190
+ offset: 0,
191
+ scrollTop: this.session.scrollTop
192
+ };
193
+ return changes;
194
+ }
195
+ createContentContainer() {
196
+ this.content = document.createElement('div');
197
+ this.content.className = 'noder-content';
198
+ if (this.container.firstChild) {
199
+ this.container.firstChild.appendChild(this.content);
200
+ }
201
+ else {
202
+ this.container.appendChild(this.content);
203
+ }
204
+ }
205
+ }
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZGlzcGxheS9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxNQUFNLE9BQU8sUUFBUyxTQUFRLGFBQWE7SUE2Q3ZDLFlBQVksZUFBNEIsRUFBVSxhQUE0QixFQUFTLE9BQW9CO1FBQ3ZHLEtBQUssRUFBRSxDQUFDO1FBRHNDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQTVCM0csZ0JBQVcsR0FBaUI7WUFDeEIsS0FBSyxFQUFFLENBQUM7WUFDUixZQUFZLEVBQUUsSUFBSSxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxTQUFTLEVBQUUsQ0FBQztZQUNaLFNBQVMsRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMs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RyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25GLFNBQVM7WUFDVCxTQUFTO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1NBQ3BDLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBTU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJzb3JMYXllciB9IGZyb20gJy4vbGF5ZXJzL2N1cnNvci5sYXllcic7XG5pbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuLi9wb3NpdGlvbmluZy9jdXJzb3ItcGFyYWdyYXBoJztcbmltcG9ydCB7IERpc3RhbmNlTW9kZWwgfSBmcm9tICcuLi9leGVjdXRpb24vZGlzdGFuY2UubW9kZWwnO1xuaW1wb3J0IHsgRG9tSGVscGVyIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2hlbHBlcnMvZG9tLmhlbHBlcic7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9leGVjdXRpb24vZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRpbmcgfSBmcm9tICcuLi9jb3JlL2V2ZW50LWVtaXR0aW5nJztcbmltcG9ydCB7IElMYXllckNvbmZpZyB9IGZyb20gJy4vbGF5ZXJzL2xheWVyLmNvbmZpZyc7XG5pbXBvcnQgeyBQb3NpdGlvbkhlbHBlciB9IGZyb20gJy4uL3Bvc2l0aW9uaW5nL3Bvc2l0aW9uLmhlbHBlcic7XG5pbXBvcnQgeyBSYW5nZSB9IGZyb20gJy4uL3Bvc2l0aW9uaW5nL3JhbmdlJztcbmltcG9ydCB7IFJlbmRlckNoYW5nZXNNb2RlbCB9IGZyb20gJy4vcmVuZGVyLWNoYW5nZXMubW9kZWwnO1xuaW1wb3J0IHsgUmVuZGVyTG9vcCB9IGZyb20gJy4vcmVuZGVybG9vcCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25MYXllciB9IGZyb20gJy4vbGF5ZXJzL3NlbGVjdGlvbi5sYXllcic7XG5pbXBvcnQgeyBUZXh0TGF5ZXIgfSBmcm9tICcuL2xheWVycy90ZXh0LmxheWVyJztcblxuZXhwb3J0IGNsYXNzIFJlbmRlcmVyIGV4dGVuZHMgRXZlbnRFbWl0dGluZyB7XG4gICAgaXNNb3VzZVByZXNzZWQ6IGJvb2xlYW47XG5cbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgY29udGVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBjdXJzb3JMYXllcjogQ3Vyc29yTGF5ZXI7XG5cbiAgICB0ZXh0TGF5ZXI6IFRleHRMYXllcjtcblxuICAgIHNlbGVjdGlvbkxheWVyOiBTZWxlY3Rpb25MYXllcjtcblxuICAgIGxvb3A6IFJlbmRlckxvb3A7XG5cbiAgICB0ZXh0YXJlYTogSFRNTEVsZW1lbnQ7XG5cbiAgICBsYXllckNvbmZpZzogSUxheWVyQ29uZmlnID0ge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgY29udGVudFJhbmdlOiBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiAwLCBlbmQ6IDAgfSksXG4gICAgICAgIG1pbkhlaWdodDogMSxcbiAgICAgICAgbWF4SGVpZ2h0OiAxLFxuICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgc2Nyb2xsVG9wOiAwLFxuICAgICAgICBwYWdlczogW10sXG4gICAgICAgIHZpc2libGVSYW5nZToge1xuICAgICAgICAgICAgc3RhcnRQYXJhZ3JhcGg6IDAsXG4gICAgICAgICAgICBzdGFydExpbmU6IDAsXG4gICAgICAgICAgICBzdGFydFNjcmVlbkxpbmU6IDAsXG4gICAgICAgICAgICBzdGFydFNjcmVlbkZ1bGxMaW5lOiAwLFxuICAgICAgICAgICAgZW5kUGFyYWdyYXBoOiAwLFxuICAgICAgICAgICAgZW5kTGluZTogMCxcbiAgICAgICAgICAgIGVuZFNjcmVlbkxpbmU6IDAsXG4gICAgICAgICAgICBlbmRTY3JlZW5GdWxsTGluZTogMFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNoYW5nZXMgPSBuZXcgUmVuZGVyQ2hhbmdlc01vZGVsKCk7XG5cbiAgICByZWFkb25seSB0ZXh0YXJlYVNpemUgPSB7XG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgd2lkdGg6IDFcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocGFyZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCwgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwdWJsaWMgc2Vzc2lvbjogRWRpdFNlc3Npb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBwYXJlbnRDb250YWluZXI7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTmFtZSArPSAnIG5vZGVyLWVkaXRvcic7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29udGVudENvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLnRleHRMYXllciA9IG5ldyBUZXh0TGF5ZXIodGhpcy5jb250ZW50LCB0aGlzLnNlc3Npb24sIHRoaXMuZWRpdG9yU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIgPSBuZXcgU2VsZWN0aW9uTGF5ZXIodGhpcy5jb250ZW50LCAndGV4dC1zZWxlY3Rpb24nLCB0aGlzLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmN1cnNvckxheWVyID0gbmV3IEN1cnNvckxheWVyKHRoaXMuY29udGVudCwgdGhpcy5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5sb29wID0gbmV3IFJlbmRlckxvb3AoY2hhbmdlcyA9PiB0aGlzLnJlbmRlckNoYW5nZXMoY2hhbmdlcykpO1xuICAgICAgICB0aGlzLmxvb3Auc2NoZWR1bGUoeyB0ZXh0OiB0cnVlIH0pO1xuICAgICAgICB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cblxuICAgIHJlbmRlckNoYW5nZXMoY2hhbmdlczogUmVuZGVyQ2hhbmdlc01vZGVsLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY2hhbmdlcy5hcHBseSh0aGlzLmNoYW5nZXMpO1xuICAgICAgICB0aGlzLmNoYW5nZXMgPSBuZXcgUmVuZGVyQ2hhbmdlc01vZGVsKCk7XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VzLmFueSAmJiAhZm9yY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5hcHBseShjaGFuZ2VzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGV4dCwgc2Nyb2xsaW5nIGFuZCByZXNpemUgY2hhbmdlcyBjYW4gY2F1c2UgdGhlIHZpZXcgcG9ydCBzaXplIHRvIGNoYW5nZVxuICAgICAgICBpZiAoY2hhbmdlcy5mdWxsIHx8IGNoYW5nZXMuc2l6ZSB8fCBjaGFuZ2VzLnRleHQgfHwgY2hhbmdlcy5saW5lcyB8fCBjaGFuZ2VzLnNjcm9sbCkge1xuICAgICAgICAgICAgY2hhbmdlcy5hcHBseSh0aGlzLmNvbXB1dGVMYXllckNvbmZpZygpKTtcblxuICAgICAgICAgICAgRG9tSGVscGVyLnRyYW5zbGF0ZSh0aGlzLmNvbnRlbnQsIDAsIC10aGlzLmxheWVyQ29uZmlnLm9mZnNldCk7XG5cbiAgICAgICAgICAgIERvbUhlbHBlci5zZXRTdHlsZSh0aGlzLmNvbnRlbnQuc3R5bGUsICd3aWR0aCcsIGAke3RoaXMubGF5ZXJDb25maWcud2lkdGh9cHhgKTtcbiAgICAgICAgICAgIERvbUhlbHBlci5zZXRTdHlsZSh0aGlzLmNvbnRlbnQuc3R5bGUsICdoZWlnaHQnLCBgJHt0aGlzLmxheWVyQ29uZmlnLmhlaWdodH1weGApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZnVsbFxuICAgICAgICBpZiAoY2hhbmdlcy5mdWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckZ1bGwoKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZW5kZXJlclVwZGF0ZWQodGhpcy5zZXNzaW9uLnNlc3Npb25JZCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnRleHQgfHwgY2hhbmdlcy5zY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVGV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuY3Vyc29yKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckN1cnNvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMubWFya2VyIHx8IGNoYW5nZXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlbmRlcmVyVXBkYXRlZCh0aGlzLnNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBhIHBhcnRpYWwgdXBkYXRlIG9mIHRoZSB0ZXh0LCBmcm9tIHRoZSByYW5nZSBnaXZlbiBieSB0aGUgdHdvIHBhcmFtZXRlcnMuXG4gICAgICoqL1xuICAgIHVwZGF0ZUxpbmVzKGZpcnN0Um93OiBudW1iZXIsIGxhc3RSb3c6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBJZiB0aGUgY2hhbmdlIGhhcHBlbmVkIG9mZnNjcmVlbiBhYm92ZSB1cyB0aGVuIGl0J3MgcG9zc2libGVcbiAgICAgICAgLy8gdGhhdCBhIG5ldyBsaW5lIHdyYXAgd2lsbCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9mIHRoZSBsaW5lcyBvbiBvdXJcbiAgICAgICAgLy8gc2NyZWVuLCBzbyB0aGV5IG5lZWQgcmVkcmF3bi5cbiAgICAgICAgaWYgKGxhc3RSb3cgPCB0aGlzLmxheWVyQ29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCB8fCBmaXJzdFJvdyA+IHRoaXMubGF5ZXJDb25maWcuY29udGVudFJhbmdlLmVuZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb29wLnNjaGVkdWxlKHsgbGluZXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbW92ZVRleHRBcmVhVG9DdXJzb3IoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW91c2VQcmVzc2VkIHx8ICF0aGlzLnRleHRhcmVhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3Vyc29yUG9zaXRpb24gPSB0aGlzLmN1cnNvckxheWVyLmN1cnNvclBvc2l0aW9uO1xuICAgICAgICBpZiAoIWN1cnNvclBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NUb3AgPSBjdXJzb3JQb3NpdGlvbi5wYWdlWSAtIHRoaXMubGF5ZXJDb25maWcub2Zmc2V0O1xuICAgICAgICBpZiAocG9zVG9wIDwgMCB8fCBwb3NUb3AgPiB0aGlzLmxheWVyQ29uZmlnLmhlaWdodCAtIHRoaXMudGV4dGFyZWFTaXplLmhlaWdodCkge1xuICAgICAgICAgICAgRG9tSGVscGVyLnRyYW5zbGF0ZSh0aGlzLnRleHRhcmVhLCAwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIERvbUhlbHBlci5zZXRTdHlsZSh0aGlzLnRleHRhcmVhLnN0eWxlLCAnaGVpZ2h0JywgYCR7dGhpcy50ZXh0YXJlYVNpemUuaGVpZ2h0fXB4YCk7XG4gICAgICAgIERvbUhlbHBlci5zZXRTdHlsZSh0aGlzLnRleHRhcmVhLnN0eWxlLCAnd2lkdGgnLCBgJHt0aGlzLnRleHRhcmVhU2l6ZS53aWR0aH1weGApO1xuICAgICAgICBEb21IZWxwZXIudHJhbnNsYXRlKFxuICAgICAgICAgICAgdGhpcy50ZXh0YXJlYSxcbiAgICAgICAgICAgIE1hdGgubWluKGN1cnNvclBvc2l0aW9uLnBhZ2VYLCB0aGlzLnRleHRhcmVhU2l6ZS53aWR0aCksXG4gICAgICAgICAgICBNYXRoLm1pbihwb3NUb3AsIHRoaXMudGV4dGFyZWFTaXplLmhlaWdodClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTZWxlY3Rpb24ocmFuZ2U6IFJhbmdlKTogdm9pZCB7XG4gICAgICAgIGlmIChyYW5nZS5pc0VtcHR5ICYmIHRoaXMuc2VsZWN0aW9uTGF5ZXIubWFya2VyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLm1hcmtlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmxvb3Auc2NoZWR1bGUoeyBzZWxlY3Rpb246IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJhbmdlLmlzRW1wdHkgJiYgIXRoaXMuc2VsZWN0aW9uTGF5ZXIubWFya2VyPy5pc0VxdWFsKHJhbmdlKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5tYXJrZXIgPSByYW5nZTtcbiAgICAgICAgICAgIHRoaXMubG9vcC5zY2hlZHVsZSh7IHNlbGVjdGlvbjogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIGEgZnVsbCB1cGRhdGUgb2YgdGhlIHRleHQsIGZvciBhbGwgdGhlIHJvd3MuXG4gICAgICoqL1xuICAgIHVwZGF0ZVRleHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9vcC5zY2hlZHVsZSh7IHRleHQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgYSBmdWxsIHVwZGF0ZSBvZiBhbGwgdGhlIGxheWVycywgZm9yIGFsbCB0aGUgcm93cy5cbiAgICAgKiovXG4gICAgdXBkYXRlRnVsbChmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGZvcmNlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNoYW5nZXMobmV3IFJlbmRlckNoYW5nZXNNb2RlbCh7IGZ1bGw6IHRydWUgfSksIHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvb3Auc2NoZWR1bGUoeyBmdWxsOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUN1cnNvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb29wLnNjaGVkdWxlKHsgY3Vyc29yOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHNjcmVlblRvVGV4dENvb3JkaW5hdGVzKHg6IG51bWJlciwgeTogbnVtYmVyKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgY29uc3Qgc2NyZWVuID0gUG9zaXRpb25IZWxwZXIucGl4ZWxUb1NjcmVlbih0aGlzLnNlc3Npb24sIHgsIHksIHRoaXMuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudCh0aGlzLnNlc3Npb24sIHNjcmVlbi5yb3csIHNjcmVlbi5jb2x1bW4pO1xuICAgIH1cblxuICAgIHNob3dDdXJzb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Vyc29yTGF5ZXIuc2hvd0N1cnNvcigpO1xuICAgICAgICBEb21IZWxwZXIuYWRkQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsICdhY2VfZm9jdXMnKTtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlbmRlcmVyVXBkYXRlZCh0aGlzLnNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBoaWRlQ3Vyc29yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnNvckxheWVyLmhpZGVDdXJzb3IoKTtcbiAgICAgICAgRG9tSGVscGVyLnJlbW92ZUNzc0NsYXNzKHRoaXMuY29udGFpbmVyLCAnYWNlX2ZvY3VzJyk7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZW5kZXJlclVwZGF0ZWQodGhpcy5zZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlc0NvdW50Q2hhbmdlZCcsIHRoaXMucGFnZXNDb3VudENoYW5nZWRIYW5kbGVyKTtcbiAgICAgICAgdGhpcy50ZXh0TGF5ZXIuZGVzdHJveSgpO1xuICAgICAgICBEb21IZWxwZXIucmVtb3ZlQ2hpbGRyZW4odGhpcy5jb250YWluZXIpO1xuICAgIH1cblxuICAgIHJlbmRlckZ1bGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dExheWVyLnVwZGF0ZUxpbmVzKHRoaXMubGF5ZXJDb25maWcpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKTtcbiAgICAgICAgdGhpcy5jdXJzb3JMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyk7XG4gICAgICAgIHRoaXMubW92ZVRleHRBcmVhVG9DdXJzb3IoKTtcbiAgICB9XG5cbiAgICByZW5kZXJUZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHRMYXllci51cGRhdGVMaW5lcyh0aGlzLmxheWVyQ29uZmlnKTtcbiAgICAgICAgdGhpcy5jdXJzb3JMYXllci5kZXRlY3RWaXNpYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ3Vyc29yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnNvckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKTtcbiAgICAgICAgdGhpcy5tb3ZlVGV4dEFyZWFUb0N1cnNvcigpO1xuICAgIH1cblxuICAgIHJlbmRlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyk7XG4gICAgICAgIHRoaXMuY3Vyc29yTGF5ZXIuZGV0ZWN0VmlzaWJpbGl0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZUxheWVyQ29uZmlnKCk6IFJlbmRlckNoYW5nZXNNb2RlbCB7XG4gICAgICAgIGNvbnN0IHBhZ2VzV3JhcCA9IHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXA7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHBhZ2VzV3JhcC5hbGxQYWdlc0hlaWdodDtcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0ID0gcGFnZXNXcmFwLm1pbkhlaWdodDtcblxuICAgICAgICBjb25zdCBjaGFuZ2VzID0gbmV3IFJlbmRlckNoYW5nZXNNb2RlbCh7IHNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5sYXllckNvbmZpZyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmNvbnRlbnRXaWR0aCArIHBhZ2VzV3JhcC5kb2N1bWVudE1hcmdpbi5sZWZ0ICsgcGFnZXNXcmFwLmRvY3VtZW50TWFyZ2luLnJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OiBwYWdlc1dyYXAuZGVmYXVsdFZlcnRpY2FsRGF0YS5jb250ZW50SGVpZ2h0LFxuICAgICAgICAgICAgY29udGVudFJhbmdlOiBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiAwLCBlbmQ6IHBhZ2VzV3JhcC5wYXJhZ3JhcGhzLmxlbmd0aCAtIDEgfSksXG4gICAgICAgICAgICBtaW5IZWlnaHQsXG4gICAgICAgICAgICBtYXhIZWlnaHQsXG4gICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICBzY3JvbGxUb3A6IHRoaXMuc2Vzc2lvbi5zY3JvbGxUb3BcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gY2hhbmdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5sb29wLnNjaGVkdWxlKHsgbGluZXM6IHRydWUsIHNlbGVjdGlvbjogdHJ1ZSB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250ZW50Q29udGFpbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5jb250ZW50LmNsYXNzTmFtZSA9ICdub2Rlci1jb250ZW50JztcblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,187 @@
1
+ import { BreakHelper } from '../gadgets/page-break/break.helper';
2
+ import { ContentStyleHelper } from '../content/helpers/content-style.helper';
3
+ import { DistanceModel } from '../execution/distance.model';
4
+ import { DomHelper } from '../execution/helpers/dom.helper';
5
+ import { FormatExtModel } from '../content/display-data/format-ext.model';
6
+ import { HYPERLINK_FONT_COLOR, HYPERLINK_HEADING_STYLE_ID, NEW_LINE_MARKUP } from '../content/constants/editor.const';
7
+ import { ScalingHelper } from '../content/helpers/scaling.helper';
8
+ import { TextStyleModel } from '../../models/generated/text-style.model';
9
+ export class RenderingHelper {
10
+ static createLineElement(lineInfo, numberingOffsetLeft, scalingRatio) {
11
+ let lineEl = document.createElement('div');
12
+ lineEl.className = 'noder-line';
13
+ if (lineInfo) {
14
+ const paddingLeft = ScalingHelper.scale(lineInfo.paddingLeft - numberingOffsetLeft, scalingRatio);
15
+ const marginLeft = paddingLeft < 0 ? paddingLeft : 0;
16
+ lineEl.setAttribute('style',
17
+ // eslint-disable-next-line prettier/prettier
18
+ `padding-left:${paddingLeft}px;height:${lineInfo.height + lineInfo.offsetAfter}px;margin-top:${lineInfo.offsetBefore}px;margin-bottom:${lineInfo.endPageOffset}px;margin-left:${marginLeft}px;background-color:${lineInfo.backgroundColor}`);
19
+ lineEl.setAttribute('screen-index', `${lineInfo.screenLine}`);
20
+ }
21
+ return lineEl;
22
+ }
23
+ static renderContentSimpleLine(domContent, formatsExt, rowDistance, customContentService, customComponents, breaks = []) {
24
+ const valueFragment = DomHelper.createFragment(domContent.currentElement);
25
+ for (const formatExt of formatsExt) {
26
+ const fragmentDocumentStartIndex = rowDistance.start > formatExt.startIndex ? rowDistance.start : formatExt.startIndex;
27
+ const fragmentDocumentEndIndex = formatExt.endIndex > rowDistance.end ? rowDistance.end : formatExt.endIndex;
28
+ const fragmentDocumentDistance = new DistanceModel({ start: fragmentDocumentStartIndex, end: fragmentDocumentEndIndex });
29
+ const fragmentStartIndex = rowDistance.start > formatExt.startIndex ? rowDistance.start - formatExt.startIndex : 0;
30
+ const fragmentEndIndex = formatExt.endIndex > rowDistance.end ? rowDistance.end - formatExt.startIndex : formatExt.endIndex - formatExt.startIndex;
31
+ const fragmentDistance = new DistanceModel({ start: fragmentStartIndex, end: fragmentEndIndex });
32
+ this.renderFormatContent(valueFragment, formatExt, fragmentDocumentDistance, fragmentDistance, customContentService, customComponents, breaks);
33
+ }
34
+ domContent.parentNode.appendChild(valueFragment);
35
+ }
36
+ static renderContentWrappedLine(domContent, splits, currentParagraph, formatsExt, distance, customContentService, customComponents, scalingRatio, breaks = []) {
37
+ let splitIndex = 0;
38
+ const numberingOffsetLeft = currentParagraph.numberingData.numberingId === null
39
+ ? 0
40
+ : currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;
41
+ let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
42
+ domContent.parentNode.appendChild(lineEl);
43
+ const valueFragment = DomHelper.createFragment(domContent.currentElement);
44
+ let paragraphChars = 0;
45
+ let split = splits[splitIndex];
46
+ for (const formatExt of formatsExt) {
47
+ const beforeSplitIndex = split ? split - 1 : distance.end - distance.start;
48
+ const beforeSplitDocumentIndex = distance.start + beforeSplitIndex;
49
+ const fragmentDocumentStartIndex = distance.start + paragraphChars;
50
+ const fragmentDocumentEndIndex = formatExt.endIndex < beforeSplitDocumentIndex ? formatExt.endIndex : beforeSplitDocumentIndex;
51
+ const fragmentDocumentDistance = new DistanceModel({ start: fragmentDocumentStartIndex, end: fragmentDocumentEndIndex });
52
+ const fragmentStartIndex = distance.start > formatExt.startIndex ? distance.start - formatExt.startIndex : 0;
53
+ const fragmentEndIndex = formatExt.endIndex < beforeSplitDocumentIndex
54
+ ? fragmentStartIndex + formatExt.endIndex - formatExt.startIndex
55
+ : distance.start + beforeSplitIndex - formatExt.startIndex;
56
+ const fragmentDistance = new DistanceModel({ start: fragmentStartIndex, end: fragmentEndIndex });
57
+ paragraphChars += this.renderFormatContent(valueFragment, formatExt, fragmentDocumentDistance, fragmentDistance, customContentService, customComponents, breaks);
58
+ lineEl.appendChild(valueFragment);
59
+ let nextFragmentStartIndex = fragmentEndIndex + 1;
60
+ while (paragraphChars === split && nextFragmentStartIndex !== distance.end) {
61
+ split = splits[++splitIndex];
62
+ const nextFragmentDocumentStartIndex = fragmentDocumentStartIndex + nextFragmentStartIndex - fragmentStartIndex;
63
+ lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
64
+ if (split > formatExt.endIndex) {
65
+ const nextFragmentEndIndex = formatExt.content.length - 1;
66
+ const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });
67
+ const nextFragmentDocumentEndIndex = nextFragmentDocumentStartIndex + nextFragmentEndIndex - nextFragmentStartIndex;
68
+ const nextFragmentDocumentDistance = new DistanceModel({
69
+ start: nextFragmentDocumentStartIndex,
70
+ end: nextFragmentDocumentEndIndex
71
+ });
72
+ paragraphChars += this.renderFormatContent(valueFragment, formatExt, nextFragmentDocumentDistance, nextFragmentDistance, customContentService, customComponents, breaks);
73
+ lineEl.appendChild(valueFragment);
74
+ domContent.parentNode.appendChild(lineEl);
75
+ break;
76
+ }
77
+ const textIndexLength = RenderingHelper.getTextIndexLengthForInsert(formatExt, nextFragmentDocumentStartIndex, distance, split, paragraphChars);
78
+ const nextFragmentDocumentEndIndex = nextFragmentDocumentStartIndex + textIndexLength;
79
+ const nextFragmentEndIndex = nextFragmentStartIndex + textIndexLength;
80
+ const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });
81
+ const nextFragmentDocumentDistance = new DistanceModel({
82
+ start: nextFragmentDocumentStartIndex,
83
+ end: nextFragmentDocumentEndIndex
84
+ });
85
+ const renderedChars = this.renderFormatContent(valueFragment, formatExt, nextFragmentDocumentDistance, nextFragmentDistance, customContentService, customComponents, breaks);
86
+ lineEl.appendChild(valueFragment);
87
+ domContent.parentNode.appendChild(lineEl);
88
+ nextFragmentStartIndex += renderedChars;
89
+ paragraphChars += renderedChars;
90
+ }
91
+ }
92
+ }
93
+ static renderNumberingMarker(paragraph, layerElement, scalingRatio) {
94
+ const markerHeight = paragraph.numberingData.height;
95
+ const markerLineInfo = {
96
+ paddingLeft: paragraph.numberingData.paddingLeft,
97
+ height: markerHeight,
98
+ offsetBefore: 0,
99
+ firstLinePageOffset: 0,
100
+ endPageOffset: 0,
101
+ offsetAfter: 0,
102
+ screenLine: 0
103
+ };
104
+ const numberingLineEl = this.createLineElement(markerLineInfo, 0, scalingRatio);
105
+ const markerFragment = DomHelper.createFragment(layerElement);
106
+ const marker = paragraph.numberingData.marker;
107
+ const markerExtModel = new FormatExtModel({
108
+ textStyle: paragraph.numberingData.markerTextStyle,
109
+ content: marker
110
+ });
111
+ this.renderText(markerFragment, markerExtModel, marker);
112
+ numberingLineEl.appendChild(markerFragment);
113
+ return numberingLineEl;
114
+ }
115
+ static createDivContainer(className) {
116
+ const containerElement = document.createElement('div');
117
+ containerElement.className = className;
118
+ return containerElement;
119
+ }
120
+ static renderFormatContent(fragment, formatExt, fragmentDocumentDistance, fragmentDistance, customContentService, customComponents, breaks) {
121
+ let textFragment = formatExt.content.substring(fragmentDistance.start, fragmentDistance.end + 1);
122
+ if (!textFragment) {
123
+ return 0;
124
+ }
125
+ const textFragmentWithoutBreaks = BreakHelper.removeBreakMarker(breaks, textFragment, fragmentDocumentDistance.start);
126
+ if (customContentService.isFragmentContainComponent(customComponents, textFragment, fragmentDocumentDistance)) {
127
+ this.renderTextWithCustomContent(fragment, formatExt, fragmentDocumentDistance, textFragmentWithoutBreaks, customContentService, customComponents);
128
+ }
129
+ else {
130
+ RenderingHelper.renderText(fragment, formatExt, textFragmentWithoutBreaks);
131
+ }
132
+ return textFragment.length;
133
+ }
134
+ static renderTextWithCustomContent(fragment, formatExt, fragmentDocumentDistance, textFragment, customContentService, customComponents) {
135
+ const components = customContentService.getComponents(customComponents, fragmentDocumentDistance);
136
+ if (!components.length) {
137
+ RenderingHelper.renderText(fragment, formatExt, textFragment);
138
+ return;
139
+ }
140
+ let newTextFragmentStartIndex = fragmentDocumentDistance.start;
141
+ let nextTextFragment = textFragment;
142
+ for (const component of components) {
143
+ const textBeforeElement = nextTextFragment.substring(0, component.instance.insertIndex - newTextFragmentStartIndex);
144
+ nextTextFragment = nextTextFragment.substring(textBeforeElement.length + 1, nextTextFragment.length);
145
+ newTextFragmentStartIndex = newTextFragmentStartIndex + (textBeforeElement.length ? textBeforeElement.length + 1 : 1);
146
+ if (textBeforeElement.length) {
147
+ RenderingHelper.renderText(fragment, formatExt, textBeforeElement);
148
+ }
149
+ this.attachComponent(fragment, component, customContentService);
150
+ }
151
+ if (nextTextFragment.length) {
152
+ RenderingHelper.renderText(fragment, formatExt, nextTextFragment);
153
+ }
154
+ }
155
+ static renderText(fragment, formatExt, textFragment) {
156
+ const span = document.createElement('span');
157
+ const textStyle = new TextStyleModel({ ...formatExt.textStyle });
158
+ if (textFragment === NEW_LINE_MARKUP) {
159
+ span.className = 'paragraph-symbol';
160
+ }
161
+ if (textStyle.headingStyleId === HYPERLINK_HEADING_STYLE_ID) {
162
+ textStyle.fontColor = HYPERLINK_FONT_COLOR;
163
+ textStyle.underline = true;
164
+ span.classList.add('hyperlink');
165
+ span.onmousemove = event => {
166
+ if (event.ctrlKey) {
167
+ span.classList.add('hyperlink-hover');
168
+ }
169
+ else {
170
+ span.classList.remove('hyperlink-hover');
171
+ }
172
+ };
173
+ span.onmouseleave = () => span.classList.remove('hyperlink-hover');
174
+ }
175
+ span.textContent = textFragment;
176
+ span.setAttribute('style', ContentStyleHelper.getTextStylesString(textStyle));
177
+ fragment.appendChild(span);
178
+ }
179
+ static getTextIndexLengthForInsert(formatExt, fragmentDocumentStartIndex, paragraphDistance, split, paragraphChars) {
180
+ const maxLength = Math.max(paragraphDistance.end - paragraphChars - paragraphDistance.start, 0);
181
+ return (Math.min(split - paragraphChars || Number.MAX_VALUE, maxLength, formatExt.endIndex - fragmentDocumentStartIndex + 1, formatExt.content.length) - 1);
182
+ }
183
+ static attachComponent(fragment, component, customContentService) {
184
+ customContentService.componentService.attachComponent(fragment, component);
185
+ }
186
+ }
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9kaXNwbGF5L3JlbmRlcmluZy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd0SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFzQixFQUFFLG1CQUEyQixFQUFFLFlBQW9CO1FBQzlGLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFFaEMsSUFBSSxRQUFRLEVBQUU7WUFDVixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbEcsTUFBTSxVQUFVLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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QUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUN0QyxTQUF5QixFQUN6QiwwQkFBa0MsRUFDbEMsaUJBQWdDLEVBQ2hDLEtBQWEsRUFDYixjQUFzQjtRQUV0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sQ0FDSCxJQUFJLENBQUMsR0FBRyxDQUNKLEtBQUssR0FBRyxjQUFjLElBQUksTUFBTSxDQUFDLFNBQVMsRUFDMUMsU0FBUyxFQUNULFNBQVMsQ0FBQyxRQUFRLEdBQUcsMEJBQTBCLEdBQUcsQ0FBQyxFQUNuRCxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDM0IsR0FBRyxDQUFDLENBQ1IsQ0FBQztJQUNOLENBQUM7SUFFUyxNQUFNLENBQUMsZUFBZSxDQUM1QixRQUEwQixFQUMxQixTQUFnQyxFQUNoQyxvQkFBMEM7UUFFMUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnJlYWtIZWxwZXIgfSBmcm9tICcuLi9nYWRnZXRzL3BhZ2UtYnJlYWsvYnJlYWsuaGVscGVyJztcbmltcG9ydCB7IEJyZWFrTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2JyZWFrLm1vZGVsJztcbmltcG9ydCB7IENvbnRlbnRTdHlsZUhlbHBlciB9IGZyb20gJy4uL2NvbnRlbnQvaGVscGVycy9jb250ZW50LXN0eWxlLmhlbHBlcic7XG5pbXBvcnQgeyBDdXN0b21Db250ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmVkL3NlcnZpY2VzL2N1c3RvbS1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlzdGFuY2VNb2RlbCB9IGZyb20gJy4uL2V4ZWN1dGlvbi9kaXN0YW5jZS5tb2RlbCc7XG5pbXBvcnQgeyBEb21IZWxwZXIgfSBmcm9tICcuLi9leGVjdXRpb24vaGVscGVycy9kb20uaGVscGVyJztcbmltcG9ydCB7IEZvcm1hdEV4dE1vZGVsIH0gZnJvbSAnLi4vY29udGVudC9kaXNwbGF5LWRhdGEvZm9ybWF0LWV4dC5tb2RlbCc7XG5pbXBvcnQgeyBIWVBFUkxJTktfRk9OVF9DT0xPUiwgSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQsIE5FV19MSU5FX01BUktVUCB9IGZyb20gJy4uL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBJQ3VzdG9tQ29tcG9uZW50cyB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmVkL2N1c3RvbS1jb21wb25lbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYXJhZ3JhcGggfSBmcm9tICcuLi9jb250ZW50L2Rpc3BsYXktZGF0YS9wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgU2NhbGluZ0hlbHBlciB9IGZyb20gJy4uL2NvbnRlbnQvaGVscGVycy9zY2FsaW5nLmhlbHBlcic7XG5pbXBvcnQgeyBUZXh0TGluZUluZm8gfSBmcm9tICcuLi9jb250ZW50L2Rpc3BsYXktZGF0YS90ZXh0LWxpbmUtaW5mbyc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJpbmdIZWxwZXIge1xuICAgIHN0YXRpYyBjcmVhdGVMaW5lRWxlbWVudChsaW5lSW5mbzogVGV4dExpbmVJbmZvLCBudW1iZXJpbmdPZmZzZXRMZWZ0OiBudW1iZXIsIHNjYWxpbmdSYXRpbzogbnVtYmVyKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBsZXQgbGluZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGxpbmVFbC5jbGFzc05hbWUgPSAnbm9kZXItbGluZSc7XG5cbiAgICAgICAgaWYgKGxpbmVJbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IFNjYWxpbmdIZWxwZXIuc2NhbGUobGluZUluZm8ucGFkZGluZ0xlZnQgLSBudW1iZXJpbmdPZmZzZXRMZWZ0LCBzY2FsaW5nUmF0aW8pO1xuICAgICAgICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IHBhZGRpbmdMZWZ0IDwgMCA/IHBhZGRpbmdMZWZ0IDogMDtcblxuICAgICAgICAgICAgbGluZUVsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAgIGBwYWRkaW5nLWxlZnQ6JHtwYWRkaW5nTGVmdH1weDtoZWlnaHQ6JHtsaW5lSW5mby5oZWlnaHQgKyBsaW5lSW5mby5vZmZzZXRBZnRlcn1weDttYXJnaW4tdG9wOiR7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLm9mZnNldEJlZm9yZVxuICAgICAgICAgICAgICAgIH1weDttYXJnaW4tYm90dG9tOiR7bGluZUluZm8uZW5kUGFnZU9mZnNldH1weDttYXJnaW4tbGVmdDoke21hcmdpbkxlZnR9cHg7YmFja2dyb3VuZC1jb2xvcjoke2xpbmVJbmZvLmJhY2tncm91bmRDb2xvcn1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGluZUVsLnNldEF0dHJpYnV0ZSgnc2NyZWVuLWluZGV4JywgYCR7bGluZUluZm8uc2NyZWVuTGluZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lRWw7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbmRlckNvbnRlbnRTaW1wbGVMaW5lKFxuICAgICAgICBkb21Db250ZW50OiB7IGN1cnJlbnRFbGVtZW50OiBIVE1MRWxlbWVudDsgcGFyZW50Tm9kZTogTm9kZSB9LFxuICAgICAgICBmb3JtYXRzRXh0OiBGb3JtYXRFeHRNb2RlbFtdLFxuICAgICAgICByb3dEaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgYnJlYWtzOiBCcmVha01vZGVsW10gPSBbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZUZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGRvbUNvbnRlbnQuY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdEV4dCBvZiBmb3JtYXRzRXh0KSB7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCA9IHJvd0Rpc3RhbmNlLnN0YXJ0ID4gZm9ybWF0RXh0LnN0YXJ0SW5kZXggPyByb3dEaXN0YW5jZS5zdGFydCA6IGZvcm1hdEV4dC5zdGFydEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gZm9ybWF0RXh0LmVuZEluZGV4ID4gcm93RGlzdGFuY2UuZW5kID8gcm93RGlzdGFuY2UuZW5kIDogZm9ybWF0RXh0LmVuZEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnREb2N1bWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEluZGV4ID0gcm93RGlzdGFuY2Uuc3RhcnQgPiBmb3JtYXRFeHQuc3RhcnRJbmRleCA/IHJvd0Rpc3RhbmNlLnN0YXJ0IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiAwO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRJbmRleCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmVuZEluZGV4ID4gcm93RGlzdGFuY2UuZW5kID8gcm93RGlzdGFuY2UuZW5kIC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiBmb3JtYXRFeHQuZW5kSW5kZXggLSBmb3JtYXRFeHQuc3RhcnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBmcmFnbWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50LFxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvbUNvbnRlbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVuZGVyQ29udGVudFdyYXBwZWRMaW5lKFxuICAgICAgICBkb21Db250ZW50OiB7IGN1cnJlbnRFbGVtZW50OiBIVE1MRWxlbWVudDsgcGFyZW50Tm9kZTogTm9kZSB9LFxuICAgICAgICBzcGxpdHM6IG51bWJlcltdLFxuICAgICAgICBjdXJyZW50UGFyYWdyYXBoOiBQYXJhZ3JhcGgsXG4gICAgICAgIGZvcm1hdHNFeHQ6IEZvcm1hdEV4dE1vZGVsW10sXG4gICAgICAgIGRpc3RhbmNlOiBEaXN0YW5jZU1vZGVsLFxuICAgICAgICBjdXN0b21Db250ZW50U2VydmljZTogQ3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgIGN1c3RvbUNvbXBvbmVudHM6IElDdXN0b21Db21wb25lbnRzLFxuICAgICAgICBzY2FsaW5nUmF0aW86IG51bWJlcixcbiAgICAgICAgYnJlYWtzOiBCcmVha01vZGVsW10gPSBbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBsZXQgc3BsaXRJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IG51bWJlcmluZ09mZnNldExlZnQgPVxuICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5udW1iZXJpbmdEYXRhLm51bWJlcmluZ0lkID09PSBudWxsXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEud2lkdGggKyBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEucGFkZGluZ0xlZnQ7XG4gICAgICAgIGxldCBsaW5lRWwgPSBSZW5kZXJpbmdIZWxwZXIuY3JlYXRlTGluZUVsZW1lbnQoY3VycmVudFBhcmFncmFwaC50ZXh0TGluZXNJbmZvW3NwbGl0SW5kZXhdLCBudW1iZXJpbmdPZmZzZXRMZWZ0LCBzY2FsaW5nUmF0aW8pO1xuICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcblxuICAgICAgICBjb25zdCB2YWx1ZUZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGRvbUNvbnRlbnQuY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBsZXQgcGFyYWdyYXBoQ2hhcnMgPSAwO1xuICAgICAgICBsZXQgc3BsaXQgPSBzcGxpdHNbc3BsaXRJbmRleF07XG4gICAgICAgIGZvciAoY29uc3QgZm9ybWF0RXh0IG9mIGZvcm1hdHNFeHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVNwbGl0SW5kZXggPSBzcGxpdCA/IHNwbGl0IC0gMSA6IGRpc3RhbmNlLmVuZCAtIGRpc3RhbmNlLnN0YXJ0O1xuICAgICAgICAgICAgY29uc3QgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4ID0gZGlzdGFuY2Uuc3RhcnQgKyBiZWZvcmVTcGxpdEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXggPSBkaXN0YW5jZS5zdGFydCArIHBhcmFncmFwaENoYXJzO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gZm9ybWF0RXh0LmVuZEluZGV4IDwgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4ID8gZm9ybWF0RXh0LmVuZEluZGV4IDogYmVmb3JlU3BsaXREb2N1bWVudEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnREb2N1bWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEluZGV4ID0gZGlzdGFuY2Uuc3RhcnQgPiBmb3JtYXRFeHQuc3RhcnRJbmRleCA/IGRpc3RhbmNlLnN0YXJ0IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiAwO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRJbmRleCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmVuZEluZGV4IDwgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gZnJhZ21lbnRTdGFydEluZGV4ICsgZm9ybWF0RXh0LmVuZEluZGV4IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgOiBkaXN0YW5jZS5zdGFydCArIGJlZm9yZVNwbGl0SW5kZXggLSBmb3JtYXRFeHQuc3RhcnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBmcmFnbWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIHBhcmFncmFwaENoYXJzICs9IHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50LFxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxpbmVFbC5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICAgICAgICAgIGxldCBuZXh0RnJhZ21lbnRTdGFydEluZGV4ID0gZnJhZ21lbnRFbmRJbmRleCArIDE7XG4gICAgICAgICAgICB3aGlsZSAocGFyYWdyYXBoQ2hhcnMgPT09IHNwbGl0ICYmIG5leHRGcmFnbWVudFN0YXJ0SW5kZXggIT09IGRpc3RhbmNlLmVuZCkge1xuICAgICAgICAgICAgICAgIHNwbGl0ID0gc3BsaXRzWysrc3BsaXRJbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ID0gZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXggKyBuZXh0RnJhZ21lbnRTdGFydEluZGV4IC0gZnJhZ21lbnRTdGFydEluZGV4O1xuICAgICAgICAgICAgICAgIGxpbmVFbCA9IFJlbmRlcmluZ0hlbHBlci5jcmVhdGVMaW5lRWxlbWVudChjdXJyZW50UGFyYWdyYXBoLnRleHRMaW5lc0luZm9bc3BsaXRJbmRleF0sIG51bWJlcmluZ09mZnNldExlZnQsIHNjYWxpbmdSYXRpbyk7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0ID4gZm9ybWF0RXh0LmVuZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudEVuZEluZGV4ID0gZm9ybWF0RXh0LmNvbnRlbnQubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBuZXh0RnJhZ21lbnRTdGFydEluZGV4LCBlbmQ6IG5leHRGcmFnbWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gbmV4dEZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ICsgbmV4dEZyYWdtZW50RW5kSW5kZXggLSBuZXh0RnJhZ21lbnRTdGFydEluZGV4O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnREb2N1bWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hhcnMgKz0gdGhpcy5yZW5kZXJGb3JtYXRDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRGcmFnbWVudERvY3VtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBsaW5lRWwuYXBwZW5kQ2hpbGQodmFsdWVGcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGRvbUNvbnRlbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChsaW5lRWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRJbmRleExlbmd0aCA9IFJlbmRlcmluZ0hlbHBlci5nZXRUZXh0SW5kZXhMZW5ndGhGb3JJbnNlcnQoXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaENoYXJzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gbmV4dEZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ICsgdGV4dEluZGV4TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudEVuZEluZGV4ID0gbmV4dEZyYWdtZW50U3RhcnRJbmRleCArIHRleHRJbmRleExlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHsgc3RhcnQ6IG5leHRGcmFnbWVudFN0YXJ0SW5kZXgsIGVuZDogbmV4dEZyYWdtZW50RW5kSW5kZXggfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBuZXh0RnJhZ21lbnREb2N1bWVudEVuZEluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyZWRDaGFycyA9IHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0RXh0LFxuICAgICAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGluZUVsLmFwcGVuZENoaWxkKHZhbHVlRnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgIGRvbUNvbnRlbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChsaW5lRWwpO1xuICAgICAgICAgICAgICAgIG5leHRGcmFnbWVudFN0YXJ0SW5kZXggKz0gcmVuZGVyZWRDaGFycztcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhDaGFycyArPSByZW5kZXJlZENoYXJzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbmRlck51bWJlcmluZ01hcmtlcihwYXJhZ3JhcGg6IFBhcmFncmFwaCwgbGF5ZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgc2NhbGluZ1JhdGlvOiBudW1iZXIpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IG1hcmtlckhlaWdodCA9IHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLmhlaWdodDtcblxuICAgICAgICBjb25zdCBtYXJrZXJMaW5lSW5mbyA9IHtcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5wYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIGhlaWdodDogbWFya2VySGVpZ2h0LFxuICAgICAgICAgICAgb2Zmc2V0QmVmb3JlOiAwLFxuICAgICAgICAgICAgZmlyc3RMaW5lUGFnZU9mZnNldDogMCxcbiAgICAgICAgICAgIGVuZFBhZ2VPZmZzZXQ6IDAsXG4gICAgICAgICAgICBvZmZzZXRBZnRlcjogMCxcbiAgICAgICAgICAgIHNjcmVlbkxpbmU6IDBcbiAgICAgICAgfSBhcyBUZXh0TGluZUluZm87XG4gICAgICAgIGNvbnN0IG51bWJlcmluZ0xpbmVFbCA9IHRoaXMuY3JlYXRlTGluZUVsZW1lbnQobWFya2VyTGluZUluZm8sIDAsIHNjYWxpbmdSYXRpbyk7XG5cbiAgICAgICAgY29uc3QgbWFya2VyRnJhZ21lbnQgPSBEb21IZWxwZXIuY3JlYXRlRnJhZ21lbnQobGF5ZXJFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbWFya2VyID0gcGFyYWdyYXBoLm51bWJlcmluZ0RhdGEubWFya2VyO1xuICAgICAgICBjb25zdCBtYXJrZXJFeHRNb2RlbCA9IG5ldyBGb3JtYXRFeHRNb2RlbCh7XG4gICAgICAgICAgICB0ZXh0U3R5bGU6IHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLm1hcmtlclRleHRTdHlsZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1hcmtlclxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJUZXh0KG1hcmtlckZyYWdtZW50LCBtYXJrZXJFeHRNb2RlbCwgbWFya2VyKTtcbiAgICAgICAgbnVtYmVyaW5nTGluZUVsLmFwcGVuZENoaWxkKG1hcmtlckZyYWdtZW50KTtcblxuICAgICAgICByZXR1cm4gbnVtYmVyaW5nTGluZUVsO1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGVEaXZDb250YWluZXIoY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lckVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gICAgICAgIGZvcm1hdEV4dDogRm9ybWF0RXh0TW9kZWwsXG4gICAgICAgIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgZnJhZ21lbnREaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgYnJlYWtzOiBCcmVha01vZGVsW11cbiAgICApOiBudW1iZXIge1xuICAgICAgICBsZXQgdGV4dEZyYWdtZW50ID0gZm9ybWF0RXh0LmNvbnRlbnQuc3Vic3RyaW5nKGZyYWdtZW50RGlzdGFuY2Uuc3RhcnQsIGZyYWdtZW50RGlzdGFuY2UuZW5kICsgMSk7XG4gICAgICAgIGlmICghdGV4dEZyYWdtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRleHRGcmFnbWVudFdpdGhvdXRCcmVha3MgPSBCcmVha0hlbHBlci5yZW1vdmVCcmVha01hcmtlcihicmVha3MsIHRleHRGcmFnbWVudCwgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlLnN0YXJ0KTtcblxuICAgICAgICBpZiAoY3VzdG9tQ29udGVudFNlcnZpY2UuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50cywgdGV4dEZyYWdtZW50LCBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclRleHRXaXRoQ3VzdG9tQ29udGVudChcbiAgICAgICAgICAgICAgICBmcmFnbWVudCxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgIHRleHRGcmFnbWVudFdpdGhvdXRCcmVha3MsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFJlbmRlcmluZ0hlbHBlci5yZW5kZXJUZXh0KGZyYWdtZW50LCBmb3JtYXRFeHQsIHRleHRGcmFnbWVudFdpdGhvdXRCcmVha3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRleHRGcmFnbWVudC5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVuZGVyVGV4dFdpdGhDdXN0b21Db250ZW50KFxuICAgICAgICBmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCxcbiAgICAgICAgZm9ybWF0RXh0OiBGb3JtYXRFeHRNb2RlbCxcbiAgICAgICAgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlOiBEaXN0YW5jZU1vZGVsLFxuICAgICAgICB0ZXh0RnJhZ21lbnQ6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50c1xuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gY3VzdG9tQ29udGVudFNlcnZpY2UuZ2V0Q29tcG9uZW50cyhjdXN0b21Db21wb25lbnRzLCBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UpO1xuXG4gICAgICAgIGlmICghY29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIFJlbmRlcmluZ0hlbHBlci5yZW5kZXJUZXh0KGZyYWdtZW50LCBmb3JtYXRFeHQsIHRleHRGcmFnbWVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCA9IGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZS5zdGFydDtcbiAgICAgICAgbGV0IG5leHRUZXh0RnJhZ21lbnQgPSB0ZXh0RnJhZ21lbnQ7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xuICAgICAgICAgICAgY29uc3QgdGV4dEJlZm9yZUVsZW1lbnQgPSBuZXh0VGV4dEZyYWdtZW50LnN1YnN0cmluZygwLCBjb21wb25lbnQuaW5zdGFuY2UuaW5zZXJ0SW5kZXggLSBuZXdUZXh0RnJhZ21lbnRTdGFydEluZGV4KTtcbiAgICAgICAgICAgIG5leHRUZXh0RnJhZ21lbnQgPSBuZXh0VGV4dEZyYWdtZW50LnN1YnN0cmluZyh0ZXh0QmVmb3JlRWxlbWVudC5sZW5ndGggKyAxLCBuZXh0VGV4dEZyYWdtZW50Lmxlbmd0aCk7XG4gICAgICAgICAgICBuZXdUZXh0RnJhZ21lbnRTdGFydEluZGV4ID0gbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCArICh0ZXh0QmVmb3JlRWxlbWVudC5sZW5ndGggPyB0ZXh0QmVmb3JlRWxlbWVudC5sZW5ndGggKyAxIDogMSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXh0QmVmb3JlRWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBSZW5kZXJpbmdIZWxwZXIucmVuZGVyVGV4dChmcmFnbWVudCwgZm9ybWF0RXh0LCB0ZXh0QmVmb3JlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXR0YWNoQ29tcG9uZW50KGZyYWdtZW50LCBjb21wb25lbnQsIGN1c3RvbUNvbnRlbnRTZXJ2aWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0VGV4dEZyYWdtZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgUmVuZGVyaW5nSGVscGVyLnJlbmRlclRleHQoZnJhZ21lbnQsIGZvcm1hdEV4dCwgbmV4dFRleHRGcmFnbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZW5kZXJUZXh0KGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50LCBmb3JtYXRFeHQ6IEZvcm1hdEV4dE1vZGVsLCB0ZXh0RnJhZ21lbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBjb25zdCB0ZXh0U3R5bGUgPSBuZXcgVGV4dFN0eWxlTW9kZWwoeyAuLi5mb3JtYXRFeHQudGV4dFN0eWxlIH0pO1xuXG4gICAgICAgIGlmICh0ZXh0RnJhZ21lbnQgPT09IE5FV19MSU5FX01BUktVUCkge1xuICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAncGFyYWdyYXBoLXN5bWJvbCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGV4dFN0eWxlLmhlYWRpbmdTdHlsZUlkID09PSBIWVBFUkxJTktfSEVBRElOR19TVFlMRV9JRCkge1xuICAgICAgICAgICAgdGV4dFN0eWxlLmZvbnRDb2xvciA9IEhZUEVSTElOS19GT05UX0NPTE9SO1xuICAgICAgICAgICAgdGV4dFN0eWxlLnVuZGVybGluZSA9IHRydWU7XG4gICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoJ2h5cGVybGluaycpO1xuICAgICAgICAgICAgc3Bhbi5vbm1vdXNlbW92ZSA9IGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoJ2h5cGVybGluay1ob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uY2xhc3NMaXN0LnJlbW92ZSgnaHlwZXJsaW5rLWhvdmVyJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNwYW4ub25tb3VzZWxlYXZlID0gKCkgPT4gc3Bhbi5jbGFzc0xpc3QucmVtb3ZlKCdoeXBlcmxpbmstaG92ZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSB0ZXh0RnJhZ21lbnQ7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdzdHlsZScsIENvbnRlbnRTdHlsZUhlbHBlci5nZXRUZXh0U3R5bGVzU3RyaW5nKHRleHRTdHlsZSkpO1xuICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRUZXh0SW5kZXhMZW5ndGhGb3JJbnNlcnQoXG4gICAgICAgIGZvcm1hdEV4dDogRm9ybWF0RXh0TW9kZWwsXG4gICAgICAgIGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHBhcmFncmFwaERpc3RhbmNlOiBEaXN0YW5jZU1vZGVsLFxuICAgICAgICBzcGxpdDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhDaGFyczogbnVtYmVyXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gTWF0aC5tYXgocGFyYWdyYXBoRGlzdGFuY2UuZW5kIC0gcGFyYWdyYXBoQ2hhcnMgLSBwYXJhZ3JhcGhEaXN0YW5jZS5zdGFydCwgMCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICBzcGxpdCAtIHBhcmFncmFwaENoYXJzIHx8IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dC5lbmRJbmRleCAtIGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQuY29udGVudC5sZW5ndGhcbiAgICAgICAgICAgICkgLSAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBhdHRhY2hDb21wb25lbnQoXG4gICAgICAgIGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50LFxuICAgICAgICBjb21wb25lbnQ6IENvbXBvbmVudFJlZjx1bmtub3duPixcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLmNvbXBvbmVudFNlcnZpY2UuYXR0YWNoQ29tcG9uZW50KGZyYWdtZW50LCBjb21wb25lbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { EventHelper } from './event.helper';
2
+ import { RenderChangesModel } from './render-changes.model';
3
+ export class RenderLoop {
4
+ constructor(onRender) {
5
+ this.changes = new RenderChangesModel();
6
+ this.flush = () => {
7
+ const changes = this.changes;
8
+ if (changes.any) {
9
+ this.changes = new RenderChangesModel();
10
+ onRender(changes);
11
+ }
12
+ if (this.changes.any) {
13
+ this.schedule();
14
+ }
15
+ };
16
+ }
17
+ schedule(changes) {
18
+ if (changes) {
19
+ this.changes.apply(changes);
20
+ }
21
+ if (this.changes) {
22
+ EventHelper.nextFrame(this.flush);
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVybG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9kaXNwbGF5L3JlbmRlcmxvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE1BQU0sT0FBTyxVQUFVO0lBS25CLFlBQVksUUFBK0M7UUFGbkQsWUFBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFN0IsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN4QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckI7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQzdCLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50SGVscGVyIH0gZnJvbSAnLi9ldmVudC5oZWxwZXInO1xuaW1wb3J0IHsgSVJlbmRlckNoYW5nZXMgfSBmcm9tICcuL3JlbmRlci1jaGFuZ2VzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZW5kZXJDaGFuZ2VzTW9kZWwgfSBmcm9tICcuL3JlbmRlci1jaGFuZ2VzLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFJlbmRlckxvb3Age1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmx1c2g6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIGNoYW5nZXMgPSBuZXcgUmVuZGVyQ2hhbmdlc01vZGVsKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihvblJlbmRlcjogKGNoYW5nZXM6IFJlbmRlckNoYW5nZXNNb2RlbCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmZsdXNoID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuY2hhbmdlcztcblxuICAgICAgICAgICAgaWYgKGNoYW5nZXMuYW55KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzID0gbmV3IFJlbmRlckNoYW5nZXNNb2RlbCgpO1xuICAgICAgICAgICAgICAgIG9uUmVuZGVyKGNoYW5nZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2VzLmFueSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzY2hlZHVsZShjaGFuZ2VzPzogSVJlbmRlckNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5hcHBseShjaGFuZ2VzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNoYW5nZXMpIHtcbiAgICAgICAgICAgIEV2ZW50SGVscGVyLm5leHRGcmFtZSh0aGlzLmZsdXNoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==