@talrace/ngx-noder 0.0.17 → 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/README.md +72 -9
- package/assets/i18n/noder.en.json +93 -0
- package/assets/i18n/noder.es.json +93 -0
- package/assets/i18n/noder.ru.json +93 -0
- package/fesm2022/talrace-ngx-noder.mjs +371 -298
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +1 -10
- package/lib/apart-components/editor-title/editor-title.component.d.ts +5 -3
- package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +1 -1
- package/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.d.ts +3 -1
- package/lib/apart-components/editor-toolbar/editor-toolbar.module.d.ts +23 -23
- package/lib/editor/components/edges/edge.component.d.ts +10 -3
- package/lib/editor/components/edges/edges.d.ts +0 -2
- package/lib/editor/components/external-element/external.component.d.ts +1 -1
- package/lib/editor/components/external-element/models/external-element.model.d.ts +3 -3
- 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/lib/editor/components/table/overlay-menu/overlay-menu.component.d.ts +3 -1
- package/lib/editor/editor.module.d.ts +2 -1
- package/lib/editor/gadgets/scrollbar.d.ts +1 -0
- package/lib/translate/noder-translate.loader.d.ts +11 -0
- package/package.json +3 -3
- package/public-api.d.ts +1 -0
- 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 -47
- package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +0 -32
- package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +0 -64
- package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +0 -92
- package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +0 -22
- 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/heading/heading.component.mjs +0 -22
- 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 -106
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +0 -24
- 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 -84
- 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 -127
- 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 -84
- package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +0 -123
- 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 -99
- package/esm2022/lib/editor/components/edges/edges.mjs +0 -142
- 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 -74
- 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 -67
- 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 -1367
- 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 -81
- 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/public-api.mjs +0 -53
- package/esm2022/talrace-ngx-noder.mjs +0 -5
- package/lib/apart-components/editor-toolbar/components/buttons/heading/heading.component.d.ts +0 -8
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { CellSessionSourceModel } from './targeting/cell-session-source.model';
|
|
3
|
-
import { DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER, DEFAULT_TOOLBAR_STYLES } from '../content/constants/editor.const';
|
|
4
|
-
import { DisplayData } from '../content/display-data/display-data';
|
|
5
|
-
import { DocumentInfo } from '../content/constants/document-info.const';
|
|
6
|
-
import { Edges } from '../components/edges/edges';
|
|
7
|
-
import { EdgeSessionSourceModel } from './targeting/edge-session-source.model';
|
|
8
|
-
import { EditSession } from './edit.session';
|
|
9
|
-
import { GeneralPropertiesModel } from '../content/display-data/general-properties.model';
|
|
10
|
-
import { MainSessionSourceModel } from './targeting/main-session-source.model';
|
|
11
|
-
import { MarginModel } from '../content/margin.model';
|
|
12
|
-
import { Renderer } from '../display/renderer';
|
|
13
|
-
import { ScalingHelper } from '../content/helpers/scaling.helper';
|
|
14
|
-
import { ScrollBar } from '../gadgets/scrollbar';
|
|
15
|
-
import { SessionModel } from './targeting/session.model';
|
|
16
|
-
import { TargetType } from '../operations/enums/target-type.enum';
|
|
17
|
-
import { VirtualRenderer } from '../display/virtual.renderer';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "../components/shared/services/custom-content.service";
|
|
20
|
-
import * as i2 from "../interaction/editor.service";
|
|
21
|
-
import * as i3 from "../components/shared/services/component.service";
|
|
22
|
-
export class RegulatorService {
|
|
23
|
-
constructor(customContentService, editorService, componentService) {
|
|
24
|
-
this.customContentService = customContentService;
|
|
25
|
-
this.editorService = editorService;
|
|
26
|
-
this.componentService = componentService;
|
|
27
|
-
this.sessions = [];
|
|
28
|
-
this.sessionIdIncrement = 0;
|
|
29
|
-
}
|
|
30
|
-
addMainSession(model, pageWidth, scalingRatio, container) {
|
|
31
|
-
const sessionId = ++this.sessionIdIncrement;
|
|
32
|
-
const properties = new GeneralPropertiesModel({
|
|
33
|
-
numberings: model.numberings,
|
|
34
|
-
defaultTabWidth: ScalingHelper.scale(model.defaultTabWidth, scalingRatio),
|
|
35
|
-
maxEdgeHeight: model.pageHeight * DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER,
|
|
36
|
-
scalingRatio,
|
|
37
|
-
numberingInfo: {}
|
|
38
|
-
});
|
|
39
|
-
const pageMargin = new MarginModel({
|
|
40
|
-
left: ScalingHelper.scale(model.marginLeft, scalingRatio),
|
|
41
|
-
right: ScalingHelper.scale(model.marginRight, scalingRatio),
|
|
42
|
-
top: model.marginTop > 0 ? model.marginTop : 0,
|
|
43
|
-
bottom: model.marginBottom > 0 ? model.marginBottom : 0,
|
|
44
|
-
header: model.marginHeader > 0 ? model.marginHeader : 0,
|
|
45
|
-
footer: model.marginFooter > 0 ? model.marginFooter : 0
|
|
46
|
-
});
|
|
47
|
-
const edgesMargins = new MarginModel({ ...pageMargin, top: pageMargin.header, bottom: pageMargin.footer });
|
|
48
|
-
const edges = new Edges(this.componentService, model.headers, model.footers, edgesMargins, pageWidth, sessionId, properties);
|
|
49
|
-
properties.numberingInfo = {};
|
|
50
|
-
const customComponents = { images: [], tables: [], tabs: [], customElements: [], edges: edges };
|
|
51
|
-
const displayData = new DisplayData(model, properties, sessionId, pageMargin, DocumentInfo.pagesSpace, pageWidth, model.pageHeight, customComponents, this.customContentService, this.editorService);
|
|
52
|
-
const scrollBar = new ScrollBar(container.nativeElement.parentElement);
|
|
53
|
-
const mainSession = new EditSession(displayData, sessionId, this.customContentService, model, this.selection, properties, this.editorService, customComponents, 'main', scrollBar);
|
|
54
|
-
const virtualRenderer = new VirtualRenderer(container.nativeElement, mainSession, scrollBar);
|
|
55
|
-
this.editorService.styles = DEFAULT_TOOLBAR_STYLES();
|
|
56
|
-
this.mainSession = new SessionModel(mainSession, virtualRenderer, sessionId, null, new MainSessionSourceModel());
|
|
57
|
-
this.sessions.push(this.mainSession);
|
|
58
|
-
this.currentSession = this.mainSession;
|
|
59
|
-
displayData.updateNextLineIndexes(0, displayData.paragraphs.length - 1);
|
|
60
|
-
}
|
|
61
|
-
addCellSession(table, margins, component, properties) {
|
|
62
|
-
const sessionId = ++this.sessionIdIncrement;
|
|
63
|
-
const customComponents = { images: [], tables: [], tabs: [], customElements: [], edges: null };
|
|
64
|
-
const displayData = new DisplayData(component.cell, properties, sessionId, margins, 0, component.width, 0, customComponents, this.customContentService, this.editorService);
|
|
65
|
-
const sessionType = this.isWithinEdge(component.parentSessionId) ? 'cellWithinEdge' : 'cell';
|
|
66
|
-
const session = new EditSession(displayData, sessionId, this.customContentService, component.cell, this.selection, properties, this.editorService, customComponents, sessionType);
|
|
67
|
-
displayData.contentWidth = displayData.contentWidth === 0 ? 1 : displayData.contentWidth;
|
|
68
|
-
const renderer = new Renderer(component.container.nativeElement, session);
|
|
69
|
-
const source = new CellSessionSourceModel(table, component);
|
|
70
|
-
const newSession = new SessionModel(session, renderer, sessionId, component.parentSessionId, source);
|
|
71
|
-
this.sessions.push(newSession);
|
|
72
|
-
displayData.updateNextLineIndexes(0, displayData.paragraphs.length - 1);
|
|
73
|
-
newSession.renderer.updateText();
|
|
74
|
-
return newSession;
|
|
75
|
-
}
|
|
76
|
-
addEdgeSession(component) {
|
|
77
|
-
const sessionId = ++this.sessionIdIncrement;
|
|
78
|
-
const customComponents = { images: [], tables: [], tabs: [], customElements: [], edges: null };
|
|
79
|
-
const displayData = new DisplayData(component.model, component.generalProperties, sessionId, component.margins, 0, component.width, 0, customComponents, this.customContentService, this.editorService);
|
|
80
|
-
const session = new EditSession(displayData, sessionId, this.customContentService, component.model, this.selection, component.generalProperties, this.editorService, customComponents, 'edge');
|
|
81
|
-
const renderer = new Renderer(component.container.nativeElement, session);
|
|
82
|
-
const source = new EdgeSessionSourceModel(component.model.pageType, component.type);
|
|
83
|
-
const newSession = new SessionModel(session, renderer, sessionId, component.parentSessionId, source);
|
|
84
|
-
this.sessions.push(newSession);
|
|
85
|
-
displayData.updateNextLineIndexes(0, displayData.paragraphs.length - 1);
|
|
86
|
-
newSession.renderer.updateText();
|
|
87
|
-
return newSession;
|
|
88
|
-
}
|
|
89
|
-
removeSession(sessionId) {
|
|
90
|
-
const index = this.sessions.findIndex(x => x.sessionId === sessionId);
|
|
91
|
-
this.sessions[index].session.destroy();
|
|
92
|
-
this.sessions[index].renderer.destroy();
|
|
93
|
-
this.sessions.splice(index, 1);
|
|
94
|
-
}
|
|
95
|
-
setMainSessionAsCurrent() {
|
|
96
|
-
if (this.mainSession.sessionId === this.currentSession.sessionId) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
this.setCurrentSession(this.mainSession);
|
|
100
|
-
}
|
|
101
|
-
setCustomSessionAsCurrent(sessionId) {
|
|
102
|
-
if (sessionId === this.currentSession.sessionId) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
this.setCurrentSessionById(sessionId);
|
|
106
|
-
}
|
|
107
|
-
setTargetedSessionAsCurrent(targets) {
|
|
108
|
-
const targetedSession = this.getTargetedSession(targets);
|
|
109
|
-
if (targetedSession.sessionId === this.currentSession.sessionId) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const session = this.sessions.find(x => x.sessionId === targetedSession.sessionId);
|
|
113
|
-
this.setCurrentSession(session);
|
|
114
|
-
}
|
|
115
|
-
setCurrentSessionById(sessionId) {
|
|
116
|
-
const index = this.sessions.findIndex(x => x.sessionId === sessionId);
|
|
117
|
-
this.setCurrentSession(this.sessions[index]);
|
|
118
|
-
}
|
|
119
|
-
setCurrentSession(session) {
|
|
120
|
-
const previous = this.currentSession;
|
|
121
|
-
this.selection.clearSelection();
|
|
122
|
-
this.currentSession.renderer.hideCursor();
|
|
123
|
-
this.currentSession.renderer.updateSelection(this.selection.selectedRange);
|
|
124
|
-
this.currentSession = session;
|
|
125
|
-
this.currentSession.renderer.showCursor();
|
|
126
|
-
this.arrangeEdgesForSessionChange(previous.session, session.session);
|
|
127
|
-
}
|
|
128
|
-
getSessionModel(sessionId) {
|
|
129
|
-
return this.sessions.find(x => x.sessionId === sessionId);
|
|
130
|
-
}
|
|
131
|
-
getSession(sessionId) {
|
|
132
|
-
return this.getSessionModel(sessionId).session;
|
|
133
|
-
}
|
|
134
|
-
setSelection(selection) {
|
|
135
|
-
this.selection = selection;
|
|
136
|
-
}
|
|
137
|
-
clearAllSessions() {
|
|
138
|
-
this.sessions.forEach(session => {
|
|
139
|
-
session.session.destroy();
|
|
140
|
-
session.renderer.destroy();
|
|
141
|
-
});
|
|
142
|
-
this.sessions = [];
|
|
143
|
-
}
|
|
144
|
-
getCurrentSessionTargets() {
|
|
145
|
-
return this.getTargets(this.currentSession);
|
|
146
|
-
}
|
|
147
|
-
getTargets(session) {
|
|
148
|
-
const result = [];
|
|
149
|
-
let parentSession = this.sessions.find(x => x.sessionId === session.parentSessionId);
|
|
150
|
-
while (parentSession) {
|
|
151
|
-
const target = session.source.getTarget();
|
|
152
|
-
result.splice(0, 0, target);
|
|
153
|
-
session = parentSession;
|
|
154
|
-
parentSession = this.sessions.find(x => x.sessionId === parentSession.parentSessionId);
|
|
155
|
-
}
|
|
156
|
-
return result;
|
|
157
|
-
}
|
|
158
|
-
getTargetedSession(targets) {
|
|
159
|
-
let result = this.mainSession.session;
|
|
160
|
-
for (const target of targets) {
|
|
161
|
-
switch (target.type) {
|
|
162
|
-
case TargetType.Document:
|
|
163
|
-
break;
|
|
164
|
-
case TargetType.TableCell: {
|
|
165
|
-
const table = result.customComponents.tables.find(x => x.instance.content.insertIndex === target.tableCell.insertIndex);
|
|
166
|
-
result = table.instance.getCellSession(target.tableCell.row, target.tableCell.column);
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
case TargetType.Edge: {
|
|
170
|
-
const edge = result.customComponents.edges.getComponentByPageType(target.edgeData.pageType, target.edgeData.type);
|
|
171
|
-
result = edge.instance.edgeSession.session;
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return result;
|
|
177
|
-
}
|
|
178
|
-
isWithinEdge(sessionId) {
|
|
179
|
-
return !!this.getEdgeSessionId(sessionId);
|
|
180
|
-
}
|
|
181
|
-
arrangeEdgeChange(sessionId) {
|
|
182
|
-
const edgeSessionId = this.getEdgeSessionId(sessionId);
|
|
183
|
-
const { type, pageType } = this.mainSession.session.customComponents.edges.getTypeBySessionId(edgeSessionId);
|
|
184
|
-
this.mainSession.renderer.renderer.textLayer.updateEdge(type, pageType);
|
|
185
|
-
}
|
|
186
|
-
getEdgeSessionId(sessionId) {
|
|
187
|
-
let session = this.getSession(sessionId);
|
|
188
|
-
while (session && !session.isEdge()) {
|
|
189
|
-
const model = this.sessions.find(x => x.sessionId === session.sessionId);
|
|
190
|
-
session = model.parentSessionId ? this.getSession(model.parentSessionId) : null;
|
|
191
|
-
}
|
|
192
|
-
return session?.sessionId;
|
|
193
|
-
}
|
|
194
|
-
arrangeEdgesForSessionChange(previous, current) {
|
|
195
|
-
const isPreviousEdge = previous.isEdgeOrWithinEdge();
|
|
196
|
-
const isCurrentEdge = current.isEdgeOrWithinEdge();
|
|
197
|
-
if (isPreviousEdge !== isCurrentEdge) {
|
|
198
|
-
this.mainSession.session.customComponents.edges.toggleEditMode(isCurrentEdge);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
if (isPreviousEdge) {
|
|
202
|
-
previous.onRendered();
|
|
203
|
-
current.onRendered();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RegulatorService, deps: [{ token: i1.CustomContentService }, { token: i2.EditorService }, { token: i3.ComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
207
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RegulatorService }); }
|
|
208
|
-
}
|
|
209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RegulatorService, decorators: [{
|
|
210
|
-
type: Injectable
|
|
211
|
-
}], ctorParameters: () => [{ type: i1.CustomContentService }, { type: i2.EditorService }, { type: i3.ComponentService }] });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVndWxhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZXhlY3V0aW9uL3JlZ3VsYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFB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QU8sT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU8sNEJBQTRCLENBQUMsUUFBcUIsRUFBRSxPQUFvQjtRQUM1RSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLGNBQWMsS0FBSyxhQUFhLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5RSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLGNBQWMsRUFBRTtZQUNoQixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQzsrR0EzUlEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENlbGxTZXNzaW9uU291cmNlTW9kZWwgfSBmcm9tICcuL3RhcmdldGluZy9jZWxsLXNlc3Npb24tc291cmNlLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21Db250ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmVkL3NlcnZpY2VzL2N1c3RvbS1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgREVGQVVMVF9FREdFX01BWF9IRUlHSFRfTVVMVElQTElFUiwgREVGQVVMVF9UT09MQkFSX1NUWUxFUyB9IGZyb20gJy4uL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEaXNwbGF5RGF0YSB9IGZyb20gJy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2Rpc3BsYXktZGF0YSc7XG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuLi9jb250ZW50L2NvbnN0YW50cy9kb2N1bWVudC1pbmZvLmNvbnN0JztcbmltcG9ydCB7IERvY3hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZXMvZWRnZXMnO1xuaW1wb3J0IHsgRWRnZVNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vdGFyZ2V0aW5nL2VkZ2Utc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgRWRnZVR5cGUgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkZ2VzL2VkZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4vZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuLi9jb250ZW50L2Rpc3BsYXktZGF0YS9nZW5lcmFsLXByb3BlcnRpZXMubW9kZWwnO1xuaW1wb3J0IHsgSUN1c3RvbUNvbXBvbmVudHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3NoYXJlZC9jdXN0b20tY29tcG9uZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWFpblNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vdGFyZ2V0aW5nL21haW4tc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgTWFyZ2luTW9kZWwgfSBmcm9tICcuLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlckVkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkZ2VzL2VkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VUeXBlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGdlcy9wYWdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJy4uL2Rpc3BsYXkvcmVuZGVyZXInO1xuaW1wb3J0IHsgU2NhbGluZ0hlbHBlciB9IGZyb20gJy4uL2NvbnRlbnQvaGVscGVycy9zY2FsaW5nLmhlbHBlcic7XG5pbXBvcnQgeyBTY3JvbGxCYXIgfSBmcm9tICcuLi9nYWRnZXRzL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9wb3NpdGlvbmluZy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi90YXJnZXRpbmcvc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IFRhcmdldFR5cGUgfSBmcm9tICcuLi9vcGVyYXRpb25zL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVmlydHVhbFJlbmRlcmVyIH0gZnJvbSAnLi4vZGlzcGxheS92aXJ0dWFsLnJlbmRlcmVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZ3VsYXRvclNlcnZpY2Uge1xuICAgIG1haW5TZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBzZXNzaW9uczogU2Vzc2lvbk1vZGVsW10gPSBbXTtcblxuICAgIGN1cnJlbnRTZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbjtcblxuICAgIHNlc3Npb25JZEluY3JlbWVudCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21Db250ZW50U2VydmljZTogQ3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgYWRkTWFpblNlc3Npb24obW9kZWw6IERvY3hNb2RlbCwgcGFnZVdpZHRoOiBudW1iZXIsIHNjYWxpbmdSYXRpbzogbnVtYmVyLCBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlc3Npb25JZCA9ICsrdGhpcy5zZXNzaW9uSWRJbmNyZW1lbnQ7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBuZXcgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCh7XG4gICAgICAgICAgICBudW1iZXJpbmdzOiBtb2RlbC5udW1iZXJpbmdzLFxuICAgICAgICAgICAgZGVmYXVsdFRhYldpZHRoOiBTY2FsaW5nSGVscGVyLnNjYWxlKG1vZGVsLmRlZmF1bHRUYWJXaWR0aCwgc2NhbGluZ1JhdGlvKSxcbiAgICAgICAgICAgIG1heEVkZ2VIZWlnaHQ6IG1vZGVsLnBhZ2VIZWlnaHQgKiBERUZBVUxUX0VER0VfTUFYX0hFSUdIVF9NVUxUSVBMSUVSLFxuICAgICAgICAgICAgc2NhbGluZ1JhdGlvLFxuICAgICAgICAgICAgbnVtYmVyaW5nSW5mbzoge31cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHBhZ2VNYXJnaW4gPSBuZXcgTWFyZ2luTW9kZWwoe1xuICAgICAgICAgICAgbGVmdDogU2NhbGluZ0hlbHBlci5zY2FsZShtb2RlbC5tYXJnaW5MZWZ0LCBzY2FsaW5nUmF0aW8pLFxuICAgICAgICAgICAgcmlnaHQ6IFNjYWxpbmdIZWxwZXIuc2NhbGUobW9kZWwubWFyZ2luUmlnaHQsIHNjYWxpbmdSYXRpbyksXG4gICAgICAgICAgICB0b3A6IG1vZGVsLm1hcmdpblRvcCA+IDAgPyBtb2RlbC5tYXJnaW5Ub3AgOiAwLFxuICAgICAgICAgICAgYm90dG9tOiBtb2RlbC5tYXJnaW5Cb3R0b20gPiAwID8gbW9kZWwubWFyZ2luQm90dG9tIDogMCxcbiAgICAgICAgICAgIGhlYWRlcjogbW9kZWwubWFyZ2luSGVhZGVyID4gMCA/IG1vZGVsLm1hcmdpbkhlYWRlciA6IDAsXG4gICAgICAgICAgICBmb290ZXI6IG1vZGVsLm1hcmdpbkZvb3RlciA+IDAgPyBtb2RlbC5tYXJnaW5Gb290ZXIgOiAwXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGdlc01hcmdpbnMgPSBuZXcgTWFyZ2luTW9kZWwoeyAuLi5wYWdlTWFyZ2luLCB0b3A6IHBhZ2VNYXJnaW4uaGVhZGVyLCBib3R0b206IHBhZ2VNYXJnaW4uZm9vdGVyIH0pO1xuICAgICAgICBjb25zdCBlZGdlcyA9IG5ldyBFZGdlcyh0aGlzLmNvbXBvbmVudFNlcnZpY2UsIG1vZGVsLmhlYWRlcnMsIG1vZGVsLmZvb3RlcnMsIGVkZ2VzTWFyZ2lucywgcGFnZVdpZHRoLCBzZXNzaW9uSWQsIHByb3BlcnRpZXMpO1xuICAgICAgICBwcm9wZXJ0aWVzLm51bWJlcmluZ0luZm8gPSB7fTtcbiAgICAgICAgY29uc3QgY3VzdG9tQ29tcG9uZW50cyA9IHsgaW1hZ2VzOiBbXSwgdGFibGVzOiBbXSwgdGFiczogW10sIGN1c3RvbUVsZW1lbnRzOiBbXSwgZWRnZXM6IGVkZ2VzIH0gYXMgSUN1c3RvbUNvbXBvbmVudHM7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlEYXRhID0gbmV3IERpc3BsYXlEYXRhKFxuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgcGFnZU1hcmdpbixcbiAgICAgICAgICAgIERvY3VtZW50SW5mby5wYWdlc1NwYWNlLFxuICAgICAgICAgICAgcGFnZVdpZHRoLFxuICAgICAgICAgICAgbW9kZWwucGFnZUhlaWdodCxcbiAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhciA9IG5ldyBTY3JvbGxCYXIoY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1haW5TZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uKFxuICAgICAgICAgICAgZGlzcGxheURhdGEsXG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbixcbiAgICAgICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgJ21haW4nLFxuICAgICAgICAgICAgc2Nyb2xsQmFyXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxSZW5kZXJlciA9IG5ldyBWaXJ0dWFsUmVuZGVyZXIoY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIG1haW5TZXNzaW9uLCBzY3JvbGxCYXIpO1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc3R5bGVzID0gREVGQVVMVF9UT09MQkFSX1NUWUxFUygpO1xuICAgICAgICB0aGlzLm1haW5TZXNzaW9uID0gbmV3IFNlc3Npb25Nb2RlbChtYWluU2Vzc2lvbiwgdmlydHVhbFJlbmRlcmVyLCBzZXNzaW9uSWQsIG51bGwsIG5ldyBNYWluU2Vzc2lvblNvdXJjZU1vZGVsKCkpO1xuICAgICAgICB0aGlzLnNlc3Npb25zLnB1c2godGhpcy5tYWluU2Vzc2lvbik7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24gPSB0aGlzLm1haW5TZXNzaW9uO1xuICAgICAgICBkaXNwbGF5RGF0YS51cGRhdGVOZXh0TGluZUluZGV4ZXMoMCwgZGlzcGxheURhdGEucGFyYWdyYXBocy5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBhZGRDZWxsU2Vzc2lvbihcbiAgICAgICAgdGFibGU6IFRhYmxlTW9kZWwsXG4gICAgICAgIG1hcmdpbnM6IE1hcmdpbk1vZGVsLFxuICAgICAgICBjb21wb25lbnQ6IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50LFxuICAgICAgICBwcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsXG4gICAgKTogU2Vzc2lvbk1vZGVsIHtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbklkID0gKyt0aGlzLnNlc3Npb25JZEluY3JlbWVudDtcbiAgICAgICAgY29uc3QgY3VzdG9tQ29tcG9uZW50cyA9IHsgaW1hZ2VzOiBbXSwgdGFibGVzOiBbXSwgdGFiczogW10sIGN1c3RvbUVsZW1lbnRzOiBbXSwgZWRnZXM6IG51bGwgfSBhcyBJQ3VzdG9tQ29tcG9uZW50cztcbiAgICAgICAgY29uc3QgZGlzcGxheURhdGEgPSBuZXcgRGlzcGxheURhdGEoXG4gICAgICAgICAgICBjb21wb25lbnQuY2VsbCxcbiAgICAgICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICBtYXJnaW5zLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGNvbXBvbmVudC53aWR0aCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzZXNzaW9uVHlwZSA9IHRoaXMuaXNXaXRoaW5FZGdlKGNvbXBvbmVudC5wYXJlbnRTZXNzaW9uSWQpID8gJ2NlbGxXaXRoaW5FZGdlJyA6ICdjZWxsJztcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBFZGl0U2Vzc2lvbihcbiAgICAgICAgICAgIGRpc3BsYXlEYXRhLFxuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgIGNvbXBvbmVudC5jZWxsLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgIHNlc3Npb25UeXBlXG4gICAgICAgICk7XG4gICAgICAgIGRpc3BsYXlEYXRhLmNvbnRlbnRXaWR0aCA9IGRpc3BsYXlEYXRhLmNvbnRlbnRXaWR0aCA9PT0gMCA/IDEgOiBkaXNwbGF5RGF0YS5jb250ZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IFJlbmRlcmVyKGNvbXBvbmVudC5jb250YWluZXIubmF0aXZlRWxlbWVudCwgc2Vzc2lvbik7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBDZWxsU2Vzc2lvblNvdXJjZU1vZGVsKHRhYmxlLCBjb21wb25lbnQpO1xuICAgICAgICBjb25zdCBuZXdTZXNzaW9uID0gbmV3IFNlc3Npb25Nb2RlbChzZXNzaW9uLCByZW5kZXJlciwgc2Vzc2lvbklkLCBjb21wb25lbnQucGFyZW50U2Vzc2lvbklkLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLnNlc3Npb25zLnB1c2gobmV3U2Vzc2lvbik7XG4gICAgICAgIGRpc3BsYXlEYXRhLnVwZGF0ZU5leHRMaW5lSW5kZXhlcygwLCBkaXNwbGF5RGF0YS5wYXJhZ3JhcGhzLmxlbmd0aCAtIDEpO1xuICAgICAgICBuZXdTZXNzaW9uLnJlbmRlcmVyLnVwZGF0ZVRleHQoKTtcbiAgICAgICAgcmV0dXJuIG5ld1Nlc3Npb247XG4gICAgfVxuXG4gICAgYWRkRWRnZVNlc3Npb24oY29tcG9uZW50OiBOb2RlckVkZ2VDb21wb25lbnQpOiBTZXNzaW9uTW9kZWwge1xuICAgICAgICBjb25zdCBzZXNzaW9uSWQgPSArK3RoaXMuc2Vzc2lvbklkSW5jcmVtZW50O1xuICAgICAgICBjb25zdCBjdXN0b21Db21wb25lbnRzID0geyBpbWFnZXM6IFtdLCB0YWJsZXM6IFtdLCB0YWJzOiBbXSwgY3VzdG9tRWxlbWVudHM6IFtdLCBlZGdlczogbnVsbCB9IGFzIElDdXN0b21Db21wb25lbnRzO1xuICAgICAgICBjb25zdCBkaXNwbGF5RGF0YSA9IG5ldyBEaXNwbGF5RGF0YShcbiAgICAgICAgICAgIGNvbXBvbmVudC5tb2RlbCxcbiAgICAgICAgICAgIGNvbXBvbmVudC5nZW5lcmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgIGNvbXBvbmVudC5tYXJnaW5zLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGNvbXBvbmVudC53aWR0aCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uKFxuICAgICAgICAgICAgZGlzcGxheURhdGEsXG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgY29tcG9uZW50Lm1vZGVsLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24sXG4gICAgICAgICAgICBjb21wb25lbnQuZ2VuZXJhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgJ2VkZ2UnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IFJlbmRlcmVyKGNvbXBvbmVudC5jb250YWluZXIubmF0aXZlRWxlbWVudCwgc2Vzc2lvbik7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBFZGdlU2Vzc2lvblNvdXJjZU1vZGVsKGNvbXBvbmVudC5tb2RlbC5wYWdlVHlwZSBhcyBQYWdlVHlwZSwgY29tcG9uZW50LnR5cGUpO1xuICAgICAgICBjb25zdCBuZXdTZXNzaW9uID0gbmV3IFNlc3Npb25Nb2RlbChzZXNzaW9uLCByZW5kZXJlciwgc2Vzc2lvbklkLCBjb21wb25lbnQucGFyZW50U2Vzc2lvbklkLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLnNlc3Npb25zLnB1c2gobmV3U2Vzc2lvbik7XG4gICAgICAgIGRpc3BsYXlEYXRhLnVwZGF0ZU5leHRMaW5lSW5kZXhlcygwLCBkaXNwbGF5RGF0YS5wYXJhZ3JhcGhzLmxlbmd0aCAtIDEpO1xuICAgICAgICBuZXdTZXNzaW9uLnJlbmRlcmVyLnVwZGF0ZVRleHQoKTtcbiAgICAgICAgcmV0dXJuIG5ld1Nlc3Npb247XG4gICAgfVxuXG4gICAgcmVtb3ZlU2Vzc2lvbihzZXNzaW9uSWQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2Vzc2lvbnMuZmluZEluZGV4KHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnNbaW5kZXhdLnNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnNlc3Npb25zW2luZGV4XS5yZW5kZXJlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBzZXRNYWluU2Vzc2lvbkFzQ3VycmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFpblNlc3Npb24uc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb24odGhpcy5tYWluU2Vzc2lvbik7XG4gICAgfVxuXG4gICAgc2V0Q3VzdG9tU2Vzc2lvbkFzQ3VycmVudChzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb25CeUlkKHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgc2V0VGFyZ2V0ZWRTZXNzaW9uQXNDdXJyZW50KHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ZWRTZXNzaW9uID0gdGhpcy5nZXRUYXJnZXRlZFNlc3Npb24odGFyZ2V0cyk7XG4gICAgICAgIGlmICh0YXJnZXRlZFNlc3Npb24uc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gdGFyZ2V0ZWRTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFNlc3Npb25CeUlkKHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZXNzaW9ucy5maW5kSW5kZXgoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U2Vzc2lvbih0aGlzLnNlc3Npb25zW2luZGV4XSk7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFNlc3Npb24oc2Vzc2lvbjogU2Vzc2lvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5yZW5kZXJlci5oaWRlQ3Vyc29yKCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ucmVuZGVyZXIudXBkYXRlU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkUmFuZ2UpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uID0gc2Vzc2lvbjtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5yZW5kZXJlci5zaG93Q3Vyc29yKCk7XG4gICAgICAgIHRoaXMuYXJyYW5nZUVkZ2VzRm9yU2Vzc2lvbkNoYW5nZShwcmV2aW91cy5zZXNzaW9uLCBzZXNzaW9uLnNlc3Npb24pO1xuICAgIH1cblxuICAgIGdldFNlc3Npb25Nb2RlbChzZXNzaW9uSWQ6IG51bWJlcik6IFNlc3Npb25Nb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBnZXRTZXNzaW9uKHNlc3Npb25JZDogbnVtYmVyKTogRWRpdFNlc3Npb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZXNzaW9uTW9kZWwoc2Vzc2lvbklkKS5zZXNzaW9uO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBjbGVhckFsbFNlc3Npb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlc3Npb25zLmZvckVhY2goc2Vzc2lvbiA9PiB7XG4gICAgICAgICAgICBzZXNzaW9uLnNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgICAgICAgc2Vzc2lvbi5yZW5kZXJlci5kZXN0cm95KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlc3Npb25zID0gW107XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFNlc3Npb25UYXJnZXRzKCk6IFRhcmdldE1vZGVsW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYXJnZXRzKHRoaXMuY3VycmVudFNlc3Npb24pO1xuICAgIH1cblxuICAgIGdldFRhcmdldHMoc2Vzc2lvbjogU2Vzc2lvbk1vZGVsKTogVGFyZ2V0TW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGFyZ2V0TW9kZWxbXSA9IFtdO1xuICAgICAgICBsZXQgcGFyZW50U2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZmluZCh4ID0+IHguc2Vzc2lvbklkID09PSBzZXNzaW9uLnBhcmVudFNlc3Npb25JZCk7XG4gICAgICAgIHdoaWxlIChwYXJlbnRTZXNzaW9uKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZXNzaW9uLnNvdXJjZS5nZXRUYXJnZXQoKTtcbiAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgdGFyZ2V0KTtcbiAgICAgICAgICAgIHNlc3Npb24gPSBwYXJlbnRTZXNzaW9uO1xuICAgICAgICAgICAgcGFyZW50U2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZmluZCh4ID0+IHguc2Vzc2lvbklkID09PSBwYXJlbnRTZXNzaW9uLnBhcmVudFNlc3Npb25JZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRlZFNlc3Npb24odGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IEVkaXRTZXNzaW9uIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMubWFpblNlc3Npb24uc2Vzc2lvbjtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgVGFyZ2V0VHlwZS5Eb2N1bWVudDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUYXJnZXRUeXBlLlRhYmxlQ2VsbDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWJsZSA9IHJlc3VsdC5jdXN0b21Db21wb25lbnRzLnRhYmxlcy5maW5kKHggPT4geC5pbnN0YW5jZS5jb250ZW50Lmluc2VydEluZGV4ID09PSB0YXJnZXQudGFibGVDZWxsLmluc2VydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGFibGUuaW5zdGFuY2UuZ2V0Q2VsbFNlc3Npb24odGFyZ2V0LnRhYmxlQ2VsbC5yb3csIHRhcmdldC50YWJsZUNlbGwuY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgVGFyZ2V0VHlwZS5FZGdlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2UgPSByZXN1bHQuY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5nZXRDb21wb25lbnRCeVBhZ2VUeXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVkZ2VEYXRhLnBhZ2VUeXBlIGFzIFBhZ2VUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVkZ2VEYXRhLnR5cGUgYXMgRWRnZVR5cGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZWRnZS5pbnN0YW5jZS5lZGdlU2Vzc2lvbi5zZXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpc1dpdGhpbkVkZ2Uoc2Vzc2lvbklkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5nZXRFZGdlU2Vzc2lvbklkKHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgYXJyYW5nZUVkZ2VDaGFuZ2Uoc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWRnZVNlc3Npb25JZCA9IHRoaXMuZ2V0RWRnZVNlc3Npb25JZChzZXNzaW9uSWQpO1xuICAgICAgICBjb25zdCB7IHR5cGUsIHBhZ2VUeXBlIH0gPSB0aGlzLm1haW5TZXNzaW9uLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5nZXRUeXBlQnlTZXNzaW9uSWQoZWRnZVNlc3Npb25JZCk7XG4gICAgICAgICh0aGlzLm1haW5TZXNzaW9uLnJlbmRlcmVyIGFzIFZpcnR1YWxSZW5kZXJlcikucmVuZGVyZXIudGV4dExheWVyLnVwZGF0ZUVkZ2UodHlwZSwgcGFnZVR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWRnZVNlc3Npb25JZChzZXNzaW9uSWQ6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xuICAgICAgICBsZXQgc2Vzc2lvbiA9IHRoaXMuZ2V0U2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgICAgICB3aGlsZSAoc2Vzc2lvbiAmJiAhc2Vzc2lvbi5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICAgICAgc2Vzc2lvbiA9IG1vZGVsLnBhcmVudFNlc3Npb25JZCA/IHRoaXMuZ2V0U2Vzc2lvbihtb2RlbC5wYXJlbnRTZXNzaW9uSWQpIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2Vzc2lvbj8uc2Vzc2lvbklkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXJyYW5nZUVkZ2VzRm9yU2Vzc2lvbkNoYW5nZShwcmV2aW91czogRWRpdFNlc3Npb24sIGN1cnJlbnQ6IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzUHJldmlvdXNFZGdlID0gcHJldmlvdXMuaXNFZGdlT3JXaXRoaW5FZGdlKCk7XG4gICAgICAgIGNvbnN0IGlzQ3VycmVudEVkZ2UgPSBjdXJyZW50LmlzRWRnZU9yV2l0aGluRWRnZSgpO1xuICAgICAgICBpZiAoaXNQcmV2aW91c0VkZ2UgIT09IGlzQ3VycmVudEVkZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubWFpblNlc3Npb24uc2Vzc2lvbi5jdXN0b21Db21wb25lbnRzLmVkZ2VzLnRvZ2dsZUVkaXRNb2RlKGlzQ3VycmVudEVkZ2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZpb3VzRWRnZSkge1xuICAgICAgICAgICAgcHJldmlvdXMub25SZW5kZXJlZCgpO1xuICAgICAgICAgICAgY3VycmVudC5vblJlbmRlcmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { TableCellModel } from '../../../models/generated/table-cell.model';
|
|
2
|
-
import { TargetModel } from '../../../models/generated/target.model';
|
|
3
|
-
import { TargetType } from '../../operations/enums/target-type.enum';
|
|
4
|
-
export class CellSessionSourceModel {
|
|
5
|
-
constructor(table, cellComponent) {
|
|
6
|
-
this.table = table;
|
|
7
|
-
this.cellComponent = cellComponent;
|
|
8
|
-
}
|
|
9
|
-
getTarget() {
|
|
10
|
-
const tableCell = new TableCellModel({
|
|
11
|
-
insertIndex: this.table.insertIndex,
|
|
12
|
-
row: this.cellComponent.rowIndex,
|
|
13
|
-
column: this.cellComponent.cellIndex
|
|
14
|
-
});
|
|
15
|
-
return new TargetModel({ type: TargetType.TableCell, tableCell });
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zZXNzaW9uLXNvdXJjZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9leGVjdXRpb24vdGFyZ2V0aW5nL2NlbGwtc2Vzc2lvbi1zb3VyY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFckUsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixZQUFvQixLQUFpQixFQUFVLGFBQXNDO1FBQWpFLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7SUFBRyxDQUFDO0lBRWxGLFNBQVM7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1lBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVE7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztTQUN2QyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXNzaW9uU291cmNlTW9kZWwgfSBmcm9tICcuL3Nlc3Npb24tc291cmNlLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ2VsbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS1jZWxsLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uLy4uL29wZXJhdGlvbnMvZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBDZWxsU2Vzc2lvblNvdXJjZU1vZGVsIGltcGxlbWVudHMgU2Vzc2lvblNvdXJjZU1vZGVsIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBUYWJsZU1vZGVsLCBwcml2YXRlIGNlbGxDb21wb25lbnQ6IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50KSB7fVxuXG4gICAgcHVibGljIGdldFRhcmdldCgpOiBUYXJnZXRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHRhYmxlQ2VsbCA9IG5ldyBUYWJsZUNlbGxNb2RlbCh7XG4gICAgICAgICAgICBpbnNlcnRJbmRleDogdGhpcy50YWJsZS5pbnNlcnRJbmRleCxcbiAgICAgICAgICAgIHJvdzogdGhpcy5jZWxsQ29tcG9uZW50LnJvd0luZGV4LFxuICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNlbGxDb21wb25lbnQuY2VsbEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFRhcmdldE1vZGVsKHsgdHlwZTogVGFyZ2V0VHlwZS5UYWJsZUNlbGwsIHRhYmxlQ2VsbCB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { EdgeTargetModel } from '../../../models/generated/edge-target.model';
|
|
2
|
-
import { TargetModel } from '../../../models/generated/target.model';
|
|
3
|
-
import { TargetType } from '../../operations/enums/target-type.enum';
|
|
4
|
-
export class EdgeSessionSourceModel {
|
|
5
|
-
constructor(pageType, type) {
|
|
6
|
-
this.pageType = pageType;
|
|
7
|
-
this.type = type;
|
|
8
|
-
}
|
|
9
|
-
getTarget() {
|
|
10
|
-
const edgeData = new EdgeTargetModel({ pageType: this.pageType, type: this.type });
|
|
11
|
-
return new TargetModel({ type: TargetType.Edge, edgeData });
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1zZXNzaW9uLXNvdXJjZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9leGVjdXRpb24vdGFyZ2V0aW5nL2VkZ2Utc2Vzc2lvbi1zb3VyY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFckUsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixZQUFvQixRQUFrQixFQUFVLElBQWM7UUFBMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVU7SUFBRyxDQUFDO0lBQzNELFNBQVM7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRixPQUFPLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGdlVGFyZ2V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VkZ2UtdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IEVkZ2VUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9lZGdlcy9lZGdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYWdlVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZWRnZXMvcGFnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2Vzc2lvblNvdXJjZU1vZGVsIH0gZnJvbSAnLi9zZXNzaW9uLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IFRhcmdldFR5cGUgfSBmcm9tICcuLi8uLi9vcGVyYXRpb25zL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgRWRnZVNlc3Npb25Tb3VyY2VNb2RlbCBpbXBsZW1lbnRzIFNlc3Npb25Tb3VyY2VNb2RlbCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlVHlwZTogUGFnZVR5cGUsIHByaXZhdGUgdHlwZTogRWRnZVR5cGUpIHt9XG4gICAgcHVibGljIGdldFRhcmdldCgpOiBUYXJnZXRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGVkZ2VEYXRhID0gbmV3IEVkZ2VUYXJnZXRNb2RlbCh7IHBhZ2VUeXBlOiB0aGlzLnBhZ2VUeXBlLCB0eXBlOiB0aGlzLnR5cGUgfSk7XG4gICAgICAgIHJldHVybiBuZXcgVGFyZ2V0TW9kZWwoeyB0eXBlOiBUYXJnZXRUeXBlLkVkZ2UsIGVkZ2VEYXRhIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { TargetModel } from '../../../models/generated/target.model';
|
|
2
|
-
import { TargetType } from '../../operations/enums/target-type.enum';
|
|
3
|
-
export class MainSessionSourceModel {
|
|
4
|
-
getTarget() {
|
|
5
|
-
return new TargetModel({ type: TargetType.Document });
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1zZXNzaW9uLXNvdXJjZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9leGVjdXRpb24vdGFyZ2V0aW5nL21haW4tc2Vzc2lvbi1zb3VyY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLFNBQVM7UUFDWixPQUFPLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhcmdldC5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRUeXBlIH0gZnJvbSAnLi4vLi4vb3BlcmF0aW9ucy9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcblxuZXhwb3J0IGNsYXNzIE1haW5TZXNzaW9uU291cmNlTW9kZWwgaW1wbGVtZW50cyBTZXNzaW9uU291cmNlTW9kZWwge1xuICAgIHB1YmxpYyBnZXRUYXJnZXQoKTogVGFyZ2V0TW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IFRhcmdldE1vZGVsKHsgdHlwZTogVGFyZ2V0VHlwZS5Eb2N1bWVudCB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export class SessionSourceModel {
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZXhlY3V0aW9uL3RhcmdldGluZy9zZXNzaW9uLXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLGtCQUFrQjtDQUV2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2Vzc2lvblNvdXJjZU1vZGVsIHtcbiAgICBhYnN0cmFjdCBnZXRUYXJnZXQoKTogVGFyZ2V0TW9kZWw7XG59XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export class SessionModel {
|
|
2
|
-
constructor(session, renderer, sessionId, parentSessionId, source) {
|
|
3
|
-
this.session = session;
|
|
4
|
-
this.renderer = renderer;
|
|
5
|
-
this.sessionId = sessionId;
|
|
6
|
-
this.parentSessionId = parentSessionId;
|
|
7
|
-
this.source = source;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9leGVjdXRpb24vdGFyZ2V0aW5nL3Nlc3Npb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLFlBQVk7SUFDckIsWUFDVyxPQUFvQixFQUNwQixRQUFvQyxFQUNwQyxTQUFpQixFQUNqQixlQUE4QixFQUM5QixNQUEwQjtRQUoxQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQTRCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsb0JBQWUsR0FBZixlQUFlLENBQWU7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7SUFDbEMsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9lZGl0LnNlc3Npb24nO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3JlbmRlcmVyJztcbmltcG9ydCB7IFNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgVmlydHVhbFJlbmRlcmVyIH0gZnJvbSAnLi4vLi4vZGlzcGxheS92aXJ0dWFsLnJlbmRlcmVyJztcblxuZXhwb3J0IGNsYXNzIFNlc3Npb25Nb2RlbCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzZXNzaW9uOiBFZGl0U2Vzc2lvbixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlciB8IFZpcnR1YWxSZW5kZXJlcixcbiAgICAgICAgcHVibGljIHNlc3Npb25JZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcGFyZW50U2Vzc2lvbklkOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBwdWJsaWMgc291cmNlOiBTZXNzaW9uU291cmNlTW9kZWxcbiAgICApIHt9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const EDITOR_VERSION = '2';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXZlcnNpb24uY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZ2FkZ2V0cy9mb250LW1ldHJpY3MvZWRpdG9yLXZlcnNpb24uY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFRElUT1JfVkVSU0lPTiA9ICcyJztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1tZXRyaWMtc2l6ZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZ2FkZ2V0cy9mb250LW1ldHJpY3MvZm9udC1tZXRyaWMtc2l6ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUZvbnRNZXRyaWNTaXplIHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGJhc2VsaW5lOiBudW1iZXI7XG4gICAgY29udGVudDogbnVtYmVyO1xuICAgIGZvbnQ6IG51bWJlcjtcbiAgICBsaW5lOiBudW1iZXI7XG4gICAgbXVsdGlwbGllcjogbnVtYmVyO1xuICAgIGFzY2VudDogbnVtYmVyO1xuICAgIGRlc2NlbnQ6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
export class FontMetrics {
|
|
2
|
-
static { this.storageKey = 'metrics'; }
|
|
3
|
-
static { this.versionKey = 'editorVersion'; }
|
|
4
|
-
/**
|
|
5
|
-
* Key value pairs for calculated sizes of char symbols in HTML element
|
|
6
|
-
*/
|
|
7
|
-
static { this.metrics = JSON.parse(localStorage.getItem(this.storageKey)) || {}; }
|
|
8
|
-
/**
|
|
9
|
-
* Key value pairs for identifiers and font strings
|
|
10
|
-
*/
|
|
11
|
-
static { this.fontStringMap = {}; }
|
|
12
|
-
static checkVersion(version) {
|
|
13
|
-
let identifier = localStorage.getItem(this.versionKey);
|
|
14
|
-
if (identifier === version) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
localStorage.removeItem(this.storageKey);
|
|
18
|
-
localStorage.setItem(this.versionKey, version);
|
|
19
|
-
}
|
|
20
|
-
static measureCharSize(ch, contentStyle) {
|
|
21
|
-
let identifier = this.fontStringMap[contentStyle];
|
|
22
|
-
if (!identifier) {
|
|
23
|
-
identifier = contentStyle.split(' ').join('_');
|
|
24
|
-
this.fontStringMap[contentStyle] = identifier;
|
|
25
|
-
}
|
|
26
|
-
this.metrics[identifier] ??= {};
|
|
27
|
-
if (!this.metrics[identifier][ch] || isNaN(this.metrics[identifier][ch].font)) {
|
|
28
|
-
this.metrics[identifier][ch] = this.calculateCanvas(ch, contentStyle);
|
|
29
|
-
localStorage.setItem(this.storageKey, JSON.stringify(this.metrics));
|
|
30
|
-
}
|
|
31
|
-
return this.metrics[identifier][ch];
|
|
32
|
-
}
|
|
33
|
-
static calculateCanvas(ch, contentStyle) {
|
|
34
|
-
this.canvasNode ||= document.createElement('canvas');
|
|
35
|
-
const fontBaseLine = this.fontBaseline(contentStyle, ch);
|
|
36
|
-
const context = this.canvasNode.getContext('2d');
|
|
37
|
-
context.font = contentStyle;
|
|
38
|
-
const textMetrics = context.measureText(ch);
|
|
39
|
-
return {
|
|
40
|
-
width: textMetrics.width,
|
|
41
|
-
height: textMetrics.fontBoundingBoxAscent + textMetrics.fontBoundingBoxDescent,
|
|
42
|
-
baseline: fontBaseLine.baseline,
|
|
43
|
-
content: fontBaseLine.content,
|
|
44
|
-
font: fontBaseLine.font,
|
|
45
|
-
line: fontBaseLine.line,
|
|
46
|
-
multiplier: fontBaseLine.multiplier,
|
|
47
|
-
ascent: textMetrics.fontBoundingBoxAscent,
|
|
48
|
-
descent: textMetrics.fontBoundingBoxDescent
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
static fontBaseline(contentStyle, text) {
|
|
52
|
-
const container = document.body;
|
|
53
|
-
this.measureDiv ||= document.createElement('div');
|
|
54
|
-
this.strut ||= document.createElement('span');
|
|
55
|
-
if (text === ' ') {
|
|
56
|
-
text = 'X';
|
|
57
|
-
}
|
|
58
|
-
this.measureDiv.style.font = contentStyle;
|
|
59
|
-
this.measureDiv.style.lineHeight = '1';
|
|
60
|
-
this.measureDiv.style.position = 'absolute';
|
|
61
|
-
this.measureDiv.style.visibility = 'hidden';
|
|
62
|
-
this.measureDiv.style.margin = '0';
|
|
63
|
-
this.measureDiv.style.padding = '0';
|
|
64
|
-
this.measureDiv.innerHTML = text;
|
|
65
|
-
this.strut.style.fontSize = '0';
|
|
66
|
-
this.strut.style.verticalAlign = 'baseline';
|
|
67
|
-
this.strut.style.padding = '0 10px';
|
|
68
|
-
this.measureDiv.classList.add('font-baseline');
|
|
69
|
-
this.measureDiv.appendChild(this.strut);
|
|
70
|
-
container.appendChild(this.measureDiv);
|
|
71
|
-
const computedStyle = window.getComputedStyle(this.measureDiv);
|
|
72
|
-
const fontSize = parseFloat(computedStyle.fontSize);
|
|
73
|
-
const baselineHeight = fontSize - this.strut.offsetTop;
|
|
74
|
-
const strutHeight = this.measureDiv.offsetHeight;
|
|
75
|
-
const lineHeight = parseFloat(computedStyle.lineHeight) || this.measureDiv.offsetHeight;
|
|
76
|
-
this.measureDiv.parentNode.removeChild(this.measureDiv);
|
|
77
|
-
this.measureDiv.innerHTML = '';
|
|
78
|
-
this.strut.innerHTML = '';
|
|
79
|
-
return {
|
|
80
|
-
baseline: baselineHeight,
|
|
81
|
-
content: strutHeight,
|
|
82
|
-
font: fontSize,
|
|
83
|
-
line: lineHeight,
|
|
84
|
-
multiplier: fontSize / baselineHeight
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1tZXRyaWNzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9nYWRnZXRzL2ZvbnQtbWV0cmljcy9mb250LW1ldHJpY3MuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxXQUFXO2FBQ2IsZUFBVSxHQUFHLFNBQVMsQ0FBQzthQUV2QixlQUFVLEdBQUcsZUFBZSxDQUFDO0lBSXBDOztPQUVHO2FBQ0ksWUFBTyxHQU1WLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFNUQ7O09BRUc7YUFDSSxrQkFBYSxHQUE4QixFQUFFLENBQUM7SUFNckQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFlO1FBQy9CLElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFFRCxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBVSxFQUFFLFlBQW9CO1FBQ25ELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsYUFBYSxD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QUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsVUFBVTtZQUNoQixVQUFVLEVBQUUsUUFBUSxHQUFHLGNBQWM7U0FDeEMsQ0FBQztJQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRm9udE1ldHJpY1NpemUgfSBmcm9tICcuL2ZvbnQtbWV0cmljLXNpemUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIEZvbnRNZXRyaWNzIHtcbiAgICBzdGF0aWMgc3RvcmFnZUtleSA9ICdtZXRyaWNzJztcblxuICAgIHN0YXRpYyB2ZXJzaW9uS2V5ID0gJ2VkaXRvclZlcnNpb24nO1xuXG4gICAgc3RhdGljIGNhbnZhc05vZGU6IEhUTUxDYW52YXNFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogS2V5IHZhbHVlIHBhaXJzIGZvciBjYWxjdWxhdGVkIHNpemVzIG9mIGNoYXIgc3ltYm9scyBpbiBIVE1MIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgbWV0cmljczoge1xuICAgICAgICAvLyBmb250IHN0cmluZyByZXByZXNlbnRhdGlvbiAnaXRhbGljIDcwMCAxNnB4IEFyaWFsJyBpbiBzbmFrZV9jYXNlXG4gICAgICAgIFtpZGVudGlmaWVyOiBzdHJpbmddOiB7XG4gICAgICAgICAgICAvLyBjaGFyIHN5bWJvbFxuICAgICAgICAgICAgW2NoYXI6IHN0cmluZ106IElGb250TWV0cmljU2l6ZTsgLy8gc3ltYm9sIGNoYXJhY3RlcmlzdGljcyAod2lkdGgsIHNpemUsIGV0Yy4pXG4gICAgICAgIH07XG4gICAgfSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KSkgfHwge307XG5cbiAgICAvKipcbiAgICAgKiBLZXkgdmFsdWUgcGFpcnMgZm9yIGlkZW50aWZpZXJzIGFuZCBmb250IHN0cmluZ3NcbiAgICAgKi9cbiAgICBzdGF0aWMgZm9udFN0cmluZ01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgc3RhdGljIG1lYXN1cmVEaXY6IEhUTUxFbGVtZW50O1xuXG4gICAgc3RhdGljIHN0cnV0OiBIVE1MRWxlbWVudDtcblxuICAgIHN0YXRpYyBjaGVja1ZlcnNpb24odmVyc2lvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBpZGVudGlmaWVyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy52ZXJzaW9uS2V5KTtcbiAgICAgICAgaWYgKGlkZW50aWZpZXIgPT09IHZlcnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuc3RvcmFnZUtleSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMudmVyc2lvbktleSwgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgc3RhdGljIG1lYXN1cmVDaGFyU2l6ZShjaDogc3RyaW5nLCBjb250ZW50U3R5bGU6IHN0cmluZyk6IElGb250TWV0cmljU2l6ZSB7XG4gICAgICAgIGxldCBpZGVudGlmaWVyID0gdGhpcy5mb250U3RyaW5nTWFwW2NvbnRlbnRTdHlsZV07XG4gICAgICAgIGlmICghaWRlbnRpZmllcikge1xuICAgICAgICAgICAgaWRlbnRpZmllciA9IGNvbnRlbnRTdHlsZS5zcGxpdCgnICcpLmpvaW4oJ18nKTtcbiAgICAgICAgICAgIHRoaXMuZm9udFN0cmluZ01hcFtjb250ZW50U3R5bGVdID0gaWRlbnRpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWV0cmljc1tpZGVudGlmaWVyXSA/Pz0ge307XG4gICAgICAgIGlmICghdGhpcy5tZXRyaWNzW2lkZW50aWZpZXJdW2NoXSB8fCBpc05hTih0aGlzLm1ldHJpY3NbaWRlbnRpZmllcl1bY2hdLmZvbnQpKSB7XG4gICAgICAgICAgICB0aGlzLm1ldHJpY3NbaWRlbnRpZmllcl1bY2hdID0gdGhpcy5jYWxjdWxhdGVDYW52YXMoY2gsIGNvbnRlbnRTdHlsZSk7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMubWV0cmljcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWV0cmljc1tpZGVudGlmaWVyXVtjaF07XG4gICAgfVxuXG4gICAgc3RhdGljIGNhbGN1bGF0ZUNhbnZhcyhjaDogc3RyaW5nLCBjb250ZW50U3R5bGU6IHN0cmluZyk6IElGb250TWV0cmljU2l6ZSB7XG4gICAgICAgIHRoaXMuY2FudmFzTm9kZSB8fD0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGZvbnRCYXNlTGluZSA9IHRoaXMuZm9udEJhc2VsaW5lKGNvbnRlbnRTdHlsZSwgY2gpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXNOb2RlLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGNvbnRleHQuZm9udCA9IGNvbnRlbnRTdHlsZTtcbiAgICAgICAgY29uc3QgdGV4dE1ldHJpY3MgPSBjb250ZXh0Lm1lYXN1cmVUZXh0KGNoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHRleHRNZXRyaWNzLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0TWV0cmljcy5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0TWV0cmljcy5mb250Qm91bmRpbmdCb3hEZXNjZW50LFxuICAgICAgICAgICAgYmFzZWxpbmU6IGZvbnRCYXNlTGluZS5iYXNlbGluZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZvbnRCYXNlTGluZS5jb250ZW50LFxuICAgICAgICAgICAgZm9udDogZm9udEJhc2VMaW5lLmZvbnQsXG4gICAgICAgICAgICBsaW5lOiBmb250QmFzZUxpbmUubGluZSxcbiAgICAgICAgICAgIG11bHRpcGxpZXI6IGZvbnRCYXNlTGluZS5tdWx0aXBsaWVyLFxuICAgICAgICAgICAgYXNjZW50OiB0ZXh0TWV0cmljcy5mb250Qm91bmRpbmdCb3hBc2NlbnQsXG4gICAgICAgICAgICBkZXNjZW50OiB0ZXh0TWV0cmljcy5mb250Qm91bmRpbmdCb3hEZXNjZW50XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc3RhdGljIGZvbnRCYXNlbGluZShcbiAgICAgICAgY29udGVudFN0eWxlOiBzdHJpbmcsXG4gICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICk6IHtcbiAgICAgICAgYmFzZWxpbmU6IG51bWJlcjtcbiAgICAgICAgY29udGVudDogbnVtYmVyO1xuICAgICAgICBmb250OiBudW1iZXI7XG4gICAgICAgIGxpbmU6IG51bWJlcjtcbiAgICAgICAgbXVsdGlwbGllcjogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICB0aGlzLm1lYXN1cmVEaXYgfHw9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnN0cnV0IHx8PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgaWYgKHRleHQgPT09ICcgJykge1xuICAgICAgICAgICAgdGV4dCA9ICdYJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVhc3VyZURpdi5zdHlsZS5mb250ID0gY29udGVudFN0eWxlO1xuICAgICAgICB0aGlzLm1lYXN1cmVEaXYuc3R5bGUubGluZUhlaWdodCA9ICcxJztcbiAgICAgICAgdGhpcy5tZWFzdXJlRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgdGhpcy5tZWFzdXJlRGl2LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgdGhpcy5tZWFzdXJlRGl2LnN0eWxlLm1hcmdpbiA9ICcwJztcbiAgICAgICAgdGhpcy5tZWFzdXJlRGl2LnN0eWxlLnBhZGRpbmcgPSAnMCc7XG4gICAgICAgIHRoaXMubWVhc3VyZURpdi5pbm5lckhUTUwgPSB0ZXh0O1xuXG4gICAgICAgIHRoaXMuc3RydXQuc3R5bGUuZm9udFNpemUgPSAnMCc7XG4gICAgICAgIHRoaXMuc3RydXQuc3R5bGUudmVydGljYWxBbGlnbiA9ICdiYXNlbGluZSc7XG4gICAgICAgIHRoaXMuc3RydXQuc3R5bGUucGFkZGluZyA9ICcwIDEwcHgnO1xuXG4gICAgICAgIHRoaXMubWVhc3VyZURpdi5jbGFzc0xpc3QuYWRkKCdmb250LWJhc2VsaW5lJyk7XG4gICAgICAgIHRoaXMubWVhc3VyZURpdi5hcHBlbmRDaGlsZCh0aGlzLnN0cnV0KTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMubWVhc3VyZURpdik7XG5cbiAgICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMubWVhc3VyZURpdik7XG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmZvbnRTaXplKTtcbiAgICAgICAgY29uc3QgYmFzZWxpbmVIZWlnaHQgPSBmb250U2l6ZSAtIHRoaXMuc3RydXQub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBzdHJ1dEhlaWdodCA9IHRoaXMubWVhc3VyZURpdi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUubGluZUhlaWdodCkgfHwgdGhpcy5tZWFzdXJlRGl2Lm9mZnNldEhlaWdodDtcblxuICAgICAgICB0aGlzLm1lYXN1cmVEaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm1lYXN1cmVEaXYpO1xuICAgICAgICB0aGlzLm1lYXN1cmVEaXYuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIHRoaXMuc3RydXQuaW5uZXJIVE1MID0gJyc7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhc2VsaW5lOiBiYXNlbGluZUhlaWdodCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0cnV0SGVpZ2h0LFxuICAgICAgICAgICAgZm9udDogZm9udFNpemUsXG4gICAgICAgICAgICBsaW5lOiBsaW5lSGVpZ2h0LFxuICAgICAgICAgICAgbXVsdGlwbGllcjogZm9udFNpemUgLyBiYXNlbGluZUhlaWdodFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|