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