@talrace/ngx-noder 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -66
- package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +61 -0
- package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +7 -0
- package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +47 -0
- package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +32 -0
- package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +64 -0
- package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +89 -0
- package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +22 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +111 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +37 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +49 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +90 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +81 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +28 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/heading/heading.component.mjs +22 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +53 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +18 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +27 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +71 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +94 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +24 -0
- package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +65 -0
- package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +84 -0
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +90 -0
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +117 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +8 -0
- package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/numbering-templates.const.mjs +6 -6
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +157 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +8 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +11 -0
- package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.mjs +1 -1
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +6 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +34 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +26 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +60 -0
- package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +55 -0
- package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +54 -0
- package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +84 -0
- package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +123 -0
- package/esm2022/lib/editor/components/edges/edge-element.model.mjs +9 -0
- package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +6 -0
- package/esm2022/lib/editor/components/edges/edge.component.mjs +99 -0
- package/esm2022/lib/editor/components/edges/edges.mjs +108 -0
- package/esm2022/lib/editor/components/edges/page-type.enum.mjs +7 -0
- package/esm2022/lib/editor/components/editor.component.mjs +112 -0
- package/esm2022/lib/editor/components/external-element/external-element.service.mjs +6 -0
- package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +4 -0
- package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +2 -0
- package/esm2022/lib/editor/components/external-element/external.component.mjs +41 -0
- package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +9 -0
- package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +11 -0
- package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +15 -0
- package/esm2022/lib/editor/components/image/components/image.component.mjs +88 -0
- package/esm2022/lib/editor/components/image/image-api.service.mjs +36 -0
- package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +38 -0
- package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +2 -0
- package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +19 -0
- package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +12 -0
- package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +106 -0
- package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +2 -0
- package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +52 -0
- package/esm2022/lib/editor/components/image/size.mjs +2 -0
- package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +59 -0
- package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +18 -0
- package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +43 -0
- package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +2 -0
- package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +3 -0
- package/esm2022/lib/editor/components/shared/custom-content.mjs +2 -0
- package/esm2022/lib/editor/components/shared/services/component.service.mjs +64 -0
- package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +163 -0
- package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +55 -0
- package/esm2022/lib/editor/components/tab/tab.component.mjs +44 -0
- package/esm2022/lib/editor/components/tab/tab.helper.mjs +6 -0
- package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +118 -0
- package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +97 -0
- package/esm2022/lib/editor/components/table/components/table.component.mjs +401 -0
- package/esm2022/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.mjs +1 -1
- package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +8 -0
- package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +6 -0
- package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +18 -0
- package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +9 -0
- package/esm2022/lib/editor/components/table/models/row-data.model.mjs +8 -0
- package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +7 -0
- package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +74 -0
- package/esm2022/lib/editor/components/table/selection/table-selection.mjs +366 -0
- package/esm2022/lib/editor/content/constants/display-values.const.mjs +8 -0
- package/esm2022/lib/editor/content/constants/document-info.const.mjs +13 -0
- package/esm2022/lib/editor/content/constants/editor.const.mjs +62 -0
- package/esm2022/lib/editor/content/contents.interface.mjs +2 -0
- package/esm2022/lib/editor/content/display-data/display-token.model.mjs +12 -0
- package/esm2022/lib/editor/content/display-data/document.mjs +134 -0
- package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +10 -0
- package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +11 -0
- package/esm2022/lib/editor/content/display-data/indent.model.mjs +9 -0
- package/esm2022/lib/editor/content/display-data/line-info.model.mjs +9 -0
- package/esm2022/lib/editor/content/display-data/lines.mjs +96 -0
- package/esm2022/lib/editor/content/display-data/pages.wrap.mjs +226 -0
- package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +2 -0
- package/esm2022/lib/editor/content/display-data/paragraph.mjs +52 -0
- package/esm2022/lib/editor/content/display-data/text-line-info.mjs +34 -0
- package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +2 -0
- package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +96 -0
- package/esm2022/lib/{+shared/editor → editor/content}/helpers/format.helper.mjs +1 -1
- package/esm2022/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.mjs +1 -1
- package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +9 -0
- package/esm2022/lib/editor/content/margin.model.mjs +16 -0
- package/esm2022/lib/editor/content/page-vertical-data.model.mjs +9 -0
- package/esm2022/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.mjs +1 -1
- package/esm2022/lib/editor/core/event-emitting.mjs +56 -0
- package/esm2022/lib/editor/display/cell.interface.mjs +2 -0
- package/esm2022/lib/editor/display/event.helper.mjs +18 -0
- package/esm2022/lib/editor/display/layers/cursor.layer.mjs +101 -0
- package/esm2022/lib/editor/display/layers/layer.config.mjs +2 -0
- package/esm2022/lib/editor/display/layers/pages.layer.mjs +97 -0
- package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +7 -0
- package/esm2022/lib/editor/display/layers/print.text.layer.mjs +7 -0
- package/esm2022/lib/editor/display/layers/selection.layer.mjs +113 -0
- package/esm2022/lib/editor/display/layers/text.layer.mjs +203 -0
- package/esm2022/lib/editor/display/print/print.helper.mjs +40 -0
- package/esm2022/lib/editor/display/print/print.renderer.mjs +67 -0
- package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +7 -0
- package/esm2022/lib/editor/display/render-changes.interface.mjs +2 -0
- package/esm2022/lib/editor/display/render-changes.model.mjs +25 -0
- package/esm2022/lib/editor/display/renderer.mjs +206 -0
- package/esm2022/lib/editor/display/rendering.helper.mjs +187 -0
- package/esm2022/lib/editor/display/renderloop.mjs +26 -0
- package/esm2022/lib/editor/display/virtual.renderer.mjs +317 -0
- package/esm2022/lib/editor/display/visible-range.interface.mjs +2 -0
- package/esm2022/lib/editor/editor.module.mjs +67 -0
- package/esm2022/lib/editor/execution/distance.model.mjs +10 -0
- package/esm2022/lib/editor/execution/edit.session.mjs +1117 -0
- package/esm2022/lib/editor/execution/editor.mjs +1346 -0
- package/esm2022/lib/editor/execution/helpers/delta.helper.mjs +18 -0
- package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +42 -0
- package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +64 -0
- package/esm2022/lib/editor/execution/helpers/page.helper.mjs +12 -0
- package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +41 -0
- package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +169 -0
- package/esm2022/lib/editor/execution/regulator.service.mjs +198 -0
- package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +19 -0
- package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +15 -0
- package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +8 -0
- package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +3 -0
- package/esm2022/lib/editor/execution/targeting/session.model.mjs +10 -0
- package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +2 -0
- package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +2 -0
- package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +88 -0
- package/esm2022/lib/editor/gadgets/history/operation-history.mjs +206 -0
- package/esm2022/lib/editor/gadgets/history/operation.type.mjs +2 -0
- package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +7 -0
- package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +9 -0
- package/esm2022/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.mjs +1 -1
- package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +82 -0
- package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +7 -0
- package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +18 -0
- package/esm2022/lib/editor/gadgets/scrollbar.mjs +81 -0
- package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +2 -0
- package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +2 -0
- package/esm2022/lib/editor/gadgets/search/search.mjs +231 -0
- package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +5 -0
- package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +20 -0
- package/esm2022/lib/editor/interaction/base.handler.mjs +19 -0
- package/esm2022/lib/editor/interaction/document.handler.mjs +27 -0
- package/esm2022/lib/editor/interaction/editor.service.mjs +325 -0
- package/esm2022/lib/editor/interaction/input.handler.mjs +149 -0
- package/esm2022/lib/{+shared/enums → editor/interaction}/mode.enum.mjs +1 -1
- package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +7 -0
- package/esm2022/lib/editor/interaction/mouse.handler.mjs +49 -0
- package/esm2022/lib/editor/interaction/text-input.mjs +53 -0
- package/esm2022/lib/editor/operations/commands.service.mjs +20 -0
- package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +32 -0
- package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +7 -0
- package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +9 -0
- package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +15 -0
- package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +55 -0
- package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +19 -0
- package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +43 -0
- package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +28 -0
- package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +55 -0
- package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +114 -0
- package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +16 -0
- package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +374 -0
- package/esm2022/lib/editor/operations/operations-helper.helper.mjs +432 -0
- package/esm2022/lib/editor/operations/save-commands.helper.mjs +127 -0
- package/esm2022/lib/editor/operations/target-operations.helper.mjs +23 -0
- package/esm2022/lib/editor/positioning/alignments.const.mjs +8 -0
- package/esm2022/lib/editor/positioning/content.helper.mjs +36 -0
- package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +13 -0
- package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +2 -0
- package/esm2022/lib/editor/positioning/insert-index.interface.mjs +2 -0
- package/esm2022/lib/editor/positioning/line-width.helper.mjs +13 -0
- package/esm2022/lib/editor/positioning/position.helper.mjs +194 -0
- package/esm2022/lib/editor/positioning/range.mjs +94 -0
- package/esm2022/lib/editor/positioning/selection.mjs +307 -0
- package/esm2022/lib/editor/revision.helper.mjs +91 -0
- package/esm2022/lib/models/generated/cell.model.mjs +1 -1
- package/esm2022/lib/models/generated/command.model.mjs +5 -1
- package/esm2022/lib/models/generated/insert-paragraph.model.mjs +20 -0
- package/esm2022/lib/models/generated/replace.model.mjs +5 -1
- package/esm2022/public-api.mjs +37 -31
- package/fesm2022/talrace-ngx-noder.mjs +3398 -2731
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +27 -0
- package/lib/apart-components/add-link-dialog/validation.helper.d.ts +5 -0
- package/lib/apart-components/add-link-mobile/add-link-mobile.component.d.ts +19 -0
- package/lib/{+shared → apart-components}/confirm-dialog/confirm-dialog.component.d.ts +2 -1
- package/lib/{+shared → apart-components}/editor-search/editor-search-dialog.component.d.ts +6 -7
- package/lib/apart-components/editor-title/editor-title.component.d.ts +25 -0
- package/lib/apart-components/editor-title-mobile/editor-title-mobile.component.d.ts +6 -0
- package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +49 -0
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/color-picker/color-picker.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font/font.component.d.ts +2 -2
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-size/font-size.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-style/font-style.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/format/format.component.d.ts +2 -2
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/heading/heading.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/numbering/numbering.component.d.ts +3 -3
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/print/print.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/undo-redo/undo-redo.component.d.ts +1 -1
- package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/zoom/zoom.component.d.ts +1 -1
- package/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.d.ts +36 -0
- package/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.d.ts +14 -0
- package/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.d.ts +23 -0
- package/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.d.ts +26 -0
- package/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.d.ts +40 -0
- package/lib/apart-components/editor-toolbar/editor-toolbar.module.d.ts +32 -0
- package/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.d.ts +2 -0
- package/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.d.ts +6 -0
- package/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.d.ts +9 -0
- package/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.d.ts +14 -0
- package/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.d.ts +38 -0
- package/lib/{+shared/editor-toolbar/helpers → apart-components/editor-toolbar/shared}/toolbar-styles.helper.d.ts +2 -2
- package/lib/{+shared → apart-components}/insert-table/insert-table.component.d.ts +1 -1
- package/lib/apart-components/insert-table-mobile/insert-table-mobile.component.d.ts +30 -0
- package/lib/apart-components/text-format-mobile/text-format-mobile.component.d.ts +35 -0
- package/lib/{+shared/editor/core/models → editor/components/edges}/edge-element.model.d.ts +1 -1
- package/lib/editor/components/edges/edge.component.d.ts +44 -0
- package/lib/{+shared/editor/core → editor}/components/edges/edges.d.ts +7 -7
- package/lib/{+shared/editor → editor/components}/editor.component.d.ts +11 -11
- package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-sidenav.interface.d.ts +1 -1
- package/lib/{+shared/editor/custom-components → editor/components}/external-element/external.component.d.ts +4 -4
- package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-element.model.d.ts +2 -1
- package/lib/{+shared/editor/custom-components → editor/components}/image/components/image.component.d.ts +4 -4
- package/lib/editor/components/image/image-api.service.d.ts +17 -0
- package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/resizer.component.d.ts +2 -2
- package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-wrapper.d.ts +1 -1
- package/lib/{+shared/editor/custom-components → editor/components}/shared/abstract/base.component.d.ts +6 -4
- package/lib/editor/components/shared/abstract/destroy.component.d.ts +9 -0
- package/lib/{+shared/editor/custom-components/shared/helpers → editor/components/shared}/custom-component.hepler.d.ts +3 -3
- package/lib/editor/components/shared/custom-components.interface.d.ts +13 -0
- package/lib/editor/components/shared/custom-content.d.ts +5 -0
- package/lib/{+shared/editor/custom-components/shared/services/component → editor/components/shared/services}/component.service.d.ts +1 -1
- package/lib/editor/components/shared/services/custom-content.service.d.ts +33 -0
- package/lib/{+shared/editor/custom-components → editor/components}/tab/tab.component.d.ts +2 -2
- package/lib/{+shared/editor/custom-components → editor/components}/table/cell-resizer/cell-resizer.d.ts +2 -1
- package/lib/editor/components/table/components/table-cell.component.d.ts +45 -0
- package/lib/{+shared/editor/custom-components → editor/components}/table/components/table.component.d.ts +26 -11
- package/lib/{+shared/editor/custom-components → editor/components}/table/overlay-menu/overlay-menu.component.d.ts +2 -2
- package/lib/{+shared/editor/custom-components → editor/components}/table/selection/table-selection.d.ts +3 -3
- package/lib/{+shared/editor/core → editor/content}/constants/editor.const.d.ts +3 -3
- package/lib/editor/content/contents.interface.d.ts +22 -0
- package/lib/{+shared/editor/core/models → editor/content/display-data}/display-token.model.d.ts +1 -1
- package/lib/{+shared/editor/core → editor/content/display-data}/document.d.ts +9 -9
- package/lib/{+shared/editor/core/models → editor/content/display-data}/format-ext.model.d.ts +1 -1
- package/lib/{+shared/editor/execution/models → editor/content/display-data}/general-properties.model.d.ts +2 -1
- package/lib/{+shared/editor/core/models → editor/content/display-data}/line-info.model.d.ts +1 -0
- package/lib/{+shared/editor/core/layers → editor/content/display-data}/lines.d.ts +1 -1
- package/lib/editor/content/display-data/pages.wrap.d.ts +42 -0
- package/lib/{+shared/editor/core/paging → editor/content/display-data}/paragraph.d.ts +8 -5
- package/lib/{+shared/editor/core/paging → editor/content/display-data}/text-line-info.d.ts +4 -2
- package/lib/editor/content/helpers/content-style.helper.d.ts +11 -0
- package/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.d.ts +1 -1
- package/lib/editor/content/helpers/scaling.helper.d.ts +4 -0
- package/lib/{+shared/editor/core/paging → editor/content}/page-vertical-data.model.d.ts +1 -1
- package/lib/{+shared/editor/core/base → editor/core}/event-emitting.d.ts +0 -5
- package/lib/{+shared/editor/core → editor/display}/layers/cursor.layer.d.ts +7 -8
- package/lib/{+shared/editor/core/interfaces → editor/display/layers}/layer.config.d.ts +2 -2
- package/lib/{+shared/editor/core → editor/display}/layers/pages.layer.d.ts +5 -6
- package/lib/editor/display/layers/print.text.layer.d.ts +4 -0
- package/lib/{+shared/editor/core → editor/display}/layers/selection.layer.d.ts +5 -6
- package/lib/editor/display/layers/text.layer.d.ts +34 -0
- package/lib/{+shared/helpers → editor/display/print}/print.helper.d.ts +3 -3
- package/lib/editor/display/print/print.renderer.d.ts +23 -0
- package/lib/{+shared/editor/core/helpers → editor/display/print}/print.rendering.helper.d.ts +2 -2
- package/lib/{+shared/editor/core/models → editor/display}/render-changes.model.d.ts +1 -1
- package/lib/{+shared/editor/core → editor/display}/renderer.d.ts +10 -13
- package/lib/{+shared/editor/core/helpers → editor/display}/rendering.helper.d.ts +10 -10
- package/lib/{+shared/editor/core/layers → editor/display}/renderloop.d.ts +2 -2
- package/lib/{+shared/editor/core → editor/display}/virtual.renderer.d.ts +14 -29
- package/lib/editor/editor.module.d.ts +31 -0
- package/lib/{+shared/editor/core → editor/execution}/edit.session.d.ts +65 -63
- package/lib/{+shared/editor/core → editor/execution}/editor.d.ts +48 -42
- package/lib/editor/execution/helpers/delta.helper.d.ts +6 -0
- package/lib/{+shared/editor/core → editor/execution}/helpers/format-style.helper.d.ts +3 -5
- package/lib/{+shared/editor/core → editor/execution}/helpers/page.helper.d.ts +1 -1
- package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph-style.helper.d.ts +1 -1
- package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph.helper.d.ts +14 -8
- package/lib/{+shared/editor → editor}/execution/regulator.service.d.ts +16 -15
- package/lib/{+shared/editor/execution/models → editor/execution/targeting}/cell-session-source.model.d.ts +3 -3
- package/lib/{+shared/editor/execution/models → editor/execution/targeting}/edge-session-source.model.d.ts +3 -3
- package/lib/{+shared/editor/execution/models → editor/execution/targeting}/main-session-source.model.d.ts +1 -1
- package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session-source.model.d.ts +1 -1
- package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session.model.d.ts +3 -3
- package/lib/{+shared/editor/core/helpers → editor/gadgets/font-metrics}/font-metrics.helper.d.ts +1 -1
- package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation-history.d.ts +9 -7
- package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation.type.d.ts +2 -1
- package/lib/{+shared/editor/core/models → editor/gadgets/numbering}/numbering-data.model.d.ts +1 -1
- package/lib/{+shared/editor/core/helpers → editor/gadgets/numbering}/numbering.helper.d.ts +8 -8
- package/lib/{+shared/editor/helpers → editor/gadgets/page-break}/break.helper.d.ts +2 -2
- package/lib/{+shared/editor/core/layers → editor/gadgets}/scrollbar.d.ts +9 -18
- package/lib/{+shared/editor/core → editor/gadgets/search}/search.d.ts +4 -4
- package/lib/editor/interaction/base.handler.d.ts +9 -0
- package/lib/editor/interaction/document.handler.d.ts +10 -0
- package/lib/{+shared/editor → editor}/interaction/editor.service.d.ts +24 -18
- package/lib/{+shared/editor → editor}/interaction/input.handler.d.ts +4 -5
- package/lib/{+shared/editor → editor}/interaction/mouse.handler.d.ts +1 -1
- package/lib/{+shared/editor → editor}/operations/enums/command-type.enum.d.ts +11 -10
- package/lib/{+shared/editor → editor}/operations/helpers/break-operations.helper.d.ts +2 -2
- package/lib/{+shared/editor → editor}/operations/helpers/format-operations.helper.d.ts +2 -2
- package/lib/editor/operations/helpers/image-operations.helper.d.ts +7 -0
- package/lib/{+shared/editor → editor}/operations/helpers/indexed-element-operations.helper.d.ts +1 -1
- package/lib/{+shared/editor → editor}/operations/helpers/link-operations.helper.d.ts +1 -1
- package/lib/{+shared/editor → editor}/operations/helpers/numbering-operations.helper.d.ts +3 -3
- package/lib/{+shared/editor → editor}/operations/helpers/paragraph-operations.helper.d.ts +3 -2
- package/lib/{+shared/editor → editor}/operations/helpers/tab-operations.helper.d.ts +1 -1
- package/lib/{+shared/editor → editor}/operations/helpers/table-operations.helper.d.ts +6 -6
- package/lib/{+shared/editor/operations/helpers → editor/operations}/operations-helper.helper.d.ts +21 -19
- package/lib/{+shared/editor/operations/helpers → editor/operations}/save-commands.helper.d.ts +28 -22
- package/lib/editor/operations/target-operations.helper.d.ts +6 -0
- package/lib/{+shared/editor/helpers → editor/positioning}/content.helper.d.ts +10 -5
- package/lib/editor/positioning/cursor-paragraph.d.ts +7 -0
- package/lib/{+shared/editor/core/interfaces → editor/positioning}/cursor-position.interface.d.ts +1 -1
- package/lib/{+shared/editor/core/helpers → editor/positioning}/line-width.helper.d.ts +2 -2
- package/lib/{+shared/editor/core/helpers → editor/positioning}/position.helper.d.ts +9 -9
- package/lib/{+shared/editor/core → editor/positioning}/range.d.ts +12 -12
- package/lib/{+shared/editor → editor}/positioning/selection.d.ts +10 -10
- package/lib/editor/revision.helper.d.ts +15 -0
- package/lib/models/generated/cell.model.d.ts +1 -0
- package/lib/models/generated/command.model.d.ts +2 -0
- package/lib/models/generated/insert-paragraph.model.d.ts +10 -0
- package/lib/models/generated/replace.model.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +36 -30
- package/src/_ngx-noder.theme.scss +20 -13
- package/src/assets/fonts/nc-iconfont.css +112 -106
- package/src/assets/fonts/nc-iconfont.eot +0 -0
- package/src/assets/fonts/nc-iconfont.svg +4 -1
- package/src/assets/fonts/nc-iconfont.ttf +0 -0
- package/src/assets/fonts/nc-iconfont.woff +0 -0
- package/src/lib/{+shared → apart-components}/add-link-dialog/_add-link-dialog.theme.scss +4 -4
- package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +25 -0
- package/src/lib/apart-components/confirm-dialog/_theme.scss +30 -0
- package/src/lib/apart-components/editor-title/_editor-title.theme.scss +28 -0
- package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +42 -0
- package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +27 -0
- package/src/lib/apart-components/editor-toolbar/_theme.scss +25 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +12 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +12 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +14 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +21 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +21 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +70 -0
- package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +16 -0
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +26 -0
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +33 -0
- package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +22 -0
- package/src/lib/{+shared → apart-components}/insert-table/_insert-table.theme.scss +10 -7
- package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +54 -0
- package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +86 -0
- package/src/lib/editor/_theme.scss +5 -0
- package/src/lib/editor/components/_editor.theme.scss +112 -0
- package/src/scss/_fonts.scss +3 -0
- package/src/scss/base-editor.scss +329 -0
- package/src/styles.scss +3 -58
- package/esm2022/lib/+shared/abstract/base-api.service.mjs +0 -99
- package/esm2022/lib/+shared/abstract/observer.component.mjs +0 -24
- package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +0 -28
- package/esm2022/lib/+shared/constants/default-file-name.const.mjs +0 -2
- package/esm2022/lib/+shared/constants/paginator-sizes.const.mjs +0 -3
- package/esm2022/lib/+shared/editor/core/base/event-emitting.mjs +0 -71
- package/esm2022/lib/+shared/editor/core/components/edges/edge-type.enum.mjs +0 -6
- package/esm2022/lib/+shared/editor/core/components/edges/edge.component.mjs +0 -100
- package/esm2022/lib/+shared/editor/core/components/edges/edges.mjs +0 -104
- package/esm2022/lib/+shared/editor/core/constants/alignments.const.mjs +0 -8
- package/esm2022/lib/+shared/editor/core/constants/clipboardEventTypes.const.mjs +0 -6
- package/esm2022/lib/+shared/editor/core/constants/content-style-change.const.mjs +0 -15
- package/esm2022/lib/+shared/editor/core/constants/display-values.const.mjs +0 -8
- package/esm2022/lib/+shared/editor/core/constants/document-info.const.mjs +0 -13
- package/esm2022/lib/+shared/editor/core/constants/editor-version.const.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/constants/editor.const.mjs +0 -62
- package/esm2022/lib/+shared/editor/core/constants/unicode-chars.const.mjs +0 -5
- package/esm2022/lib/+shared/editor/core/document.mjs +0 -134
- package/esm2022/lib/+shared/editor/core/edit.session.mjs +0 -1102
- package/esm2022/lib/+shared/editor/core/editor.mjs +0 -1279
- package/esm2022/lib/+shared/editor/core/enums/break-types.enum.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/enums/mouse-button.enum.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/enums/page-type.enum.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/helpers/content-style.helper.mjs +0 -156
- package/esm2022/lib/+shared/editor/core/helpers/delta.helper.mjs +0 -18
- package/esm2022/lib/+shared/editor/core/helpers/dom.helper.mjs +0 -42
- package/esm2022/lib/+shared/editor/core/helpers/event.helper.mjs +0 -18
- package/esm2022/lib/+shared/editor/core/helpers/font-metrics.helper.mjs +0 -88
- package/esm2022/lib/+shared/editor/core/helpers/format-style.helper.mjs +0 -72
- package/esm2022/lib/+shared/editor/core/helpers/line-width.helper.mjs +0 -13
- package/esm2022/lib/+shared/editor/core/helpers/numbering.helper.mjs +0 -83
- package/esm2022/lib/+shared/editor/core/helpers/page.helper.mjs +0 -12
- package/esm2022/lib/+shared/editor/core/helpers/paragraph-style.helper.mjs +0 -41
- package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +0 -132
- package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +0 -191
- package/esm2022/lib/+shared/editor/core/helpers/print.rendering.helper.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +0 -186
- package/esm2022/lib/+shared/editor/core/helpers/unicode.helper.mjs +0 -20
- package/esm2022/lib/+shared/editor/core/interfaces/cell.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/cursor-position.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/font-metric-size.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/layer.config.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/paragraph-info.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/render-changes.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/replace.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/search-iteration.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/toolbar-styles.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/visible-line-info.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/interfaces/visible-range.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/core/keyboard/text-input.mjs +0 -53
- package/esm2022/lib/+shared/editor/core/layers/cursor.layer.mjs +0 -103
- package/esm2022/lib/+shared/editor/core/layers/edges.layer.mjs +0 -99
- package/esm2022/lib/+shared/editor/core/layers/lines.mjs +0 -96
- package/esm2022/lib/+shared/editor/core/layers/pages.layer.mjs +0 -106
- package/esm2022/lib/+shared/editor/core/layers/print.edges.layer.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/layers/print.pages.layer.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/layers/print.text.layer.mjs +0 -7
- package/esm2022/lib/+shared/editor/core/layers/renderloop.mjs +0 -26
- package/esm2022/lib/+shared/editor/core/layers/scrollbar.mjs +0 -100
- package/esm2022/lib/+shared/editor/core/layers/selection.layer.mjs +0 -115
- package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +0 -124
- package/esm2022/lib/+shared/editor/core/models/display-token.model.mjs +0 -12
- package/esm2022/lib/+shared/editor/core/models/distance.model.mjs +0 -10
- package/esm2022/lib/+shared/editor/core/models/edge-element.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/core/models/format-ext.model.mjs +0 -10
- package/esm2022/lib/+shared/editor/core/models/indent.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/core/models/margin.model.mjs +0 -16
- package/esm2022/lib/+shared/editor/core/models/numbering-data.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/core/models/render-changes.model.mjs +0 -25
- package/esm2022/lib/+shared/editor/core/paging/page-vertical-data.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +0 -219
- package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +0 -52
- package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +0 -34
- package/esm2022/lib/+shared/editor/core/point.mjs +0 -13
- package/esm2022/lib/+shared/editor/core/print.renderer.mjs +0 -72
- package/esm2022/lib/+shared/editor/core/range.mjs +0 -94
- package/esm2022/lib/+shared/editor/core/renderer.mjs +0 -217
- package/esm2022/lib/+shared/editor/core/search.mjs +0 -231
- package/esm2022/lib/+shared/editor/core/virtual.renderer.mjs +0 -356
- package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
- package/esm2022/lib/+shared/editor/custom-components/external-element/external-element.service.mjs +0 -6
- package/esm2022/lib/+shared/editor/custom-components/external-element/external-elements.const.mjs +0 -4
- package/esm2022/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/external-element/external.component.mjs +0 -41
- package/esm2022/lib/+shared/editor/custom-components/external-element/models/element-data.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +0 -10
- package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.mjs +0 -15
- package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +0 -87
- package/esm2022/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.mjs +0 -38
- package/esm2022/lib/+shared/editor/custom-components/image/interfaces/size.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/coordinate.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.mjs +0 -19
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction.enum.mjs +0 -12
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/resizer.component.mjs +0 -106
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-delta.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-wrapper.mjs +0 -52
- package/esm2022/lib/+shared/editor/custom-components/image/services/image-api.service.mjs +0 -14
- package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +0 -57
- package/esm2022/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.mjs +0 -3
- package/esm2022/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.mjs +0 -43
- package/esm2022/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/shared/services/component/component.service.mjs +0 -64
- package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +0 -120
- package/esm2022/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.mjs +0 -55
- package/esm2022/lib/+shared/editor/custom-components/shared/types/custom-content.mjs +0 -2
- package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +0 -43
- package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +0 -118
- package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +0 -95
- package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +0 -293
- package/esm2022/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.mjs +0 -8
- package/esm2022/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.mjs +0 -6
- package/esm2022/lib/+shared/editor/custom-components/table/models/cell-data.model.mjs +0 -18
- package/esm2022/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.mjs +0 -9
- package/esm2022/lib/+shared/editor/custom-components/table/models/row-data.model.mjs +0 -8
- package/esm2022/lib/+shared/editor/custom-components/table/models/selection-range.model.mjs +0 -7
- package/esm2022/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.mjs +0 -74
- package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +0 -358
- package/esm2022/lib/+shared/editor/editor.component.mjs +0 -103
- package/esm2022/lib/+shared/editor/editor.module.mjs +0 -85
- package/esm2022/lib/+shared/editor/execution/models/cell-session-source.model.mjs +0 -19
- package/esm2022/lib/+shared/editor/execution/models/edge-session-source.model.mjs +0 -15
- package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +0 -11
- package/esm2022/lib/+shared/editor/execution/models/main-session-source.model.mjs +0 -8
- package/esm2022/lib/+shared/editor/execution/models/session-source.model.mjs +0 -3
- package/esm2022/lib/+shared/editor/execution/models/session.model.mjs +0 -10
- package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +0 -193
- package/esm2022/lib/+shared/editor/helpers/break.helper.mjs +0 -18
- package/esm2022/lib/+shared/editor/helpers/content.helper.mjs +0 -30
- package/esm2022/lib/+shared/editor/helpers/tab.helper.mjs +0 -6
- package/esm2022/lib/+shared/editor/interaction/editor.service.mjs +0 -309
- package/esm2022/lib/+shared/editor/interaction/input.handler.mjs +0 -160
- package/esm2022/lib/+shared/editor/interaction/mouse.handler.mjs +0 -49
- package/esm2022/lib/+shared/editor/interfaces/contents.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/interfaces/insert-index.interface.mjs +0 -2
- package/esm2022/lib/+shared/editor/operation-history/operation-history.mjs +0 -184
- package/esm2022/lib/+shared/editor/operation-history/operation.type.mjs +0 -2
- package/esm2022/lib/+shared/editor/operation-history/operations-history-info.model.mjs +0 -7
- package/esm2022/lib/+shared/editor/operations/enums/command-type.enum.mjs +0 -31
- package/esm2022/lib/+shared/editor/operations/enums/target-type.enum.mjs +0 -7
- package/esm2022/lib/+shared/editor/operations/helpers/break-operations.helper.mjs +0 -9
- package/esm2022/lib/+shared/editor/operations/helpers/content-operations.helper.mjs +0 -15
- package/esm2022/lib/+shared/editor/operations/helpers/format-operations.helper.mjs +0 -56
- package/esm2022/lib/+shared/editor/operations/helpers/image-operations.helper.mjs +0 -19
- package/esm2022/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
- package/esm2022/lib/+shared/editor/operations/helpers/link-operations.helper.mjs +0 -28
- package/esm2022/lib/+shared/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
- package/esm2022/lib/+shared/editor/operations/helpers/operations-helper.helper.mjs +0 -394
- package/esm2022/lib/+shared/editor/operations/helpers/paragraph-operations.helper.mjs +0 -83
- package/esm2022/lib/+shared/editor/operations/helpers/save-commands.helper.mjs +0 -118
- package/esm2022/lib/+shared/editor/operations/helpers/tab-operations.helper.mjs +0 -16
- package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +0 -371
- package/esm2022/lib/+shared/editor/operations/helpers/target-operations.helper.mjs +0 -23
- package/esm2022/lib/+shared/editor/positioning/selection.mjs +0 -307
- package/esm2022/lib/+shared/editor/store/editor.actions.mjs +0 -13
- package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
- package/esm2022/lib/+shared/editor-search/editor-search-dialog.component.mjs +0 -71
- package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +0 -32
- package/esm2022/lib/+shared/editor-toolbar/constants/svg-icons.const.mjs +0 -157
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +0 -115
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +0 -107
- package/esm2022/lib/+shared/editor-toolbar/enums/alignment.enum.mjs +0 -8
- package/esm2022/lib/+shared/editor-toolbar/enums/numbering-type.enum.mjs +0 -6
- package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +0 -45
- package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +0 -85
- package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +0 -80
- package/esm2022/lib/+shared/editor-toolbar/format/format.component.mjs +0 -28
- package/esm2022/lib/+shared/editor-toolbar/heading/heading.component.mjs +0 -23
- package/esm2022/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.mjs +0 -55
- package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +0 -53
- package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +0 -18
- package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +0 -27
- package/esm2022/lib/+shared/editor-toolbar/zoom/zoom.component.mjs +0 -74
- package/esm2022/lib/+shared/helpers/print.helper.mjs +0 -40
- package/esm2022/lib/+shared/insert-table/insert-table.component.mjs +0 -54
- package/esm2022/lib/+shared/services/commands.service.mjs +0 -20
- package/esm2022/lib/+shared/services/custom-icon.service.mjs +0 -34
- package/lib/+shared/abstract/base-api.service.d.ts +0 -23
- package/lib/+shared/abstract/observer.component.d.ts +0 -10
- package/lib/+shared/constants/default-file-name.const.d.ts +0 -1
- package/lib/+shared/constants/paginator-sizes.const.d.ts +0 -2
- package/lib/+shared/editor/core/components/edges/edge.component.d.ts +0 -45
- package/lib/+shared/editor/core/constants/clipboardEventTypes.const.d.ts +0 -5
- package/lib/+shared/editor/core/constants/content-style-change.const.d.ts +0 -14
- package/lib/+shared/editor/core/helpers/content-style.helper.d.ts +0 -16
- package/lib/+shared/editor/core/helpers/delta.helper.d.ts +0 -6
- package/lib/+shared/editor/core/interfaces/visible-line-info.interface.d.ts +0 -5
- package/lib/+shared/editor/core/layers/edges.layer.d.ts +0 -24
- package/lib/+shared/editor/core/layers/print.edges.layer.d.ts +0 -4
- package/lib/+shared/editor/core/layers/print.text.layer.d.ts +0 -5
- package/lib/+shared/editor/core/layers/text.layer.d.ts +0 -22
- package/lib/+shared/editor/core/paging/pages.wrap.d.ts +0 -41
- package/lib/+shared/editor/core/point.d.ts +0 -7
- package/lib/+shared/editor/core/print.renderer.d.ts +0 -25
- package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
- package/lib/+shared/editor/custom-components/image/services/image-api.service.d.ts +0 -8
- package/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.d.ts +0 -13
- package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +0 -30
- package/lib/+shared/editor/custom-components/shared/types/custom-content.d.ts +0 -5
- package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +0 -45
- package/lib/+shared/editor/editor.module.d.ts +0 -30
- package/lib/+shared/editor/interfaces/contents.interface.d.ts +0 -22
- package/lib/+shared/editor/operations/helpers/image-operations.helper.d.ts +0 -7
- package/lib/+shared/editor/operations/helpers/target-operations.helper.d.ts +0 -6
- package/lib/+shared/editor/store/editor.actions.d.ts +0 -11
- package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
- package/lib/+shared/editor-toolbar/constants/numbering-templates.const.d.ts +0 -6
- package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +0 -44
- package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +0 -28
- package/src/lib/+shared/editor/_editor.theme.scss +0 -35
- package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
- package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
- package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +0 -33
- package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +0 -29
- /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/svg-icons.const.d.ts +0 -0
- /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/alignment.enum.d.ts +0 -0
- /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.d.ts +0 -0
- /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-type.enum.d.ts +0 -0
- /package/lib/{+shared → apart-components/editor-toolbar/shared}/services/custom-icon.service.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor}/components/edges/edge-type.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/enums → editor/components/edges}/page-type.enum.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-element.service.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-elements.const.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/element-data.model.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-sidenav.model.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/image/input-handler/image-input.handler.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/coordinate.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction-wrapper.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction.enum.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-delta.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components/image/interfaces → editor/components/image}/size.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components/shared/constants → editor/components/shared}/custom-content-markers.const.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components/shared/services/overlay → editor/components/shared/services}/overlay.service.d.ts +0 -0
- /package/lib/{+shared/editor/helpers → editor/components/tab}/tab.helper.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/reisizer-side.enum.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/vertical-merge.enum.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-data.model.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-resizer-parameters.model.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/models/row-data.model.d.ts +0 -0
- /package/lib/{+shared/editor/custom-components → editor/components}/table/models/selection-range.model.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor/content}/constants/display-values.const.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor/content}/constants/document-info.const.d.ts +0 -0
- /package/lib/{+shared/editor/core/models → editor/content/display-data}/indent.model.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/paragraph-info.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/toolbar-styles.interface.d.ts +0 -0
- /package/lib/{+shared/editor → editor/content}/helpers/format.helper.d.ts +0 -0
- /package/lib/{+shared/editor/core/models → editor/content}/margin.model.d.ts +0 -0
- /package/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/display}/cell.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/helpers → editor/display}/event.helper.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor/display}/layers/print.pages.layer.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/display}/render-changes.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/display}/visible-range.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/models → editor/execution}/distance.model.d.ts +0 -0
- /package/lib/{+shared/editor/core → editor/execution}/helpers/dom.helper.d.ts +0 -0
- /package/lib/{+shared/editor/core/constants → editor/gadgets/font-metrics}/editor-version.const.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/gadgets/font-metrics}/font-metric-size.interface.d.ts +0 -0
- /package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operations-history-info.model.d.ts +0 -0
- /package/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/enums → editor/gadgets/page-break}/break-types.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/replace.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/search-iteration.interface.d.ts +0 -0
- /package/lib/{+shared/editor/core/constants → editor/gadgets/unicode}/unicode-chars.const.d.ts +0 -0
- /package/lib/{+shared/editor/core/helpers → editor/gadgets/unicode}/unicode.helper.d.ts +0 -0
- /package/lib/{+shared/enums → editor/interaction}/mode.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/enums → editor/interaction}/mouse-button.enum.d.ts +0 -0
- /package/lib/{+shared/editor/core/keyboard → editor/interaction}/text-input.d.ts +0 -0
- /package/lib/{+shared/services → editor/operations}/commands.service.d.ts +0 -0
- /package/lib/{+shared/editor → editor}/operations/enums/target-type.enum.d.ts +0 -0
- /package/lib/{+shared/editor → editor}/operations/helpers/content-operations.helper.d.ts +0 -0
- /package/lib/{+shared/editor/core/constants → editor/positioning}/alignments.const.d.ts +0 -0
- /package/lib/{+shared/editor/interfaces → editor/positioning}/insert-index.interface.d.ts +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { CursorParagraph } from './cursor-paragraph';
|
|
2
|
+
import { PositionHelper } from './position.helper';
|
|
3
|
+
export class Range {
|
|
4
|
+
get isEmpty() {
|
|
5
|
+
return this.isSingleLine && this.start.column === this.end.column;
|
|
6
|
+
}
|
|
7
|
+
get isSingleLine() {
|
|
8
|
+
return this.start.row === this.end.row;
|
|
9
|
+
}
|
|
10
|
+
constructor(start, end) {
|
|
11
|
+
this.start = start;
|
|
12
|
+
this.end = end;
|
|
13
|
+
}
|
|
14
|
+
isEqual(range) {
|
|
15
|
+
return (this.start.row === range.start.row &&
|
|
16
|
+
this.end.row === range.end.row &&
|
|
17
|
+
this.start.column === range.start.column &&
|
|
18
|
+
this.end.column === range.end.column);
|
|
19
|
+
}
|
|
20
|
+
contains(position) {
|
|
21
|
+
return this.comparePosition(position) === 0;
|
|
22
|
+
}
|
|
23
|
+
comparePosition(position) {
|
|
24
|
+
const compare = this.compareSingleLine(position);
|
|
25
|
+
return compare ?? this.compareMultiLine(position);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Given the current `Range`,
|
|
29
|
+
* this function converts those starting and ending cursor positions into screen positions, and then returns a new `Range` object.
|
|
30
|
+
* @param {EditSession} session The `EditSession` to retrieve coordinates from
|
|
31
|
+
* @returns {Range}
|
|
32
|
+
**/
|
|
33
|
+
toScreenRange(session) {
|
|
34
|
+
const screenPosStart = PositionHelper.documentToScreen(session, this.start.row, this.start.column);
|
|
35
|
+
const screenPosEnd = PositionHelper.documentToScreen(session, this.end.row, this.end.column);
|
|
36
|
+
return new Range(screenPosStart, screenPosEnd);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
|
|
40
|
+
* @param {Number} firstRow The starting row
|
|
41
|
+
* @param {Number} lastRow The ending row
|
|
42
|
+
* @returns {CursorParagraph}
|
|
43
|
+
**/
|
|
44
|
+
clipRows(firstRow, lastRow) {
|
|
45
|
+
let end;
|
|
46
|
+
if (this.end.row > lastRow) {
|
|
47
|
+
end = new CursorParagraph(lastRow + 1, 0);
|
|
48
|
+
}
|
|
49
|
+
else if (this.end.row < firstRow) {
|
|
50
|
+
end = new CursorParagraph(firstRow, 0);
|
|
51
|
+
}
|
|
52
|
+
let start;
|
|
53
|
+
if (this.start.row > lastRow) {
|
|
54
|
+
start = new CursorParagraph(lastRow + 1, 0);
|
|
55
|
+
}
|
|
56
|
+
else if (this.start.row < firstRow) {
|
|
57
|
+
start = new CursorParagraph(firstRow, 0);
|
|
58
|
+
}
|
|
59
|
+
return new Range(start || this.start, end || this.end);
|
|
60
|
+
}
|
|
61
|
+
compareSingleLine(position) {
|
|
62
|
+
if (!this.isSingleLine) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
if (position.row === this.start.row) {
|
|
66
|
+
if (position.column < this.start.column) {
|
|
67
|
+
return -1;
|
|
68
|
+
}
|
|
69
|
+
else if (position.column > this.end.column) {
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
compareMultiLine(position) {
|
|
79
|
+
if (this.start.row === position.row) {
|
|
80
|
+
return position.column >= this.start.column ? 0 : -1;
|
|
81
|
+
}
|
|
82
|
+
if (this.end.row === position.row) {
|
|
83
|
+
return position.column <= this.end.column ? 0 : 1;
|
|
84
|
+
}
|
|
85
|
+
if (position.row < this.start.row) {
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
if (position.row > this.end.row) {
|
|
89
|
+
return 1;
|
|
90
|
+
}
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvcG9zaXRpb25pbmcvcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sS0FBSztJQU1kLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFBWSxLQUFzQixFQUFFLEdBQW9CO1FBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBK0Q7UUFDMUUsT0FBTyxDQUNILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUN2QyxDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUF5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QUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixPQUFPLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDYjtRQUVELElBQUksUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuL2N1cnNvci1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9leGVjdXRpb24vZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IFBvc2l0aW9uSGVscGVyIH0gZnJvbSAnLi9wb3NpdGlvbi5oZWxwZXInO1xuXG5leHBvcnQgY2xhc3MgUmFuZ2Uge1xuICAgIHN0YXJ0OiBDdXJzb3JQYXJhZ3JhcGg7XG4gICAgZW5kOiBDdXJzb3JQYXJhZ3JhcGg7XG5cbiAgICBjdXJzb3I6IEN1cnNvclBhcmFncmFwaDtcblxuICAgIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NpbmdsZUxpbmUgJiYgdGhpcy5zdGFydC5jb2x1bW4gPT09IHRoaXMuZW5kLmNvbHVtbjtcbiAgICB9XG5cbiAgICBnZXQgaXNTaW5nbGVMaW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydC5yb3cgPT09IHRoaXMuZW5kLnJvdztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihzdGFydDogQ3Vyc29yUGFyYWdyYXBoLCBlbmQ6IEN1cnNvclBhcmFncmFwaCkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFsKHJhbmdlOiBSYW5nZSB8IHsgc3RhcnQ6IEN1cnNvclBhcmFncmFwaDsgZW5kOiBDdXJzb3JQYXJhZ3JhcGggfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zdGFydC5yb3cgPT09IHJhbmdlLnN0YXJ0LnJvdyAmJlxuICAgICAgICAgICAgdGhpcy5lbmQucm93ID09PSByYW5nZS5lbmQucm93ICYmXG4gICAgICAgICAgICB0aGlzLnN0YXJ0LmNvbHVtbiA9PT0gcmFuZ2Uuc3RhcnQuY29sdW1uICYmXG4gICAgICAgICAgICB0aGlzLmVuZC5jb2x1bW4gPT09IHJhbmdlLmVuZC5jb2x1bW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb250YWlucyhwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVQb3NpdGlvbihwb3NpdGlvbikgPT09IDA7XG4gICAgfVxuXG4gICAgY29tcGFyZVBvc2l0aW9uKHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjb21wYXJlID0gdGhpcy5jb21wYXJlU2luZ2xlTGluZShwb3NpdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBhcmUgPz8gdGhpcy5jb21wYXJlTXVsdGlMaW5lKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiB0aGUgY3VycmVudCBgUmFuZ2VgLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhvc2Ugc3RhcnRpbmcgYW5kIGVuZGluZyBjdXJzb3IgcG9zaXRpb25zIGludG8gc2NyZWVuIHBvc2l0aW9ucywgYW5kIHRoZW4gcmV0dXJucyBhIG5ldyBgUmFuZ2VgIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0VkaXRTZXNzaW9ufSBzZXNzaW9uIFRoZSBgRWRpdFNlc3Npb25gIHRvIHJldHJpZXZlIGNvb3JkaW5hdGVzIGZyb21cbiAgICAgKiBAcmV0dXJucyB7UmFuZ2V9XG4gICAgICoqL1xuICAgIHRvU2NyZWVuUmFuZ2Uoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiBSYW5nZSB7XG4gICAgICAgIGNvbnN0IHNjcmVlblBvc1N0YXJ0ID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCB0aGlzLnN0YXJ0LnJvdywgdGhpcy5zdGFydC5jb2x1bW4pO1xuICAgICAgICBjb25zdCBzY3JlZW5Qb3NFbmQgPSBQb3NpdGlvbkhlbHBlci5kb2N1bWVudFRvU2NyZWVuKHNlc3Npb24sIHRoaXMuZW5kLnJvdywgdGhpcy5lbmQuY29sdW1uKTtcblxuICAgICAgICByZXR1cm4gbmV3IFJhbmdlKHNjcmVlblBvc1N0YXJ0LCBzY3JlZW5Qb3NFbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBhcnQgb2YgdGhlIGN1cnJlbnQgYFJhbmdlYCB0aGF0IG9jY3VycyB3aXRoaW4gdGhlIGJvdW5kYXJpZXMgb2YgYGZpcnN0Um93YCBhbmQgYGxhc3RSb3dgIGFzIGEgbmV3IGBSYW5nZWAgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBmaXJzdFJvdyBUaGUgc3RhcnRpbmcgcm93XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxhc3RSb3cgVGhlIGVuZGluZyByb3dcbiAgICAgKiBAcmV0dXJucyB7Q3Vyc29yUGFyYWdyYXBofVxuICAgICAqKi9cbiAgICBjbGlwUm93cyhmaXJzdFJvdzogbnVtYmVyLCBsYXN0Um93OiBudW1iZXIpOiBSYW5nZSB7XG4gICAgICAgIGxldCBlbmQ6IEN1cnNvclBhcmFncmFwaDtcbiAgICAgICAgaWYgKHRoaXMuZW5kLnJvdyA+IGxhc3RSb3cpIHtcbiAgICAgICAgICAgIGVuZCA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgobGFzdFJvdyArIDEsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZW5kLnJvdyA8IGZpcnN0Um93KSB7XG4gICAgICAgICAgICBlbmQgPSBuZXcgQ3Vyc29yUGFyYWdyYXBoKGZpcnN0Um93LCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGFydDogQ3Vyc29yUGFyYWdyYXBoO1xuICAgICAgICBpZiAodGhpcy5zdGFydC5yb3cgPiBsYXN0Um93KSB7XG4gICAgICAgICAgICBzdGFydCA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgobGFzdFJvdyArIDEsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnQucm93IDwgZmlyc3RSb3cpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gbmV3IEN1cnNvclBhcmFncmFwaChmaXJzdFJvdywgMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJhbmdlKHN0YXJ0IHx8IHRoaXMuc3RhcnQsIGVuZCB8fCB0aGlzLmVuZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wYXJlU2luZ2xlTGluZShwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlTGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24ucm93ID09PSB0aGlzLnN0YXJ0LnJvdykge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uLmNvbHVtbiA8IHRoaXMuc3RhcnQuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbi5jb2x1bW4gPiB0aGlzLmVuZC5jb2x1bW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXBhcmVNdWx0aUxpbmUocG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0LnJvdyA9PT0gcG9zaXRpb24ucm93KSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb24uY29sdW1uID49IHRoaXMuc3RhcnQuY29sdW1uID8gMCA6IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW5kLnJvdyA9PT0gcG9zaXRpb24ucm93KSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb24uY29sdW1uIDw9IHRoaXMuZW5kLmNvbHVtbiA/IDAgOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uLnJvdyA8IHRoaXMuc3RhcnQucm93KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24ucm93ID4gdGhpcy5lbmQucm93KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { ContentHelper } from './content.helper';
|
|
2
|
+
import { CursorParagraph } from './cursor-paragraph';
|
|
3
|
+
import { PositionHelper } from './position.helper';
|
|
4
|
+
import { Range } from './range';
|
|
5
|
+
export class Selection {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.anchor = null;
|
|
8
|
+
this.cursor = new CursorParagraph(0, 0);
|
|
9
|
+
this.keepLinePositionX = null;
|
|
10
|
+
}
|
|
11
|
+
get isEmpty() {
|
|
12
|
+
return this.anchor === null || (this.anchor.row === this.cursor.row && this.anchor.column === this.cursor.column);
|
|
13
|
+
}
|
|
14
|
+
get isBackwards() {
|
|
15
|
+
return this.anchor.row > this.cursor.row || (this.anchor.row === this.cursor.row && this.anchor.column > this.cursor.column);
|
|
16
|
+
}
|
|
17
|
+
get range() {
|
|
18
|
+
const cursor = new CursorParagraph(this.cursor.row, this.cursor.column);
|
|
19
|
+
if (this.isEmpty) {
|
|
20
|
+
return new Range(cursor, cursor);
|
|
21
|
+
}
|
|
22
|
+
const anchor = new CursorParagraph(this.anchor.row, this.anchor.column);
|
|
23
|
+
return this.isBackwards ? new Range(cursor, anchor) : new Range(anchor, cursor);
|
|
24
|
+
}
|
|
25
|
+
placeCursor(cursor) {
|
|
26
|
+
this.cursor = cursor;
|
|
27
|
+
this.anchor = null;
|
|
28
|
+
this.keepLinePositionX = null;
|
|
29
|
+
}
|
|
30
|
+
moveCursor(cursor) {
|
|
31
|
+
this.cursor = cursor;
|
|
32
|
+
this.keepLinePositionX = null;
|
|
33
|
+
}
|
|
34
|
+
placeSelection(cursor, anchor) {
|
|
35
|
+
this.cursor = cursor;
|
|
36
|
+
this.anchor = anchor;
|
|
37
|
+
this.keepLinePositionX = null;
|
|
38
|
+
}
|
|
39
|
+
moveSelection(position) {
|
|
40
|
+
if (!this.anchor) {
|
|
41
|
+
this.anchor = this.cursor;
|
|
42
|
+
}
|
|
43
|
+
this.moveCursor(position);
|
|
44
|
+
}
|
|
45
|
+
clearSelection() {
|
|
46
|
+
this.anchor = null;
|
|
47
|
+
this.keepLinePositionX = null;
|
|
48
|
+
}
|
|
49
|
+
selectAll(model) {
|
|
50
|
+
const last = model.paragraphs.length - 1;
|
|
51
|
+
const length = last > 0 ? model.contentLength - model.paragraphs[last - 1].insertIndex - 1 : model.contentLength;
|
|
52
|
+
this.placeSelection(new CursorParagraph(0, 0), new CursorParagraph(last, length));
|
|
53
|
+
}
|
|
54
|
+
selectUp(session) {
|
|
55
|
+
if (!this.anchor) {
|
|
56
|
+
this.anchor = this.cursor;
|
|
57
|
+
}
|
|
58
|
+
this.moveCursorUp(session, this.cursor);
|
|
59
|
+
}
|
|
60
|
+
navigateUp(session) {
|
|
61
|
+
const position = this.isEmpty || this.isBackwards ? this.cursor : this.anchor;
|
|
62
|
+
this.moveCursorUp(session, position);
|
|
63
|
+
this.anchor = null;
|
|
64
|
+
}
|
|
65
|
+
selectDown(session) {
|
|
66
|
+
if (!this.anchor) {
|
|
67
|
+
this.anchor = this.cursor;
|
|
68
|
+
}
|
|
69
|
+
this.moveCursorDown(session, this.cursor);
|
|
70
|
+
}
|
|
71
|
+
navigateDown(session) {
|
|
72
|
+
const position = this.isEmpty || !this.isBackwards ? this.cursor : this.anchor;
|
|
73
|
+
this.moveCursorDown(session, position);
|
|
74
|
+
this.anchor = null;
|
|
75
|
+
}
|
|
76
|
+
selectRight(session) {
|
|
77
|
+
const position = this.getCursorRight(session);
|
|
78
|
+
this.moveSelection(position);
|
|
79
|
+
}
|
|
80
|
+
navigateRight(session) {
|
|
81
|
+
if (this.isEmpty) {
|
|
82
|
+
const position = this.getCursorRight(session);
|
|
83
|
+
this.placeCursor(position);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const position = !this.isBackwards ? this.cursor : this.anchor;
|
|
87
|
+
this.placeCursor(position);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
selectLeft(session) {
|
|
91
|
+
const position = this.getCursorLeft(session);
|
|
92
|
+
this.moveSelection(position);
|
|
93
|
+
}
|
|
94
|
+
navigateLeft(session) {
|
|
95
|
+
if (this.isEmpty) {
|
|
96
|
+
const position = this.getCursorLeft(session);
|
|
97
|
+
this.placeCursor(position);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const position = this.isBackwards ? this.cursor : this.anchor;
|
|
101
|
+
this.placeCursor(position);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
selectLineStart(session) {
|
|
105
|
+
const position = this.getLineStart(session, this.cursor);
|
|
106
|
+
this.moveSelection(position);
|
|
107
|
+
}
|
|
108
|
+
navigateLineStart(session) {
|
|
109
|
+
const position = this.getLineStart(session, this.cursor);
|
|
110
|
+
this.placeCursor(position);
|
|
111
|
+
}
|
|
112
|
+
selectLineEnd(session) {
|
|
113
|
+
const position = this.getLineEnd(session, this.cursor);
|
|
114
|
+
this.moveSelection(position);
|
|
115
|
+
}
|
|
116
|
+
navigateLineEnd(session) {
|
|
117
|
+
const position = this.getLineEnd(session, this.cursor);
|
|
118
|
+
this.placeCursor(position);
|
|
119
|
+
}
|
|
120
|
+
selectFileEnd(session) {
|
|
121
|
+
const paragraph = session.document.lines.length - 1;
|
|
122
|
+
const paragraphIndex = session.document.lines[paragraph].length;
|
|
123
|
+
this.moveSelection(new CursorParagraph(paragraph, paragraphIndex));
|
|
124
|
+
}
|
|
125
|
+
navigateFileEnd(session) {
|
|
126
|
+
const paragraph = session.document.lines.length - 1;
|
|
127
|
+
const paragraphIndex = session.document.lines[paragraph].length;
|
|
128
|
+
this.placeCursor(new CursorParagraph(paragraph, paragraphIndex));
|
|
129
|
+
}
|
|
130
|
+
selectFileStart() {
|
|
131
|
+
this.moveSelection(new CursorParagraph(0, 0));
|
|
132
|
+
}
|
|
133
|
+
navigateFileStart() {
|
|
134
|
+
this.placeCursor(new CursorParagraph(0, 0));
|
|
135
|
+
}
|
|
136
|
+
selectWordRight(session) {
|
|
137
|
+
const position = this.getWordRight(session, this.cursor);
|
|
138
|
+
this.moveSelection(position);
|
|
139
|
+
}
|
|
140
|
+
navigateWordRight(session) {
|
|
141
|
+
const position = this.getWordRight(session, this.cursor);
|
|
142
|
+
this.placeCursor(position);
|
|
143
|
+
}
|
|
144
|
+
selectWordLeft(session) {
|
|
145
|
+
const position = this.getWordLeft(session, this.cursor);
|
|
146
|
+
this.moveSelection(position);
|
|
147
|
+
}
|
|
148
|
+
navigateWordLeft(session) {
|
|
149
|
+
const position = this.getWordLeft(session, this.cursor);
|
|
150
|
+
this.placeCursor(position);
|
|
151
|
+
}
|
|
152
|
+
moveCursorUp(session, position) {
|
|
153
|
+
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
154
|
+
if (line.row === 0) {
|
|
155
|
+
this.selectLineStart(session);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.moveToLine(session, line.row - 1, line);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
moveCursorDown(session, position) {
|
|
162
|
+
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
163
|
+
const paragraphsCount = session.pagesWrap.paragraphs.length;
|
|
164
|
+
const lastParagraph = session.pagesWrap.paragraphs[paragraphsCount - 1];
|
|
165
|
+
const lastParagraphLine = lastParagraph.textLinesInfo[lastParagraph.textLinesInfo.length - 1].screenLine;
|
|
166
|
+
if (line.row === lastParagraphLine) {
|
|
167
|
+
this.selectLineEnd(session);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.moveToLine(session, line.row + 1, line);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
moveToLine(session, line, fromLine) {
|
|
174
|
+
if (!this.keepLinePositionX) {
|
|
175
|
+
this.keepLinePositionX = PositionHelper.screenToPixel(session, fromLine.row, fromLine.column).pageX;
|
|
176
|
+
}
|
|
177
|
+
const column = PositionHelper.getApproximatePosition(session, line, this.keepLinePositionX);
|
|
178
|
+
this.cursor = PositionHelper.screenToDocument(session, line, column);
|
|
179
|
+
}
|
|
180
|
+
getCursorLeft(session) {
|
|
181
|
+
if (this.cursor.row === 0 && this.cursor.column === 0) {
|
|
182
|
+
return this.cursor;
|
|
183
|
+
}
|
|
184
|
+
const index = ContentHelper.paragraphPositionToDocumentIndex(session.wrapParagraphIndex, this.cursor);
|
|
185
|
+
return ContentHelper.documentIndexToParagraphIndex(session.wrapParagraphIndex, index - 1);
|
|
186
|
+
}
|
|
187
|
+
getCursorRight(session) {
|
|
188
|
+
const last = session.pagesWrap.paragraphs.length - 1;
|
|
189
|
+
if (this.cursor.row === last && this.cursor.column === session.document.lines[last].length) {
|
|
190
|
+
return this.cursor;
|
|
191
|
+
}
|
|
192
|
+
const index = ContentHelper.paragraphPositionToDocumentIndex(session.wrapParagraphIndex, this.cursor);
|
|
193
|
+
return ContentHelper.documentIndexToParagraphIndex(session.wrapParagraphIndex, index + 1);
|
|
194
|
+
}
|
|
195
|
+
getLineStart(session, position) {
|
|
196
|
+
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
197
|
+
return PositionHelper.screenToDocument(session, line.row, 0);
|
|
198
|
+
}
|
|
199
|
+
getLineEnd(session, position) {
|
|
200
|
+
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
201
|
+
const paragraphLength = session.document.lines[position.row].length;
|
|
202
|
+
const linesCount = session.pagesWrap.paragraphs[position.row].textLinesInfo.length;
|
|
203
|
+
if (linesCount === 1) {
|
|
204
|
+
return PositionHelper.screenToDocument(session, line.row, paragraphLength);
|
|
205
|
+
}
|
|
206
|
+
const paragraphLine = line.row - session.wrapParagraphLine[position.row];
|
|
207
|
+
let index;
|
|
208
|
+
if (paragraphLine === 0) {
|
|
209
|
+
index = session.wrapData[position.row][0];
|
|
210
|
+
}
|
|
211
|
+
else if (paragraphLine === linesCount - 1) {
|
|
212
|
+
index = paragraphLength - session.wrapData[position.row][paragraphLine - 1];
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
index = session.wrapData[position.row][paragraphLine] - session.wrapData[position.row][paragraphLine - 1];
|
|
216
|
+
}
|
|
217
|
+
return PositionHelper.screenToDocument(session, line.row, index);
|
|
218
|
+
}
|
|
219
|
+
getWordRight(session, position) {
|
|
220
|
+
let row = position.row;
|
|
221
|
+
let column = position.column;
|
|
222
|
+
const line = session.document.lines[row];
|
|
223
|
+
const documentLength = session.document.lines.length;
|
|
224
|
+
if (row + 1 >= documentLength && column === line.length) {
|
|
225
|
+
return position;
|
|
226
|
+
}
|
|
227
|
+
let rightOfCursor = line.substring(column);
|
|
228
|
+
if (column === line.length) {
|
|
229
|
+
do {
|
|
230
|
+
row++;
|
|
231
|
+
rightOfCursor = session.document.lines[row];
|
|
232
|
+
} while (row < documentLength && /^\s*$/.test(rightOfCursor));
|
|
233
|
+
if (!/^\s+/.test(rightOfCursor)) {
|
|
234
|
+
rightOfCursor = '';
|
|
235
|
+
}
|
|
236
|
+
column = 0;
|
|
237
|
+
}
|
|
238
|
+
const index = this.shortWordEndIndex(session.tokenRe, rightOfCursor);
|
|
239
|
+
return new CursorParagraph(row, column + index);
|
|
240
|
+
}
|
|
241
|
+
getWordLeft(session, position) {
|
|
242
|
+
let row = position.row;
|
|
243
|
+
let column = position.column;
|
|
244
|
+
if (column === 0 && row === 0) {
|
|
245
|
+
return position;
|
|
246
|
+
}
|
|
247
|
+
let line = session.document.lines[row].substring(0, column);
|
|
248
|
+
if (column === 0) {
|
|
249
|
+
do {
|
|
250
|
+
row--;
|
|
251
|
+
line = session.document.lines[row];
|
|
252
|
+
} while (row > 0 && /^\s*$/.test(line));
|
|
253
|
+
column = line.length;
|
|
254
|
+
if (!/\s+$/.test(line)) {
|
|
255
|
+
line = '';
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const leftOfCursor = line.split('').reverse().join('');
|
|
259
|
+
const index = this.shortWordEndIndex(session.tokenRe, leftOfCursor);
|
|
260
|
+
return new CursorParagraph(row, column - index);
|
|
261
|
+
}
|
|
262
|
+
shortWordEndIndex(tokenRe, rightOfCursor) {
|
|
263
|
+
let index;
|
|
264
|
+
tokenRe.lastIndex = 0;
|
|
265
|
+
if (tokenRe.exec(rightOfCursor)) {
|
|
266
|
+
index = tokenRe.lastIndex;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
index = this.handleNoTokenFound(tokenRe, rightOfCursor);
|
|
270
|
+
}
|
|
271
|
+
tokenRe.lastIndex = 0;
|
|
272
|
+
return index;
|
|
273
|
+
}
|
|
274
|
+
handleNoTokenFound(tokenRe, rightOfCursor) {
|
|
275
|
+
const whitespaceRe = /\s/;
|
|
276
|
+
let index = 0;
|
|
277
|
+
while (rightOfCursor[index] && whitespaceRe.test(rightOfCursor[index])) {
|
|
278
|
+
index++;
|
|
279
|
+
}
|
|
280
|
+
if (index < 1) {
|
|
281
|
+
index = this.handleNoWhitespaceFound(tokenRe, rightOfCursor, whitespaceRe);
|
|
282
|
+
}
|
|
283
|
+
return index;
|
|
284
|
+
}
|
|
285
|
+
handleNoWhitespaceFound(tokenRe, rightOfCursor, whitespaceRe) {
|
|
286
|
+
let index = 0;
|
|
287
|
+
tokenRe.lastIndex = 0;
|
|
288
|
+
while (rightOfCursor[index] && !tokenRe.test(rightOfCursor[index])) {
|
|
289
|
+
tokenRe.lastIndex = 0;
|
|
290
|
+
index++;
|
|
291
|
+
if (whitespaceRe.test(rightOfCursor[index])) {
|
|
292
|
+
if (index > 2) {
|
|
293
|
+
index--;
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
while (rightOfCursor[index] && whitespaceRe.test(rightOfCursor[index])) {
|
|
297
|
+
index++;
|
|
298
|
+
}
|
|
299
|
+
if (index > 2) {
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return index;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3Bvc2l0aW9uaW5nL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBQ0ksV0FBTSxHQUEyQixJQUFJLENBQUM7UUFFdEMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBMlVwRCxDQUFDO0lBelVHLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNwQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXVCO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUF1QjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBdUIsRUFBRSxNQUF1QjtRQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBeUI7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXdCO1FBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDakgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFvQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQW9CO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQW9CO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBb0I7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFvQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFvQjtRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNILE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFvQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFvQjtRQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBb0I7UUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQW9CO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBb0I7UUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFvQjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQW9CO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFvQjtRQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNoRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQW9CO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFvQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQW9CO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFvQjtRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQW9CLEVBQUUsUUFBeUI7UUFDaEUsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFvQixFQUFFLFFBQXlCO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckYsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3pHLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxpQkFBaUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNoRDtJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBb0IsRUFBRSxJQUFZLEVBQUUsUUFBeUI7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3ZHO1FBQ0QsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQW9CO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDdEI7UUFDRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RyxPQUFPLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBb0I7UUFDdkMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDeEYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEcsT0FBTyxhQUFhLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQW9CLEVBQUUsUUFBeUI7UUFDaEUsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRixPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQW9CLEVBQUUsUUFBeUI7UUFDOUQsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ25GLElBQUksVUFBVSxLQUFLLENBQUMsRUFBRTtZQUNsQixPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUM5RTtRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RSxJQUFJLEtBQWEsQ0FBQztRQUNsQixJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDckIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdDO2FBQU0sSUFBSSxhQUFhLEtBQUssVUFBVSxHQUFHLENBQUMsRUFBRTtZQUN6QyxLQUFLLEdBQUcsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvRTthQUFNO1lBQ0gsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3RztRQUNELE9BQU8sY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBb0IsRUFBRSxRQUF5QjtRQUNoRSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxjQUFjLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFDRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEIsR0FBRztnQkFDQyxHQUFHLEVBQUUsQ0FBQztnQkFDTixhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0MsUUFBUSxHQUFHLEdBQUcsY0FBYyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzdCLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDdEI7WUFDRCxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFvQixFQUFFLFFBQXlCO1FBQy9ELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUNELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2QsR0FBRztnQkFDQyxHQUFHLEVBQUUsQ0FBQztnQkFDTixJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdEMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7YUFDYjtTQUNKO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEUsT0FBTyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsYUFBcUI7UUFDNUQsSUFBSSxLQUFhLENBQUM7UUFDbEIsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzdCLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQzdCO2FBQU07WUFDSCxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUFlLEVBQUUsYUFBcUI7UUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDcEUsS0FBSyxFQUFFLENBQUM7U0FDWDtRQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNYLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsYUFBcUIsRUFBRSxZQUFvQjtRQUN4RixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEUsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDdEIsS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDWCxLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNO2lCQUNUO2dCQUNELE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3BFLEtBQUssRUFBRSxDQUFDO2lCQUNYO2dCQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDWCxNQUFNO2lCQUNUO2FBQ0o7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRIZWxwZXIgfSBmcm9tICcuL2NvbnRlbnQuaGVscGVyJztcbmltcG9ydCB7IENvbnRlbnRzSW50ZXJmYWNlIH0gZnJvbSAnLi4vY29udGVudC9jb250ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3Vyc29yUGFyYWdyYXBoIH0gZnJvbSAnLi9jdXJzb3ItcGFyYWdyYXBoJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBQb3NpdGlvbkhlbHBlciB9IGZyb20gJy4vcG9zaXRpb24uaGVscGVyJztcbmltcG9ydCB7IFJhbmdlIH0gZnJvbSAnLi9yYW5nZSc7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb24ge1xuICAgIGFuY2hvcjogQ3Vyc29yUGFyYWdyYXBoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjdXJzb3IgPSBuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApO1xuXG4gICAgcHJpdmF0ZSBrZWVwTGluZVBvc2l0aW9uWDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYW5jaG9yID09PSBudWxsIHx8ICh0aGlzLmFuY2hvci5yb3cgPT09IHRoaXMuY3Vyc29yLnJvdyAmJiB0aGlzLmFuY2hvci5jb2x1bW4gPT09IHRoaXMuY3Vyc29yLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmFja3dhcmRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hbmNob3Iucm93ID4gdGhpcy5jdXJzb3Iucm93IHx8ICh0aGlzLmFuY2hvci5yb3cgPT09IHRoaXMuY3Vyc29yLnJvdyAmJiB0aGlzLmFuY2hvci5jb2x1bW4gPiB0aGlzLmN1cnNvci5jb2x1bW4pO1xuICAgIH1cblxuICAgIGdldCByYW5nZSgpOiBSYW5nZSB7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgodGhpcy5jdXJzb3Iucm93LCB0aGlzLmN1cnNvci5jb2x1bW4pO1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJhbmdlKGN1cnNvciwgY3Vyc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgodGhpcy5hbmNob3Iucm93LCB0aGlzLmFuY2hvci5jb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5pc0JhY2t3YXJkcyA/IG5ldyBSYW5nZShjdXJzb3IsIGFuY2hvcikgOiBuZXcgUmFuZ2UoYW5jaG9yLCBjdXJzb3IpO1xuICAgIH1cblxuICAgIHBsYWNlQ3Vyc29yKGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIG1vdmVDdXJzb3IoY3Vyc29yOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJzb3IgPSBjdXJzb3I7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIHBsYWNlU2VsZWN0aW9uKGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoLCBhbmNob3I6IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIG1vdmVTZWxlY3Rpb24ocG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYW5jaG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvciA9IHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0QWxsKG1vZGVsOiBDb250ZW50c0ludGVyZmFjZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0ID0gbW9kZWwucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBsYXN0ID4gMCA/IG1vZGVsLmNvbnRlbnRMZW5ndGggLSBtb2RlbC5wYXJhZ3JhcGhzW2xhc3QgLSAxXS5pbnNlcnRJbmRleCAtIDEgOiBtb2RlbC5jb250ZW50TGVuZ3RoO1xuICAgICAgICB0aGlzLnBsYWNlU2VsZWN0aW9uKG5ldyBDdXJzb3JQYXJhZ3JhcGgoMCwgMCksIG5ldyBDdXJzb3JQYXJhZ3JhcGgobGFzdCwgbGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0VXAoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFuY2hvcikge1xuICAgICAgICAgICAgdGhpcy5hbmNob3IgPSB0aGlzLmN1cnNvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vdmVDdXJzb3JVcChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVVcChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuaXNFbXB0eSB8fCB0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yVXAoc2Vzc2lvbiwgcG9zaXRpb24pO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0RG93bihzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYW5jaG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvciA9IHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZUN1cnNvckRvd24oc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlRG93bihzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuaXNFbXB0eSB8fCAhdGhpcy5pc0JhY2t3YXJkcyA/IHRoaXMuY3Vyc29yIDogdGhpcy5hbmNob3I7XG4gICAgICAgIHRoaXMubW92ZUN1cnNvckRvd24oc2Vzc2lvbiwgcG9zaXRpb24pO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0UmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvclJpZ2h0KHNlc3Npb24pO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvclJpZ2h0KHNlc3Npb24pO1xuICAgICAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICF0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0TGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3Vyc29yTGVmdChzZXNzaW9uKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUxlZnQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvckxlZnQoc2Vzc2lvbik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5pc0JhY2t3YXJkcyA/IHRoaXMuY3Vyc29yIDogdGhpcy5hbmNob3I7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdExpbmVTdGFydChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZVN0YXJ0KHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUxpbmVTdGFydChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZVN0YXJ0KHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgc2VsZWN0TGluZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZUVuZChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVMaW5lRW5kKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRMaW5lRW5kKHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEluZGV4ID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1twYXJhZ3JhcGhdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBwYXJhZ3JhcGhJbmRleCkpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlRmlsZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEluZGV4ID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1twYXJhZ3JhcGhdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihuZXcgQ3Vyc29yUGFyYWdyYXBoKHBhcmFncmFwaCwgcGFyYWdyYXBoSW5kZXgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaWxlU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUZpbGVTdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApKTtcbiAgICB9XG5cbiAgICBzZWxlY3RXb3JkUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFdvcmRSaWdodChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVXb3JkUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFdvcmRSaWdodChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgIH1cblxuICAgIHNlbGVjdFdvcmRMZWZ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRXb3JkTGVmdChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVXb3JkTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0V29yZExlZnQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVDdXJzb3JVcChzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgcG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIGlmIChsaW5lLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RMaW5lU3RhcnQoc2Vzc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb0xpbmUoc2Vzc2lvbiwgbGluZS5yb3cgLSAxLCBsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZUN1cnNvckRvd24oc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGluZSA9IFBvc2l0aW9uSGVscGVyLmRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbiwgcG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhzQ291bnQgPSBzZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGFzdFBhcmFncmFwaCA9IHNlc3Npb24ucGFnZXNXcmFwLnBhcmFncmFwaHNbcGFyYWdyYXBoc0NvdW50IC0gMV07XG4gICAgICAgIGNvbnN0IGxhc3RQYXJhZ3JhcGhMaW5lID0gbGFzdFBhcmFncmFwaC50ZXh0TGluZXNJbmZvW2xhc3RQYXJhZ3JhcGgudGV4dExpbmVzSW5mby5sZW5ndGggLSAxXS5zY3JlZW5MaW5lO1xuICAgICAgICBpZiAobGluZS5yb3cgPT09IGxhc3RQYXJhZ3JhcGhMaW5lKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdExpbmVFbmQoc2Vzc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb0xpbmUoc2Vzc2lvbiwgbGluZS5yb3cgKyAxLCBsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZVRvTGluZShzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgbGluZTogbnVtYmVyLCBmcm9tTGluZTogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5rZWVwTGluZVBvc2l0aW9uWCkge1xuICAgICAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IFBvc2l0aW9uSGVscGVyLnNjcmVlblRvUGl4ZWwoc2Vzc2lvbiwgZnJvbUxpbmUucm93LCBmcm9tTGluZS5jb2x1bW4pLnBhZ2VYO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IFBvc2l0aW9uSGVscGVyLmdldEFwcHJveGltYXRlUG9zaXRpb24oc2Vzc2lvbiwgbGluZSwgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCk7XG4gICAgICAgIHRoaXMuY3Vyc29yID0gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3Vyc29yTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IEN1cnNvclBhcmFncmFwaCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnNvci5yb3cgPT09IDAgJiYgdGhpcy5jdXJzb3IuY29sdW1uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJzb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBDb250ZW50SGVscGVyLnBhcmFncmFwaFBvc2l0aW9uVG9Eb2N1bWVudEluZGV4KHNlc3Npb24ud3JhcFBhcmFncmFwaEluZGV4LCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHJldHVybiBDb250ZW50SGVscGVyLmRvY3VtZW50SW5kZXhUb1BhcmFncmFwaEluZGV4KHNlc3Npb24ud3JhcFBhcmFncmFwaEluZGV4LCBpbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3Vyc29yUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsYXN0ID0gc2Vzc2lvbi5wYWdlc1dyYXAucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3Iucm93ID09PSBsYXN0ICYmIHRoaXMuY3Vyc29yLmNvbHVtbiA9PT0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tsYXN0XS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnNvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IENvbnRlbnRIZWxwZXIucGFyYWdyYXBoUG9zaXRpb25Ub0RvY3VtZW50SW5kZXgoc2Vzc2lvbi53cmFwUGFyYWdyYXBoSW5kZXgsIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIENvbnRlbnRIZWxwZXIuZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoSW5kZXgoc2Vzc2lvbi53cmFwUGFyYWdyYXBoSW5kZXgsIGluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMaW5lU3RhcnQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIHJldHVybiBQb3NpdGlvbkhlbHBlci5zY3JlZW5Ub0RvY3VtZW50KHNlc3Npb24sIGxpbmUucm93LCAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExpbmVFbmQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaExlbmd0aCA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcG9zaXRpb24ucm93XS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxpbmVzQ291bnQgPSBzZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10udGV4dExpbmVzSW5mby5sZW5ndGg7XG4gICAgICAgIGlmIChsaW5lc0NvdW50ID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgcGFyYWdyYXBoTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMaW5lID0gbGluZS5yb3cgLSBzZXNzaW9uLndyYXBQYXJhZ3JhcGhMaW5lW3Bvc2l0aW9uLnJvd107XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICBpZiAocGFyYWdyYXBoTGluZSA9PT0gMCkge1xuICAgICAgICAgICAgaW5kZXggPSBzZXNzaW9uLndyYXBEYXRhW3Bvc2l0aW9uLnJvd11bMF07XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYWdyYXBoTGluZSA9PT0gbGluZXNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIGluZGV4ID0gcGFyYWdyYXBoTGVuZ3RoIC0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmUgLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmVdIC0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmUgLSAxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V29yZFJpZ2h0KHNlc3Npb246IEVkaXRTZXNzaW9uLCBwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgbGV0IHJvdyA9IHBvc2l0aW9uLnJvdztcbiAgICAgICAgbGV0IGNvbHVtbiA9IHBvc2l0aW9uLmNvbHVtbjtcbiAgICAgICAgY29uc3QgbGluZSA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcm93XTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRMZW5ndGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aDtcbiAgICAgICAgaWYgKHJvdyArIDEgPj0gZG9jdW1lbnRMZW5ndGggJiYgY29sdW1uID09PSBsaW5lLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCByaWdodE9mQ3Vyc29yID0gbGluZS5zdWJzdHJpbmcoY29sdW1uKTtcbiAgICAgICAgaWYgKGNvbHVtbiA9PT0gbGluZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByb3crKztcbiAgICAgICAgICAgICAgICByaWdodE9mQ3Vyc29yID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tyb3ddO1xuICAgICAgICAgICAgfSB3aGlsZSAocm93IDwgZG9jdW1lbnRMZW5ndGggJiYgL15cXHMqJC8udGVzdChyaWdodE9mQ3Vyc29yKSk7XG4gICAgICAgICAgICBpZiAoIS9eXFxzKy8udGVzdChyaWdodE9mQ3Vyc29yKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0T2ZDdXJzb3IgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNob3J0V29yZEVuZEluZGV4KHNlc3Npb24udG9rZW5SZSwgcmlnaHRPZkN1cnNvcik7XG4gICAgICAgIHJldHVybiBuZXcgQ3Vyc29yUGFyYWdyYXBoKHJvdywgY29sdW1uICsgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V29yZExlZnQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBsZXQgcm93ID0gcG9zaXRpb24ucm93O1xuICAgICAgICBsZXQgY29sdW1uID0gcG9zaXRpb24uY29sdW1uO1xuICAgICAgICBpZiAoY29sdW1uID09PSAwICYmIHJvdyA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsaW5lID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tyb3ddLnN1YnN0cmluZygwLCBjb2x1bW4pO1xuICAgICAgICBpZiAoY29sdW1uID09PSAwKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcm93LS07XG4gICAgICAgICAgICAgICAgbGluZSA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcm93XTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJvdyA+IDAgJiYgL15cXHMqJC8udGVzdChsaW5lKSk7XG4gICAgICAgICAgICBjb2x1bW4gPSBsaW5lLmxlbmd0aDtcbiAgICAgICAgICAgIGlmICghL1xccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgbGluZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlZnRPZkN1cnNvciA9IGxpbmUuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNob3J0V29yZEVuZEluZGV4KHNlc3Npb24udG9rZW5SZSwgbGVmdE9mQ3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocm93LCBjb2x1bW4gLSBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG9ydFdvcmRFbmRJbmRleCh0b2tlblJlOiBSZWdFeHAsIHJpZ2h0T2ZDdXJzb3I6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICB0b2tlblJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICh0b2tlblJlLmV4ZWMocmlnaHRPZkN1cnNvcikpIHtcbiAgICAgICAgICAgIGluZGV4ID0gdG9rZW5SZS5sYXN0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmU6IFJlZ0V4cCwgcmlnaHRPZkN1cnNvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZVJlID0gL1xccy87XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChyaWdodE9mQ3Vyc29yW2luZGV4XSAmJiB3aGl0ZXNwYWNlUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4IDwgMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmhhbmRsZU5vV2hpdGVzcGFjZUZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IsIHdoaXRlc3BhY2VSZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9XaGl0ZXNwYWNlRm91bmQodG9rZW5SZTogUmVnRXhwLCByaWdodE9mQ3Vyc29yOiBzdHJpbmcsIHdoaXRlc3BhY2VSZTogUmVnRXhwKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgdG9rZW5SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAocmlnaHRPZkN1cnNvcltpbmRleF0gJiYgIXRva2VuUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICBpZiAod2hpdGVzcGFjZVJlLnRlc3QocmlnaHRPZkN1cnNvcltpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMikge1xuICAgICAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHJpZ2h0T2ZDdXJzb3JbaW5kZXhdICYmIHdoaXRlc3BhY2VSZS50ZXN0KHJpZ2h0T2ZDdXJzb3JbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ContentStyleHelper } from './content/helpers/content-style.helper';
|
|
2
|
+
import { DEFAULT_HEADINGS, DEFAULT_PARAGRAPH_STYLE, DEFAULT_TEXT_STYLE } from './content/constants/editor.const';
|
|
3
|
+
import { DocumentInfo } from './content/constants/document-info.const';
|
|
4
|
+
import { DocxModel } from '../models/generated/docx.model';
|
|
5
|
+
import { FormatModel } from '../models/generated/format.model';
|
|
6
|
+
import { MarginModel } from './content/margin.model';
|
|
7
|
+
import { OperationsHelper } from './operations/operations-helper.helper';
|
|
8
|
+
import { ParagraphModel } from '../models/generated/paragraph.model';
|
|
9
|
+
import { ParagraphStyleModel } from '../models/generated/paragraph-style.model';
|
|
10
|
+
export class RevisionHelper {
|
|
11
|
+
static applyOperationsToRevision(revision, operations) {
|
|
12
|
+
operations.sort((a, b) => a.createTime - b.createTime);
|
|
13
|
+
const actions = operations.map(x => x.command);
|
|
14
|
+
OperationsHelper.applyOperations(revision.content, actions);
|
|
15
|
+
}
|
|
16
|
+
static fillTablesDefaultStyles(tables) {
|
|
17
|
+
for (const table of tables) {
|
|
18
|
+
for (const row of table.rows) {
|
|
19
|
+
for (const cell of row.cells) {
|
|
20
|
+
this.fillDefaultStyles(cell);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static fillEdgesDefaultStyles(headers, footers) {
|
|
26
|
+
for (const header of headers) {
|
|
27
|
+
this.fillDefaultStyles(header);
|
|
28
|
+
}
|
|
29
|
+
for (const footer of footers) {
|
|
30
|
+
this.fillDefaultStyles(footer);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static fillDefaultStyles(contents) {
|
|
34
|
+
for (const format of contents.formats) {
|
|
35
|
+
format.textStyle = ContentStyleHelper.combineTextStyles(format.textStyle, DEFAULT_TEXT_STYLE);
|
|
36
|
+
}
|
|
37
|
+
for (const paragraph of contents.paragraphs) {
|
|
38
|
+
paragraph.paragraphStyle = this.fillParagraphStyleModel(paragraph.paragraphStyle);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
static fillParagraphStyleModel(paragraphStyle) {
|
|
42
|
+
return new ParagraphStyleModel({
|
|
43
|
+
alignment: paragraphStyle.alignment ?? DEFAULT_PARAGRAPH_STYLE.alignment,
|
|
44
|
+
backgroundColor: paragraphStyle.backgroundColor ?? DEFAULT_PARAGRAPH_STYLE.backgroundColor,
|
|
45
|
+
headingStyleId: paragraphStyle.headingStyleId,
|
|
46
|
+
indentFirstLine: paragraphStyle.indentFirstLine ?? DEFAULT_PARAGRAPH_STYLE.indentFirstLine,
|
|
47
|
+
indentHanging: paragraphStyle.indentHanging ?? DEFAULT_PARAGRAPH_STYLE.indentHanging,
|
|
48
|
+
indentLeft: paragraphStyle.indentLeft ?? DEFAULT_PARAGRAPH_STYLE.indentLeft,
|
|
49
|
+
indentRight: paragraphStyle.indentRight ?? DEFAULT_PARAGRAPH_STYLE.indentRight,
|
|
50
|
+
lineSpacing: paragraphStyle.lineSpacing ?? DEFAULT_PARAGRAPH_STYLE.lineSpacing,
|
|
51
|
+
spaceAfter: paragraphStyle.spaceAfter ?? DEFAULT_PARAGRAPH_STYLE.spaceAfter,
|
|
52
|
+
spaceBefore: paragraphStyle.spaceBefore ?? DEFAULT_PARAGRAPH_STYLE.spaceBefore,
|
|
53
|
+
contextualSpacing: paragraphStyle.contextualSpacing ?? DEFAULT_PARAGRAPH_STYLE.contextualSpacing,
|
|
54
|
+
beforeAutospacing: paragraphStyle.beforeAutospacing ?? DEFAULT_PARAGRAPH_STYLE.beforeAutospacing,
|
|
55
|
+
afterAutospacing: paragraphStyle.afterAutospacing ?? DEFAULT_PARAGRAPH_STYLE.afterAutospacing,
|
|
56
|
+
numberingId: paragraphStyle.numberingId ?? DEFAULT_PARAGRAPH_STYLE.numberingId,
|
|
57
|
+
numberingLevel: paragraphStyle.numberingLevel ?? DEFAULT_PARAGRAPH_STYLE.numberingLevel
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
static getEmptyDocxModel() {
|
|
61
|
+
const pageMargin = new MarginModel();
|
|
62
|
+
return new DocxModel({
|
|
63
|
+
content: '',
|
|
64
|
+
contentLength: 0,
|
|
65
|
+
headings: DEFAULT_HEADINGS,
|
|
66
|
+
pageHeight: DocumentInfo.height,
|
|
67
|
+
pageWidth: DocumentInfo.width,
|
|
68
|
+
paragraphs: [
|
|
69
|
+
new ParagraphModel({
|
|
70
|
+
insertIndex: 0,
|
|
71
|
+
paragraphStyle: DEFAULT_PARAGRAPH_STYLE
|
|
72
|
+
})
|
|
73
|
+
],
|
|
74
|
+
breaks: [],
|
|
75
|
+
elements: [],
|
|
76
|
+
formats: [new FormatModel({ startIndex: 0, endIndex: 0, textStyle: DEFAULT_TEXT_STYLE })],
|
|
77
|
+
images: [],
|
|
78
|
+
links: [],
|
|
79
|
+
marginBottom: pageMargin.bottom,
|
|
80
|
+
marginFooter: pageMargin.footer,
|
|
81
|
+
marginHeader: pageMargin.header,
|
|
82
|
+
marginLeft: pageMargin.left,
|
|
83
|
+
marginRight: pageMargin.right,
|
|
84
|
+
marginTop: pageMargin.top,
|
|
85
|
+
tables: [],
|
|
86
|
+
numberings: [],
|
|
87
|
+
tabs: []
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aXNpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3JldmlzaW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWhGLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxRQUF1QixFQUFFLFVBQTRCO1FBQ2xGLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFD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QUFnQjtZQUMxQixVQUFVLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDL0IsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQzdCLFVBQVUsRUFBRTtnQkFDUixJQUFJLGNBQWMsQ0FBQztvQkFDZixXQUFXLEVBQUUsQ0FBQztvQkFDZCxjQUFjLEVBQUUsdUJBQXVCO2lCQUMxQyxDQUFDO2FBQ0w7WUFDRCxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUN6RixNQUFNLEVBQUUsRUFBRTtZQUNWLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQy9CLFlBQVksRUFBRSxVQUFVLENBQUMsTUFBTTtZQUMvQixZQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDL0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSztZQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDekIsTUFBTSxFQUFFLEVBQUU7WUFDVixVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudHNJbnRlcmZhY2UgfSBmcm9tICcuL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbnRlbnRTdHlsZUhlbHBlciB9IGZyb20gJy4vY29udGVudC9oZWxwZXJzL2NvbnRlbnQtc3R5bGUuaGVscGVyJztcbmltcG9ydCB7IERFRkFVTFRfSEVBRElOR1MsIERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLCBERUZBVUxUX1RFWFRfU1RZTEUgfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2RvY3VtZW50LWluZm8uY29uc3QnO1xuaW1wb3J0IHsgRG9jeE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9kb2N4Lm1vZGVsJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBPcGVyYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvb3BlcmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJldmlzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3JldmlzaW9uLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFJldmlzaW9uSGVscGVyIHtcbiAgICBzdGF0aWMgYXBwbHlPcGVyYXRpb25zVG9SZXZpc2lvbihyZXZpc2lvbjogUmV2aXNpb25Nb2RlbCwgb3BlcmF0aW9uczogT3BlcmF0aW9uTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBvcGVyYXRpb25zLnNvcnQoKGEsIGIpID0+IGEuY3JlYXRlVGltZSAtIGIuY3JlYXRlVGltZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBvcGVyYXRpb25zLm1hcCh4ID0+IHguY29tbWFuZCk7XG4gICAgICAgIE9wZXJhdGlvbnNIZWxwZXIuYXBwbHlPcGVyYXRpb25zKHJldmlzaW9uLmNvbnRlbnQsIGFjdGlvbnMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmaWxsVGFibGVzRGVmYXVsdFN0eWxlcyh0YWJsZXM6IFRhYmxlTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiByb3cuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhjZWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbEVkZ2VzRGVmYXVsdFN0eWxlcyhoZWFkZXJzOiBFZGdlTW9kZWxbXSwgZm9vdGVyczogRWRnZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhoZWFkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmb290ZXIgb2YgZm9vdGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhmb290ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbGxEZWZhdWx0U3R5bGVzKGNvbnRlbnRzOiBDb250ZW50c0ludGVyZmFjZSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBjb250ZW50cy5mb3JtYXRzKSB7XG4gICAgICAgICAgICBmb3JtYXQudGV4dFN0eWxlID0gQ29udGVudFN0eWxlSGVscGVyLmNvbWJpbmVUZXh0U3R5bGVzKGZvcm1hdC50ZXh0U3R5bGUsIERFRkFVTFRfVEVYVF9TVFlMRSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHBhcmFncmFwaCBvZiBjb250ZW50cy5wYXJhZ3JhcGhzKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGgucGFyYWdyYXBoU3R5bGUgPSB0aGlzLmZpbGxQYXJhZ3JhcGhTdHlsZU1vZGVsKHBhcmFncmFwaC5wYXJhZ3JhcGhTdHlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbFBhcmFncmFwaFN0eWxlTW9kZWwocGFyYWdyYXBoU3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiBQYXJhZ3JhcGhTdHlsZU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHtcbiAgICAgICAgICAgIGFsaWdubWVudDogcGFyYWdyYXBoU3R5bGUuYWxpZ25tZW50ID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmFsaWdubWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFyYWdyYXBoU3R5bGUuYmFja2dyb3VuZENvbG9yID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGhlYWRpbmdTdHlsZUlkOiBwYXJhZ3JhcGhTdHlsZS5oZWFkaW5nU3R5bGVJZCxcbiAgICAgICAgICAgIGluZGVudEZpcnN0TGluZTogcGFyYWdyYXBoU3R5bGUuaW5kZW50Rmlyc3RMaW5lID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmluZGVudEZpcnN0TGluZSxcbiAgICAgICAgICAgIGluZGVudEhhbmdpbmc6IHBhcmFncmFwaFN0eWxlLmluZGVudEhhbmdpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50SGFuZ2luZyxcbiAgICAgICAgICAgIGluZGVudExlZnQ6IHBhcmFncmFwaFN0eWxlLmluZGVudExlZnQgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50TGVmdCxcbiAgICAgICAgICAgIGluZGVudFJpZ2h0OiBwYXJhZ3JhcGhTdHlsZS5pbmRlbnRSaWdodCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRSaWdodCxcbiAgICAgICAgICAgIGxpbmVTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5saW5lU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5saW5lU3BhY2luZyxcbiAgICAgICAgICAgIHNwYWNlQWZ0ZXI6IHBhcmFncmFwaFN0eWxlLnNwYWNlQWZ0ZXIgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuc3BhY2VBZnRlcixcbiAgICAgICAgICAgIHNwYWNlQmVmb3JlOiBwYXJhZ3JhcGhTdHlsZS5zcGFjZUJlZm9yZSA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5zcGFjZUJlZm9yZSxcbiAgICAgICAgICAgIGNvbnRleHR1YWxTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5jb250ZXh0dWFsU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5jb250ZXh0dWFsU3BhY2luZyxcbiAgICAgICAgICAgIGJlZm9yZUF1dG9zcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5iZWZvcmVBdXRvc3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5iZWZvcmVBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIGFmdGVyQXV0b3NwYWNpbmc6IHBhcmFncmFwaFN0eWxlLmFmdGVyQXV0b3NwYWNpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuYWZ0ZXJBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIG51bWJlcmluZ0lkOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdJZCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdJZCxcbiAgICAgICAgICAgIG51bWJlcmluZ0xldmVsOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdMZXZlbCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdMZXZlbFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RW1wdHlEb2N4TW9kZWwoKTogRG9jeE1vZGVsIHtcbiAgICAgICAgY29uc3QgcGFnZU1hcmdpbiA9IG5ldyBNYXJnaW5Nb2RlbCgpO1xuICAgICAgICByZXR1cm4gbmV3IERvY3hNb2RlbCh7XG4gICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICBoZWFkaW5nczogREVGQVVMVF9IRUFESU5HUyxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IERvY3VtZW50SW5mby5oZWlnaHQsXG4gICAgICAgICAgICBwYWdlV2lkdGg6IERvY3VtZW50SW5mby53aWR0aCxcbiAgICAgICAgICAgIHBhcmFncmFwaHM6IFtcbiAgICAgICAgICAgICAgICBuZXcgUGFyYWdyYXBoTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgZm9ybWF0czogW25ldyBGb3JtYXRNb2RlbCh7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiAwLCB0ZXh0U3R5bGU6IERFRkFVTFRfVEVYVF9TVFlMRSB9KV0sXG4gICAgICAgICAgICBpbWFnZXM6IFtdLFxuICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBwYWdlTWFyZ2luLmJvdHRvbSxcbiAgICAgICAgICAgIG1hcmdpbkZvb3RlcjogcGFnZU1hcmdpbi5mb290ZXIsXG4gICAgICAgICAgICBtYXJnaW5IZWFkZXI6IHBhZ2VNYXJnaW4uaGVhZGVyLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogcGFnZU1hcmdpbi5sZWZ0LFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IHBhZ2VNYXJnaW4ucmlnaHQsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IHBhZ2VNYXJnaW4udG9wLFxuICAgICAgICAgICAgdGFibGVzOiBbXSxcbiAgICAgICAgICAgIG51bWJlcmluZ3M6IFtdLFxuICAgICAgICAgICAgdGFiczogW11cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -9,4 +9,4 @@ export class CellModel {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL21vZGVscy9nZW5lcmF0ZWQvY2VsbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLL0MsTUFBTSxPQUFPLFNBQVM7SUFxQmxCLFlBQ0ksTUFBMkI7UUFFM0IsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFBRTtZQUUxRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvcmRlcnNTdHlsZU1vZGVsIH0gZnJvbSAnLi9ib3JkZXJzLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEJyZWFrTW9kZWwgfSBmcm9tICcuL2JyZWFrLm1vZGVsJztcbmltcG9ydCB7IENvbHVtblNlY3Rpb25Nb2RlbCB9IGZyb20gJy4vY29sdW1uLXNlY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4vaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgTGlua01vZGVsIH0gZnJvbSAnLi9saW5rLm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbnNNb2RlbCB9IGZyb20gJy4vbWFyZ2lucy5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4vcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYk1vZGVsIH0gZnJvbSAnLi90YWIubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQ2VsbE1vZGVsIHtcbiAgICBwdWJsaWMgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gICAgcHVibGljIGJvcmRlcnM6IEJvcmRlcnNTdHlsZU1vZGVsW107XG4gICAgcHVibGljIGJyZWFrczogQnJlYWtNb2RlbFtdO1xuICAgIHB1YmxpYyBjb2x1bW5TZWN0aW9uczogQ29sdW1uU2VjdGlvbk1vZGVsW107XG4gICAgcHVibGljIGNvbnRlbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgY29udGVudExlbmd0aDogbnVtYmVyO1xuICAgIHB1YmxpYyBlbGVtZW50czogRWxlbWVudE1vZGVsW107XG4gICAgcHVibGljIGZvcm1hdHM6IEZvcm1hdE1vZGVsW107XG4gICAgcHVibGljIGhvcml6b250YWxNZXJnZTogbnVtYmVyO1xuICAgIHB1YmxpYyBpbWFnZXM6IEltYWdlTW9kZWxbXTtcbiAgICBwdWJsaWMgbGlua3M6IExpbmtNb2RlbFtdO1xuICAgIHB1YmxpYyBtYXJnaW5zOiBNYXJnaW5zTW9kZWw7XG4gICAgcHVibGljIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW107XG4gICAgcHVibGljIHRhYmxlczogVGFibGVNb2RlbFtdO1xuICAgIHB1YmxpYyB0YWJzOiBUYWJNb2RlbFtdO1xuICAgIHB1YmxpYyB2ZXJ0aWNhbEFsaWduOiBhbnk7XG4gICAgcHVibGljIHZlcnRpY2FsTWVyZ2U6IHN0cmluZztcbiAgICBwdWJsaWMgd2lkdGg6IG51bWJlcjtcbiAgICBwdWJsaWMgd2lkdGhUeXBlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZpZWxkcz86IFBhcnRpYWw8Q2VsbE1vZGVsPikge1xuXG4gICAgICAgIGlmIChmaWVsZHMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZHMubWFyZ2lucykgeyBmaWVsZHMubWFyZ2lucyA9IG5ldyBNYXJnaW5zTW9kZWwoZmllbGRzLm1hcmdpbnMpOyB9XG5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|