@talrace/ngx-noder 0.0.18 → 0.0.19

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 (288) hide show
  1. package/fesm2022/talrace-ngx-noder.mjs +181 -181
  2. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  3. package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +1 -1
  4. package/lib/editor/components/external-element/external.component.d.ts +1 -1
  5. package/lib/editor/components/shared/abstract/base.component.d.ts +1 -1
  6. package/lib/editor/components/shared/abstract/destroy.component.d.ts +1 -1
  7. package/package.json +1 -3
  8. package/src/lib/apart-components/add-link-dialog/_add-link-dialog.theme.scss +3 -6
  9. package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +4 -7
  10. package/src/lib/apart-components/confirm-dialog/_theme.scss +6 -9
  11. package/src/lib/apart-components/editor-title/_editor-title.theme.scss +6 -9
  12. package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +9 -12
  13. package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +5 -8
  14. package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +1 -3
  15. package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +1 -3
  16. package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +2 -5
  17. package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +3 -6
  18. package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +3 -6
  19. package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +15 -18
  20. package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +2 -4
  21. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +5 -8
  22. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +6 -9
  23. package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +3 -6
  24. package/src/lib/apart-components/insert-table/_insert-table.theme.scss +6 -9
  25. package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +12 -15
  26. package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +22 -25
  27. package/src/lib/editor/components/_editor.theme.scss +25 -28
  28. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +0 -73
  29. package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +0 -7
  30. package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +0 -49
  31. package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +0 -34
  32. package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +0 -75
  33. package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +0 -95
  34. package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +0 -24
  35. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +0 -117
  36. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +0 -37
  37. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +0 -49
  38. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +0 -90
  39. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +0 -81
  40. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +0 -28
  41. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +0 -53
  42. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +0 -18
  43. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +0 -27
  44. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +0 -71
  45. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +0 -107
  46. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +0 -25
  47. package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +0 -65
  48. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +0 -86
  49. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +0 -90
  50. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +0 -122
  51. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +0 -8
  52. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.mjs +0 -1148
  53. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +0 -157
  54. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +0 -8
  55. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +0 -11
  56. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-template-type.enum.mjs +0 -16
  57. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +0 -6
  58. package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +0 -34
  59. package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +0 -26
  60. package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +0 -60
  61. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +0 -48
  62. package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +0 -54
  63. package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +0 -86
  64. package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +0 -134
  65. package/esm2022/lib/editor/components/edges/edge-element.model.mjs +0 -38
  66. package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +0 -6
  67. package/esm2022/lib/editor/components/edges/edge.component.mjs +0 -141
  68. package/esm2022/lib/editor/components/edges/edges.mjs +0 -120
  69. package/esm2022/lib/editor/components/edges/page-type.enum.mjs +0 -7
  70. package/esm2022/lib/editor/components/editor.component.mjs +0 -112
  71. package/esm2022/lib/editor/components/external-element/external-element.service.mjs +0 -6
  72. package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +0 -4
  73. package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +0 -2
  74. package/esm2022/lib/editor/components/external-element/external.component.mjs +0 -41
  75. package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +0 -9
  76. package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +0 -11
  77. package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +0 -15
  78. package/esm2022/lib/editor/components/image/components/image.component.mjs +0 -88
  79. package/esm2022/lib/editor/components/image/image-api.service.mjs +0 -36
  80. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +0 -46
  81. package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +0 -2
  82. package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +0 -19
  83. package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +0 -12
  84. package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +0 -106
  85. package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +0 -2
  86. package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +0 -52
  87. package/esm2022/lib/editor/components/image/size.mjs +0 -2
  88. package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +0 -60
  89. package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +0 -18
  90. package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +0 -43
  91. package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +0 -2
  92. package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +0 -3
  93. package/esm2022/lib/editor/components/shared/custom-content.mjs +0 -2
  94. package/esm2022/lib/editor/components/shared/services/component.service.mjs +0 -52
  95. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +0 -123
  96. package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +0 -55
  97. package/esm2022/lib/editor/components/tab/tab.component.mjs +0 -44
  98. package/esm2022/lib/editor/components/tab/tab.helper.mjs +0 -6
  99. package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +0 -118
  100. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +0 -99
  101. package/esm2022/lib/editor/components/table/components/table.component.mjs +0 -412
  102. package/esm2022/lib/editor/components/table/enums/hrule.enum.mjs +0 -7
  103. package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +0 -8
  104. package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +0 -6
  105. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +0 -17
  106. package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +0 -9
  107. package/esm2022/lib/editor/components/table/models/row-data.model.mjs +0 -8
  108. package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +0 -7
  109. package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +0 -84
  110. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +0 -383
  111. package/esm2022/lib/editor/content/constants/display-values.const.mjs +0 -8
  112. package/esm2022/lib/editor/content/constants/document-info.const.mjs +0 -13
  113. package/esm2022/lib/editor/content/constants/editor.const.mjs +0 -70
  114. package/esm2022/lib/editor/content/contents.interface.mjs +0 -2
  115. package/esm2022/lib/editor/content/display-data/display-data.mjs +0 -839
  116. package/esm2022/lib/editor/content/display-data/display-token.model.mjs +0 -12
  117. package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +0 -10
  118. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +0 -11
  119. package/esm2022/lib/editor/content/display-data/indent.model.mjs +0 -9
  120. package/esm2022/lib/editor/content/display-data/line-info.model.mjs +0 -9
  121. package/esm2022/lib/editor/content/display-data/lines.mjs +0 -96
  122. package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +0 -8
  123. package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +0 -2
  124. package/esm2022/lib/editor/content/display-data/paragraph.mjs +0 -56
  125. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +0 -35
  126. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +0 -2
  127. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +0 -78
  128. package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +0 -62
  129. package/esm2022/lib/editor/content/helpers/format.helper.mjs +0 -23
  130. package/esm2022/lib/editor/content/helpers/indexed-element.helper.mjs +0 -6
  131. package/esm2022/lib/editor/content/helpers/link.helper.mjs +0 -42
  132. package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +0 -9
  133. package/esm2022/lib/editor/content/margin.model.mjs +0 -16
  134. package/esm2022/lib/editor/content/page-vertical-data.model.mjs +0 -9
  135. package/esm2022/lib/editor/content/vertical-alignment.enum.mjs +0 -11
  136. package/esm2022/lib/editor/core/event-emitting.mjs +0 -56
  137. package/esm2022/lib/editor/display/cell.interface.mjs +0 -2
  138. package/esm2022/lib/editor/display/event.helper.mjs +0 -18
  139. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +0 -102
  140. package/esm2022/lib/editor/display/layers/layer.config.mjs +0 -2
  141. package/esm2022/lib/editor/display/layers/pages.layer.mjs +0 -109
  142. package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +0 -7
  143. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +0 -7
  144. package/esm2022/lib/editor/display/layers/selection.layer.mjs +0 -119
  145. package/esm2022/lib/editor/display/layers/text.layer.mjs +0 -226
  146. package/esm2022/lib/editor/display/print/print.helper.mjs +0 -40
  147. package/esm2022/lib/editor/display/print/print.renderer.mjs +0 -67
  148. package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +0 -7
  149. package/esm2022/lib/editor/display/render-changes.interface.mjs +0 -2
  150. package/esm2022/lib/editor/display/render-changes.model.mjs +0 -25
  151. package/esm2022/lib/editor/display/renderer.mjs +0 -204
  152. package/esm2022/lib/editor/display/rendering.helper.mjs +0 -185
  153. package/esm2022/lib/editor/display/renderloop.mjs +0 -26
  154. package/esm2022/lib/editor/display/virtual.renderer.mjs +0 -284
  155. package/esm2022/lib/editor/display/visible-range.interface.mjs +0 -2
  156. package/esm2022/lib/editor/editor.module.mjs +0 -91
  157. package/esm2022/lib/editor/execution/distance.model.mjs +0 -10
  158. package/esm2022/lib/editor/execution/edit.session.mjs +0 -602
  159. package/esm2022/lib/editor/execution/editor.mjs +0 -1368
  160. package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +0 -42
  161. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +0 -73
  162. package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +0 -12
  163. package/esm2022/lib/editor/execution/helpers/page.helper.mjs +0 -12
  164. package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +0 -41
  165. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +0 -177
  166. package/esm2022/lib/editor/execution/regulator.service.mjs +0 -212
  167. package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +0 -18
  168. package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +0 -14
  169. package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +0 -8
  170. package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +0 -3
  171. package/esm2022/lib/editor/execution/targeting/session.model.mjs +0 -10
  172. package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +0 -2
  173. package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +0 -2
  174. package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +0 -88
  175. package/esm2022/lib/editor/gadgets/history/operation-history.mjs +0 -208
  176. package/esm2022/lib/editor/gadgets/history/operation.type.mjs +0 -2
  177. package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +0 -7
  178. package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +0 -9
  179. package/esm2022/lib/editor/gadgets/numbering/numbering-marker-type.enum.mjs +0 -12
  180. package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +0 -13
  181. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +0 -149
  182. package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +0 -7
  183. package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +0 -18
  184. package/esm2022/lib/editor/gadgets/scrollbar.mjs +0 -86
  185. package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +0 -2
  186. package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +0 -2
  187. package/esm2022/lib/editor/gadgets/search/search.mjs +0 -231
  188. package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +0 -5
  189. package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +0 -20
  190. package/esm2022/lib/editor/interaction/base.handler.mjs +0 -19
  191. package/esm2022/lib/editor/interaction/document.handler.mjs +0 -27
  192. package/esm2022/lib/editor/interaction/editor.service.mjs +0 -386
  193. package/esm2022/lib/editor/interaction/input.handler.mjs +0 -152
  194. package/esm2022/lib/editor/interaction/mode.enum.mjs +0 -7
  195. package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +0 -7
  196. package/esm2022/lib/editor/interaction/mouse.handler.mjs +0 -50
  197. package/esm2022/lib/editor/interaction/text-input.mjs +0 -53
  198. package/esm2022/lib/editor/operations/commands.service.mjs +0 -20
  199. package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +0 -32
  200. package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +0 -7
  201. package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +0 -9
  202. package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +0 -15
  203. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +0 -85
  204. package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +0 -19
  205. package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
  206. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +0 -136
  207. package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
  208. package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +0 -114
  209. package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +0 -16
  210. package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +0 -374
  211. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +0 -438
  212. package/esm2022/lib/editor/operations/save-commands.helper.mjs +0 -128
  213. package/esm2022/lib/editor/operations/target-operations.helper.mjs +0 -23
  214. package/esm2022/lib/editor/positioning/alignments.const.mjs +0 -8
  215. package/esm2022/lib/editor/positioning/content.helper.mjs +0 -45
  216. package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +0 -13
  217. package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +0 -2
  218. package/esm2022/lib/editor/positioning/insert-index.interface.mjs +0 -2
  219. package/esm2022/lib/editor/positioning/line-width.helper.mjs +0 -13
  220. package/esm2022/lib/editor/positioning/position.helper.mjs +0 -210
  221. package/esm2022/lib/editor/positioning/range.mjs +0 -94
  222. package/esm2022/lib/editor/positioning/selection.mjs +0 -351
  223. package/esm2022/lib/editor/revision.helper.mjs +0 -94
  224. package/esm2022/lib/models/generated/add-numbering.model.mjs +0 -8
  225. package/esm2022/lib/models/generated/apply-element-style.model.mjs +0 -8
  226. package/esm2022/lib/models/generated/apply-image-style.model.mjs +0 -8
  227. package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +0 -12
  228. package/esm2022/lib/models/generated/apply-text-style.model.mjs +0 -12
  229. package/esm2022/lib/models/generated/borders-style.model.mjs +0 -8
  230. package/esm2022/lib/models/generated/break.model.mjs +0 -8
  231. package/esm2022/lib/models/generated/cell.model.mjs +0 -12
  232. package/esm2022/lib/models/generated/column-section.model.mjs +0 -8
  233. package/esm2022/lib/models/generated/column.model.mjs +0 -8
  234. package/esm2022/lib/models/generated/command.model.mjs +0 -120
  235. package/esm2022/lib/models/generated/delete.model.mjs +0 -8
  236. package/esm2022/lib/models/generated/document-name.model.mjs +0 -8
  237. package/esm2022/lib/models/generated/document.model.mjs +0 -8
  238. package/esm2022/lib/models/generated/docx.model.mjs +0 -12
  239. package/esm2022/lib/models/generated/edge-target.model.mjs +0 -8
  240. package/esm2022/lib/models/generated/edge.model.mjs +0 -8
  241. package/esm2022/lib/models/generated/element.model.mjs +0 -8
  242. package/esm2022/lib/models/generated/file-source.model.mjs +0 -8
  243. package/esm2022/lib/models/generated/format.model.mjs +0 -12
  244. package/esm2022/lib/models/generated/heading.model.mjs +0 -16
  245. package/esm2022/lib/models/generated/image-data.model.mjs +0 -8
  246. package/esm2022/lib/models/generated/image.model.mjs +0 -12
  247. package/esm2022/lib/models/generated/insert-break.model.mjs +0 -8
  248. package/esm2022/lib/models/generated/insert-element.model.mjs +0 -12
  249. package/esm2022/lib/models/generated/insert-image.model.mjs +0 -12
  250. package/esm2022/lib/models/generated/insert-link.model.mjs +0 -12
  251. package/esm2022/lib/models/generated/insert-paragraph.model.mjs +0 -20
  252. package/esm2022/lib/models/generated/insert-styled-text.model.mjs +0 -12
  253. package/esm2022/lib/models/generated/insert-tab.model.mjs +0 -8
  254. package/esm2022/lib/models/generated/insert-table-columns.model.mjs +0 -8
  255. package/esm2022/lib/models/generated/insert-table-rows.model.mjs +0 -8
  256. package/esm2022/lib/models/generated/insert-table.model.mjs +0 -8
  257. package/esm2022/lib/models/generated/insert-text.model.mjs +0 -8
  258. package/esm2022/lib/models/generated/last-document-revision.model.mjs +0 -12
  259. package/esm2022/lib/models/generated/link-data.model.mjs +0 -8
  260. package/esm2022/lib/models/generated/link.model.mjs +0 -8
  261. package/esm2022/lib/models/generated/margins.model.mjs +0 -8
  262. package/esm2022/lib/models/generated/numbering-level.model.mjs +0 -12
  263. package/esm2022/lib/models/generated/numbering.model.mjs +0 -8
  264. package/esm2022/lib/models/generated/operation.model.mjs +0 -12
  265. package/esm2022/lib/models/generated/page-numbers.model.mjs +0 -8
  266. package/esm2022/lib/models/generated/paragraph-style.model.mjs +0 -8
  267. package/esm2022/lib/models/generated/paragraph.model.mjs +0 -12
  268. package/esm2022/lib/models/generated/remove-numberings.model.mjs +0 -8
  269. package/esm2022/lib/models/generated/remove-table-columns.model.mjs +0 -8
  270. package/esm2022/lib/models/generated/remove-table-rows.model.mjs +0 -8
  271. package/esm2022/lib/models/generated/replace-by-text.model.mjs +0 -8
  272. package/esm2022/lib/models/generated/replace.model.mjs +0 -44
  273. package/esm2022/lib/models/generated/resize-table-columns.model.mjs +0 -8
  274. package/esm2022/lib/models/generated/restore-numberings.model.mjs +0 -8
  275. package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +0 -8
  276. package/esm2022/lib/models/generated/restore-table.model.mjs +0 -12
  277. package/esm2022/lib/models/generated/restore-text-styles.model.mjs +0 -8
  278. package/esm2022/lib/models/generated/restore.model.mjs +0 -8
  279. package/esm2022/lib/models/generated/revision.model.mjs +0 -12
  280. package/esm2022/lib/models/generated/row.model.mjs +0 -8
  281. package/esm2022/lib/models/generated/tab.model.mjs +0 -8
  282. package/esm2022/lib/models/generated/table-cell.model.mjs +0 -8
  283. package/esm2022/lib/models/generated/table.model.mjs +0 -12
  284. package/esm2022/lib/models/generated/target.model.mjs +0 -16
  285. package/esm2022/lib/models/generated/text-style.model.mjs +0 -8
  286. package/esm2022/lib/translate/noder-translate.loader.mjs +0 -22
  287. package/esm2022/public-api.mjs +0 -54
  288. package/esm2022/talrace-ngx-noder.mjs +0 -5
@@ -1,128 +0,0 @@
1
- import { AddNumberingModel } from '../../models/generated/add-numbering.model';
2
- import { ApplyImageStyleModel } from '../../models/generated/apply-image-style.model';
3
- import { ApplyParagraphStyleModel } from '../../models/generated/apply-paragraph-style.model';
4
- import { ApplyTextStyleModel } from '../../models/generated/apply-text-style.model';
5
- import { CommandModel } from '../../models/generated/command.model';
6
- import { CommandType } from './enums/command-type.enum';
7
- import { DeleteModel } from '../../models/generated/delete.model';
8
- import { InsertStyledTextModel } from '../../models/generated/insert-styled-text.model';
9
- import { InsertTableColumnsModel } from '../../models/generated/insert-table-columns.model';
10
- import { InsertTableRowsModel } from '../../models/generated/insert-table-rows.model';
11
- import { InsertTextModel } from '../../models/generated/insert-text.model';
12
- import { RemoveNumberingsModel } from '../../models/generated/remove-numberings.model';
13
- import { RemoveTableColumnsModel } from '../../models/generated/remove-table-columns.model';
14
- import { RemoveTableRowsModel } from '../../models/generated/remove-table-rows.model';
15
- import { RestoreModel } from '../../models/generated/restore.model';
16
- import { RestoreParagraphStylesModel } from '../../models/generated/restore-paragraph-styles.model';
17
- import { RestoreTextStylesModel } from '../../models/generated/restore-text-styles.model';
18
- export class SaveCommandsHelper {
19
- static getAddNumberingCommand(startIndex, endIndex, levels, targets) {
20
- const addNumbering = new AddNumberingModel({ startIndex, endIndex, levels });
21
- return new CommandModel({ commandType: CommandType.AddNumbering, addNumbering, targets });
22
- }
23
- static getRemoveNumberingsCommand(startIndex, endIndex, targets) {
24
- const removeNumberings = new RemoveNumberingsModel({ startIndex, endIndex });
25
- return new CommandModel({ commandType: CommandType.RemoveNumberings, removeNumberings, targets });
26
- }
27
- static getRestoreNumberingsCommand(restoreNumberings, targets) {
28
- return new CommandModel({ commandType: CommandType.RestoreNumberings, restoreNumberings, targets });
29
- }
30
- static getApplyImageStyleCommand(height, width, insertIndex, targets) {
31
- const applyImageStyle = new ApplyImageStyleModel({ height, width, insertIndex });
32
- return new CommandModel({ commandType: CommandType.ApplyImageStyle, applyImageStyle, targets });
33
- }
34
- static getApplyParagraphStyleCommand(startIndex, endIndex, paragraphStyle, targets) {
35
- const applyParagraphStyle = new ApplyParagraphStyleModel({ startIndex, endIndex, paragraphStyle });
36
- return new CommandModel({ commandType: CommandType.ApplyParagraphStyle, applyParagraphStyle, targets });
37
- }
38
- static getApplyTextStyleCommand(startIndex, endIndex, textStyle, targets) {
39
- const applyTextStyle = new ApplyTextStyleModel({ startIndex, endIndex, textStyle });
40
- return new CommandModel({ commandType: CommandType.ApplyTextStyle, applyTextStyle, targets });
41
- }
42
- static getDeleteCommand(startIndex, count, targets) {
43
- const deleteModel = new DeleteModel({ startIndex, count });
44
- return new CommandModel({ commandType: CommandType.Delete, delete: deleteModel, targets });
45
- }
46
- static getInsertTextCommand(text, insertIndex, targets) {
47
- const insertText = new InsertTextModel({ text, insertIndex });
48
- return new CommandModel({ commandType: CommandType.InsertText, insertText, targets });
49
- }
50
- static getInsertParagraphCommand(insertParagraph, targets) {
51
- return new CommandModel({ commandType: CommandType.InsertParagraph, insertParagraph, targets });
52
- }
53
- static getInsertStyledTextCommand(text, insertIndex, textStyle, targets) {
54
- const insertStyledText = new InsertStyledTextModel({ text, insertIndex, textStyle });
55
- return new CommandModel({ commandType: CommandType.InsertStyledText, insertStyledText, targets });
56
- }
57
- static getInsertBreakCommand(insertBreak, targets) {
58
- return new CommandModel({ commandType: CommandType.InsertBreak, insertBreak, targets });
59
- }
60
- static getInsertElementCommand(insertElement, targets) {
61
- return new CommandModel({ commandType: CommandType.InsertElement, insertElement, targets });
62
- }
63
- static getInsertImageCommand(insertImage, targets) {
64
- return new CommandModel({ commandType: CommandType.InsertImage, insertImage, targets });
65
- }
66
- static getInsertLinkOperation(insertLink, targets) {
67
- return new CommandModel({ commandType: CommandType.InsertLink, insertLink, targets });
68
- }
69
- static getInsertTabCommand(insertTab, targets) {
70
- return new CommandModel({ commandType: CommandType.InsertTab, insertTab, targets });
71
- }
72
- static getInsertTableCommand(insertTable, targets) {
73
- return new CommandModel({ commandType: CommandType.InsertTable, insertTable, targets });
74
- }
75
- static getInsertTableColumnsCommand(columnsCount, inheritIndex, insertIndex, targetIndex, targets) {
76
- const insertTableColumns = new InsertTableColumnsModel({ columnsCount, inheritIndex, insertIndex, targetIndex });
77
- return new CommandModel({ commandType: CommandType.InsertTableColumns, insertTableColumns, targets });
78
- }
79
- static getInsertTableRowsCommand(rowsCount, inheritIndex, insertIndex, targetIndex, targets) {
80
- const insertTableRows = new InsertTableRowsModel({ rowsCount, inheritIndex, insertIndex, targetIndex });
81
- return new CommandModel({ commandType: CommandType.InsertTableRows, insertTableRows, targets });
82
- }
83
- static getRemoveTableColumnsCommand(startIndex, endIndex, insertIndex, targets) {
84
- const removeTableColumns = new RemoveTableColumnsModel({ startIndex, endIndex, insertIndex });
85
- return new CommandModel({ commandType: CommandType.RemoveTableColumns, removeTableColumns, targets });
86
- }
87
- static getRemoveTableRowsCommand(startIndex, endIndex, insertIndex, targets) {
88
- const removeTableRows = new RemoveTableRowsModel({ startIndex, endIndex, insertIndex });
89
- return new CommandModel({ commandType: CommandType.RemoveTableRows, removeTableRows, targets });
90
- }
91
- static getRestoreTextStylesCommand(formats, targets) {
92
- const restoreTextStyles = new RestoreTextStylesModel({ formats });
93
- return new CommandModel({ commandType: CommandType.RestoreTextStyles, restoreTextStyles, targets });
94
- }
95
- static getRestoreParagraphStylesCommand(paragraphs, targets) {
96
- const restoreParagraphStyles = new RestoreParagraphStylesModel({ paragraphs });
97
- return new CommandModel({ commandType: CommandType.RestoreParagraphStyles, restoreParagraphStyles, targets });
98
- }
99
- static getRestoreCommand(restoreModel, targets) {
100
- const restore = new RestoreModel({
101
- breaks: restoreModel.breaks,
102
- elements: restoreModel.elements,
103
- formats: restoreModel.formats,
104
- images: restoreModel.images,
105
- startIndex: restoreModel.startIndex,
106
- endIndex: restoreModel.endIndex,
107
- paragraphs: restoreModel.paragraphs,
108
- tables: restoreModel.tables,
109
- tabs: restoreModel.tabs,
110
- text: restoreModel.text,
111
- links: restoreModel.links
112
- });
113
- return new CommandModel({ commandType: CommandType.Restore, restore, targets });
114
- }
115
- static getRestoreTableCommand(restoreTable, targets) {
116
- return new CommandModel({ commandType: CommandType.RestoreTable, restoreTable, targets });
117
- }
118
- static getReplaceCommand(model, targets) {
119
- return new CommandModel({ commandType: CommandType.Replace, replace: model, targets });
120
- }
121
- static getResizeTableColumnsCommand(resizeTableColumns, targets) {
122
- return new CommandModel({ commandType: CommandType.ResizeTableColumns, resizeTableColumns, targets });
123
- }
124
- static getApplyElementStyleCommand(applyElementStyle, targets) {
125
- return new CommandModel({ commandType: CommandType.ApplyElementStyle, applyElementStyle, targets });
126
- }
127
- }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1jb21tYW5kcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3Ivb3BlcmF0aW9ucy9zYXZlLWNvbW1hbmRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXBH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LENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxPQUFzQjtRQUN2RSxPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsa0JBQTJDLEVBQUUsT0FBc0I7UUFDMUcsT0FBTyxJQUFJLFlBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLGlCQUF5QyxFQUFFLE9BQXNCO1FBQ3ZHLE9BQU8sSUFBSSxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FkZC1udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktZWxlbWVudC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseUltYWdlU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktaW1hZ2Utc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS1wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktdGV4dC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NvbW1hbmQubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWFuZFR5cGUgfSBmcm9tICcuL2VudW1zL2NvbW1hbmQtdHlwZS5lbnVtJztcbmltcG9ydCB7IERlbGV0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9kZWxldGUubW9kZWwnO1xuaW1wb3J0IHsgRm9ybWF0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2Zvcm1hdC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRCcmVha01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtYnJlYWsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0RWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0TGlua01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtbGluay5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXBhcmFncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRTdHlsZWRUZXh0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1zdHlsZWQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlUm93c01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGFibGUtcm93cy5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYi5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUZXh0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10ZXh0Lm1vZGVsJztcbmltcG9ydCB7IE51bWJlcmluZ0xldmVsTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL251bWJlcmluZy1sZXZlbC5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVOdW1iZXJpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXBsYWNlLm1vZGVsJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU51bWJlcmluZ3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1wYXJhZ3JhcGgtc3R5bGVzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUZXh0U3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtdGV4dC1zdHlsZXMubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhcmdldC5tb2RlbCc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBTYXZlQ29tbWFuZHNIZWxwZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWRkTnVtYmVyaW5nQ29tbWFuZChcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICBsZXZlbHM6IE51bWJlcmluZ0xldmVsTW9kZWxbXSxcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGFkZE51bWJlcmluZyA9IG5ldyBBZGROdW1iZXJpbmdNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBsZXZlbHMgfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkFkZE51bWJlcmluZywgYWRkTnVtYmVyaW5nLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVtb3ZlTnVtYmVyaW5nc0NvbW1hbmQoc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlTnVtYmVyaW5ncyA9IG5ldyBSZW1vdmVOdW1iZXJpbmdzTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVtb3ZlTnVtYmVyaW5ncywgcmVtb3ZlTnVtYmVyaW5ncywgdGFyZ2V0cyB9KTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXN0b3JlTnVtYmVyaW5nc0NvbW1hbmQocmVzdG9yZU51bWJlcmluZ3M6IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXN0b3JlTnVtYmVyaW5ncywgcmVzdG9yZU51bWJlcmluZ3MsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcHBseUltYWdlU3R5bGVDb21tYW5kKGhlaWdodDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBpbnNlcnRJbmRleDogbnVtYmVyLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgYXBwbHlJbWFnZVN0eWxlID0gbmV3IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKHsgaGVpZ2h0LCB3aWR0aCwgaW5zZXJ0SW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkFwcGx5SW1hZ2VTdHlsZSwgYXBwbHlJbWFnZVN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwbHlQYXJhZ3JhcGhTdHlsZUNvbW1hbmQoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgcGFyYWdyYXBoU3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhcHBseVBhcmFncmFwaFN0eWxlID0gbmV3IEFwcGx5UGFyYWdyYXBoU3R5bGVNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBwYXJhZ3JhcGhTdHlsZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlQYXJhZ3JhcGhTdHlsZSwgYXBwbHlQYXJhZ3JhcGhTdHlsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFwcGx5VGV4dFN0eWxlQ29tbWFuZChcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICB0ZXh0U3R5bGU6IFRleHRTdHlsZU1vZGVsLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgYXBwbHlUZXh0U3R5bGUgPSBuZXcgQXBwbHlUZXh0U3R5bGVNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0ZXh0U3R5bGUgfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkFwcGx5VGV4dFN0eWxlLCBhcHBseVRleHRTdHlsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldERlbGV0ZUNvbW1hbmQoc3RhcnRJbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgZGVsZXRlTW9kZWwgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4LCBjb3VudCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuRGVsZXRlLCBkZWxldGU6IGRlbGV0ZU1vZGVsLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGV4dENvbW1hbmQodGV4dDogc3RyaW5nLCBpbnNlcnRJbmRleDogbnVtYmVyLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0VGV4dCA9IG5ldyBJbnNlcnRUZXh0TW9kZWwoeyB0ZXh0LCBpbnNlcnRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGV4dCwgaW5zZXJ0VGV4dCwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydFBhcmFncmFwaENvbW1hbmQoaW5zZXJ0UGFyYWdyYXBoOiBJbnNlcnRQYXJhZ3JhcGhNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydFBhcmFncmFwaCwgaW5zZXJ0UGFyYWdyYXBoLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0U3R5bGVkVGV4dENvbW1hbmQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgdGV4dFN0eWxlOiBUZXh0U3R5bGVNb2RlbCxcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGluc2VydFN0eWxlZFRleHQgPSBuZXcgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsKHsgdGV4dCwgaW5zZXJ0SW5kZXgsIHRleHRTdHlsZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0U3R5bGVkVGV4dCwgaW5zZXJ0U3R5bGVkVGV4dCwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydEJyZWFrQ29tbWFuZChpbnNlcnRCcmVhazogSW5zZXJ0QnJlYWtNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydEJyZWFrLCBpbnNlcnRCcmVhaywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydEVsZW1lbnRDb21tYW5kKGluc2VydEVsZW1lbnQ6IEluc2VydEVsZW1lbnRNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydEVsZW1lbnQsIGluc2VydEVsZW1lbnQsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRJbWFnZUNvbW1hbmQoaW5zZXJ0SW1hZ2U6IEluc2VydEltYWdlTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRJbWFnZSwgaW5zZXJ0SW1hZ2UsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRMaW5rT3BlcmF0aW9uKGluc2VydExpbms6IEluc2VydExpbmtNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydExpbmssIGluc2VydExpbmssIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRUYWJDb21tYW5kKGluc2VydFRhYjogSW5zZXJ0VGFiTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRUYWIsIGluc2VydFRhYiwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydFRhYmxlQ29tbWFuZChpbnNlcnRUYWJsZTogSW5zZXJ0VGFibGVNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydFRhYmxlLCBpbnNlcnRUYWJsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydFRhYmxlQ29sdW1uc0NvbW1hbmQoXG4gICAgICAgIGNvbHVtbnNDb3VudDogbnVtYmVyLFxuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlcixcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGluc2VydFRhYmxlQ29sdW1ucyA9IG5ldyBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbCh7IGNvbHVtbnNDb3VudCwgaW5oZXJpdEluZGV4LCBpbnNlcnRJbmRleCwgdGFyZ2V0SW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydFRhYmxlQ29sdW1ucywgaW5zZXJ0VGFibGVDb2x1bW5zLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGFibGVSb3dzQ29tbWFuZChcbiAgICAgICAgcm93c0NvdW50OiBudW1iZXIsXG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0VGFibGVSb3dzID0gbmV3IEluc2VydFRhYmxlUm93c01vZGVsKHsgcm93c0NvdW50LCBpbmhlcml0SW5kZXgsIGluc2VydEluZGV4LCB0YXJnZXRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGVSb3dzLCBpbnNlcnRUYWJsZVJvd3MsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZW1vdmVUYWJsZUNvbHVtbnNDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZW1vdmVUYWJsZUNvbHVtbnMgPSBuZXcgUmVtb3ZlVGFibGVDb2x1bW5zTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgaW5zZXJ0SW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlbW92ZVRhYmxlQ29sdW1ucywgcmVtb3ZlVGFibGVDb2x1bW5zLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVtb3ZlVGFibGVSb3dzQ29tbWFuZChcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlVGFibGVSb3dzID0gbmV3IFJlbW92ZVRhYmxlUm93c01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGluc2VydEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZW1vdmVUYWJsZVJvd3MsIHJlbW92ZVRhYmxlUm93cywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3RvcmVUZXh0U3R5bGVzQ29tbWFuZChmb3JtYXRzOiBGb3JtYXRNb2RlbFtdLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVzdG9yZVRleHRTdHlsZXMgPSBuZXcgUmVzdG9yZVRleHRTdHlsZXNNb2RlbCh7IGZvcm1hdHMgfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlc3RvcmVUZXh0U3R5bGVzLCByZXN0b3JlVGV4dFN0eWxlcywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNDb21tYW5kKHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10sIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZXN0b3JlUGFyYWdyYXBoU3R5bGVzID0gbmV3IFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNNb2RlbCh7IHBhcmFncmFwaHMgfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMsIHJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXN0b3JlQ29tbWFuZChyZXN0b3JlTW9kZWw6IFJlc3RvcmVNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlc3RvcmUgPSBuZXcgUmVzdG9yZU1vZGVsKHtcbiAgICAgICAgICAgIGJyZWFrczogcmVzdG9yZU1vZGVsLmJyZWFrcyxcbiAgICAgICAgICAgIGVsZW1lbnRzOiByZXN0b3JlTW9kZWwuZWxlbWVudHMsXG4gICAgICAgICAgICBmb3JtYXRzOiByZXN0b3JlTW9kZWwuZm9ybWF0cyxcbiAgICAgICAgICAgIGltYWdlczogcmVzdG9yZU1vZGVsLmltYWdlcyxcbiAgICAgICAgICAgIHN0YXJ0SW5kZXg6IHJlc3RvcmVNb2RlbC5zdGFydEluZGV4LFxuICAgICAgICAgICAgZW5kSW5kZXg6IHJlc3RvcmVNb2RlbC5lbmRJbmRleCxcbiAgICAgICAgICAgIHBhcmFncmFwaHM6IHJlc3RvcmVNb2RlbC5wYXJhZ3JhcGhzLFxuICAgICAgICAgICAgdGFibGVzOiByZXN0b3JlTW9kZWwudGFibGVzLFxuICAgICAgICAgICAgdGFiczogcmVzdG9yZU1vZGVsLnRhYnMsXG4gICAgICAgICAgICB0ZXh0OiByZXN0b3JlTW9kZWwudGV4dCxcbiAgICAgICAgICAgIGxpbmtzOiByZXN0b3JlTW9kZWwubGlua3NcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlc3RvcmUsIHJlc3RvcmUsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXN0b3JlVGFibGVDb21tYW5kKHJlc3RvcmVUYWJsZTogUmVzdG9yZVRhYmxlTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXN0b3JlVGFibGUsIHJlc3RvcmVUYWJsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlcGxhY2VDb21tYW5kKG1vZGVsOiBSZXBsYWNlTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXBsYWNlLCByZXBsYWNlOiBtb2RlbCwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc2l6ZVRhYmxlQ29sdW1uc0NvbW1hbmQocmVzaXplVGFibGVDb2x1bW5zOiBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlc2l6ZVRhYmxlQ29sdW1ucywgcmVzaXplVGFibGVDb2x1bW5zLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwbHlFbGVtZW50U3R5bGVDb21tYW5kKGFwcGx5RWxlbWVudFN0eWxlOiBBcHBseUVsZW1lbnRTdHlsZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlFbGVtZW50U3R5bGUsIGFwcGx5RWxlbWVudFN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,23 +0,0 @@
1
- import { EdgeType } from '../components/edges/edge-type.enum';
2
- import { TargetType } from './enums/target-type.enum';
3
- export class TargetOperationsHelper {
4
- static getContents(contents, target, document) {
5
- switch (target.type) {
6
- case TargetType.Document:
7
- return contents;
8
- case TargetType.TableCell: {
9
- const cellTarget = target.tableCell;
10
- const table = contents.tables.find(x => x.insertIndex === cellTarget.insertIndex);
11
- return table.rows[cellTarget.row].cells[cellTarget.column];
12
- }
13
- case TargetType.Edge: {
14
- const edgeTarget = target.edgeData;
15
- const edges = edgeTarget.type === EdgeType.Header ? document.headers : document.footers;
16
- return edges.find(x => x.pageType === edgeTarget.pageType);
17
- }
18
- default:
19
- throw new Error('Invalid target type for operation');
20
- }
21
- }
22
- }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LW9wZXJhdGlvbnMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL29wZXJhdGlvbnMvdGFyZ2V0LW9wZXJhdGlvbnMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQTJCLEVBQUUsTUFBbUIsRUFBRSxRQUFtQjtRQUNwRixRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxVQUFVLENBQUMsUUFBUTtnQkFDcEIsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM5RDtZQUNELEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3hGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlEO1lBQ0Q7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudHNJbnRlcmZhY2UgfSBmcm9tICcuLi9jb250ZW50L2NvbnRlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEb2N4TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3gubW9kZWwnO1xuaW1wb3J0IHsgRWRnZVR5cGUgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkZ2VzL2VkZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBUYXJnZXRPcGVyYXRpb25zSGVscGVyIHtcbiAgICBzdGF0aWMgZ2V0Q29udGVudHMoY29udGVudHM6IENvbnRlbnRzSW50ZXJmYWNlLCB0YXJnZXQ6IFRhcmdldE1vZGVsLCBkb2N1bWVudDogRG9jeE1vZGVsKTogQ29udGVudHNJbnRlcmZhY2Uge1xuICAgICAgICBzd2l0Y2ggKHRhcmdldC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRhcmdldFR5cGUuRG9jdW1lbnQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgICAgICAgICAgY2FzZSBUYXJnZXRUeXBlLlRhYmxlQ2VsbDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxUYXJnZXQgPSB0YXJnZXQudGFibGVDZWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gY29udGVudHMudGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBjZWxsVGFyZ2V0Lmluc2VydEluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUucm93c1tjZWxsVGFyZ2V0LnJvd10uY2VsbHNbY2VsbFRhcmdldC5jb2x1bW5dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUYXJnZXRUeXBlLkVkZ2U6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlZGdlVGFyZ2V0ID0gdGFyZ2V0LmVkZ2VEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VzID0gZWRnZVRhcmdldC50eXBlID09PSBFZGdlVHlwZS5IZWFkZXIgPyBkb2N1bWVudC5oZWFkZXJzIDogZG9jdW1lbnQuZm9vdGVycztcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZXMuZmluZCh4ID0+IHgucGFnZVR5cGUgPT09IGVkZ2VUYXJnZXQucGFnZVR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGFyZ2V0IHR5cGUgZm9yIG9wZXJhdGlvbicpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,8 +0,0 @@
1
- export const Alignment = {
2
- left: 0,
3
- center: 1,
4
- right: 2,
5
- justify: 3,
6
- all: [0, 1, 2, 3]
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ25tZW50cy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9wb3NpdGlvbmluZy9hbGlnbm1lbnRzLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsS0FBSyxFQUFFLENBQUM7SUFDUixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFsaWdubWVudCA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIGNlbnRlcjogMSxcbiAgICByaWdodDogMixcbiAgICBqdXN0aWZ5OiAzLFxuICAgIGFsbDogWzAsIDEsIDIsIDNdXG59O1xuIl19
@@ -1,45 +0,0 @@
1
- import { CursorParagraph } from './cursor-paragraph';
2
- export class ContentHelper {
3
- static documentIndexToParagraphIndex(paragraphs, indexInDocument) {
4
- let paragraph = paragraphs.findIndex(x => x.startIndex > indexInDocument);
5
- paragraph = paragraph === -1 ? paragraphs.length - 1 : paragraph - 1;
6
- const indexInParagraph = indexInDocument - paragraphs[paragraph].startIndex;
7
- return new CursorParagraph(paragraph, indexInParagraph);
8
- }
9
- static documentIndexToParagraphWithOffset(paragraphs, indexInDocument) {
10
- const position = this.documentIndexToParagraphIndex(paragraphs, indexInDocument);
11
- if (position.column < paragraphs[position.row].content.length) {
12
- return new CursorParagraph(position.row, position.column + 1);
13
- }
14
- return position;
15
- }
16
- static paragraphPositionToDocumentIndex(paragraphs, paragraph) {
17
- return this.paragraphToDocumentIndex(paragraphs, paragraph.row, paragraph.column);
18
- }
19
- static getSelectedPartDocumentIndexes(paragraphs, range) {
20
- return {
21
- startIndex: this.paragraphPositionToDocumentIndex(paragraphs, range.start),
22
- endIndex: this.paragraphPositionToDocumentIndex(paragraphs, range.end) - 1
23
- };
24
- }
25
- static paragraphToDocumentIndex(paragraphs, paragraph, index) {
26
- return paragraphs[paragraph].startIndex + index;
27
- }
28
- static setIndexesElementsInInterval(elements, elementIndexes, startIndex, endIndex) {
29
- elements.forEach(x => {
30
- if (x.insertIndex >= startIndex && x.insertIndex <= endIndex) {
31
- elementIndexes.push(x.insertIndex - startIndex);
32
- }
33
- });
34
- }
35
- static getContentFromInsertParagraph(insertParagraph) {
36
- if (insertParagraph.insertImage) {
37
- return insertParagraph.insertImage.imageData.content;
38
- }
39
- if (insertParagraph.insertTable) {
40
- return insertParagraph.insertTable.content;
41
- }
42
- return insertParagraph.insertText.text;
43
- }
44
- }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvcG9zaXRpb25pbmcvY29udGVudC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS3JELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxVQUFnQyxFQUFFLGVBQXVCO1FBQzFGLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQzFFLFNBQVMsR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDNUUsT0FBTyxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLFVBQWdDLEVBQUUsZUFBdUI7UUFDL0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNqRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzNELE9BQU8sSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFnQyxFQUFFLFNBQTBCO1FBQ2hHLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUFDLFVBQWdDLEVBQUUsS0FBWTtRQUNoRixPQUFPO1lBQ0gsVUFBVSxFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUM3RSxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUFnQyxFQUFFLFNBQWlCLEVBQUUsS0FBYTtRQUM5RixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsNEJBQTRCLENBQy9CLFFBQWEsRUFDYixjQUF3QixFQUN4QixVQUFrQixFQUNsQixRQUFnQjtRQUVoQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxRQUFRLEVBQUU7Z0JBQzFELGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQzthQUNuRDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxlQUFxQztRQUN0RSxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7U0FDeEQ7UUFFRCxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztTQUM5QztRQUVELE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5zZXJ0UGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXBhcmFncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuL2N1cnNvci1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgSW5zZXJ0SW5kZXhJbnRlcmZhY2UgfSBmcm9tICcuL2luc2VydC1pbmRleC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFyYWdyYXBoSW5mb01vZGVsIH0gZnJvbSAnLi4vY29udGVudC9kaXNwbGF5LWRhdGEvbW9kZWxzL3BhcmFncmFwaC1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFJhbmdlIH0gZnJvbSAnLi9yYW5nZSc7XG5cbmV4cG9ydCBjbGFzcyBDb250ZW50SGVscGVyIHtcbiAgICBzdGF0aWMgZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoSW5kZXgocGFyYWdyYXBoczogUGFyYWdyYXBoSW5mb01vZGVsW10sIGluZGV4SW5Eb2N1bWVudDogbnVtYmVyKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgbGV0IHBhcmFncmFwaCA9IHBhcmFncmFwaHMuZmluZEluZGV4KHggPT4geC5zdGFydEluZGV4ID4gaW5kZXhJbkRvY3VtZW50KTtcbiAgICAgICAgcGFyYWdyYXBoID0gcGFyYWdyYXBoID09PSAtMSA/IHBhcmFncmFwaHMubGVuZ3RoIC0gMSA6IHBhcmFncmFwaCAtIDE7XG4gICAgICAgIGNvbnN0IGluZGV4SW5QYXJhZ3JhcGggPSBpbmRleEluRG9jdW1lbnQgLSBwYXJhZ3JhcGhzW3BhcmFncmFwaF0uc3RhcnRJbmRleDtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBpbmRleEluUGFyYWdyYXBoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoV2l0aE9mZnNldChwYXJhZ3JhcGhzOiBQYXJhZ3JhcGhJbmZvTW9kZWxbXSwgaW5kZXhJbkRvY3VtZW50OiBudW1iZXIpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoSW5kZXgocGFyYWdyYXBocywgaW5kZXhJbkRvY3VtZW50KTtcbiAgICAgICAgaWYgKHBvc2l0aW9uLmNvbHVtbiA8IHBhcmFncmFwaHNbcG9zaXRpb24ucm93XS5jb250ZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4gKyAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuXG4gICAgc3RhdGljIHBhcmFncmFwaFBvc2l0aW9uVG9Eb2N1bWVudEluZGV4KHBhcmFncmFwaHM6IFBhcmFncmFwaEluZm9Nb2RlbFtdLCBwYXJhZ3JhcGg6IEN1cnNvclBhcmFncmFwaCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFncmFwaFRvRG9jdW1lbnRJbmRleChwYXJhZ3JhcGhzLCBwYXJhZ3JhcGgucm93LCBwYXJhZ3JhcGguY29sdW1uKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U2VsZWN0ZWRQYXJ0RG9jdW1lbnRJbmRleGVzKHBhcmFncmFwaHM6IFBhcmFncmFwaEluZm9Nb2RlbFtdLCByYW5nZTogUmFuZ2UpOiB7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlciB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0SW5kZXg6IHRoaXMucGFyYWdyYXBoUG9zaXRpb25Ub0RvY3VtZW50SW5kZXgocGFyYWdyYXBocywgcmFuZ2Uuc3RhcnQpLFxuICAgICAgICAgICAgZW5kSW5kZXg6IHRoaXMucGFyYWdyYXBoUG9zaXRpb25Ub0RvY3VtZW50SW5kZXgocGFyYWdyYXBocywgcmFuZ2UuZW5kKSAtIDFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcGFyYWdyYXBoVG9Eb2N1bWVudEluZGV4KHBhcmFncmFwaHM6IFBhcmFncmFwaEluZm9Nb2RlbFtdLCBwYXJhZ3JhcGg6IG51bWJlciwgaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJhZ3JhcGhzW3BhcmFncmFwaF0uc3RhcnRJbmRleCArIGluZGV4O1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXRJbmRleGVzRWxlbWVudHNJbkludGVydmFsPFQgZXh0ZW5kcyBJbnNlcnRJbmRleEludGVyZmFjZT4oXG4gICAgICAgIGVsZW1lbnRzOiBUW10sXG4gICAgICAgIGVsZW1lbnRJbmRleGVzOiBudW1iZXJbXSxcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICBpZiAoeC5pbnNlcnRJbmRleCA+PSBzdGFydEluZGV4ICYmIHguaW5zZXJ0SW5kZXggPD0gZW5kSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50SW5kZXhlcy5wdXNoKHguaW5zZXJ0SW5kZXggLSBzdGFydEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldENvbnRlbnRGcm9tSW5zZXJ0UGFyYWdyYXBoKGluc2VydFBhcmFncmFwaDogSW5zZXJ0UGFyYWdyYXBoTW9kZWwpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5zZXJ0UGFyYWdyYXBoLmluc2VydEltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0UGFyYWdyYXBoLmluc2VydEltYWdlLmltYWdlRGF0YS5jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluc2VydFBhcmFncmFwaC5pbnNlcnRUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGluc2VydFBhcmFncmFwaC5pbnNlcnRUYWJsZS5jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc2VydFBhcmFncmFwaC5pbnNlcnRUZXh0LnRleHQ7XG4gICAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- export class CursorParagraph {
2
- constructor(row, column) {
3
- this.row = row;
4
- this.column = column;
5
- }
6
- static compareCursorPositions(first, second) {
7
- return first.row - second.row || first.column - second.column;
8
- }
9
- static clone(position) {
10
- return new CursorParagraph(position.row, position.column);
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yLXBhcmFncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9wb3NpdGlvbmluZy9jdXJzb3ItcGFyYWdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxlQUFlO0lBS3hCLFlBQVksR0FBVyxFQUFFLE1BQWM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQXNCLEVBQUUsTUFBdUI7UUFDekUsT0FBTyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQXlCO1FBQ2xDLE9BQU8sSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEN1cnNvclBhcmFncmFwaCB7XG4gICAgcm93OiBudW1iZXI7XG5cbiAgICBjb2x1bW46IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikge1xuICAgICAgICB0aGlzLnJvdyA9IHJvdztcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbXBhcmVDdXJzb3JQb3NpdGlvbnMoZmlyc3Q6IEN1cnNvclBhcmFncmFwaCwgc2Vjb25kOiBDdXJzb3JQYXJhZ3JhcGgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmlyc3Qucm93IC0gc2Vjb25kLnJvdyB8fCBmaXJzdC5jb2x1bW4gLSBzZWNvbmQuY29sdW1uO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbG9uZShwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yLXBvc2l0aW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9wb3NpdGlvbmluZy9jdXJzb3ItcG9zaXRpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRm9udE1ldHJpY1NpemUgfSBmcm9tICcuLi9nYWRnZXRzL2ZvbnQtbWV0cmljcy9mb250LW1ldHJpYy1zaXplLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3Vyc29yUG9zaXRpb24ge1xuICAgIHBhZ2VYOiBudW1iZXI7XG4gICAgcGFnZVk6IG51bWJlcjtcbiAgICBsaW5lSGVpZ2h0PzogbnVtYmVyO1xuICAgIHNpemVDdXJyZW50PzogSUZvbnRNZXRyaWNTaXplO1xuICAgIHNpemVNYXg/OiBJRm9udE1ldHJpY1NpemU7XG4gICAgc2l6ZU5leHQ/OiBJRm9udE1ldHJpY1NpemU7XG4gICAgZmlyc3RDaGFyPzogYm9vbGVhbjtcbiAgICBsYXN0Q2hhcj86IGJvb2xlYW47XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWluZGV4LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9wb3NpdGlvbmluZy9pbnNlcnQtaW5kZXguaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEluc2VydEluZGV4SW50ZXJmYWNlIHtcbiAgICBpbnNlcnRJbmRleDogbnVtYmVyO1xufVxuIl19
@@ -1,13 +0,0 @@
1
- import { CursorParagraph } from './cursor-paragraph';
2
- export class LineWidthHelper {
3
- static getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex) {
4
- const docPos = session.displayData.positionToIndex(new CursorParagraph(paragraphIndex, 0), 0);
5
- const rowWrap = session.displayData.paragraphs[paragraphIndex]?.nextLineIndexes || [];
6
- const startWrapIndex = lineIndex > 0 ? rowWrap[lineIndex - 1] : 0;
7
- const endIndex = rowWrap[lineIndex];
8
- const docLine = session.displayData.getParagraphContent(paragraphIndex);
9
- const offset = startWrapIndex ? docPos + startWrapIndex : docPos;
10
- return session.displayData.getLineTokens(session.model, docLine.substring(startWrapIndex, endIndex || undefined), offset);
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS13aWR0aC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvcG9zaXRpb25pbmcvbGluZS13aWR0aC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXJELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxPQUFvQixFQUFFLGNBQXNCLEVBQUUsU0FBaUI7UUFDaEcsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDdEYsTUFBTSxjQUFjLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRWpFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUksU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUgsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3Vyc29yUGFyYWdyYXBoIH0gZnJvbSAnLi9jdXJzb3ItcGFyYWdyYXBoJztcbmltcG9ydCB7IERpc3BsYXlUb2tlbiB9IGZyb20gJy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2Rpc3BsYXktdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9leGVjdXRpb24vZWRpdC5zZXNzaW9uJztcblxuZXhwb3J0IGNsYXNzIExpbmVXaWR0aEhlbHBlciB7XG4gICAgc3RhdGljIGdldFBhcmFncmFwaExpbmVEaXNwbGF5VG9rZW5zKHNlc3Npb246IEVkaXRTZXNzaW9uLCBwYXJhZ3JhcGhJbmRleDogbnVtYmVyLCBsaW5lSW5kZXg6IG51bWJlcik6IERpc3BsYXlUb2tlbltdIHtcbiAgICAgICAgY29uc3QgZG9jUG9zID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wb3NpdGlvblRvSW5kZXgobmV3IEN1cnNvclBhcmFncmFwaChwYXJhZ3JhcGhJbmRleCwgMCksIDApO1xuICAgICAgICBjb25zdCByb3dXcmFwID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XT8ubmV4dExpbmVJbmRleGVzIHx8IFtdO1xuICAgICAgICBjb25zdCBzdGFydFdyYXBJbmRleCA9IGxpbmVJbmRleCA+IDAgPyByb3dXcmFwW2xpbmVJbmRleCAtIDFdIDogMDtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSByb3dXcmFwW2xpbmVJbmRleF07XG4gICAgICAgIGNvbnN0IGRvY0xpbmUgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaENvbnRlbnQocGFyYWdyYXBoSW5kZXgpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBzdGFydFdyYXBJbmRleCA/IGRvY1BvcyArIHN0YXJ0V3JhcEluZGV4IDogZG9jUG9zO1xuXG4gICAgICAgIHJldHVybiBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldExpbmVUb2tlbnMoc2Vzc2lvbi5tb2RlbCwgZG9jTGluZS5zdWJzdHJpbmcoc3RhcnRXcmFwSW5kZXgsIGVuZEluZGV4IHx8IHVuZGVmaW5lZCksIG9mZnNldCk7XG4gICAgfVxufVxuIl19
@@ -1,210 +0,0 @@
1
- import { CursorParagraph } from './cursor-paragraph';
2
- import { DisplayValue } from '../content/constants/display-values.const';
3
- import { LineWidthHelper } from './line-width.helper';
4
- export class PositionHelper {
5
- /**
6
- * Returns an object containing the `pageX` and `pageY` coordinates of the document position.
7
- */
8
- static documentToPixel(session, documentPosition) {
9
- const screenPosition = this.documentToScreen(session, documentPosition.row, documentPosition.column);
10
- return this.screenToPixel(session, screenPosition.row, screenPosition.column);
11
- }
12
- /**
13
- * Get paragraph info (paragraph index, paragraph line index, line top offset and others) by row index
14
- **/
15
- static getParagraphInfoByRow(paragraphs, row) {
16
- const { paragraphIndex, lineIndex } = this.findLineInParagraphs(paragraphs, row);
17
- let lineTopOffset = 0;
18
- for (let i = 0; i < lineIndex; i++) {
19
- const info = paragraphs[paragraphIndex].paragraphSettings.textLinesInfo[i];
20
- lineTopOffset += info.height + info.endPageOffset + info.offsetBefore + info.offsetAfter;
21
- }
22
- const paragraphLineInfo = paragraphs[paragraphIndex].paragraphSettings.textLinesInfo[lineIndex];
23
- lineTopOffset += paragraphLineInfo.offsetBefore;
24
- return {
25
- paragraphIndex,
26
- lineIndex,
27
- lineTopOffset,
28
- indentBefore: paragraphLineInfo.offsetBefore,
29
- lineHeight: paragraphLineInfo.height
30
- };
31
- }
32
- static documentToScreen(session, paragraph, indexInParagraph) {
33
- const paragraphLine = session.displayData.paragraphs[paragraph].lineNumber;
34
- if (!session.displayData.paragraphs[paragraph].nextLineIndexes.length ||
35
- session.displayData.paragraphs[paragraph].nextLineIndexes[0] > indexInParagraph) {
36
- return new CursorParagraph(paragraphLine, indexInParagraph);
37
- }
38
- let line = 0;
39
- while (session.displayData.paragraphs[paragraph].nextLineIndexes[line] <= indexInParagraph &&
40
- line < session.displayData.paragraphs[paragraph].nextLineIndexes.length) {
41
- line++;
42
- }
43
- const index = indexInParagraph - session.displayData.paragraphs[paragraph].nextLineIndexes[line - 1];
44
- return new CursorParagraph(paragraphLine + line, index);
45
- }
46
- static screenToDocument(session, line, indexInLine) {
47
- let paragraph = session.displayData.paragraphs.findIndex(x => x.lineNumber > line);
48
- if (paragraph === -1) {
49
- paragraph = session.displayData.paragraphs.length - 1;
50
- }
51
- else if (paragraph > 0) {
52
- paragraph = paragraph - 1;
53
- }
54
- let lineInParagraph = line - session.displayData.paragraphs[paragraph].lineNumber;
55
- if (!session.displayData.paragraphs[paragraph].nextLineIndexes.length || lineInParagraph === 0) {
56
- return new CursorParagraph(paragraph, indexInLine);
57
- }
58
- const index = indexInLine + session.displayData.paragraphs[paragraph].nextLineIndexes[lineInParagraph - 1];
59
- return new CursorParagraph(paragraph, index);
60
- }
61
- /**
62
- * Returns an object containing the `pageX` and `pageY` coordinates of the document position.
63
- **/
64
- static screenToPixel(session, row, column) {
65
- const paragraphs = session.displayData.paragraphs;
66
- const paragraphInfo = this.getParagraphInfoByRow(paragraphs, row);
67
- const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphInfo.paragraphIndex, paragraphInfo.lineIndex);
68
- let size = {
69
- width: 8,
70
- height: paragraphInfo.lineHeight,
71
- baseline: paragraphInfo.lineHeight,
72
- content: paragraphInfo.lineHeight,
73
- font: paragraphInfo.lineHeight,
74
- line: paragraphInfo.lineHeight,
75
- multiplier: paragraphInfo.lineHeight,
76
- ascent: 0,
77
- descent: 0
78
- };
79
- let tokenIndex = column > 0 ? column - 1 : column;
80
- if (tokens.length > 0) {
81
- size = tokens[tokenIndex];
82
- }
83
- const sizeNext = tokens[tokenIndex + 1];
84
- let sizeMax = { ...size };
85
- let lineWidthToPosition = session.displayData.pageMargin.left;
86
- for (let currentColumn = 0; currentColumn < tokens.length; currentColumn++) {
87
- if (currentColumn < column) {
88
- lineWidthToPosition += tokens[currentColumn].width;
89
- }
90
- if (sizeMax.ascent < tokens[currentColumn].ascent) {
91
- sizeMax = tokens[currentColumn];
92
- }
93
- }
94
- if (tokens[tokenIndex]?.isTable) {
95
- sizeMax.ascent = paragraphInfo.lineHeight;
96
- }
97
- const paragraph = paragraphs[paragraphInfo.paragraphIndex];
98
- const paragraphTop = paragraph.paragraphSettings.distanceFromTop || 0;
99
- const linePaddingLeft = paragraph.paragraphSettings.textLinesInfo[paragraphInfo.lineIndex].paddingLeft;
100
- return {
101
- pageX: lineWidthToPosition + linePaddingLeft,
102
- pageY: paragraphTop + paragraphInfo.lineTopOffset - session.scrollTop,
103
- lineHeight: paragraphInfo.lineHeight,
104
- sizeCurrent: size,
105
- sizeMax,
106
- sizeNext,
107
- firstChar: column === 0,
108
- lastChar: column === tokens.length - 1
109
- };
110
- }
111
- /**
112
- * Calculates the paragraph and line index based on the given Y position.
113
- **/
114
- static getParagraphAndLineIndexFromYPosition(session, yPosition, top) {
115
- const { displayData, scrollTop } = session;
116
- yPosition += scrollTop - top;
117
- let paragraphIndex = displayData.paragraphs.findIndex(paragraph => paragraph.paragraphSettings.distanceFromTop > yPosition);
118
- if (paragraphIndex < 0) {
119
- paragraphIndex = displayData.paragraphs.length - 1;
120
- }
121
- else if (paragraphIndex > 0) {
122
- paragraphIndex--;
123
- }
124
- const paragraphSettings = displayData.paragraphs[paragraphIndex].paragraphSettings;
125
- yPosition -= paragraphSettings.distanceFromTop;
126
- let lineIndex = 0;
127
- while (yPosition > 0 && lineIndex < paragraphSettings.textLinesInfo.length - 1) {
128
- const lineInfo = paragraphSettings.textLinesInfo[lineIndex];
129
- const lineHeight = lineInfo.height + lineInfo.endPageOffset + lineInfo.offsetBefore + lineInfo.offsetAfter;
130
- if (yPosition <= lineHeight) {
131
- break;
132
- }
133
- lineIndex++;
134
- yPosition -= lineHeight;
135
- }
136
- return { paragraphIndex, lineIndex };
137
- }
138
- /**
139
- * Maps a pixel position to a screen position using half-token width comparison.
140
- */
141
- static mapPixelToClosestTokenMidpoint(session, xPixel, paragraphIndex, lineIndex, leftOffset) {
142
- const paragraphSettings = session.displayData.paragraphs[paragraphIndex].paragraphSettings;
143
- const line = paragraphSettings.textLinesInfo[lineIndex].screenLine;
144
- let indexInLine = 0;
145
- let relativeX = xPixel - leftOffset - session.displayData.pageMargin.left - paragraphSettings.textLinesInfo[lineIndex].paddingLeft;
146
- const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex);
147
- if (tokens[0].displayValue === DisplayValue.emptyLine) {
148
- return { line, indexInLine };
149
- }
150
- while (indexInLine < tokens.length && relativeX >= tokens[indexInLine].width / 2) {
151
- relativeX -= tokens[indexInLine].width;
152
- indexInLine++;
153
- }
154
- return { line, indexInLine };
155
- }
156
- /**
157
- * Maps a pixel position to a screen position using full-token width comparison.
158
- */
159
- static mapPixelToNextTokenBoundary(session, xPixel, paragraphIndex, lineIndex, leftOffset) {
160
- const paragraphSettings = session.displayData.paragraphs[paragraphIndex].paragraphSettings;
161
- const line = paragraphSettings.textLinesInfo[lineIndex].screenLine;
162
- let indexInLine = 0;
163
- let relativeX = xPixel - leftOffset - session.displayData.pageMargin.left - paragraphSettings.textLinesInfo[lineIndex].paddingLeft;
164
- const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex);
165
- if (tokens[0].displayValue === DisplayValue.emptyLine) {
166
- return { line, indexInLine };
167
- }
168
- while (indexInLine < tokens.length && relativeX >= tokens[indexInLine].width) {
169
- relativeX -= tokens[indexInLine].width;
170
- indexInLine++;
171
- }
172
- return { line, indexInLine };
173
- }
174
- static findLineInParagraphs(paragraphs, documentLine) {
175
- let index = 0;
176
- let paragraphIndex = 0;
177
- while (paragraphIndex < paragraphs.length) {
178
- if (index + paragraphs[paragraphIndex].paragraphSettings.textLinesInfo.length > documentLine) {
179
- break;
180
- }
181
- index += paragraphs[paragraphIndex].paragraphSettings.textLinesInfo.length;
182
- paragraphIndex++;
183
- }
184
- const lineIndex = documentLine - index;
185
- return { paragraphIndex, lineIndex };
186
- }
187
- static getApproximatePosition(session, documentLine, positionWidth) {
188
- const paragraphs = session.displayData.paragraphs;
189
- const documentMargin = session.displayData.pageMargin;
190
- const { paragraphIndex, lineIndex } = PositionHelper.findLineInParagraphs(paragraphs, documentLine);
191
- let column = 0;
192
- const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex);
193
- if (tokens.length === 1 && tokens[0].displayValue === DisplayValue.emptyLine) {
194
- return column;
195
- }
196
- const textLineInfo = paragraphs[paragraphIndex].paragraphSettings.textLinesInfo[lineIndex];
197
- let width = positionWidth - textLineInfo.paddingLeft - documentMargin.left;
198
- while (column < tokens.length && width >= tokens[column].width) {
199
- width -= tokens[column].width;
200
- column++;
201
- }
202
- return column;
203
- }
204
- static pixelToPage(clientY, mainSession, mainRenderer) {
205
- const positionY = clientY + mainSession.scrollTop - mainRenderer.container.getBoundingClientRect().top;
206
- const height = mainSession.displayData.pagesSpace + mainSession.displayData.pageHeight;
207
- return Math.floor(positionY / height) + 1;
208
- }
209
- }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3Bvc2l0aW9uaW5nL3Bvc2l0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt0RCxNQUFNLE9BQU8sY0FBYztJQUN2Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBb0IsRUFBRSxnQkFBaUM7UUFDMUUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckcsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O1FBRUk7SUFDSixNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBZ0MsRUFBRSxHQUFXO1FBQ3RFLE1BQU0sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FB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LGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRixJQUFJLEtBQUssR0FBRyxhQUFhLEdBQUcsWUFBWSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQzNFLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDNUQsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUM7U0FDWjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWUsRUFBRSxXQUF3QixFQUFFLFlBQTZCO1FBQ3ZGLE1BQU0sU0FBUyxHQUFHLE9BQU8sR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdkcsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3Vyc29yUGFyYWdyYXBoIH0gZnJvbSAnLi9jdXJzb3ItcGFyYWdyYXBoJztcbmltcG9ydCB7IEN1cnNvclBvc2l0aW9uIH0gZnJvbSAnLi9jdXJzb3ItcG9zaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IERpc3BsYXlWYWx1ZSB9IGZyb20gJy4uL2NvbnRlbnQvY29uc3RhbnRzL2Rpc3BsYXktdmFsdWVzLmNvbnN0JztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBJRm9udE1ldHJpY1NpemUgfSBmcm9tICcuLi9nYWRnZXRzL2ZvbnQtbWV0cmljcy9mb250LW1ldHJpYy1zaXplLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaW5lV2lkdGhIZWxwZXIgfSBmcm9tICcuL2xpbmUtd2lkdGguaGVscGVyJztcbmltcG9ydCB7IFBhcmFncmFwaEluZm8gfSBmcm9tICcuLi9jb250ZW50L2Rpc3BsYXktZGF0YS9wYXJhZ3JhcGgtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFyYWdyYXBoSW5mb01vZGVsIH0gZnJvbSAnLi4vY29udGVudC9kaXNwbGF5LWRhdGEvbW9kZWxzL3BhcmFncmFwaC1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFZpcnR1YWxSZW5kZXJlciB9IGZyb20gJy4uL2Rpc3BsYXkvdmlydHVhbC5yZW5kZXJlcic7XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkhlbHBlciB7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHBhZ2VYYCBhbmQgYHBhZ2VZYCBjb29yZGluYXRlcyBvZiB0aGUgZG9jdW1lbnQgcG9zaXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIGRvY3VtZW50VG9QaXhlbChzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgZG9jdW1lbnRQb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUG9zaXRpb24ge1xuICAgICAgICBjb25zdCBzY3JlZW5Qb3NpdGlvbiA9IHRoaXMuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBkb2N1bWVudFBvc2l0aW9uLnJvdywgZG9jdW1lbnRQb3NpdGlvbi5jb2x1bW4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblRvUGl4ZWwoc2Vzc2lvbiwgc2NyZWVuUG9zaXRpb24ucm93LCBzY3JlZW5Qb3NpdGlvbi5jb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBwYXJhZ3JhcGggaW5mbyAocGFyYWdyYXBoIGluZGV4LCBwYXJhZ3JhcGggbGluZSBpbmRleCwgbGluZSB0b3Agb2Zmc2V0IGFuZCBvdGhlcnMpIGJ5IHJvdyBpbmRleFxuICAgICAqKi9cbiAgICBzdGF0aWMgZ2V0UGFyYWdyYXBoSW5mb0J5Um93KHBhcmFncmFwaHM6IFBhcmFncmFwaEluZm9Nb2RlbFtdLCByb3c6IG51bWJlcik6IFBhcmFncmFwaEluZm8ge1xuICAgICAgICBjb25zdCB7IHBhcmFncmFwaEluZGV4LCBsaW5lSW5kZXggfSA9IHRoaXMuZmluZExpbmVJblBhcmFncmFwaHMocGFyYWdyYXBocywgcm93KTtcbiAgICAgICAgbGV0IGxpbmVUb3BPZmZzZXQgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gcGFyYWdyYXBoc1twYXJhZ3JhcGhJbmRleF0ucGFyYWdyYXBoU2V0dGluZ3MudGV4dExpbmVzSW5mb1tpXTtcbiAgICAgICAgICAgIGxpbmVUb3BPZmZzZXQgKz0gaW5mby5oZWlnaHQgKyBpbmZvLmVuZFBhZ2VPZmZzZXQgKyBpbmZvLm9mZnNldEJlZm9yZSArIGluZm8ub2Zmc2V0QWZ0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMaW5lSW5mbyA9IHBhcmFncmFwaHNbcGFyYWdyYXBoSW5kZXhdLnBhcmFncmFwaFNldHRpbmdzLnRleHRMaW5lc0luZm9bbGluZUluZGV4XTtcbiAgICAgICAgbGluZVRvcE9mZnNldCArPSBwYXJhZ3JhcGhMaW5lSW5mby5vZmZzZXRCZWZvcmU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhcmFncmFwaEluZGV4LFxuICAgICAgICAgICAgbGluZUluZGV4LFxuICAgICAgICAgICAgbGluZVRvcE9mZnNldCxcbiAgICAgICAgICAgIGluZGVudEJlZm9yZTogcGFyYWdyYXBoTGluZUluZm8ub2Zmc2V0QmVmb3JlLFxuICAgICAgICAgICAgbGluZUhlaWdodDogcGFyYWdyYXBoTGluZUluZm8uaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc3RhdGljIGRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBhcmFncmFwaDogbnVtYmVyLCBpbmRleEluUGFyYWdyYXBoOiBudW1iZXIpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMaW5lID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaF0ubGluZU51bWJlcjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBoc1twYXJhZ3JhcGhdLm5leHRMaW5lSW5kZXhlcy5sZW5ndGggfHxcbiAgICAgICAgICAgIHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBoc1twYXJhZ3JhcGhdLm5leHRMaW5lSW5kZXhlc1swXSA+IGluZGV4SW5QYXJhZ3JhcGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEN1cnNvclBhcmFncmFwaChwYXJhZ3JhcGhMaW5lLCBpbmRleEluUGFyYWdyYXBoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsaW5lID0gMDtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaF0ubmV4dExpbmVJbmRleGVzW2xpbmVdIDw9IGluZGV4SW5QYXJhZ3JhcGggJiZcbiAgICAgICAgICAgIGxpbmUgPCBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHNbcGFyYWdyYXBoXS5uZXh0TGluZUluZGV4ZXMubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgbGluZSsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaW5kZXhJblBhcmFncmFwaCAtIHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBoc1twYXJhZ3JhcGhdLm5leHRMaW5lSW5kZXhlc1tsaW5lIC0gMV07XG4gICAgICAgIHJldHVybiBuZXcgQ3Vyc29yUGFyYWdyYXBoKHBhcmFncmFwaExpbmUgKyBsaW5lLCBpbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNjcmVlblRvRG9jdW1lbnQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIGxpbmU6IG51bWJlciwgaW5kZXhJbkxpbmU6IG51bWJlcik6IEN1cnNvclBhcmFncmFwaCB7XG4gICAgICAgIGxldCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHMuZmluZEluZGV4KHggPT4geC5saW5lTnVtYmVyID4gbGluZSk7XG4gICAgICAgIGlmIChwYXJhZ3JhcGggPT09IC0xKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGggPSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHMubGVuZ3RoIC0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhZ3JhcGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGggPSBwYXJhZ3JhcGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsaW5lSW5QYXJhZ3JhcGggPSBsaW5lIC0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaF0ubGluZU51bWJlcjtcbiAgICAgICAgaWYgKCFzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHNbcGFyYWdyYXBoXS5uZXh0TGluZUluZGV4ZXMubGVuZ3RoIHx8IGxpbmVJblBhcmFncmFwaCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBpbmRleEluTGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBpbmRleEluTGluZSArIHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBoc1twYXJhZ3JhcGhdLm5leHRMaW5lSW5kZXhlc1tsaW5lSW5QYXJhZ3JhcGggLSAxXTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHBhZ2VYYCBhbmQgYHBhZ2VZYCBjb29yZGluYXRlcyBvZiB0aGUgZG9jdW1lbnQgcG9zaXRpb24uXG4gICAgICoqL1xuICAgIHN0YXRpYyBzY3JlZW5Ub1BpeGVsKHNlc3Npb246IEVkaXRTZXNzaW9uLCByb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpOiBDdXJzb3JQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaHMgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHM7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEluZm8gPSB0aGlzLmdldFBhcmFncmFwaEluZm9CeVJvdyhwYXJhZ3JhcGhzLCByb3cpO1xuICAgICAgICBjb25zdCB0b2tlbnMgPSBMaW5lV2lkdGhIZWxwZXIuZ2V0UGFyYWdyYXBoTGluZURpc3BsYXlUb2tlbnMoc2Vzc2lvbiwgcGFyYWdyYXBoSW5mby5wYXJhZ3JhcGhJbmRleCwgcGFyYWdyYXBoSW5mby5saW5lSW5kZXgpO1xuXG4gICAgICAgIGxldCBzaXplOiBJRm9udE1ldHJpY1NpemUgPSB7XG4gICAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICAgIGhlaWdodDogcGFyYWdyYXBoSW5mby5saW5lSGVpZ2h0LFxuICAgICAgICAgICAgYmFzZWxpbmU6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIGZvbnQ6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIGxpbmU6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIG11bHRpcGxpZXI6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIGFzY2VudDogMCxcbiAgICAgICAgICAgIGRlc2NlbnQ6IDBcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHRva2VuSW5kZXggPSBjb2x1bW4gPiAwID8gY29sdW1uIC0gMSA6IGNvbHVtbjtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzaXplID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZU5leHQgPSB0b2tlbnNbdG9rZW5JbmRleCArIDFdO1xuICAgICAgICBsZXQgc2l6ZU1heCA9IHsgLi4uc2l6ZSB9O1xuICAgICAgICBsZXQgbGluZVdpZHRoVG9Qb3NpdGlvbiA9IHNlc3Npb24uZGlzcGxheURhdGEucGFnZU1hcmdpbi5sZWZ0O1xuICAgICAgICBmb3IgKGxldCBjdXJyZW50Q29sdW1uID0gMDsgY3VycmVudENvbHVtbiA8IHRva2Vucy5sZW5ndGg7IGN1cnJlbnRDb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPCBjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGhUb1Bvc2l0aW9uICs9IHRva2Vuc1tjdXJyZW50Q29sdW1uXS53aWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNpemVNYXguYXNjZW50IDwgdG9rZW5zW2N1cnJlbnRDb2x1bW5dLmFzY2VudCkge1xuICAgICAgICAgICAgICAgIHNpemVNYXggPSB0b2tlbnNbY3VycmVudENvbHVtbl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW5zW3Rva2VuSW5kZXhdPy5pc1RhYmxlKSB7XG4gICAgICAgICAgICBzaXplTWF4LmFzY2VudCA9IHBhcmFncmFwaEluZm8ubGluZUhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmFncmFwaCA9IHBhcmFncmFwaHNbcGFyYWdyYXBoSW5mby5wYXJhZ3JhcGhJbmRleF07XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaFRvcCA9IHBhcmFncmFwaC5wYXJhZ3JhcGhTZXR0aW5ncy5kaXN0YW5jZUZyb21Ub3AgfHwgMDtcbiAgICAgICAgY29uc3QgbGluZVBhZGRpbmdMZWZ0ID0gcGFyYWdyYXBoLnBhcmFncmFwaFNldHRpbmdzLnRleHRMaW5lc0luZm9bcGFyYWdyYXBoSW5mby5saW5lSW5kZXhdLnBhZGRpbmdMZWZ0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlWDogbGluZVdpZHRoVG9Qb3NpdGlvbiArIGxpbmVQYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIHBhZ2VZOiBwYXJhZ3JhcGhUb3AgKyBwYXJhZ3JhcGhJbmZvLmxpbmVUb3BPZmZzZXQgLSBzZXNzaW9uLnNjcm9sbFRvcCxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IHBhcmFncmFwaEluZm8ubGluZUhlaWdodCxcbiAgICAgICAgICAgIHNpemVDdXJyZW50OiBzaXplLFxuICAgICAgICAgICAgc2l6ZU1heCxcbiAgICAgICAgICAgIHNpemVOZXh0LFxuICAgICAgICAgICAgZmlyc3RDaGFyOiBjb2x1bW4gPT09IDAsXG4gICAgICAgICAgICBsYXN0Q2hhcjogY29sdW1uID09PSB0b2tlbnMubGVuZ3RoIC0gMVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBhcmFncmFwaCBhbmQgbGluZSBpbmRleCBiYXNlZCBvbiB0aGUgZ2l2ZW4gWSBwb3NpdGlvbi5cbiAgICAgKiovXG4gICAgc3RhdGljIGdldFBhcmFncmFwaEFuZExpbmVJbmRleEZyb21ZUG9zaXRpb24oXG4gICAgICAgIHNlc3Npb246IEVkaXRTZXNzaW9uLFxuICAgICAgICB5UG9zaXRpb246IG51bWJlcixcbiAgICAgICAgdG9wOiBudW1iZXJcbiAgICApOiB7IHBhcmFncmFwaEluZGV4OiBudW1iZXI7IGxpbmVJbmRleDogbnVtYmVyIH0ge1xuICAgICAgICBjb25zdCB7IGRpc3BsYXlEYXRhLCBzY3JvbGxUb3AgfSA9IHNlc3Npb247XG4gICAgICAgIHlQb3NpdGlvbiArPSBzY3JvbGxUb3AgLSB0b3A7XG5cbiAgICAgICAgbGV0IHBhcmFncmFwaEluZGV4ID0gZGlzcGxheURhdGEucGFyYWdyYXBocy5maW5kSW5kZXgocGFyYWdyYXBoID0+IHBhcmFncmFwaC5wYXJhZ3JhcGhTZXR0aW5ncy5kaXN0YW5jZUZyb21Ub3AgPiB5UG9zaXRpb24pO1xuICAgICAgICBpZiAocGFyYWdyYXBoSW5kZXggPCAwKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGhJbmRleCA9IGRpc3BsYXlEYXRhLnBhcmFncmFwaHMubGVuZ3RoIC0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhZ3JhcGhJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFncmFwaEluZGV4LS07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhTZXR0aW5ncyA9IGRpc3BsYXlEYXRhLnBhcmFncmFwaHNbcGFyYWdyYXBoSW5kZXhdLnBhcmFncmFwaFNldHRpbmdzO1xuICAgICAgICB5UG9zaXRpb24gLT0gcGFyYWdyYXBoU2V0dGluZ3MuZGlzdGFuY2VGcm9tVG9wO1xuXG4gICAgICAgIGxldCBsaW5lSW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoeVBvc2l0aW9uID4gMCAmJiBsaW5lSW5kZXggPCBwYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVJbmZvID0gcGFyYWdyYXBoU2V0dGluZ3MudGV4dExpbmVzSW5mb1tsaW5lSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGxpbmVJbmZvLmhlaWdodCArIGxpbmVJbmZvLmVuZFBhZ2VPZmZzZXQgKyBsaW5lSW5mby5vZmZzZXRCZWZvcmUgKyBsaW5lSW5mby5vZmZzZXRBZnRlcjtcblxuICAgICAgICAgICAgaWYgKHlQb3NpdGlvbiA8PSBsaW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lSW5kZXgrKztcbiAgICAgICAgICAgIHlQb3NpdGlvbiAtPSBsaW5lSGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgcGFyYWdyYXBoSW5kZXgsIGxpbmVJbmRleCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hcHMgYSBwaXhlbCBwb3NpdGlvbiB0byBhIHNjcmVlbiBwb3NpdGlvbiB1c2luZyBoYWxmLXRva2VuIHdpZHRoIGNvbXBhcmlzb24uXG4gICAgICovXG4gICAgc3RhdGljIG1hcFBpeGVsVG9DbG9zZXN0VG9rZW5NaWRwb2ludChcbiAgICAgICAgc2Vzc2lvbjogRWRpdFNlc3Npb24sXG4gICAgICAgIHhQaXhlbDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhJbmRleDogbnVtYmVyLFxuICAgICAgICBsaW5lSW5kZXg6IG51bWJlcixcbiAgICAgICAgbGVmdE9mZnNldDogbnVtYmVyXG4gICAgKTogeyBsaW5lOiBudW1iZXI7IGluZGV4SW5MaW5lOiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaFNldHRpbmdzID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XS5wYXJhZ3JhcGhTZXR0aW5ncztcbiAgICAgICAgY29uc3QgbGluZSA9IHBhcmFncmFwaFNldHRpbmdzLnRleHRMaW5lc0luZm9bbGluZUluZGV4XS5zY3JlZW5MaW5lO1xuXG4gICAgICAgIGxldCBpbmRleEluTGluZSA9IDA7XG4gICAgICAgIGxldCByZWxhdGl2ZVggPSB4UGl4ZWwgLSBsZWZ0T2Zmc2V0IC0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYWdlTWFyZ2luLmxlZnQgLSBwYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvW2xpbmVJbmRleF0ucGFkZGluZ0xlZnQ7XG5cbiAgICAgICAgY29uc3QgdG9rZW5zID0gTGluZVdpZHRoSGVscGVyLmdldFBhcmFncmFwaExpbmVEaXNwbGF5VG9rZW5zKHNlc3Npb24sIHBhcmFncmFwaEluZGV4LCBsaW5lSW5kZXgpO1xuICAgICAgICBpZiAodG9rZW5zWzBdLmRpc3BsYXlWYWx1ZSA9PT0gRGlzcGxheVZhbHVlLmVtcHR5TGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGluZSwgaW5kZXhJbkxpbmUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleEluTGluZSA8IHRva2Vucy5sZW5ndGggJiYgcmVsYXRpdmVYID49IHRva2Vuc1tpbmRleEluTGluZV0ud2lkdGggLyAyKSB7XG4gICAgICAgICAgICByZWxhdGl2ZVggLT0gdG9rZW5zW2luZGV4SW5MaW5lXS53aWR0aDtcbiAgICAgICAgICAgIGluZGV4SW5MaW5lKys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBsaW5lLCBpbmRleEluTGluZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hcHMgYSBwaXhlbCBwb3NpdGlvbiB0byBhIHNjcmVlbiBwb3NpdGlvbiB1c2luZyBmdWxsLXRva2VuIHdpZHRoIGNvbXBhcmlzb24uXG4gICAgICovXG4gICAgc3RhdGljIG1hcFBpeGVsVG9OZXh0VG9rZW5Cb3VuZGFyeShcbiAgICAgICAgc2Vzc2lvbjogRWRpdFNlc3Npb24sXG4gICAgICAgIHhQaXhlbDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhJbmRleDogbnVtYmVyLFxuICAgICAgICBsaW5lSW5kZXg6IG51bWJlcixcbiAgICAgICAgbGVmdE9mZnNldDogbnVtYmVyXG4gICAgKTogeyBsaW5lOiBudW1iZXI7IGluZGV4SW5MaW5lOiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaFNldHRpbmdzID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XS5wYXJhZ3JhcGhTZXR0aW5ncztcbiAgICAgICAgY29uc3QgbGluZSA9IHBhcmFncmFwaFNldHRpbmdzLnRleHRMaW5lc0luZm9bbGluZUluZGV4XS5zY3JlZW5MaW5lO1xuXG4gICAgICAgIGxldCBpbmRleEluTGluZSA9IDA7XG4gICAgICAgIGxldCByZWxhdGl2ZVggPSB4UGl4ZWwgLSBsZWZ0T2Zmc2V0IC0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYWdlTWFyZ2luLmxlZnQgLSBwYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvW2xpbmVJbmRleF0ucGFkZGluZ0xlZnQ7XG5cbiAgICAgICAgY29uc3QgdG9rZW5zID0gTGluZVdpZHRoSGVscGVyLmdldFBhcmFncmFwaExpbmVEaXNwbGF5VG9rZW5zKHNlc3Npb24sIHBhcmFncmFwaEluZGV4LCBsaW5lSW5kZXgpO1xuICAgICAgICBpZiAodG9rZW5zWzBdLmRpc3BsYXlWYWx1ZSA9PT0gRGlzcGxheVZhbHVlLmVtcHR5TGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGluZSwgaW5kZXhJbkxpbmUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleEluTGluZSA8IHRva2Vucy5sZW5ndGggJiYgcmVsYXRpdmVYID49IHRva2Vuc1tpbmRleEluTGluZV0ud2lkdGgpIHtcbiAgICAgICAgICAgIHJlbGF0aXZlWCAtPSB0b2tlbnNbaW5kZXhJbkxpbmVdLndpZHRoO1xuICAgICAgICAgICAgaW5kZXhJbkxpbmUrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGxpbmUsIGluZGV4SW5MaW5lIH07XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRMaW5lSW5QYXJhZ3JhcGhzKHBhcmFncmFwaHM6IFBhcmFncmFwaEluZm9Nb2RlbFtdLCBkb2N1bWVudExpbmU6IG51bWJlcik6IHsgcGFyYWdyYXBoSW5kZXg6IG51bWJlcjsgbGluZUluZGV4OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGxldCBwYXJhZ3JhcGhJbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChwYXJhZ3JhcGhJbmRleCA8IHBhcmFncmFwaHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggKyBwYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XS5wYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvLmxlbmd0aCA+IGRvY3VtZW50TGluZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCArPSBwYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XS5wYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvLmxlbmd0aDtcbiAgICAgICAgICAgIHBhcmFncmFwaEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGluZUluZGV4ID0gZG9jdW1lbnRMaW5lIC0gaW5kZXg7XG4gICAgICAgIHJldHVybiB7IHBhcmFncmFwaEluZGV4LCBsaW5lSW5kZXggfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0QXBwcm94aW1hdGVQb3NpdGlvbihzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgZG9jdW1lbnRMaW5lOiBudW1iZXIsIHBvc2l0aW9uV2lkdGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaHMgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHM7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50TWFyZ2luID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYWdlTWFyZ2luO1xuICAgICAgICBjb25zdCB7IHBhcmFncmFwaEluZGV4LCBsaW5lSW5kZXggfSA9IFBvc2l0aW9uSGVscGVyLmZpbmRMaW5lSW5QYXJhZ3JhcGhzKHBhcmFncmFwaHMsIGRvY3VtZW50TGluZSk7XG4gICAgICAgIGxldCBjb2x1bW4gPSAwO1xuICAgICAgICBjb25zdCB0b2tlbnMgPSBMaW5lV2lkdGhIZWxwZXIuZ2V0UGFyYWdyYXBoTGluZURpc3BsYXlUb2tlbnMoc2Vzc2lvbiwgcGFyYWdyYXBoSW5kZXgsIGxpbmVJbmRleCk7XG4gICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAxICYmIHRva2Vuc1swXS5kaXNwbGF5VmFsdWUgPT09IERpc3BsYXlWYWx1ZS5lbXB0eUxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZXh0TGluZUluZm8gPSBwYXJhZ3JhcGhzW3BhcmFncmFwaEluZGV4XS5wYXJhZ3JhcGhTZXR0aW5ncy50ZXh0TGluZXNJbmZvW2xpbmVJbmRleF07XG4gICAgICAgIGxldCB3aWR0aCA9IHBvc2l0aW9uV2lkdGggLSB0ZXh0TGluZUluZm8ucGFkZGluZ0xlZnQgLSBkb2N1bWVudE1hcmdpbi5sZWZ0O1xuICAgICAgICB3aGlsZSAoY29sdW1uIDwgdG9rZW5zLmxlbmd0aCAmJiB3aWR0aCA+PSB0b2tlbnNbY29sdW1uXS53aWR0aCkge1xuICAgICAgICAgICAgd2lkdGggLT0gdG9rZW5zW2NvbHVtbl0ud2lkdGg7XG4gICAgICAgICAgICBjb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHN0YXRpYyBwaXhlbFRvUGFnZShjbGllbnRZOiBudW1iZXIsIG1haW5TZXNzaW9uOiBFZGl0U2Vzc2lvbiwgbWFpblJlbmRlcmVyOiBWaXJ0dWFsUmVuZGVyZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwb3NpdGlvblkgPSBjbGllbnRZICsgbWFpblNlc3Npb24uc2Nyb2xsVG9wIC0gbWFpblJlbmRlcmVyLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IG1haW5TZXNzaW9uLmRpc3BsYXlEYXRhLnBhZ2VzU3BhY2UgKyBtYWluU2Vzc2lvbi5kaXNwbGF5RGF0YS5wYWdlSGVpZ2h0O1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihwb3NpdGlvblkgLyBoZWlnaHQpICsgMTtcbiAgICB9XG59XG4iXX0=