ngx-tethys 18.2.7 → 19.0.0-next.0
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/CHANGELOG.md +10 -0
- package/badge/badge.component.d.ts +21 -3
- package/cascader/cascader-search-option.component.d.ts +6 -3
- package/core/store/store.d.ts +1 -1
- package/date-picker/abstract-picker.component.d.ts +1 -1
- package/date-picker/abstract-picker.directive.d.ts +1 -1
- package/date-picker/lib/calendar/calendar-header.component.d.ts +1 -1
- package/date-picker/lib/calendar/calendar-table.component.d.ts +1 -1
- package/date-range/date-range.component.d.ts +12 -2
- package/divider/divider.component.d.ts +2 -8
- package/dropdown/dropdown-menu.component.d.ts +1 -1
- package/empty/empty.component.d.ts +1 -4
- package/fesm2022/ngx-tethys-action.mjs +12 -12
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +8 -8
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +12 -12
- package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +11 -13
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +9 -9
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +20 -20
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +26 -26
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +10 -10
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +9 -9
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +13 -15
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +16 -16
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +20 -20
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +15 -15
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +15 -15
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +23 -24
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +9 -9
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +12 -12
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +38 -38
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +15 -15
- package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +8 -8
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +21 -21
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +141 -141
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +14 -14
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +27 -28
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +8 -9
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +8 -8
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +20 -20
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +47 -48
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +12 -12
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +8 -8
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +44 -44
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +14 -14
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +35 -38
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +18 -18
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +3 -3
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +11 -11
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +19 -19
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +11 -11
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +23 -23
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +63 -64
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +19 -19
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +9 -9
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +12 -12
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +29 -29
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +25 -26
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +24 -25
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +20 -20
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +15 -15
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +23 -23
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +17 -17
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +12 -12
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +12 -12
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +15 -15
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +12 -13
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +17 -19
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +9 -9
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +13 -13
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +16 -16
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +70 -70
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +23 -28
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +34 -35
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +9 -9
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +12 -12
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +9 -9
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +22 -22
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +8 -8
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +9 -9
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +23 -23
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +15 -16
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +11 -11
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +24 -24
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +15 -16
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +16 -16
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +13 -13
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +13 -13
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +19 -19
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +15 -15
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +17 -17
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +2 -18
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +9 -9
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +8 -8
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/input/input.component.d.ts +1 -1
- package/layout/header.component.d.ts +21 -3
- package/menu/group/menu-group.component.d.ts +6 -30
- package/message/abstract/abstract-message-container.component.d.ts +1 -1
- package/message/abstract/abstract-message.component.d.ts +1 -1
- package/nav/nav.component.d.ts +2 -2
- package/package.json +1 -169
- package/pagination/pagination.component.d.ts +45 -5
- package/property/property-item.component.d.ts +4 -2
- package/schematics/dependencies.js +3 -3
- package/schematics/ng-add/index.js +7 -3
- package/schematics/ng-update/core/complete.js +1 -2
- package/schematics/ng-update/migration-collection.json +4 -4
- package/schematics/ng-update/{update-18 → update-19}/index.js +4 -5
- package/schematics/ng-update/{update-18 → update-19}/index.spec.js +4 -4
- package/schematics/testing/get-json-content.js +1 -2
- package/schematics/testing/test-app.js +1 -2
- package/schematics/testing/test-project.js +1 -2
- package/schematics/testing/test-workspace.d.ts +0 -2
- package/schematics/testing/test-workspace.js +2 -2
- package/schematics/utils/create-tree-compiler-host.js +1 -2
- package/schematics/utils/create-tree-ts-parse-config-host.js +2 -2
- package/schematics/utils/get-angular-json.js +1 -2
- package/schematics/utils/get-project.js +1 -2
- package/schematics/utils/get-workspace-tsconfig.js +1 -2
- package/schematics/utils/package-config.js +2 -3
- package/schematics/utils/update-file.service.js +2 -2
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/base-form-check.component.d.ts +1 -1
- package/shared/option/list-option/list-option.component.d.ts +1 -4
- package/shared/select/styles/select.mixin.scss +2 -1
- package/skeleton/skeleton-rectangle.component.d.ts +1 -4
- package/skeleton/stylized/bullet-list.component.d.ts +1 -9
- package/styles/bootstrap/utilities/_background.scss +2 -1
- package/styles/bootstrap/utilities/_text.scss +1 -1
- package/table/table.component.d.ts +1 -1
- package/upload/file-select-base.d.ts +1 -1
- package/esm2022/action/action.component.mjs +0 -174
- package/esm2022/action/action.module.mjs +0 -19
- package/esm2022/action/actions.component.mjs +0 -57
- package/esm2022/action/index.mjs +0 -4
- package/esm2022/action/ngx-tethys-action.mjs +0 -5
- package/esm2022/affix/affix.component.mjs +0 -243
- package/esm2022/affix/affix.module.mjs +0 -18
- package/esm2022/affix/index.mjs +0 -3
- package/esm2022/affix/ngx-tethys-affix.mjs +0 -5
- package/esm2022/affix/respond-events.mjs +0 -11
- package/esm2022/alert/alert.component.mjs +0 -98
- package/esm2022/alert/alert.directive.mjs +0 -25
- package/esm2022/alert/alert.module.mjs +0 -19
- package/esm2022/alert/index.mjs +0 -4
- package/esm2022/alert/ngx-tethys-alert.mjs +0 -5
- package/esm2022/anchor/anchor-link.component.mjs +0 -106
- package/esm2022/anchor/anchor.component.mjs +0 -266
- package/esm2022/anchor/anchor.module.mjs +0 -20
- package/esm2022/anchor/index.mjs +0 -4
- package/esm2022/anchor/ngx-tethys-anchor.mjs +0 -5
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +0 -130
- package/esm2022/arrow-switcher/index.mjs +0 -3
- package/esm2022/arrow-switcher/module.mjs +0 -21
- package/esm2022/arrow-switcher/ngx-tethys-arrow-switcher.mjs +0 -5
- package/esm2022/autocomplete/autocomplete.component.mjs +0 -182
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +0 -275
- package/esm2022/autocomplete/index.mjs +0 -8
- package/esm2022/autocomplete/module.mjs +0 -67
- package/esm2022/autocomplete/ngx-tethys-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/overlay/autocomplete-animations.mjs +0 -10
- package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +0 -64
- package/esm2022/autocomplete/overlay/autocomplete-ref.mjs +0 -18
- package/esm2022/autocomplete/overlay/autocomplete.config.mjs +0 -18
- package/esm2022/autocomplete/overlay/autocomplete.options.mjs +0 -6
- package/esm2022/autocomplete/overlay/autocomplete.service.mjs +0 -127
- package/esm2022/avatar/avatar-list/avatar-list.component.mjs +0 -76
- package/esm2022/avatar/avatar.component.mjs +0 -179
- package/esm2022/avatar/avatar.module.mjs +0 -33
- package/esm2022/avatar/avatar.pipe.mjs +0 -91
- package/esm2022/avatar/avatar.service.mjs +0 -27
- package/esm2022/avatar/index.mjs +0 -6
- package/esm2022/avatar/ngx-tethys-avatar.mjs +0 -5
- package/esm2022/back-top/back-top.component.mjs +0 -126
- package/esm2022/back-top/back-top.module.mjs +0 -18
- package/esm2022/back-top/index.mjs +0 -3
- package/esm2022/back-top/ngx-tethys-back-top.mjs +0 -5
- package/esm2022/badge/badge.component.mjs +0 -238
- package/esm2022/badge/badge.module.mjs +0 -18
- package/esm2022/badge/index.mjs +0 -3
- package/esm2022/badge/ngx-tethys-badge.mjs +0 -5
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +0 -49
- package/esm2022/breadcrumb/breadcrumb.component.mjs +0 -115
- package/esm2022/breadcrumb/index.mjs +0 -4
- package/esm2022/breadcrumb/module.mjs +0 -21
- package/esm2022/breadcrumb/ngx-tethys-breadcrumb.mjs +0 -5
- package/esm2022/button/button-group.component.mjs +0 -90
- package/esm2022/button/button-icon.component.mjs +0 -166
- package/esm2022/button/button.component.mjs +0 -216
- package/esm2022/button/button.module.mjs +0 -20
- package/esm2022/button/index.mjs +0 -5
- package/esm2022/button/ngx-tethys-button.mjs +0 -5
- package/esm2022/calendar/calendar-cells.mjs +0 -35
- package/esm2022/calendar/calendar-header.component.mjs +0 -117
- package/esm2022/calendar/calendar.component.mjs +0 -122
- package/esm2022/calendar/index.mjs +0 -5
- package/esm2022/calendar/module.mjs +0 -63
- package/esm2022/calendar/ngx-tethys-calendar.mjs +0 -5
- package/esm2022/card/card.component.mjs +0 -48
- package/esm2022/card/card.module.mjs +0 -19
- package/esm2022/card/content.component.mjs +0 -58
- package/esm2022/card/header.component.mjs +0 -42
- package/esm2022/card/index.mjs +0 -5
- package/esm2022/card/ngx-tethys-card.mjs +0 -5
- package/esm2022/carousel/carousel-item.directive.mjs +0 -37
- package/esm2022/carousel/carousel.component.mjs +0 -290
- package/esm2022/carousel/carousel.service.mjs +0 -74
- package/esm2022/carousel/engine/carousel-base.mjs +0 -43
- package/esm2022/carousel/engine/carousel-fade.mjs +0 -46
- package/esm2022/carousel/engine/carousel-noop.mjs +0 -28
- package/esm2022/carousel/engine/carousel-slide.mjs +0 -62
- package/esm2022/carousel/engine/index.mjs +0 -5
- package/esm2022/carousel/index.mjs +0 -5
- package/esm2022/carousel/module.mjs +0 -21
- package/esm2022/carousel/ngx-tethys-carousel.mjs +0 -5
- package/esm2022/carousel/typings.mjs +0 -2
- package/esm2022/cascader/cascader-li.component.mjs +0 -81
- package/esm2022/cascader/cascader-search-option.component.mjs +0 -73
- package/esm2022/cascader/cascader.component.mjs +0 -768
- package/esm2022/cascader/cascader.service.mjs +0 -558
- package/esm2022/cascader/index.mjs +0 -5
- package/esm2022/cascader/module.mjs +0 -62
- package/esm2022/cascader/ngx-tethys-cascader.mjs +0 -5
- package/esm2022/cascader/types.mjs +0 -2
- package/esm2022/checkbox/checkbox.component.mjs +0 -51
- package/esm2022/checkbox/index.mjs +0 -4
- package/esm2022/checkbox/module.mjs +0 -18
- package/esm2022/checkbox/ngx-tethys-checkbox.mjs +0 -5
- package/esm2022/collapse/collapse-item.component.mjs +0 -88
- package/esm2022/collapse/collapse.component.mjs +0 -79
- package/esm2022/collapse/index.mjs +0 -4
- package/esm2022/collapse/module.mjs +0 -22
- package/esm2022/collapse/ngx-tethys-collapse.mjs +0 -5
- package/esm2022/color-picker/color-picker-custom-panel.component.mjs +0 -38
- package/esm2022/color-picker/color-picker-panel.component.mjs +0 -100
- package/esm2022/color-picker/color-picker.component.mjs +0 -289
- package/esm2022/color-picker/constant.mjs +0 -73
- package/esm2022/color-picker/coordinates.directive.mjs +0 -73
- package/esm2022/color-picker/helpers/color.class.mjs +0 -281
- package/esm2022/color-picker/helpers/colors-table.class.mjs +0 -155
- package/esm2022/color-picker/helpers/rgba.class.mjs +0 -34
- package/esm2022/color-picker/index.mjs +0 -14
- package/esm2022/color-picker/module.mjs +0 -72
- package/esm2022/color-picker/ngx-tethys-color-picker.mjs +0 -5
- package/esm2022/color-picker/parts/alpha/alpha.component.mjs +0 -64
- package/esm2022/color-picker/parts/hue/hue.component.mjs +0 -54
- package/esm2022/color-picker/parts/indicator/indicator.component.mjs +0 -26
- package/esm2022/color-picker/parts/inputs/inputs.component.mjs +0 -61
- package/esm2022/color-picker/parts/saturation/saturation.component.mjs +0 -68
- package/esm2022/comment/comment-actions.directive.mjs +0 -19
- package/esm2022/comment/comment-content.directive.mjs +0 -19
- package/esm2022/comment/comment.component.mjs +0 -30
- package/esm2022/comment/comment.module.mjs +0 -41
- package/esm2022/comment/index.mjs +0 -5
- package/esm2022/comment/ngx-tethys-comment.mjs +0 -5
- package/esm2022/copy/copy.directive.mjs +0 -101
- package/esm2022/copy/index.mjs +0 -3
- package/esm2022/copy/module.mjs +0 -18
- package/esm2022/copy/ngx-tethys-copy.mjs +0 -5
- package/esm2022/core/animation/animation-consts.mjs +0 -23
- package/esm2022/core/animation/collapse.mjs +0 -12
- package/esm2022/core/animation/fade.mjs +0 -7
- package/esm2022/core/animation/index.mjs +0 -2
- package/esm2022/core/animation/public-api.mjs +0 -6
- package/esm2022/core/animation/thumb.mjs +0 -12
- package/esm2022/core/animation/zoom.mjs +0 -66
- package/esm2022/core/behaviors/constructor.mjs +0 -5
- package/esm2022/core/behaviors/control-value-accessor.mjs +0 -17
- package/esm2022/core/behaviors/decorators.mjs +0 -47
- package/esm2022/core/behaviors/disabled.mjs +0 -17
- package/esm2022/core/behaviors/focus-control.mjs +0 -31
- package/esm2022/core/behaviors/index.mjs +0 -11
- package/esm2022/core/behaviors/initialized.mjs +0 -12
- package/esm2022/core/behaviors/loading-done.mjs +0 -12
- package/esm2022/core/behaviors/mixin.mjs +0 -5
- package/esm2022/core/behaviors/tabindex.mjs +0 -21
- package/esm2022/core/behaviors/unsubscribe.mjs +0 -23
- package/esm2022/core/click-positioner.mjs +0 -36
- package/esm2022/core/color/color.mjs +0 -13
- package/esm2022/core/color/index.mjs +0 -2
- package/esm2022/core/debounce-time.mjs +0 -11
- package/esm2022/core/event-dispatchers/index.mjs +0 -2
- package/esm2022/core/index.mjs +0 -16
- package/esm2022/core/ngx-tethys-core.mjs +0 -5
- package/esm2022/core/overlay/abstract-overlay-container.mjs +0 -53
- package/esm2022/core/overlay/abstract-overlay-ref.mjs +0 -160
- package/esm2022/core/overlay/abstract-overlay.config.mjs +0 -70
- package/esm2022/core/overlay/abstract-overlay.service.mjs +0 -158
- package/esm2022/core/overlay/index.mjs +0 -10
- package/esm2022/core/overlay/interface.mjs +0 -2
- package/esm2022/core/overlay/overlay-position-map.mjs +0 -88
- package/esm2022/core/overlay/overlay.directive.mjs +0 -175
- package/esm2022/core/overlay/portal-directives.mjs +0 -47
- package/esm2022/core/overlay/utils.mjs +0 -69
- package/esm2022/core/request-animation.mjs +0 -41
- package/esm2022/core/scroll-to.service.mjs +0 -33
- package/esm2022/core/scroll.mjs +0 -83
- package/esm2022/core/spacing/index.mjs +0 -2
- package/esm2022/core/spacing/spacing.mjs +0 -17
- package/esm2022/core/store/action-state.mjs +0 -11
- package/esm2022/core/store/action.mjs +0 -48
- package/esm2022/core/store/actions-stream.mjs +0 -2
- package/esm2022/core/store/index.mjs +0 -4
- package/esm2022/core/store/store.mjs +0 -125
- package/esm2022/core/store/types.mjs +0 -6
- package/esm2022/core/store/utils.mjs +0 -14
- package/esm2022/core/theme/index.mjs +0 -3
- package/esm2022/core/theme/store.mjs +0 -42
- package/esm2022/core/theme/theme.mjs +0 -9
- package/esm2022/core/translate.mjs +0 -22
- package/esm2022/core/update-host-class.service.mjs +0 -60
- package/esm2022/date-picker/abstract-picker.component.mjs +0 -318
- package/esm2022/date-picker/abstract-picker.directive.mjs +0 -218
- package/esm2022/date-picker/base-picker.component.mjs +0 -249
- package/esm2022/date-picker/date-helper.service.mjs +0 -37
- package/esm2022/date-picker/date-picker.component.mjs +0 -41
- package/esm2022/date-picker/date-picker.config.mjs +0 -103
- package/esm2022/date-picker/date-picker.directive.mjs +0 -39
- package/esm2022/date-picker/date-picker.module.mjs +0 -117
- package/esm2022/date-picker/date-picker.service.mjs +0 -31
- package/esm2022/date-picker/index.mjs +0 -37
- package/esm2022/date-picker/inner-types.mjs +0 -2
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +0 -98
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +0 -92
- package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +0 -105
- package/esm2022/date-picker/lib/date/date-header.component.mjs +0 -35
- package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +0 -24
- package/esm2022/date-picker/lib/date/date-table.component.mjs +0 -149
- package/esm2022/date-picker/lib/date/types.mjs +0 -2
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +0 -388
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +0 -42
- package/esm2022/date-picker/lib/decade/decade-table.component.mjs +0 -81
- package/esm2022/date-picker/lib/lib-packer.module.mjs +0 -123
- package/esm2022/date-picker/lib/month/month-header.component.mjs +0 -27
- package/esm2022/date-picker/lib/month/month-table.component.mjs +0 -97
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +0 -566
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +0 -196
- package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +0 -98
- package/esm2022/date-picker/lib/year/year-header.component.mjs +0 -39
- package/esm2022/date-picker/lib/year/year-table.component.mjs +0 -100
- package/esm2022/date-picker/month-picker.component.mjs +0 -45
- package/esm2022/date-picker/ngx-tethys-date-picker.mjs +0 -5
- package/esm2022/date-picker/picker.component.mjs +0 -273
- package/esm2022/date-picker/picker.pipes.mjs +0 -112
- package/esm2022/date-picker/picker.util.mjs +0 -220
- package/esm2022/date-picker/picker.validators.mjs +0 -79
- package/esm2022/date-picker/quarter-picker.component.mjs +0 -48
- package/esm2022/date-picker/range-picker.component.mjs +0 -39
- package/esm2022/date-picker/range-picker.directive.mjs +0 -39
- package/esm2022/date-picker/standard-types.mjs +0 -2
- package/esm2022/date-picker/week-picker.component.mjs +0 -40
- package/esm2022/date-picker/year-picker.component.mjs +0 -48
- package/esm2022/date-range/date-range.class.mjs +0 -6
- package/esm2022/date-range/date-range.component.mjs +0 -255
- package/esm2022/date-range/index.mjs +0 -5
- package/esm2022/date-range/module.mjs +0 -50
- package/esm2022/date-range/ngx-tethys-date-range.mjs +0 -5
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +0 -50
- package/esm2022/dialog/body/dialog-body.component.mjs +0 -49
- package/esm2022/dialog/confirm/confirm.component.mjs +0 -77
- package/esm2022/dialog/confirm/token.mjs +0 -3
- package/esm2022/dialog/confirm.config.mjs +0 -29
- package/esm2022/dialog/dialog-animations.mjs +0 -19
- package/esm2022/dialog/dialog-container.component.mjs +0 -169
- package/esm2022/dialog/dialog-ref.mjs +0 -35
- package/esm2022/dialog/dialog.config.mjs +0 -62
- package/esm2022/dialog/dialog.module.mjs +0 -91
- package/esm2022/dialog/dialog.options.mjs +0 -6
- package/esm2022/dialog/dialog.service.mjs +0 -145
- package/esm2022/dialog/footer/dialog-footer.component.mjs +0 -51
- package/esm2022/dialog/header/dialog-header.component.mjs +0 -87
- package/esm2022/dialog/index.mjs +0 -12
- package/esm2022/dialog/ngx-tethys-dialog.mjs +0 -5
- package/esm2022/divider/divider.component.mjs +0 -117
- package/esm2022/divider/divider.module.mjs +0 -20
- package/esm2022/divider/index.mjs +0 -3
- package/esm2022/divider/ngx-tethys-divider.mjs +0 -5
- package/esm2022/dot/dot.component.mjs +0 -111
- package/esm2022/dot/dot.module.mjs +0 -17
- package/esm2022/dot/index.mjs +0 -3
- package/esm2022/dot/ngx-tethys-dot.mjs +0 -5
- package/esm2022/drag-drop/drag-content.directive.mjs +0 -32
- package/esm2022/drag-drop/drag-drop.class.mjs +0 -7
- package/esm2022/drag-drop/drag-drop.service.mjs +0 -23
- package/esm2022/drag-drop/drag-handle.directive.mjs +0 -43
- package/esm2022/drag-drop/drag-ref.mjs +0 -225
- package/esm2022/drag-drop/drag.directive.mjs +0 -71
- package/esm2022/drag-drop/drop-container.class.mjs +0 -6
- package/esm2022/drag-drop/drop-container.directive.mjs +0 -129
- package/esm2022/drag-drop/index.mjs +0 -10
- package/esm2022/drag-drop/module.mjs +0 -27
- package/esm2022/drag-drop/ngx-tethys-drag-drop.mjs +0 -5
- package/esm2022/dropdown/dropdown-active.directive.mjs +0 -66
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +0 -210
- package/esm2022/dropdown/dropdown-menu.component.mjs +0 -156
- package/esm2022/dropdown/dropdown-submenu.component.mjs +0 -83
- package/esm2022/dropdown/dropdown.directive.mjs +0 -189
- package/esm2022/dropdown/index.mjs +0 -7
- package/esm2022/dropdown/module.mjs +0 -79
- package/esm2022/dropdown/ngx-tethys-dropdown.mjs +0 -5
- package/esm2022/empty/empty.component.mjs +0 -183
- package/esm2022/empty/empty.config.mjs +0 -17
- package/esm2022/empty/empty.module.mjs +0 -21
- package/esm2022/empty/index.mjs +0 -4
- package/esm2022/empty/ngx-tethys-empty.mjs +0 -5
- package/esm2022/empty/svgs.mjs +0 -207
- package/esm2022/flexible-text/flexible-text.component.mjs +0 -157
- package/esm2022/flexible-text/flexible-text.module.mjs +0 -19
- package/esm2022/flexible-text/index.mjs +0 -3
- package/esm2022/flexible-text/ngx-tethys-flexible-text.mjs +0 -5
- package/esm2022/form/form-group-error/form-group-error.component.mjs +0 -53
- package/esm2022/form/form-group-label.directive.mjs +0 -49
- package/esm2022/form/form-group.component.mjs +0 -145
- package/esm2022/form/form-submit.directive.mjs +0 -40
- package/esm2022/form/form-validator-loader.mjs +0 -134
- package/esm2022/form/form-validator.service.mjs +0 -252
- package/esm2022/form/form.class.mjs +0 -8
- package/esm2022/form/form.directive.mjs +0 -158
- package/esm2022/form/from-group-footer/form-group-footer.component.mjs +0 -53
- package/esm2022/form/index.mjs +0 -12
- package/esm2022/form/module.mjs +0 -104
- package/esm2022/form/ngx-tethys-form.mjs +0 -5
- package/esm2022/form/validator/confirm-validator.directive.mjs +0 -33
- package/esm2022/form/validator/index.mjs +0 -5
- package/esm2022/form/validator/max-validator.directive.mjs +0 -41
- package/esm2022/form/validator/min-validator.directive.mjs +0 -41
- package/esm2022/form/validator/unique-validator.directive.mjs +0 -52
- package/esm2022/fullscreen/fullscreen-launch.directive.mjs +0 -18
- package/esm2022/fullscreen/fullscreen-ref.mjs +0 -151
- package/esm2022/fullscreen/fullscreen.component.mjs +0 -78
- package/esm2022/fullscreen/fullscreen.config.mjs +0 -6
- package/esm2022/fullscreen/fullscreen.module.mjs +0 -17
- package/esm2022/fullscreen/fullscreen.service.mjs +0 -47
- package/esm2022/fullscreen/index.mjs +0 -7
- package/esm2022/fullscreen/ngx-tethys-fullscreen.mjs +0 -5
- package/esm2022/grid/flex.mjs +0 -179
- package/esm2022/grid/grid.token.mjs +0 -5
- package/esm2022/grid/index.mjs +0 -7
- package/esm2022/grid/module.mjs +0 -56
- package/esm2022/grid/ngx-tethys-grid.mjs +0 -5
- package/esm2022/grid/thy-col.directive.mjs +0 -66
- package/esm2022/grid/thy-grid-item.component.mjs +0 -60
- package/esm2022/grid/thy-grid.component.mjs +0 -256
- package/esm2022/grid/thy-row.directive.mjs +0 -59
- package/esm2022/guider/guider-hint/guider-hint.component.mjs +0 -52
- package/esm2022/guider/guider-manager.mjs +0 -39
- package/esm2022/guider/guider-ref.mjs +0 -133
- package/esm2022/guider/guider-step-ref.mjs +0 -242
- package/esm2022/guider/guider.class.mjs +0 -15
- package/esm2022/guider/guider.directive.mjs +0 -50
- package/esm2022/guider/guider.module.mjs +0 -24
- package/esm2022/guider/guider.service.mjs +0 -76
- package/esm2022/guider/index.mjs +0 -9
- package/esm2022/guider/ngx-tethys-guider.mjs +0 -5
- package/esm2022/guider/utils.mjs +0 -10
- package/esm2022/i18n/i18n.mjs +0 -9
- package/esm2022/i18n/i18n.service.mjs +0 -45
- package/esm2022/i18n/i18n.token.mjs +0 -10
- package/esm2022/i18n/index.mjs +0 -10
- package/esm2022/i18n/locale.mjs +0 -13
- package/esm2022/i18n/locales/de-de.mjs +0 -134
- package/esm2022/i18n/locales/en-us.mjs +0 -155
- package/esm2022/i18n/locales/ja-jp.mjs +0 -134
- package/esm2022/i18n/locales/zh-hans.mjs +0 -134
- package/esm2022/i18n/locales/zh-hant.mjs +0 -134
- package/esm2022/i18n/ngx-tethys-i18n.mjs +0 -5
- package/esm2022/icon/config.mjs +0 -8
- package/esm2022/icon/icon-registry.mjs +0 -340
- package/esm2022/icon/icon.component.mjs +0 -198
- package/esm2022/icon/icon.module.mjs +0 -20
- package/esm2022/icon/index.mjs +0 -5
- package/esm2022/icon/ngx-tethys-icon.mjs +0 -5
- package/esm2022/image/image-group.component.mjs +0 -32
- package/esm2022/image/image.class.mjs +0 -2
- package/esm2022/image/image.config.mjs +0 -21
- package/esm2022/image/image.directive.mjs +0 -130
- package/esm2022/image/image.service.mjs +0 -58
- package/esm2022/image/index.mjs +0 -9
- package/esm2022/image/module.mjs +0 -67
- package/esm2022/image/ngx-tethys-image.mjs +0 -5
- package/esm2022/image/preview/image-preview-ref.mjs +0 -32
- package/esm2022/image/preview/image-preview.component.mjs +0 -413
- package/esm2022/image/utils.mjs +0 -13
- package/esm2022/input/index.mjs +0 -7
- package/esm2022/input/input-count.component.mjs +0 -68
- package/esm2022/input/input-group.component.mjs +0 -161
- package/esm2022/input/input-search.component.mjs +0 -152
- package/esm2022/input/input.component.mjs +0 -142
- package/esm2022/input/input.directive.mjs +0 -63
- package/esm2022/input/module.mjs +0 -51
- package/esm2022/input/ngx-tethys-input.mjs +0 -5
- package/esm2022/input-number/index.mjs +0 -3
- package/esm2022/input-number/input-number.component.mjs +0 -362
- package/esm2022/input-number/module.mjs +0 -22
- package/esm2022/input-number/ngx-tethys-input-number.mjs +0 -5
- package/esm2022/layout/content-main.component.mjs +0 -42
- package/esm2022/layout/content-section.component.mjs +0 -42
- package/esm2022/layout/content.component.mjs +0 -42
- package/esm2022/layout/header.component.mjs +0 -125
- package/esm2022/layout/index.mjs +0 -11
- package/esm2022/layout/layout.component.mjs +0 -47
- package/esm2022/layout/layout.module.mjs +0 -121
- package/esm2022/layout/ngx-tethys-layout.mjs +0 -5
- package/esm2022/layout/sidebar-content.component.mjs +0 -41
- package/esm2022/layout/sidebar-footer.component.mjs +0 -41
- package/esm2022/layout/sidebar-header.component.mjs +0 -54
- package/esm2022/layout/sidebar.component.mjs +0 -405
- package/esm2022/list/index.mjs +0 -7
- package/esm2022/list/list-item-meta.component.mjs +0 -38
- package/esm2022/list/list-item.component.mjs +0 -25
- package/esm2022/list/list.component.mjs +0 -41
- package/esm2022/list/list.module.mjs +0 -22
- package/esm2022/list/ngx-tethys-list.mjs +0 -5
- package/esm2022/list/selection/selection-list.mjs +0 -393
- package/esm2022/list/selection/selection.interface.mjs +0 -2
- package/esm2022/loading/index.mjs +0 -3
- package/esm2022/loading/loading.component.mjs +0 -54
- package/esm2022/loading/loading.module.mjs +0 -17
- package/esm2022/loading/ngx-tethys-loading.mjs +0 -5
- package/esm2022/mention/adapter/adapter.mjs +0 -20
- package/esm2022/mention/adapter/editable.adapter.mjs +0 -48
- package/esm2022/mention/adapter/index.mjs +0 -16
- package/esm2022/mention/adapter/textarea.adapter.mjs +0 -58
- package/esm2022/mention/caret-positioner.mjs +0 -194
- package/esm2022/mention/index.mjs +0 -5
- package/esm2022/mention/interfaces.mjs +0 -2
- package/esm2022/mention/mention.directive.mjs +0 -160
- package/esm2022/mention/mention.module.mjs +0 -23
- package/esm2022/mention/ngx-tethys-mention.mjs +0 -5
- package/esm2022/mention/suggestions/suggestions.component.mjs +0 -80
- package/esm2022/menu/divider/menu-divider.component.mjs +0 -21
- package/esm2022/menu/group/menu-group.component.mjs +0 -187
- package/esm2022/menu/index.mjs +0 -9
- package/esm2022/menu/item/action/menu-item-action.component.mjs +0 -75
- package/esm2022/menu/item/icon/menu-item-icon.component.mjs +0 -33
- package/esm2022/menu/item/menu-item.component.mjs +0 -42
- package/esm2022/menu/item/name/menu-item-name.component.mjs +0 -32
- package/esm2022/menu/menu.component.mjs +0 -39
- package/esm2022/menu/menu.module.mjs +0 -49
- package/esm2022/menu/ngx-tethys-menu.mjs +0 -5
- package/esm2022/message/abstract/abstract-message-container.component.mjs +0 -26
- package/esm2022/message/abstract/abstract-message-queue.service.mjs +0 -34
- package/esm2022/message/abstract/abstract-message-ref.mjs +0 -22
- package/esm2022/message/abstract/abstract-message.component.mjs +0 -76
- package/esm2022/message/abstract/abstract-message.service.mjs +0 -29
- package/esm2022/message/abstract/index.mjs +0 -6
- package/esm2022/message/index.mjs +0 -9
- package/esm2022/message/message-container.component.mjs +0 -45
- package/esm2022/message/message-queue.service.mjs +0 -25
- package/esm2022/message/message-ref.mjs +0 -4
- package/esm2022/message/message.component.mjs +0 -61
- package/esm2022/message/message.config.mjs +0 -14
- package/esm2022/message/message.service.mjs +0 -92
- package/esm2022/message/module.mjs +0 -24
- package/esm2022/message/ngx-tethys-message.mjs +0 -5
- package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +0 -43
- package/esm2022/nav/icon-nav/icon-nav.component.mjs +0 -45
- package/esm2022/nav/index.mjs +0 -7
- package/esm2022/nav/nav-ink-bar.directive.mjs +0 -79
- package/esm2022/nav/nav-item.directive.mjs +0 -98
- package/esm2022/nav/nav.component.mjs +0 -410
- package/esm2022/nav/nav.module.mjs +0 -54
- package/esm2022/nav/nav.pipe.mjs +0 -24
- package/esm2022/nav/ngx-tethys-nav.mjs +0 -5
- package/esm2022/ngx-tethys.mjs +0 -5
- package/esm2022/notify/index.mjs +0 -8
- package/esm2022/notify/module.mjs +0 -24
- package/esm2022/notify/ngx-tethys-notify.mjs +0 -5
- package/esm2022/notify/notify-container.component.mjs +0 -31
- package/esm2022/notify/notify-queue.service.mjs +0 -30
- package/esm2022/notify/notify-ref.mjs +0 -4
- package/esm2022/notify/notify.component.mjs +0 -99
- package/esm2022/notify/notify.config.mjs +0 -14
- package/esm2022/notify/notify.service.mjs +0 -97
- package/esm2022/pagination/index.mjs +0 -6
- package/esm2022/pagination/ngx-tethys-pagination.mjs +0 -5
- package/esm2022/pagination/pagination.class.mjs +0 -2
- package/esm2022/pagination/pagination.component.mjs +0 -366
- package/esm2022/pagination/pagination.config.mjs +0 -30
- package/esm2022/pagination/pagination.module.mjs +0 -43
- package/esm2022/pagination/pagination.pipe.mjs +0 -53
- package/esm2022/popover/body/popover-body.component.mjs +0 -25
- package/esm2022/popover/header/popover-header.component.mjs +0 -54
- package/esm2022/popover/index.mjs +0 -10
- package/esm2022/popover/module.mjs +0 -47
- package/esm2022/popover/ngx-tethys-popover.mjs +0 -5
- package/esm2022/popover/popover-animations.mjs +0 -22
- package/esm2022/popover/popover-container.component.mjs +0 -125
- package/esm2022/popover/popover-ref.mjs +0 -25
- package/esm2022/popover/popover.config.mjs +0 -38
- package/esm2022/popover/popover.directive.mjs +0 -157
- package/esm2022/popover/popover.options.mjs +0 -6
- package/esm2022/popover/popover.service.mjs +0 -201
- package/esm2022/progress/index.mjs +0 -6
- package/esm2022/progress/interfaces.mjs +0 -2
- package/esm2022/progress/ngx-tethys-progress.mjs +0 -5
- package/esm2022/progress/progress-circle.component.mjs +0 -136
- package/esm2022/progress/progress-strip.component.mjs +0 -54
- package/esm2022/progress/progress.component.mjs +0 -142
- package/esm2022/progress/progress.module.mjs +0 -20
- package/esm2022/property/index.mjs +0 -4
- package/esm2022/property/module.mjs +0 -20
- package/esm2022/property/ngx-tethys-property.mjs +0 -5
- package/esm2022/property/properties.component.mjs +0 -59
- package/esm2022/property/property-item.component.mjs +0 -175
- package/esm2022/property-operation/group/property-operation-group.component.mjs +0 -20
- package/esm2022/property-operation/index.mjs +0 -4
- package/esm2022/property-operation/module.mjs +0 -21
- package/esm2022/property-operation/ngx-tethys-property-operation.mjs +0 -5
- package/esm2022/property-operation/property-operation.component.mjs +0 -183
- package/esm2022/public-api.mjs +0 -2
- package/esm2022/radio/button/radio-button.component.mjs +0 -56
- package/esm2022/radio/group/radio-group.component.mjs +0 -138
- package/esm2022/radio/index.mjs +0 -5
- package/esm2022/radio/module.mjs +0 -20
- package/esm2022/radio/ngx-tethys-radio.mjs +0 -5
- package/esm2022/radio/radio.component.mjs +0 -58
- package/esm2022/rate/index.mjs +0 -4
- package/esm2022/rate/module.mjs +0 -23
- package/esm2022/rate/ngx-tethys-rate.mjs +0 -5
- package/esm2022/rate/rate-item.component.mjs +0 -76
- package/esm2022/rate/rate.component.mjs +0 -244
- package/esm2022/resizable/index.mjs +0 -8
- package/esm2022/resizable/interface.mjs +0 -2
- package/esm2022/resizable/module.mjs +0 -19
- package/esm2022/resizable/ngx-tethys-resizable.mjs +0 -5
- package/esm2022/resizable/resizable.directive.mjs +0 -363
- package/esm2022/resizable/resizable.service.mjs +0 -69
- package/esm2022/resizable/resize-handle.component.mjs +0 -104
- package/esm2022/resizable/resize-handles.component.mjs +0 -64
- package/esm2022/resizable/utils.mjs +0 -14
- package/esm2022/result/index.mjs +0 -3
- package/esm2022/result/ngx-tethys-result.mjs +0 -5
- package/esm2022/result/result.component.mjs +0 -43
- package/esm2022/result/result.module.mjs +0 -17
- package/esm2022/segment/index.mjs +0 -5
- package/esm2022/segment/ngx-tethys-segment.mjs +0 -5
- package/esm2022/segment/segment-item.component.mjs +0 -87
- package/esm2022/segment/segment.component.mjs +0 -143
- package/esm2022/segment/segment.module.mjs +0 -20
- package/esm2022/segment/segment.token.mjs +0 -3
- package/esm2022/segment/types.mjs +0 -2
- package/esm2022/select/custom-select/custom-select.component.mjs +0 -904
- package/esm2022/select/index.mjs +0 -5
- package/esm2022/select/module.mjs +0 -62
- package/esm2022/select/native-select/native-select.component.mjs +0 -98
- package/esm2022/select/ngx-tethys-select.mjs +0 -5
- package/esm2022/select/select.config.mjs +0 -21
- package/esm2022/shared/base-form-check.component.mjs +0 -120
- package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +0 -57
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +0 -60
- package/esm2022/shared/directives/thy-contextmenu.directive.mjs +0 -39
- package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +0 -43
- package/esm2022/shared/directives/thy-drag-drop.directive.mjs +0 -51
- package/esm2022/shared/directives/thy-enter.directive.mjs +0 -43
- package/esm2022/shared/directives/thy-scroll.directive.mjs +0 -84
- package/esm2022/shared/directives/thy-show.mjs +0 -59
- package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +0 -57
- package/esm2022/shared/directives/view-outlet.directive.mjs +0 -85
- package/esm2022/shared/index.mjs +0 -16
- package/esm2022/shared/ng-transclude.directive.mjs +0 -32
- package/esm2022/shared/ngx-tethys-shared.mjs +0 -5
- package/esm2022/shared/option/group/option-group.component.mjs +0 -92
- package/esm2022/shared/option/index.mjs +0 -9
- package/esm2022/shared/option/list-option/list-option.component.mjs +0 -96
- package/esm2022/shared/option/module.mjs +0 -29
- package/esm2022/shared/option/option-group.component.mjs +0 -25
- package/esm2022/shared/option/option.component.mjs +0 -181
- package/esm2022/shared/option/option.token.mjs +0 -14
- package/esm2022/shared/option/options-container.component.mjs +0 -29
- package/esm2022/shared/option/select-option-base.mjs +0 -3
- package/esm2022/shared/select/index.mjs +0 -3
- package/esm2022/shared/select/module.mjs +0 -27
- package/esm2022/shared/select/select-control/select-control.component.mjs +0 -280
- package/esm2022/shared/shared.module.mjs +0 -71
- package/esm2022/skeleton/index.mjs +0 -9
- package/esm2022/skeleton/module.mjs +0 -27
- package/esm2022/skeleton/ngx-tethys-skeleton.mjs +0 -5
- package/esm2022/skeleton/skeleton-circle.component.mjs +0 -92
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +0 -100
- package/esm2022/skeleton/skeleton.component.mjs +0 -32
- package/esm2022/skeleton/skeleton.config.mjs +0 -8
- package/esm2022/skeleton/stylized/bullet-list.component.mjs +0 -124
- package/esm2022/skeleton/stylized/list.component.mjs +0 -95
- package/esm2022/skeleton/stylized/paragraph.component.mjs +0 -107
- package/esm2022/slide/drawer/drawer-container.directive.mjs +0 -21
- package/esm2022/slide/index.mjs +0 -13
- package/esm2022/slide/ngx-tethys-slide.mjs +0 -5
- package/esm2022/slide/slide-animations.mjs +0 -24
- package/esm2022/slide/slide-body/slide-body-section.component.mjs +0 -41
- package/esm2022/slide/slide-body/slide-body.component.mjs +0 -25
- package/esm2022/slide/slide-container.component.mjs +0 -192
- package/esm2022/slide/slide-footer/slide-footer.component.mjs +0 -26
- package/esm2022/slide/slide-header/slide-header.component.mjs +0 -59
- package/esm2022/slide/slide-layout/slide-layout.component.mjs +0 -27
- package/esm2022/slide/slide-ref.service.mjs +0 -32
- package/esm2022/slide/slide.config.mjs +0 -38
- package/esm2022/slide/slide.module.mjs +0 -65
- package/esm2022/slide/slide.service.mjs +0 -104
- package/esm2022/slider/index.mjs +0 -3
- package/esm2022/slider/ngx-tethys-slider.mjs +0 -5
- package/esm2022/slider/slider.component.mjs +0 -346
- package/esm2022/slider/slider.module.mjs +0 -19
- package/esm2022/space/index.mjs +0 -3
- package/esm2022/space/ngx-tethys-space.mjs +0 -5
- package/esm2022/space/space.component.mjs +0 -88
- package/esm2022/space/space.module.mjs +0 -17
- package/esm2022/statistic/index.mjs +0 -3
- package/esm2022/statistic/ngx-tethys-statistic.mjs +0 -5
- package/esm2022/statistic/statistic.component.mjs +0 -184
- package/esm2022/statistic/statistic.module.mjs +0 -20
- package/esm2022/stepper/index.mjs +0 -6
- package/esm2022/stepper/ngx-tethys-stepper.mjs +0 -5
- package/esm2022/stepper/step-header.component.mjs +0 -40
- package/esm2022/stepper/step.component.mjs +0 -32
- package/esm2022/stepper/stepper-button.directive.mjs +0 -56
- package/esm2022/stepper/stepper.component.mjs +0 -105
- package/esm2022/stepper/stepper.module.mjs +0 -21
- package/esm2022/strength/index.mjs +0 -3
- package/esm2022/strength/ngx-tethys-strength.mjs +0 -5
- package/esm2022/strength/strength.component.mjs +0 -122
- package/esm2022/strength/strength.module.mjs +0 -17
- package/esm2022/switch/index.mjs +0 -3
- package/esm2022/switch/ngx-tethys-switch.mjs +0 -5
- package/esm2022/switch/switch.component.mjs +0 -181
- package/esm2022/switch/switch.module.mjs +0 -17
- package/esm2022/table/enums/column-skeleton-type.mjs +0 -8
- package/esm2022/table/enums/index.mjs +0 -2
- package/esm2022/table/index.mjs +0 -9
- package/esm2022/table/ngx-tethys-table.mjs +0 -5
- package/esm2022/table/pipes/drag.pipe.mjs +0 -20
- package/esm2022/table/pipes/table.pipe.mjs +0 -20
- package/esm2022/table/table-column.component.mjs +0 -200
- package/esm2022/table/table-skeleton.component.mjs +0 -165
- package/esm2022/table/table.component.mjs +0 -966
- package/esm2022/table/table.interface.mjs +0 -7
- package/esm2022/table/table.module.mjs +0 -75
- package/esm2022/tabs/index.mjs +0 -5
- package/esm2022/tabs/ngx-tethys-tabs.mjs +0 -5
- package/esm2022/tabs/tab-content.component.mjs +0 -52
- package/esm2022/tabs/tab.component.mjs +0 -36
- package/esm2022/tabs/tabs.component.mjs +0 -139
- package/esm2022/tabs/tabs.module.mjs +0 -21
- package/esm2022/tabs/types.mjs +0 -2
- package/esm2022/tag/index.mjs +0 -4
- package/esm2022/tag/ngx-tethys-tag.mjs +0 -5
- package/esm2022/tag/tag.component.mjs +0 -109
- package/esm2022/tag/tag.module.mjs +0 -19
- package/esm2022/tag/tags.component.mjs +0 -24
- package/esm2022/testing/data-transfer.mjs +0 -55
- package/esm2022/testing/dispatcher-events.mjs +0 -46
- package/esm2022/testing/element-focus.mjs +0 -18
- package/esm2022/testing/events.mjs +0 -145
- package/esm2022/testing/index.mjs +0 -8
- package/esm2022/testing/ngx-tethys-testing.mjs +0 -5
- package/esm2022/testing/thy-icon.mjs +0 -50
- package/esm2022/testing/type-in-element.mjs +0 -20
- package/esm2022/testing/xhr-mock.mjs +0 -100
- package/esm2022/time-picker/index.mjs +0 -8
- package/esm2022/time-picker/inner/inner-time-picker.class.mjs +0 -2
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +0 -239
- package/esm2022/time-picker/inner/inner-time-picker.config.mjs +0 -45
- package/esm2022/time-picker/inner/inner-time-picker.store.mjs +0 -134
- package/esm2022/time-picker/ngx-tethys-time-picker.mjs +0 -5
- package/esm2022/time-picker/time-picker-controls.util.mjs +0 -118
- package/esm2022/time-picker/time-picker-panel.component.mjs +0 -265
- package/esm2022/time-picker/time-picker.component.mjs +0 -363
- package/esm2022/time-picker/time-picker.module.mjs +0 -54
- package/esm2022/time-picker/time-picker.utils.mjs +0 -131
- package/esm2022/timeline/index.mjs +0 -5
- package/esm2022/timeline/ngx-tethys-timeline.mjs +0 -5
- package/esm2022/timeline/timeline-item.component.mjs +0 -59
- package/esm2022/timeline/timeline.component.mjs +0 -156
- package/esm2022/timeline/timeline.module.mjs +0 -21
- package/esm2022/timeline/timeline.service.mjs +0 -17
- package/esm2022/tooltip/index.mjs +0 -9
- package/esm2022/tooltip/interface.mjs +0 -2
- package/esm2022/tooltip/ngx-tethys-tooltip.mjs +0 -5
- package/esm2022/tooltip/tooltip-animations.mjs +0 -23
- package/esm2022/tooltip/tooltip-ref.mjs +0 -147
- package/esm2022/tooltip/tooltip.component.mjs +0 -103
- package/esm2022/tooltip/tooltip.config.mjs +0 -17
- package/esm2022/tooltip/tooltip.directive.mjs +0 -150
- package/esm2022/tooltip/tooltip.module.mjs +0 -22
- package/esm2022/tooltip/tooltip.service.mjs +0 -28
- package/esm2022/transfer/index.mjs +0 -5
- package/esm2022/transfer/ngx-tethys-transfer.mjs +0 -5
- package/esm2022/transfer/transfer-list.component.mjs +0 -154
- package/esm2022/transfer/transfer.component.mjs +0 -180
- package/esm2022/transfer/transfer.interface.mjs +0 -6
- package/esm2022/transfer/transfer.module.mjs +0 -50
- package/esm2022/tree/index.mjs +0 -7
- package/esm2022/tree/ngx-tethys-tree.mjs +0 -5
- package/esm2022/tree/tree-abstract.mjs +0 -3
- package/esm2022/tree/tree-node.class.mjs +0 -93
- package/esm2022/tree/tree-node.component.mjs +0 -212
- package/esm2022/tree/tree.class.mjs +0 -15
- package/esm2022/tree/tree.component.mjs +0 -648
- package/esm2022/tree/tree.module.mjs +0 -74
- package/esm2022/tree/tree.pipe.mjs +0 -26
- package/esm2022/tree/tree.service.mjs +0 -187
- package/esm2022/tree-select/index.mjs +0 -4
- package/esm2022/tree-select/module.mjs +0 -52
- package/esm2022/tree-select/ngx-tethys-tree-select.mjs +0 -5
- package/esm2022/tree-select/tree-select.class.mjs +0 -2
- package/esm2022/tree-select/tree-select.component.mjs +0 -653
- package/esm2022/types/common.mjs +0 -2
- package/esm2022/types/dictionary.mjs +0 -2
- package/esm2022/types/index.mjs +0 -4
- package/esm2022/types/ngx-tethys-types.mjs +0 -5
- package/esm2022/types/pagination.mjs +0 -2
- package/esm2022/typography/bg-color.directive.mjs +0 -51
- package/esm2022/typography/index.mjs +0 -5
- package/esm2022/typography/module.mjs +0 -21
- package/esm2022/typography/ngx-tethys-typography.mjs +0 -5
- package/esm2022/typography/text/text.component.mjs +0 -23
- package/esm2022/typography/text-color.directive.mjs +0 -52
- package/esm2022/upload/constant.mjs +0 -75
- package/esm2022/upload/file-drop.directive.mjs +0 -166
- package/esm2022/upload/file-select-base.mjs +0 -75
- package/esm2022/upload/file-select.component.mjs +0 -98
- package/esm2022/upload/index.mjs +0 -7
- package/esm2022/upload/module.mjs +0 -22
- package/esm2022/upload/ngx-tethys-upload.mjs +0 -5
- package/esm2022/upload/types.mjs +0 -2
- package/esm2022/upload/upload.config.mjs +0 -21
- package/esm2022/upload/upload.service.mjs +0 -169
- package/esm2022/upload/util.mjs +0 -27
- package/esm2022/util/date/functions.mjs +0 -84
- package/esm2022/util/date/tiny-date.mjs +0 -362
- package/esm2022/util/dom.mjs +0 -247
- package/esm2022/util/helpers/helpers.mjs +0 -293
- package/esm2022/util/helpers/index.mjs +0 -2
- package/esm2022/util/immutable.mjs +0 -108
- package/esm2022/util/index.mjs +0 -16
- package/esm2022/util/keycodes.mjs +0 -2
- package/esm2022/util/logger/index.mjs +0 -2
- package/esm2022/util/logger/logger.mjs +0 -42
- package/esm2022/util/ng.mjs +0 -7
- package/esm2022/util/ngx-tethys-util.mjs +0 -5
- package/esm2022/util/references.mjs +0 -84
- package/esm2022/version.mjs +0 -3
- package/esm2022/vote/index.mjs +0 -3
- package/esm2022/vote/ngx-tethys-vote.mjs +0 -5
- package/esm2022/vote/vote.component.mjs +0 -130
- package/esm2022/vote/vote.module.mjs +0 -20
- package/esm2022/watermark/config.mjs +0 -20
- package/esm2022/watermark/index.mjs +0 -3
- package/esm2022/watermark/ngx-tethys-watermark.mjs +0 -5
- package/esm2022/watermark/watermark.directive.mjs +0 -178
- package/esm2022/watermark/watermark.module.mjs +0 -19
- package/schematics/ng-update/update-18/complete.d.ts +0 -3
- package/schematics/ng-update/update-18/complete.js +0 -13
- /package/schematics/ng-update/{update-18 → update-19}/class-name-migration.d.ts +0 -0
- /package/schematics/ng-update/{update-18 → update-19}/class-name-migration.js +0 -0
- /package/schematics/ng-update/{update-18 → update-19}/index.d.ts +0 -0
- /package/schematics/ng-update/{update-18 → update-19}/index.spec.d.ts +0 -0
- /package/schematics/ng-update/{update-18 → update-19}/update-data.d.ts +0 -0
- /package/schematics/ng-update/{update-18 → update-19}/update-data.js +0 -0
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
import { forkJoin, of, throwError } from 'rxjs';
|
|
2
|
-
import { catchError, finalize, map, share, tap } from 'rxjs/operators';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { HttpClient } from '@angular/common/http';
|
|
5
|
-
import { Injectable, SecurityContext, inject } from '@angular/core';
|
|
6
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
|
-
import { isString } from 'ngx-tethys/util';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
class SvgIconConfig {
|
|
10
|
-
constructor(data) {
|
|
11
|
-
// Note that we can't use `instanceof SVGElement` here,
|
|
12
|
-
// because it'll break during server-side rendering.
|
|
13
|
-
if (data && !!data.nodeName) {
|
|
14
|
-
this.svgElement = data;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
this.url = data;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @order 20
|
|
23
|
-
*/
|
|
24
|
-
export class ThyIconRegistry {
|
|
25
|
-
constructor() {
|
|
26
|
-
this.sanitizer = inject(DomSanitizer);
|
|
27
|
-
this.httpClient = inject(HttpClient, { optional: false });
|
|
28
|
-
this.document = inject(DOCUMENT);
|
|
29
|
-
this.defaultFontSetClass = 'wt-icon';
|
|
30
|
-
this.internalIconMode = 'svg';
|
|
31
|
-
this.svgIconConfigs = new Map();
|
|
32
|
-
this.svgIconSetConfigs = new Map();
|
|
33
|
-
this.inProgressUrlFetches = new Map();
|
|
34
|
-
}
|
|
35
|
-
get iconMode() {
|
|
36
|
-
return this.internalIconMode;
|
|
37
|
-
}
|
|
38
|
-
getIconNameNotFoundError(iconName) {
|
|
39
|
-
return Error(`Unable to find icon with the name "${iconName}"`);
|
|
40
|
-
}
|
|
41
|
-
getIconFailedToSanitizeLiteralError(literal) {
|
|
42
|
-
return Error(`The literal provided to ThyIconRegistry was not trusted as safe HTML by ` +
|
|
43
|
-
`Angular's DomSanitizer. Attempted literal was "${literal}".`);
|
|
44
|
-
}
|
|
45
|
-
internalAddSvgIconSet(namespace, config) {
|
|
46
|
-
const configNamespace = this.svgIconSetConfigs.get(namespace);
|
|
47
|
-
if (configNamespace) {
|
|
48
|
-
configNamespace.push(config);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.svgIconSetConfigs.set(namespace, [config]);
|
|
52
|
-
}
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
cloneSvg(svg) {
|
|
56
|
-
return svg.cloneNode(true);
|
|
57
|
-
}
|
|
58
|
-
fetchUrl(safeUrl) {
|
|
59
|
-
if (safeUrl == null) {
|
|
60
|
-
throw Error(`Cannot fetch icon from URL "${safeUrl}".`);
|
|
61
|
-
}
|
|
62
|
-
const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);
|
|
63
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && !url) {
|
|
64
|
-
throw new Error(`The URL provided to ThyIconRegistry was not trusted as a resource URL ` +
|
|
65
|
-
`via Angular's DomSanitizer. Attempted URL was "${url}".`);
|
|
66
|
-
}
|
|
67
|
-
// Store in-progress fetches to avoid sending a duplicate request for a URL when there is
|
|
68
|
-
// already a request in progress for that URL. It's necessary to call share() on the
|
|
69
|
-
// Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.
|
|
70
|
-
const inProgressFetch = this.inProgressUrlFetches.get(url);
|
|
71
|
-
if (inProgressFetch) {
|
|
72
|
-
return inProgressFetch;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
// TODO(jelbourn): for some reason, the `finalize` operator "loses" the generic type on the
|
|
76
|
-
// Observable. Figure out why and fix it.
|
|
77
|
-
const req = this.httpClient.get(url, { responseType: 'text' }).pipe(finalize(() => this.inProgressUrlFetches.delete(url)), share());
|
|
78
|
-
this.inProgressUrlFetches.set(url, req);
|
|
79
|
-
return req;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
toSvgElement(element) {
|
|
83
|
-
const svg = this.svgElementFromString('<svg></svg>');
|
|
84
|
-
for (let i = 0; i < element.childNodes.length; i++) {
|
|
85
|
-
if (element.childNodes[i].nodeType === this.document.ELEMENT_NODE) {
|
|
86
|
-
svg.appendChild(element.childNodes[i].cloneNode(true));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return svg;
|
|
90
|
-
}
|
|
91
|
-
extractSvgIconFromIconSet(iconSet, iconName) {
|
|
92
|
-
// Use the `id="iconName"` syntax in order to escape special
|
|
93
|
-
// characters in the ID (versus using the #iconName syntax).
|
|
94
|
-
const iconSource = iconSet.querySelector(`[id="${iconName}"]`);
|
|
95
|
-
if (!iconSource) {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
// Clone the element and remove the ID to prevent multiple elements from being added
|
|
99
|
-
// to the page with the same ID.
|
|
100
|
-
const iconElement = iconSource.cloneNode(true);
|
|
101
|
-
iconElement.removeAttribute('id');
|
|
102
|
-
// If the icon node is itself an <svg> node, clone and return it directly. If not, set it as
|
|
103
|
-
// the content of a new <svg> node.
|
|
104
|
-
if (iconElement.nodeName.toLowerCase() === 'svg') {
|
|
105
|
-
return this.setSvgAttributes(iconElement);
|
|
106
|
-
}
|
|
107
|
-
// If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note
|
|
108
|
-
// that the same could be achieved by referring to it via <use href="#id">, however the <use>
|
|
109
|
-
// tag is problematic on Firefox, because it needs to include the current page path.
|
|
110
|
-
if (iconElement.nodeName.toLowerCase() === 'symbol') {
|
|
111
|
-
return this.setSvgAttributes(this.toSvgElement(iconElement));
|
|
112
|
-
}
|
|
113
|
-
// createElement('SVG') doesn't work as expected; the DOM ends up with
|
|
114
|
-
// the correct nodes, but the SVG content doesn't render. Instead we
|
|
115
|
-
// have to create an empty SVG node using innerHTML and append its content.
|
|
116
|
-
// Elements created using DOMParser.parseFromString have the same problem.
|
|
117
|
-
// http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display
|
|
118
|
-
const svg = this.svgElementFromString('<svg></svg>');
|
|
119
|
-
// Clone the node so we don't remove it from the parent icon set element.
|
|
120
|
-
svg.appendChild(iconElement);
|
|
121
|
-
return this.setSvgAttributes(svg);
|
|
122
|
-
}
|
|
123
|
-
extractIconWithNameFromIconSetConfigs(iconName, iconSetConfigs) {
|
|
124
|
-
// Iterate backwards, so icon sets added later have precedence.
|
|
125
|
-
for (let i = iconSetConfigs.length - 1; i >= 0; i--) {
|
|
126
|
-
const config = iconSetConfigs[i];
|
|
127
|
-
if (config.svgElement) {
|
|
128
|
-
const foundIcon = this.extractSvgIconFromIconSet(config.svgElement, iconName);
|
|
129
|
-
if (foundIcon) {
|
|
130
|
-
return foundIcon;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
svgElementFromString(str) {
|
|
137
|
-
const div = this.document.createElement('DIV');
|
|
138
|
-
div.innerHTML = str;
|
|
139
|
-
const svg = div.querySelector('svg');
|
|
140
|
-
if (!svg) {
|
|
141
|
-
throw Error('<svg> tag not found');
|
|
142
|
-
}
|
|
143
|
-
return svg;
|
|
144
|
-
}
|
|
145
|
-
setSvgAttributes(svg) {
|
|
146
|
-
svg.setAttribute('fit', '');
|
|
147
|
-
svg.setAttribute('height', '1em');
|
|
148
|
-
svg.setAttribute('width', '1em');
|
|
149
|
-
svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');
|
|
150
|
-
svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.
|
|
151
|
-
return svg;
|
|
152
|
-
}
|
|
153
|
-
createSvgElementForSingleIcon(responseText) {
|
|
154
|
-
const svg = this.svgElementFromString(responseText);
|
|
155
|
-
this.setSvgAttributes(svg);
|
|
156
|
-
return svg;
|
|
157
|
-
}
|
|
158
|
-
loadSvgIconFromConfig(config) {
|
|
159
|
-
return this.fetchUrl(config.url).pipe(map(svgText => this.createSvgElementForSingleIcon(svgText)));
|
|
160
|
-
}
|
|
161
|
-
loadSvgIconSetFromConfig(config) {
|
|
162
|
-
// If the SVG for this icon set has already been parsed, do nothing.
|
|
163
|
-
if (config.svgElement) {
|
|
164
|
-
return of(config.svgElement);
|
|
165
|
-
}
|
|
166
|
-
return this.fetchUrl(config.url).pipe(map(svgText => {
|
|
167
|
-
// It is possible that the icon set was parsed and cached by an earlier request, so parsing
|
|
168
|
-
// only needs to occur if the cache is yet unset.
|
|
169
|
-
if (!config.svgElement) {
|
|
170
|
-
config.svgElement = this.svgElementFromString(svgText);
|
|
171
|
-
}
|
|
172
|
-
return config.svgElement;
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
getSvgFromConfig(config) {
|
|
176
|
-
if (config.svgElement) {
|
|
177
|
-
// We already have the SVG element for this icon, return a copy.
|
|
178
|
-
return of(this.cloneSvg(config.svgElement));
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
// Fetch the icon from the config's URL, cache it, and return a copy.
|
|
182
|
-
return this.loadSvgIconFromConfig(config).pipe(tap(svg => (config.svgElement = svg)), map(svg => this.cloneSvg(svg)));
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
getSvgFromIconSetConfigs(name, iconSetConfigs) {
|
|
186
|
-
// For all the icon set SVG elements we've fetched, see if any contain an icon with the
|
|
187
|
-
// requested name.
|
|
188
|
-
const namedIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);
|
|
189
|
-
if (namedIcon) {
|
|
190
|
-
// We could cache namedIcon in svgIconConfigs, but since we have to make a copy every
|
|
191
|
-
// time anyway, there's probably not much advantage compared to just always extracting
|
|
192
|
-
// it from the icon set.
|
|
193
|
-
return of(namedIcon);
|
|
194
|
-
}
|
|
195
|
-
// Not found in any cached icon sets. If there are icon sets with URLs that we haven't
|
|
196
|
-
// fetched, fetch them now and look for iconName in the results.
|
|
197
|
-
const iconSetFetchRequests = iconSetConfigs
|
|
198
|
-
.filter(iconSetConfig => !iconSetConfig.svgElement)
|
|
199
|
-
.map(iconSetConfig => {
|
|
200
|
-
return this.loadSvgIconSetFromConfig(iconSetConfig).pipe(catchError((err) => {
|
|
201
|
-
const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);
|
|
202
|
-
// Swallow errors fetching individual URLs so the
|
|
203
|
-
// combined Observable won't necessarily fail.
|
|
204
|
-
console.error(`Loading icon set URL: ${url} failed: ${err.message}`);
|
|
205
|
-
return of(null);
|
|
206
|
-
}));
|
|
207
|
-
});
|
|
208
|
-
// Fetch all the icon set URLs. When the requests complete, every IconSet should have a
|
|
209
|
-
// cached SVG element (unless the request failed), and we can check again for the icon.
|
|
210
|
-
return forkJoin(iconSetFetchRequests).pipe(map(() => {
|
|
211
|
-
const foundIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);
|
|
212
|
-
if (!foundIcon) {
|
|
213
|
-
throw this.getIconNameNotFoundError(name);
|
|
214
|
-
}
|
|
215
|
-
return foundIcon;
|
|
216
|
-
}));
|
|
217
|
-
}
|
|
218
|
-
internalAddSvgIconConfig(namespace, iconName, config) {
|
|
219
|
-
this.svgIconConfigs.set(this.buildIconKey(namespace, iconName), config);
|
|
220
|
-
return this;
|
|
221
|
-
}
|
|
222
|
-
buildIconKey(namespace, name) {
|
|
223
|
-
return namespace + ':' + name;
|
|
224
|
-
}
|
|
225
|
-
splitIconName(iconName) {
|
|
226
|
-
if (!iconName) {
|
|
227
|
-
return ['', ''];
|
|
228
|
-
}
|
|
229
|
-
const parts = iconName.split(':');
|
|
230
|
-
switch (parts.length) {
|
|
231
|
-
case 1:
|
|
232
|
-
return ['', parts[0]]; // Use default namespace.
|
|
233
|
-
case 2:
|
|
234
|
-
return parts;
|
|
235
|
-
default:
|
|
236
|
-
throw Error(`Invalid icon name: "${iconName}"`);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
addSvgIconSetInNamespace(namespace, url) {
|
|
240
|
-
url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;
|
|
241
|
-
return this.internalAddSvgIconSet(namespace, new SvgIconConfig(url));
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* 添加SVG图标集,添加到默认命名空间
|
|
245
|
-
*/
|
|
246
|
-
addSvgIconSet(url) {
|
|
247
|
-
return this.addSvgIconSetInNamespace('', url);
|
|
248
|
-
}
|
|
249
|
-
addSvgIconSetLiteralInNamespace(namespace, literal) {
|
|
250
|
-
const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);
|
|
251
|
-
if (!sanitizedLiteral) {
|
|
252
|
-
throw this.getIconFailedToSanitizeLiteralError(literal);
|
|
253
|
-
}
|
|
254
|
-
const svgElement = this.svgElementFromString(sanitizedLiteral);
|
|
255
|
-
return this.internalAddSvgIconSet(namespace, new SvgIconConfig(svgElement));
|
|
256
|
-
}
|
|
257
|
-
addSvgIconSetLiteral(literal) {
|
|
258
|
-
return this.addSvgIconSetLiteralInNamespace('', literal);
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* @description.en-us Registers an icon by URL in the specified namespace.
|
|
262
|
-
* @description 添加单个SVG图标到指定的命名空间
|
|
263
|
-
* @param namespace Namespace in which the icon should be registered.
|
|
264
|
-
* @param iconName Name under which the icon should be registered.
|
|
265
|
-
* @param url
|
|
266
|
-
*/
|
|
267
|
-
addSvgIconInNamespace(namespace, iconName, url) {
|
|
268
|
-
url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;
|
|
269
|
-
return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(url));
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* @description.en-us Registers an icon by URL in the default namespace.
|
|
273
|
-
* @description 添加单个SVG图标
|
|
274
|
-
* @param iconName Name under which the icon should be registered.
|
|
275
|
-
* @param url
|
|
276
|
-
*/
|
|
277
|
-
addSvgIcon(iconName, url) {
|
|
278
|
-
return this.addSvgIconInNamespace('', iconName, url);
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* @description.en-us Registers an icon using an HTML string in the default namespace.
|
|
282
|
-
* @description 添加单个SVG图标字符串,直接传入 SVG HTML 字符串
|
|
283
|
-
* @param iconName Name under which the icon should be registered.
|
|
284
|
-
* @param literal SVG source of the icon.
|
|
285
|
-
*/
|
|
286
|
-
addSvgIconLiteral(iconName, literal) {
|
|
287
|
-
return this.addSvgIconLiteralInNamespace('', iconName, literal);
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* @description.en-us Registers an icon using an HTML string in the specified namespace.
|
|
291
|
-
* @description 添加单个SVG图标字符串到指定的命名空间,直接传入 SVG HTML 字符串
|
|
292
|
-
* @param namespace Namespace in which the icon should be registered.
|
|
293
|
-
* @param iconName Name under which the icon should be registered.
|
|
294
|
-
* @param literal SVG source of the icon.
|
|
295
|
-
*/
|
|
296
|
-
addSvgIconLiteralInNamespace(namespace, iconName, literal) {
|
|
297
|
-
literal = isString(literal) ? this.sanitizer.bypassSecurityTrustHtml(literal) : literal;
|
|
298
|
-
const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);
|
|
299
|
-
if (!sanitizedLiteral) {
|
|
300
|
-
throw this.getIconFailedToSanitizeLiteralError(literal);
|
|
301
|
-
}
|
|
302
|
-
const svgElement = this.createSvgElementForSingleIcon(sanitizedLiteral);
|
|
303
|
-
return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(svgElement));
|
|
304
|
-
}
|
|
305
|
-
getDefaultFontSetClass() {
|
|
306
|
-
return this.defaultFontSetClass;
|
|
307
|
-
}
|
|
308
|
-
getFontSetClassByAlias(fontSet) {
|
|
309
|
-
return fontSet;
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* 获取某个图标
|
|
313
|
-
*/
|
|
314
|
-
getSvgIcon(name, namespace = '') {
|
|
315
|
-
// Return (copy of) cached icon if possible.
|
|
316
|
-
const key = this.buildIconKey(namespace, name);
|
|
317
|
-
const config = this.svgIconConfigs.get(key);
|
|
318
|
-
if (config) {
|
|
319
|
-
return this.getSvgFromConfig(config);
|
|
320
|
-
}
|
|
321
|
-
// See if we have any icon sets registered for the namespace.
|
|
322
|
-
const iconSetConfigs = this.svgIconSetConfigs.get(namespace);
|
|
323
|
-
if (iconSetConfigs) {
|
|
324
|
-
return this.getSvgFromIconSetConfigs(name, iconSetConfigs);
|
|
325
|
-
}
|
|
326
|
-
return throwError(this.getIconNameNotFoundError(key));
|
|
327
|
-
}
|
|
328
|
-
setIconMode(mode) {
|
|
329
|
-
this.internalIconMode = mode;
|
|
330
|
-
}
|
|
331
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
332
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyIconRegistry, providedIn: 'root' }); }
|
|
333
|
-
}
|
|
334
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyIconRegistry, decorators: [{
|
|
335
|
-
type: Injectable,
|
|
336
|
-
args: [{
|
|
337
|
-
providedIn: 'root'
|
|
338
|
-
}]
|
|
339
|
-
}] });
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pY29uL2ljb24tcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQTZCLE1BQU0sMkJBQTJCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLGFBQWE7SUFJZixZQUFZLElBQWtDO1FBQzFDLHVEQUF1RDtRQUN2RCxvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFFLElBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQWtCLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsR0FBRyxHQUFHLElBQXVCLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQVFEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFINUI7UUFJWSxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckQsYUFB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Q0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELDZEQUE2RDtRQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQWM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDOytHQTlYUSxlQUFlO21IQUFmLGVBQWUsY0FGWixNQUFNOzs0RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBTZWN1cml0eUNvbnRleHQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmNsYXNzIFN2Z0ljb25Db25maWcge1xuICAgIHVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbDtcbiAgICBzdmdFbGVtZW50OiBTVkdFbGVtZW50IHwgbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFNhZmVSZXNvdXJjZVVybCB8IFNWR0VsZW1lbnQpIHtcbiAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHVzZSBgaW5zdGFuY2VvZiBTVkdFbGVtZW50YCBoZXJlLFxuICAgICAgICAvLyBiZWNhdXNlIGl0J2xsIGJyZWFrIGR1cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgICAgIGlmIChkYXRhICYmICEhKGRhdGEgYXMgYW55KS5ub2RlTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5zdmdFbGVtZW50ID0gZGF0YSBhcyBTVkdFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cmwgPSBkYXRhIGFzIFNhZmVSZXNvdXJjZVVybDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgSWNvbk1vZGUgPSAnZm9udCcgfCAnc3ZnJztcblxuZXhwb3J0IHR5cGUgU3ZnUmVzb3VyY2VVcmwgPSBTYWZlUmVzb3VyY2VVcmwgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFN2Z0h0bWwgPSBTYWZlSHRtbCB8IHN0cmluZztcblxuLyoqXG4gKiBAb3JkZXIgMjBcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUaHlJY29uUmVnaXN0cnkge1xuICAgIHByaXZhdGUgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IGZhbHNlIH0pO1xuICAgIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0Rm9udFNldENsYXNzID0gJ3d0LWljb24nO1xuICAgIHByaXZhdGUgaW50ZXJuYWxJY29uTW9kZTogSWNvbk1vZGUgPSAnc3ZnJztcbiAgICBwcml2YXRlIHN2Z0ljb25Db25maWdzID0gbmV3IE1hcDxzdHJpbmcsIFN2Z0ljb25Db25maWc+KCk7XG4gICAgcHJpdmF0ZSBzdmdJY29uU2V0Q29uZmlncyA9IG5ldyBNYXA8c3RyaW5nLCBTdmdJY29uQ29uZmlnW10+KCk7XG4gICAgcHJpdmF0ZSBpblByb2dyZXNzVXJsRmV0Y2hlcyA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGljb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbEljb25Nb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWNvbk5hbWVOb3RGb3VuZEVycm9yKGljb25OYW1lOiBzdHJpbmcpOiBFcnJvciB7XG4gICAgICAgIHJldHVybiBFcnJvcihgVW5hYmxlIHRvIGZpbmQgaWNvbiB3aXRoIHRoZSBuYW1lIFwiJHtpY29uTmFtZX1cImApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWNvbkZhaWxlZFRvU2FuaXRpemVMaXRlcmFsRXJyb3IobGl0ZXJhbDogU3ZnSHRtbCk6IEVycm9yIHtcbiAgICAgICAgcmV0dXJuIEVycm9yKFxuICAgICAgICAgICAgYFRoZSBsaXRlcmFsIHByb3ZpZGVkIHRvIFRoeUljb25SZWdpc3RyeSB3YXMgbm90IHRydXN0ZWQgYXMgc2FmZSBIVE1MIGJ5IGAgK1xuICAgICAgICAgICAgICAgIGBBbmd1bGFyJ3MgRG9tU2FuaXRpemVyLiBBdHRlbXB0ZWQgbGl0ZXJhbCB3YXMgXCIke2xpdGVyYWx9XCIuYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW50ZXJuYWxBZGRTdmdJY29uU2V0KG5hbWVzcGFjZTogc3RyaW5nLCBjb25maWc6IFN2Z0ljb25Db25maWcpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29uZmlnTmFtZXNwYWNlID0gdGhpcy5zdmdJY29uU2V0Q29uZmlncy5nZXQobmFtZXNwYWNlKTtcblxuICAgICAgICBpZiAoY29uZmlnTmFtZXNwYWNlKSB7XG4gICAgICAgICAgICBjb25maWdOYW1lc3BhY2UucHVzaChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdmdJY29uU2V0Q29uZmlncy5zZXQobmFtZXNwYWNlLCBbY29uZmlnXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb25lU3ZnKHN2ZzogU1ZHRWxlbWVudCk6IFNWR0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gc3ZnLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hVcmwoc2FmZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmIChzYWZlVXJsID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgZmV0Y2ggaWNvbiBmcm9tIFVSTCBcIiR7c2FmZVVybH1cIi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5SRVNPVVJDRV9VUkwsIHNhZmVVcmwpO1xuXG4gICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAhdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRoZSBVUkwgcHJvdmlkZWQgdG8gVGh5SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTCBgICtcbiAgICAgICAgICAgICAgICAgICAgYHZpYSBBbmd1bGFyJ3MgRG9tU2FuaXRpemVyLiBBdHRlbXB0ZWQgVVJMIHdhcyBcIiR7dXJsfVwiLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yZSBpbi1wcm9ncmVzcyBmZXRjaGVzIHRvIGF2b2lkIHNlbmRpbmcgYSBkdXBsaWNhdGUgcmVxdWVzdCBmb3IgYSBVUkwgd2hlbiB0aGVyZSBpc1xuICAgICAgICAvLyBhbHJlYWR5IGEgcmVxdWVzdCBpbiBwcm9ncmVzcyBmb3IgdGhhdCBVUkwuIEl0J3MgbmVjZXNzYXJ5IHRvIGNhbGwgc2hhcmUoKSBvbiB0aGVcbiAgICAgICAgLy8gT2JzZXJ2YWJsZSByZXR1cm5lZCBieSBodHRwLmdldCgpIHNvIHRoYXQgbXVsdGlwbGUgc3Vic2NyaWJlcnMgZG9uJ3QgY2F1c2UgbXVsdGlwbGUgWEhScy5cbiAgICAgICAgY29uc3QgaW5Qcm9ncmVzc0ZldGNoID0gdGhpcy5pblByb2dyZXNzVXJsRmV0Y2hlcy5nZXQodXJsKTtcblxuICAgICAgICBpZiAoaW5Qcm9ncmVzc0ZldGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5Qcm9ncmVzc0ZldGNoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVE9ETyhqZWxib3Vybik6IGZvciBzb21lIHJlYXNvbiwgdGhlIGBmaW5hbGl6ZWAgb3BlcmF0b3IgXCJsb3Nlc1wiIHRoZSBnZW5lcmljIHR5cGUgb24gdGhlXG4gICAgICAgICAgICAvLyBPYnNlcnZhYmxlLiBGaWd1cmUgb3V0IHdoeSBhbmQgZml4IGl0LlxuICAgICAgICAgICAgY29uc3QgcmVxID0gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmluUHJvZ3Jlc3NVcmxGZXRjaGVzLmRlbGV0ZSh1cmwpKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluUHJvZ3Jlc3NVcmxGZXRjaGVzLnNldCh1cmwsIHJlcSk7XG4gICAgICAgICAgICByZXR1cm4gcmVxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b1N2Z0VsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IFNWR0VsZW1lbnQge1xuICAgICAgICBjb25zdCBzdmcgPSB0aGlzLnN2Z0VsZW1lbnRGcm9tU3RyaW5nKCc8c3ZnPjwvc3ZnPicpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jaGlsZE5vZGVzW2ldLm5vZGVUeXBlID09PSB0aGlzLmRvY3VtZW50LkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAgICAgICAgIHN2Zy5hcHBlbmRDaGlsZChlbGVtZW50LmNoaWxkTm9kZXNbaV0uY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdmc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0U3ZnSWNvbkZyb21JY29uU2V0KGljb25TZXQ6IFNWR0VsZW1lbnQsIGljb25OYW1lOiBzdHJpbmcpOiBTVkdFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIC8vIFVzZSB0aGUgYGlkPVwiaWNvbk5hbWVcImAgc3ludGF4IGluIG9yZGVyIHRvIGVzY2FwZSBzcGVjaWFsXG4gICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gdGhlIElEICh2ZXJzdXMgdXNpbmcgdGhlICNpY29uTmFtZSBzeW50YXgpLlxuICAgICAgICBjb25zdCBpY29uU291cmNlID0gaWNvblNldC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2ljb25OYW1lfVwiXWApO1xuXG4gICAgICAgIGlmICghaWNvblNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbG9uZSB0aGUgZWxlbWVudCBhbmQgcmVtb3ZlIHRoZSBJRCB0byBwcmV2ZW50IG11bHRpcGxlIGVsZW1lbnRzIGZyb20gYmVpbmcgYWRkZWRcbiAgICAgICAgLy8gdG8gdGhlIHBhZ2Ugd2l0aCB0aGUgc2FtZSBJRC5cbiAgICAgICAgY29uc3QgaWNvbkVsZW1lbnQgPSBpY29uU291cmNlLmNsb25lTm9kZSh0cnVlKSBhcyBFbGVtZW50O1xuICAgICAgICBpY29uRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2lkJyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGljb24gbm9kZSBpcyBpdHNlbGYgYW4gPHN2Zz4gbm9kZSwgY2xvbmUgYW5kIHJldHVybiBpdCBkaXJlY3RseS4gSWYgbm90LCBzZXQgaXQgYXNcbiAgICAgICAgLy8gdGhlIGNvbnRlbnQgb2YgYSBuZXcgPHN2Zz4gbm9kZS5cbiAgICAgICAgaWYgKGljb25FbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdmdBdHRyaWJ1dGVzKGljb25FbGVtZW50IGFzIFNWR0VsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgYSA8c3ltYm9sPiwgaXQgd29uJ3QgYmUgcmVuZGVyZWQgc28gd2UgaGF2ZSB0byBjb252ZXJ0IGl0IGludG8gPHN2Zz4uIE5vdGVcbiAgICAgICAgLy8gdGhhdCB0aGUgc2FtZSBjb3VsZCBiZSBhY2hpZXZlZCBieSByZWZlcnJpbmcgdG8gaXQgdmlhIDx1c2UgaHJlZj1cIiNpZFwiPiwgaG93ZXZlciB0aGUgPHVzZT5cbiAgICAgICAgLy8gdGFnIGlzIHByb2JsZW1hdGljIG9uIEZpcmVmb3gsIGJlY2F1c2UgaXQgbmVlZHMgdG8gaW5jbHVkZSB0aGUgY3VycmVudCBwYWdlIHBhdGguXG4gICAgICAgIGlmIChpY29uRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3ZnQXR0cmlidXRlcyh0aGlzLnRvU3ZnRWxlbWVudChpY29uRWxlbWVudCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlRWxlbWVudCgnU1ZHJykgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkOyB0aGUgRE9NIGVuZHMgdXAgd2l0aFxuICAgICAgICAvLyB0aGUgY29ycmVjdCBub2RlcywgYnV0IHRoZSBTVkcgY29udGVudCBkb2Vzbid0IHJlbmRlci4gSW5zdGVhZCB3ZVxuICAgICAgICAvLyBoYXZlIHRvIGNyZWF0ZSBhbiBlbXB0eSBTVkcgbm9kZSB1c2luZyBpbm5lckhUTUwgYW5kIGFwcGVuZCBpdHMgY29udGVudC5cbiAgICAgICAgLy8gRWxlbWVudHMgY3JlYXRlZCB1c2luZyBET01QYXJzZXIucGFyc2VGcm9tU3RyaW5nIGhhdmUgdGhlIHNhbWUgcHJvYmxlbS5cbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzAwMzI3OC9zdmctaW5uZXJodG1sLWluLWZpcmVmb3gtY2FuLW5vdC1kaXNwbGF5XG4gICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnRWxlbWVudEZyb21TdHJpbmcoJzxzdmc+PC9zdmc+Jyk7XG4gICAgICAgIC8vIENsb25lIHRoZSBub2RlIHNvIHdlIGRvbid0IHJlbW92ZSBpdCBmcm9tIHRoZSBwYXJlbnQgaWNvbiBzZXQgZWxlbWVudC5cbiAgICAgICAgc3ZnLmFwcGVuZENoaWxkKGljb25FbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTdmdBdHRyaWJ1dGVzKHN2Zyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0SWNvbldpdGhOYW1lRnJvbUljb25TZXRDb25maWdzKGljb25OYW1lOiBzdHJpbmcsIGljb25TZXRDb25maWdzOiBTdmdJY29uQ29uZmlnW10pOiBTVkdFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzLCBzbyBpY29uIHNldHMgYWRkZWQgbGF0ZXIgaGF2ZSBwcmVjZWRlbmNlLlxuICAgICAgICBmb3IgKGxldCBpID0gaWNvblNldENvbmZpZ3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGljb25TZXRDb25maWdzW2ldO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5zdmdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRJY29uID0gdGhpcy5leHRyYWN0U3ZnSWNvbkZyb21JY29uU2V0KGNvbmZpZy5zdmdFbGVtZW50LCBpY29uTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kSWNvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRJY29uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN2Z0VsZW1lbnRGcm9tU3RyaW5nKHN0cjogc3RyaW5nKTogU1ZHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG4gICAgICAgIGRpdi5pbm5lckhUTUwgPSBzdHI7XG4gICAgICAgIGNvbnN0IHN2ZyA9IGRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKSBhcyBTVkdFbGVtZW50O1xuXG4gICAgICAgIGlmICghc3ZnKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignPHN2Zz4gdGFnIG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN2ZztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFN2Z0F0dHJpYnV0ZXMoc3ZnOiBTVkdFbGVtZW50KTogU1ZHRWxlbWVudCB7XG4gICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ2ZpdCcsICcnKTtcbiAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzFlbScpO1xuICAgICAgICBzdmcuc2V0QXR0cmlidXRlKCd3aWR0aCcsICcxZW0nKTtcbiAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZSgncHJlc2VydmVBc3BlY3RSYXRpbycsICd4TWlkWU1pZCBtZWV0Jyk7XG4gICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ2ZvY3VzYWJsZScsICdmYWxzZScpOyAvLyBEaXNhYmxlIElFMTEgZGVmYXVsdCBiZWhhdmlvciB0byBtYWtlIFNWR3MgZm9jdXNhYmxlLlxuICAgICAgICByZXR1cm4gc3ZnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3ZnRWxlbWVudEZvclNpbmdsZUljb24ocmVzcG9uc2VUZXh0OiBzdHJpbmcpOiBTVkdFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgc3ZnID0gdGhpcy5zdmdFbGVtZW50RnJvbVN0cmluZyhyZXNwb25zZVRleHQpO1xuICAgICAgICB0aGlzLnNldFN2Z0F0dHJpYnV0ZXMoc3ZnKTtcbiAgICAgICAgcmV0dXJuIHN2ZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTdmdJY29uRnJvbUNvbmZpZyhjb25maWc6IFN2Z0ljb25Db25maWcpOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVcmwoY29uZmlnLnVybCkucGlwZShtYXAoc3ZnVGV4dCA9PiB0aGlzLmNyZWF0ZVN2Z0VsZW1lbnRGb3JTaW5nbGVJY29uKHN2Z1RleHQpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU3ZnSWNvblNldEZyb21Db25maWcoY29uZmlnOiBTdmdJY29uQ29uZmlnKTogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG4gICAgICAgIC8vIElmIHRoZSBTVkcgZm9yIHRoaXMgaWNvbiBzZXQgaGFzIGFscmVhZHkgYmVlbiBwYXJzZWQsIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmIChjb25maWcuc3ZnRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGNvbmZpZy5zdmdFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoVXJsKGNvbmZpZy51cmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoc3ZnVGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgaWNvbiBzZXQgd2FzIHBhcnNlZCBhbmQgY2FjaGVkIGJ5IGFuIGVhcmxpZXIgcmVxdWVzdCwgc28gcGFyc2luZ1xuICAgICAgICAgICAgICAgIC8vIG9ubHkgbmVlZHMgdG8gb2NjdXIgaWYgdGhlIGNhY2hlIGlzIHlldCB1bnNldC5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZy5zdmdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zdmdFbGVtZW50ID0gdGhpcy5zdmdFbGVtZW50RnJvbVN0cmluZyhzdmdUZXh0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnN2Z0VsZW1lbnQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3ZnRnJvbUNvbmZpZyhjb25maWc6IFN2Z0ljb25Db25maWcpOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcbiAgICAgICAgaWYgKGNvbmZpZy5zdmdFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIFNWRyBlbGVtZW50IGZvciB0aGlzIGljb24sIHJldHVybiBhIGNvcHkuXG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5jbG9uZVN2Zyhjb25maWcuc3ZnRWxlbWVudCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGljb24gZnJvbSB0aGUgY29uZmlnJ3MgVVJMLCBjYWNoZSBpdCwgYW5kIHJldHVybiBhIGNvcHkuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkU3ZnSWNvbkZyb21Db25maWcoY29uZmlnKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChzdmcgPT4gKGNvbmZpZy5zdmdFbGVtZW50ID0gc3ZnKSksXG4gICAgICAgICAgICAgICAgbWFwKHN2ZyA9PiB0aGlzLmNsb25lU3ZnKHN2ZykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdmdGcm9tSWNvblNldENvbmZpZ3MobmFtZTogc3RyaW5nLCBpY29uU2V0Q29uZmlnczogU3ZnSWNvbkNvbmZpZ1tdKTogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG4gICAgICAgIC8vIEZvciBhbGwgdGhlIGljb24gc2V0IFNWRyBlbGVtZW50cyB3ZSd2ZSBmZXRjaGVkLCBzZWUgaWYgYW55IGNvbnRhaW4gYW4gaWNvbiB3aXRoIHRoZVxuICAgICAgICAvLyByZXF1ZXN0ZWQgbmFtZS5cbiAgICAgICAgY29uc3QgbmFtZWRJY29uID0gdGhpcy5leHRyYWN0SWNvbldpdGhOYW1lRnJvbUljb25TZXRDb25maWdzKG5hbWUsIGljb25TZXRDb25maWdzKTtcblxuICAgICAgICBpZiAobmFtZWRJY29uKSB7XG4gICAgICAgICAgICAvLyBXZSBjb3VsZCBjYWNoZSBuYW1lZEljb24gaW4gc3ZnSWNvbkNvbmZpZ3MsIGJ1dCBzaW5jZSB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGV2ZXJ5XG4gICAgICAgICAgICAvLyB0aW1lIGFueXdheSwgdGhlcmUncyBwcm9iYWJseSBub3QgbXVjaCBhZHZhbnRhZ2UgY29tcGFyZWQgdG8ganVzdCBhbHdheXMgZXh0cmFjdGluZ1xuICAgICAgICAgICAgLy8gaXQgZnJvbSB0aGUgaWNvbiBzZXQuXG4gICAgICAgICAgICByZXR1cm4gb2YobmFtZWRJY29uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdCBmb3VuZCBpbiBhbnkgY2FjaGVkIGljb24gc2V0cy4gSWYgdGhlcmUgYXJlIGljb24gc2V0cyB3aXRoIFVSTHMgdGhhdCB3ZSBoYXZlbid0XG4gICAgICAgIC8vIGZldGNoZWQsIGZldGNoIHRoZW0gbm93IGFuZCBsb29rIGZvciBpY29uTmFtZSBpbiB0aGUgcmVzdWx0cy5cbiAgICAgICAgY29uc3QgaWNvblNldEZldGNoUmVxdWVzdHM6IE9ic2VydmFibGU8U1ZHRWxlbWVudCB8IG51bGw+W10gPSBpY29uU2V0Q29uZmlnc1xuICAgICAgICAgICAgLmZpbHRlcihpY29uU2V0Q29uZmlnID0+ICFpY29uU2V0Q29uZmlnLnN2Z0VsZW1lbnQpXG4gICAgICAgICAgICAubWFwKGljb25TZXRDb25maWcgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyhpY29uU2V0Q29uZmlnKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKTogT2JzZXJ2YWJsZTxTVkdFbGVtZW50IHwgbnVsbD4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTCwgaWNvblNldENvbmZpZy51cmwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FsbG93IGVycm9ycyBmZXRjaGluZyBpbmRpdmlkdWFsIFVSTHMgc28gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21iaW5lZCBPYnNlcnZhYmxlIHdvbid0IG5lY2Vzc2FyaWx5IGZhaWwuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIGljb24gc2V0IFVSTDogJHt1cmx9IGZhaWxlZDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRmV0Y2ggYWxsIHRoZSBpY29uIHNldCBVUkxzLiBXaGVuIHRoZSByZXF1ZXN0cyBjb21wbGV0ZSwgZXZlcnkgSWNvblNldCBzaG91bGQgaGF2ZSBhXG4gICAgICAgIC8vIGNhY2hlZCBTVkcgZWxlbWVudCAodW5sZXNzIHRoZSByZXF1ZXN0IGZhaWxlZCksIGFuZCB3ZSBjYW4gY2hlY2sgYWdhaW4gZm9yIHRoZSBpY29uLlxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oaWNvblNldEZldGNoUmVxdWVzdHMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kSWNvbiA9IHRoaXMuZXh0cmFjdEljb25XaXRoTmFtZUZyb21JY29uU2V0Q29uZmlncyhuYW1lLCBpY29uU2V0Q29uZmlncyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kSWNvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLmdldEljb25OYW1lTm90Rm91bmRFcnJvcihuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRJY29uO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGludGVybmFsQWRkU3ZnSWNvbkNvbmZpZyhuYW1lc3BhY2U6IHN0cmluZywgaWNvbk5hbWU6IHN0cmluZywgY29uZmlnOiBTdmdJY29uQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc3ZnSWNvbkNvbmZpZ3Muc2V0KHRoaXMuYnVpbGRJY29uS2V5KG5hbWVzcGFjZSwgaWNvbk5hbWUpLCBjb25maWcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRJY29uS2V5KG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSArICc6JyArIG5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNwbGl0SWNvbk5hbWUoaWNvbk5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgICAgICBpZiAoIWljb25OYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gWycnLCAnJ107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFydHMgPSBpY29uTmFtZS5zcGxpdCgnOicpO1xuICAgICAgICBzd2l0Y2ggKHBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJycsIHBhcnRzWzBdXTsgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlLlxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHJldHVybiA8W3N0cmluZywgc3RyaW5nXT5wYXJ0cztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTdmdJY29uU2V0SW5OYW1lc3BhY2UobmFtZXNwYWNlOiBzdHJpbmcsIHVybDogU3ZnUmVzb3VyY2VVcmwpOiB0aGlzIHtcbiAgICAgICAgdXJsID0gaXNTdHJpbmcodXJsKSA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpIDogdXJsO1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbEFkZFN2Z0ljb25TZXQobmFtZXNwYWNlLCBuZXcgU3ZnSWNvbkNvbmZpZyh1cmwpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmt7vliqBTVkflm77moIfpm4bvvIzmt7vliqDliLDpu5jorqTlkb3lkI3nqbrpl7RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvblNldCh1cmw6IFN2Z1Jlc291cmNlVXJsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgnJywgdXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZShuYW1lc3BhY2U6IHN0cmluZywgbGl0ZXJhbDogU2FmZUh0bWwpOiB0aGlzIHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkTGl0ZXJhbCA9IHRoaXMuc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBsaXRlcmFsKTtcblxuICAgICAgICBpZiAoIXNhbml0aXplZExpdGVyYWwpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZ2V0SWNvbkZhaWxlZFRvU2FuaXRpemVMaXRlcmFsRXJyb3IobGl0ZXJhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gdGhpcy5zdmdFbGVtZW50RnJvbVN0cmluZyhzYW5pdGl6ZWRMaXRlcmFsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxBZGRTdmdJY29uU2V0KG5hbWVzcGFjZSwgbmV3IFN2Z0ljb25Db25maWcoc3ZnRWxlbWVudCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTdmdJY29uU2V0TGl0ZXJhbChsaXRlcmFsOiBTYWZlSHRtbCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKCcnLCBsaXRlcmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgUmVnaXN0ZXJzIGFuIGljb24gYnkgVVJMIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlLlxuICAgICAqIEBkZXNjcmlwdGlvbiDmt7vliqDljZXkuKpTVkflm77moIfliLDmjIflrprnmoTlkb3lkI3nqbrpl7RcbiAgICAgKiBAcGFyYW0gbmFtZXNwYWNlIE5hbWVzcGFjZSBpbiB3aGljaCB0aGUgaWNvbiBzaG91bGQgYmUgcmVnaXN0ZXJlZC5cbiAgICAgKiBAcGFyYW0gaWNvbk5hbWUgTmFtZSB1bmRlciB3aGljaCB0aGUgaWNvbiBzaG91bGQgYmUgcmVnaXN0ZXJlZC5cbiAgICAgKiBAcGFyYW0gdXJsXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Jbk5hbWVzcGFjZShuYW1lc3BhY2U6IHN0cmluZywgaWNvbk5hbWU6IHN0cmluZywgdXJsOiBTdmdSZXNvdXJjZVVybCk6IHRoaXMge1xuICAgICAgICB1cmwgPSBpc1N0cmluZyh1cmwpID8gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCkgOiB1cmw7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsQWRkU3ZnSWNvbkNvbmZpZyhuYW1lc3BhY2UsIGljb25OYW1lLCBuZXcgU3ZnSWNvbkNvbmZpZyh1cmwpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgUmVnaXN0ZXJzIGFuIGljb24gYnkgVVJMIGluIHRoZSBkZWZhdWx0IG5hbWVzcGFjZS5cbiAgICAgKiBAZGVzY3JpcHRpb24g5re75Yqg5Y2V5LiqU1ZH5Zu+5qCHXG4gICAgICogQHBhcmFtIGljb25OYW1lIE5hbWUgdW5kZXIgd2hpY2ggdGhlIGljb24gc2hvdWxkIGJlIHJlZ2lzdGVyZWQuXG4gICAgICogQHBhcmFtIHVybFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKGljb25OYW1lOiBzdHJpbmcsIHVybDogU3ZnUmVzb3VyY2VVcmwpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCcnLCBpY29uTmFtZSwgdXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgUmVnaXN0ZXJzIGFuIGljb24gdXNpbmcgYW4gSFRNTCBzdHJpbmcgaW4gdGhlIGRlZmF1bHQgbmFtZXNwYWNlLlxuICAgICAqIEBkZXNjcmlwdGlvbiDmt7vliqDljZXkuKpTVkflm77moIflrZfnrKbkuLLvvIznm7TmjqXkvKDlhaUgU1ZHIEhUTUwg5a2X56ym5LiyXG4gICAgICogQHBhcmFtIGljb25OYW1lIE5hbWUgdW5kZXIgd2hpY2ggdGhlIGljb24gc2hvdWxkIGJlIHJlZ2lzdGVyZWQuXG4gICAgICogQHBhcmFtIGxpdGVyYWwgU1ZHIHNvdXJjZSBvZiB0aGUgaWNvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvbkxpdGVyYWwoaWNvbk5hbWU6IHN0cmluZywgbGl0ZXJhbDogU3ZnSHRtbCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTdmdJY29uTGl0ZXJhbEluTmFtZXNwYWNlKCcnLCBpY29uTmFtZSwgbGl0ZXJhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uLmVuLXVzIFJlZ2lzdGVycyBhbiBpY29uIHVzaW5nIGFuIEhUTUwgc3RyaW5nIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlLlxuICAgICAqIEBkZXNjcmlwdGlvbiDmt7vliqDljZXkuKpTVkflm77moIflrZfnrKbkuLLliLDmjIflrprnmoTlkb3lkI3nqbrpl7TvvIznm7TmjqXkvKDlhaUgU1ZHIEhUTUwg5a2X56ym5LiyXG4gICAgICogQHBhcmFtIG5hbWVzcGFjZSBOYW1lc3BhY2UgaW4gd2hpY2ggdGhlIGljb24gc2hvdWxkIGJlIHJlZ2lzdGVyZWQuXG4gICAgICogQHBhcmFtIGljb25OYW1lIE5hbWUgdW5kZXIgd2hpY2ggdGhlIGljb24gc2hvdWxkIGJlIHJlZ2lzdGVyZWQuXG4gICAgICogQHBhcmFtIGxpdGVyYWwgU1ZHIHNvdXJjZSBvZiB0aGUgaWNvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZShuYW1lc3BhY2U6IHN0cmluZywgaWNvbk5hbWU6IHN0cmluZywgbGl0ZXJhbDogU3ZnSHRtbCk6IHRoaXMge1xuICAgICAgICBsaXRlcmFsID0gaXNTdHJpbmcobGl0ZXJhbCkgPyB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChsaXRlcmFsKSA6IGxpdGVyYWw7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZExpdGVyYWwgPSB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgbGl0ZXJhbCk7XG5cbiAgICAgICAgaWYgKCFzYW5pdGl6ZWRMaXRlcmFsKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmdldEljb25GYWlsZWRUb1Nhbml0aXplTGl0ZXJhbEVycm9yKGxpdGVyYWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3ZnRWxlbWVudCA9IHRoaXMuY3JlYXRlU3ZnRWxlbWVudEZvclNpbmdsZUljb24oc2FuaXRpemVkTGl0ZXJhbCk7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsQWRkU3ZnSWNvbkNvbmZpZyhuYW1lc3BhY2UsIGljb25OYW1lLCBuZXcgU3ZnSWNvbkNvbmZpZyhzdmdFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRGb250U2V0Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRGb250U2V0Q2xhc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvbnRTZXRDbGFzc0J5QWxpYXMoZm9udFNldDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBmb250U2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluafkOS4quWbvuagh1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdmdJY29uKG5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcgPSAnJyk6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuICAgICAgICAvLyBSZXR1cm4gKGNvcHkgb2YpIGNhY2hlZCBpY29uIGlmIHBvc3NpYmxlLlxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkSWNvbktleShuYW1lc3BhY2UsIG5hbWUpO1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnN2Z0ljb25Db25maWdzLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFN2Z0Zyb21Db25maWcoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGFueSBpY29uIHNldHMgcmVnaXN0ZXJlZCBmb3IgdGhlIG5hbWVzcGFjZS5cbiAgICAgICAgY29uc3QgaWNvblNldENvbmZpZ3MgPSB0aGlzLnN2Z0ljb25TZXRDb25maWdzLmdldChuYW1lc3BhY2UpO1xuXG4gICAgICAgIGlmIChpY29uU2V0Q29uZmlncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3ZnRnJvbUljb25TZXRDb25maWdzKG5hbWUsIGljb25TZXRDb25maWdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRoaXMuZ2V0SWNvbk5hbWVOb3RGb3VuZEVycm9yKGtleSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJY29uTW9kZShtb2RlOiBJY29uTW9kZSkge1xuICAgICAgICB0aGlzLmludGVybmFsSWNvbk1vZGUgPSBtb2RlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { take } from 'rxjs/operators';
|
|
2
|
-
import { useHostRenderer } from '@tethys/cdk/dom';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, Renderer2, ViewEncapsulation, numberAttribute, inject } from '@angular/core';
|
|
4
|
-
import { getWhetherPrintErrorWhenIconNotFound } from './config';
|
|
5
|
-
import { ThyIconRegistry } from './icon-registry';
|
|
6
|
-
import { coerceBooleanProperty } from 'ngx-tethys/util';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
const iconSuffixMap = {
|
|
9
|
-
fill: 'fill',
|
|
10
|
-
twotone: 'tt'
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* 图标组件
|
|
14
|
-
* @name thy-icon,[thy-icon]
|
|
15
|
-
* @order 10
|
|
16
|
-
*/
|
|
17
|
-
export class ThyIcon {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.render = inject(Renderer2);
|
|
20
|
-
this.elementRef = inject(ElementRef);
|
|
21
|
-
this.iconRegistry = inject(ThyIconRegistry);
|
|
22
|
-
this.initialized = false;
|
|
23
|
-
/**
|
|
24
|
-
* 图标的类型
|
|
25
|
-
* @type outline | fill | twotone
|
|
26
|
-
*/
|
|
27
|
-
this.iconType = 'outline';
|
|
28
|
-
this.hostRenderer = useHostRenderer();
|
|
29
|
-
}
|
|
30
|
-
ngOnInit() {
|
|
31
|
-
this.updateClasses();
|
|
32
|
-
this.initialized = true;
|
|
33
|
-
}
|
|
34
|
-
ngOnChanges(changes) {
|
|
35
|
-
if (this.initialized) {
|
|
36
|
-
if (changes['iconName'] ||
|
|
37
|
-
changes['iconSet'] ||
|
|
38
|
-
changes['iconTwotoneColor'] ||
|
|
39
|
-
changes['iconType'] ||
|
|
40
|
-
changes['iconLinearGradient']) {
|
|
41
|
-
this.updateClasses();
|
|
42
|
-
}
|
|
43
|
-
else if (changes['iconRotate']) {
|
|
44
|
-
this.setStyleRotate();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
updateClasses() {
|
|
49
|
-
const [namespace, iconName] = this.iconRegistry.splitIconName(this.iconName);
|
|
50
|
-
if (iconName) {
|
|
51
|
-
if (this.iconRegistry.iconMode === 'svg') {
|
|
52
|
-
this.iconRegistry
|
|
53
|
-
.getSvgIcon(this.buildIconNameByType(iconName), namespace)
|
|
54
|
-
.pipe(take(1))
|
|
55
|
-
.subscribe(svg => {
|
|
56
|
-
this.setSvgElement(svg);
|
|
57
|
-
}, (error) => {
|
|
58
|
-
if (getWhetherPrintErrorWhenIconNotFound()) {
|
|
59
|
-
console.error(`Error retrieving icon: ${error.message}`);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
this.hostRenderer.updateClass([`thy-icon${namespace ? `-${namespace}` : ``}-${this.buildIconNameByType(iconName)}`]);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const fontSetClass = this.iconSet
|
|
66
|
-
? this.iconRegistry.getFontSetClassByAlias(this.iconSet)
|
|
67
|
-
: this.iconRegistry.getDefaultFontSetClass();
|
|
68
|
-
this.hostRenderer.updateClass([fontSetClass, `${fontSetClass}-${this.iconName}`]);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
setStyleRotate() {
|
|
73
|
-
if (this.iconRotate !== undefined) {
|
|
74
|
-
this.render.setStyle(this.elementRef.nativeElement.querySelector('svg'), 'transform', `rotate(${this.iconRotate}deg)`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//#region svg element
|
|
78
|
-
setSvgElement(svg) {
|
|
79
|
-
this.clearSvgElement();
|
|
80
|
-
// Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.
|
|
81
|
-
// See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/
|
|
82
|
-
// Do this before inserting the element into the DOM, in order to avoid a style recalculation.
|
|
83
|
-
const styleTags = svg.querySelectorAll('style');
|
|
84
|
-
for (let i = 0; i < styleTags.length; i++) {
|
|
85
|
-
styleTags[i].textContent += ' ';
|
|
86
|
-
}
|
|
87
|
-
if (this.iconType === 'twotone') {
|
|
88
|
-
const allPaths = svg.querySelectorAll('path');
|
|
89
|
-
if (allPaths.length > 1) {
|
|
90
|
-
allPaths.forEach((child, index) => {
|
|
91
|
-
if (child.getAttribute('id').includes('secondary-color')) {
|
|
92
|
-
child.setAttribute('fill', this.iconTwotoneColor);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// Note: we do this fix here, rather than the icon registry, because the
|
|
98
|
-
// references have to point to the URL at the time that the icon was created.
|
|
99
|
-
// if (this._location) {
|
|
100
|
-
// const path = this._location.getPathname();
|
|
101
|
-
// this._previousPath = path;
|
|
102
|
-
// this._cacheChildrenWithExternalReferences(svg);
|
|
103
|
-
// this._prependPathToReferences(path);
|
|
104
|
-
// }
|
|
105
|
-
if (this.iconLinearGradient) {
|
|
106
|
-
this.setBaseUrl(svg);
|
|
107
|
-
this.clearTitleElement(svg);
|
|
108
|
-
}
|
|
109
|
-
this.elementRef.nativeElement.appendChild(svg);
|
|
110
|
-
this.setStyleRotate();
|
|
111
|
-
}
|
|
112
|
-
clearSvgElement() {
|
|
113
|
-
const layoutElement = this.elementRef.nativeElement;
|
|
114
|
-
let childCount = layoutElement.childNodes.length;
|
|
115
|
-
// if (this._elementsWithExternalReferences) {
|
|
116
|
-
// this._elementsWithExternalReferences.clear();
|
|
117
|
-
// }
|
|
118
|
-
// Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that
|
|
119
|
-
// we can't use innerHTML, because IE will throw if the element has a data binding.
|
|
120
|
-
while (childCount--) {
|
|
121
|
-
const child = layoutElement.childNodes[childCount];
|
|
122
|
-
// 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid
|
|
123
|
-
// of any loose text nodes, as well as any SVG elements in order to remove any old icons.
|
|
124
|
-
if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {
|
|
125
|
-
layoutElement.removeChild(child);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//#endregion
|
|
130
|
-
buildIconNameByType(iconName) {
|
|
131
|
-
if (this.iconType && ['fill', 'twotone'].indexOf(this.iconType) >= 0) {
|
|
132
|
-
const suffix = iconSuffixMap[this.iconType];
|
|
133
|
-
return iconName.includes(`-${suffix}`) ? iconName : `${iconName}-${suffix}`;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
return iconName;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Support Safari SVG LinearGradient.
|
|
141
|
-
* @param svg
|
|
142
|
-
*/
|
|
143
|
-
setBaseUrl(svg) {
|
|
144
|
-
const styleElements = svg.querySelectorAll('style');
|
|
145
|
-
styleElements.forEach((n) => {
|
|
146
|
-
if (n.style.cssText.includes('url')) {
|
|
147
|
-
n.style.fill = n.style.fill.replace('url("', 'url("' + location.pathname);
|
|
148
|
-
}
|
|
149
|
-
if (n.style.cssText.includes('clip-path')) {
|
|
150
|
-
n.style.clipPath = n.style.clipPath.replace('url("', 'url("' + location.pathname);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
clearTitleElement(svg) {
|
|
155
|
-
const titleElement = svg.querySelector('title');
|
|
156
|
-
titleElement && titleElement.remove();
|
|
157
|
-
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.13", type: ThyIcon, isStandalone: true, selector: "thy-icon, [thy-icon]", inputs: { iconType: ["thyIconType", "iconType"], iconTwotoneColor: ["thyTwotoneColor", "iconTwotoneColor"], iconName: ["thyIconName", "iconName"], iconRotate: ["thyIconRotate", "iconRotate", numberAttribute], iconSet: ["thyIconSet", "iconSet"], iconLegging: ["thyIconLegging", "iconLegging", coerceBooleanProperty], iconLinearGradient: ["thyIconLinearGradient", "iconLinearGradient", coerceBooleanProperty] }, host: { properties: { "class.thy-icon-legging": "this.iconLegging" }, classAttribute: "thy-icon" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
160
|
-
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyIcon, decorators: [{
|
|
162
|
-
type: Component,
|
|
163
|
-
args: [{
|
|
164
|
-
selector: 'thy-icon, [thy-icon]',
|
|
165
|
-
template: '<ng-content></ng-content>',
|
|
166
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
167
|
-
encapsulation: ViewEncapsulation.None,
|
|
168
|
-
standalone: true,
|
|
169
|
-
host: {
|
|
170
|
-
class: 'thy-icon'
|
|
171
|
-
}
|
|
172
|
-
}]
|
|
173
|
-
}], propDecorators: { iconType: [{
|
|
174
|
-
type: Input,
|
|
175
|
-
args: ['thyIconType']
|
|
176
|
-
}], iconTwotoneColor: [{
|
|
177
|
-
type: Input,
|
|
178
|
-
args: ['thyTwotoneColor']
|
|
179
|
-
}], iconName: [{
|
|
180
|
-
type: Input,
|
|
181
|
-
args: ['thyIconName']
|
|
182
|
-
}], iconRotate: [{
|
|
183
|
-
type: Input,
|
|
184
|
-
args: [{ alias: 'thyIconRotate', transform: numberAttribute }]
|
|
185
|
-
}], iconSet: [{
|
|
186
|
-
type: Input,
|
|
187
|
-
args: ['thyIconSet']
|
|
188
|
-
}], iconLegging: [{
|
|
189
|
-
type: HostBinding,
|
|
190
|
-
args: [`class.thy-icon-legging`]
|
|
191
|
-
}, {
|
|
192
|
-
type: Input,
|
|
193
|
-
args: [{ alias: 'thyIconLegging', transform: coerceBooleanProperty }]
|
|
194
|
-
}], iconLinearGradient: [{
|
|
195
|
-
type: Input,
|
|
196
|
-
args: [{ alias: 'thyIconLinearGradient', transform: coerceBooleanProperty }]
|
|
197
|
-
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWNvbi9pY29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV4RCxNQUFNLGFBQWEsR0FBRztJQUNsQixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxJQUFJO0NBQ2hCLENBQUM7QUFFRjs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLE9BQU87SUFWcEI7UUFXWSxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdkMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFNUI7OztXQUdHO1FBQ21CLGFBQVEsR0FBbUMsU0FBUyxDQUFDO1FBNEJuRSxpQkFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDO0tBc0o1QztJQXBKRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVC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dUJBQUMsYUFBYTtnQkFFTSxnQkFBZ0I7c0JBQXpDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUtGLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFNMkMsVUFBVTtzQkFBeEUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFFeEMsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxZQUFZO2dCQVFuQixXQUFXO3NCQUZWLFdBQVc7dUJBQUMsd0JBQXdCOztzQkFDcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBSXBFLGtCQUFrQjtzQkFEakIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGdldFdoZXRoZXJQcmludEVycm9yV2hlbkljb25Ob3RGb3VuZCB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFRoeUljb25SZWdpc3RyeSB9IGZyb20gJy4vaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5jb25zdCBpY29uU3VmZml4TWFwID0ge1xuICAgIGZpbGw6ICdmaWxsJyxcbiAgICB0d290b25lOiAndHQnXG59O1xuXG4vKipcbiAqIOWbvuagh+e7hOS7tlxuICogQG5hbWUgdGh5LWljb24sW3RoeS1pY29uXVxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWljb24sIFt0aHktaWNvbl0nLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktaWNvbidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoeUljb24gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZW5kZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnkgPSBpbmplY3QoVGh5SWNvblJlZ2lzdHJ5KTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWbvuagh+eahOexu+Wei1xuICAgICAqIEB0eXBlIG91dGxpbmUgfCBmaWxsIHwgdHdvdG9uZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5SWNvblR5cGUnKSBpY29uVHlwZTogJ291dGxpbmUnIHwgJ2ZpbGwnIHwgJ3R3b3RvbmUnID0gJ291dGxpbmUnO1xuXG4gICAgQElucHV0KCd0aHlUd290b25lQ29sb3InKSBpY29uVHdvdG9uZUNvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlm77moIfnmoTlkI3lrZdcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeUljb25OYW1lJykgaWNvbk5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOWbvuagh+eahOaXi+i9rOinkuW6plxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeUljb25Sb3RhdGUnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBpY29uUm90YXRlOiBudW1iZXI7XG5cbiAgICBASW5wdXQoJ3RoeUljb25TZXQnKSBpY29uU2V0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlm77moIfmiZPlupXoibLvvIzplYLnqbrnmoTlm77moIfvvIzkvJrpgI/ov4fpopzoibLmnaVcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LWljb24tbGVnZ2luZ2ApXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlJY29uTGVnZ2luZycsIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgaWNvbkxlZ2dpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeUljb25MaW5lYXJHcmFkaWVudCcsIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgaWNvbkxpbmVhckdyYWRpZW50OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNoYW5nZXNbJ2ljb25OYW1lJ10gfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzWydpY29uU2V0J10gfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzWydpY29uVHdvdG9uZUNvbG9yJ10gfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzWydpY29uVHlwZSddIHx8XG4gICAgICAgICAgICAgICAgY2hhbmdlc1snaWNvbkxpbmVhckdyYWRpZW50J11cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzWydpY29uUm90YXRlJ10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0eWxlUm90YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNsYXNzZXMoKSB7XG4gICAgICAgIGNvbnN0IFtuYW1lc3BhY2UsIGljb25OYW1lXSA9IHRoaXMuaWNvblJlZ2lzdHJ5LnNwbGl0SWNvbk5hbWUodGhpcy5pY29uTmFtZSk7XG4gICAgICAgIGlmIChpY29uTmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaWNvblJlZ2lzdHJ5Lmljb25Nb2RlID09PSAnc3ZnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaWNvblJlZ2lzdHJ5XG4gICAgICAgICAgICAgICAgICAgIC5nZXRTdmdJY29uKHRoaXMuYnVpbGRJY29uTmFtZUJ5VHlwZShpY29uTmFtZSksIG5hbWVzcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2ZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdmdFbGVtZW50KHN2Zyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRXaGV0aGVyUHJpbnRFcnJvcldoZW5JY29uTm90Rm91bmQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciByZXRyaWV2aW5nIGljb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3MoW2B0aHktaWNvbiR7bmFtZXNwYWNlID8gYC0ke25hbWVzcGFjZX1gIDogYGB9LSR7dGhpcy5idWlsZEljb25OYW1lQnlUeXBlKGljb25OYW1lKX1gXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvbnRTZXRDbGFzcyA9IHRoaXMuaWNvblNldFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuaWNvblJlZ2lzdHJ5LmdldEZvbnRTZXRDbGFzc0J5QWxpYXModGhpcy5pY29uU2V0KVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaWNvblJlZ2lzdHJ5LmdldERlZmF1bHRGb250U2V0Q2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhbZm9udFNldENsYXNzLCBgJHtmb250U2V0Q2xhc3N9LSR7dGhpcy5pY29uTmFtZX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFN0eWxlUm90YXRlKCkge1xuICAgICAgICBpZiAodGhpcy5pY29uUm90YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLCAndHJhbnNmb3JtJywgYHJvdGF0ZSgke3RoaXMuaWNvblJvdGF0ZX1kZWcpYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNyZWdpb24gc3ZnIGVsZW1lbnRcblxuICAgIHByaXZhdGUgc2V0U3ZnRWxlbWVudChzdmc6IFNWR0VsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhclN2Z0VsZW1lbnQoKTtcblxuICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBJRTExIGFuZCBFZGdlIGlnbm9yaW5nIGBzdHlsZWAgdGFncyBpbnNpZGUgZHluYW1pY2FsbHktY3JlYXRlZCBTVkdzLlxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vZW4tdXMvbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzEwODk4NDY5L1xuICAgICAgICAvLyBEbyB0aGlzIGJlZm9yZSBpbnNlcnRpbmcgdGhlIGVsZW1lbnQgaW50byB0aGUgRE9NLCBpbiBvcmRlciB0byBhdm9pZCBhIHN0eWxlIHJlY2FsY3VsYXRpb24uXG4gICAgICAgIGNvbnN0IHN0eWxlVGFncyA9IHN2Zy5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpIGFzIE5vZGVMaXN0T2Y8SFRNTFN0eWxlRWxlbWVudD47XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZVRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN0eWxlVGFnc1tpXS50ZXh0Q29udGVudCArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pY29uVHlwZSA9PT0gJ3R3b3RvbmUnKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxQYXRocyA9IHN2Zy5xdWVyeVNlbGVjdG9yQWxsKCdwYXRoJyk7XG4gICAgICAgICAgICBpZiAoYWxsUGF0aHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGFsbFBhdGhzLmZvckVhY2goKGNoaWxkLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5nZXRBdHRyaWJ1dGUoJ2lkJykuaW5jbHVkZXMoJ3NlY29uZGFyeS1jb2xvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmljb25Ud290b25lQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RlOiB3ZSBkbyB0aGlzIGZpeCBoZXJlLCByYXRoZXIgdGhhbiB0aGUgaWNvbiByZWdpc3RyeSwgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gcmVmZXJlbmNlcyBoYXZlIHRvIHBvaW50IHRvIHRoZSBVUkwgYXQgdGhlIHRpbWUgdGhhdCB0aGUgaWNvbiB3YXMgY3JlYXRlZC5cbiAgICAgICAgLy8gaWYgKHRoaXMuX2xvY2F0aW9uKSB7XG4gICAgICAgIC8vICAgICBjb25zdCBwYXRoID0gdGhpcy5fbG9jYXRpb24uZ2V0UGF0aG5hbWUoKTtcbiAgICAgICAgLy8gICAgIHRoaXMuX3ByZXZpb3VzUGF0aCA9IHBhdGg7XG4gICAgICAgIC8vICAgICB0aGlzLl9jYWNoZUNoaWxkcmVuV2l0aEV4dGVybmFsUmVmZXJlbmNlcyhzdmcpO1xuICAgICAgICAvLyAgICAgdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMocGF0aCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMuaWNvbkxpbmVhckdyYWRpZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNldEJhc2VVcmwoc3ZnKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaXRsZUVsZW1lbnQoc3ZnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHN2Zyk7XG4gICAgICAgIHRoaXMuc2V0U3R5bGVSb3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyU3ZnRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgbGF5b3V0RWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IGNoaWxkQ291bnQgPSBsYXlvdXRFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICAgIC8vIGlmICh0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcy5jbGVhcigpO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIG5vbi1lbGVtZW50IGNoaWxkIG5vZGVzIGFuZCBTVkdzLCBhbmQgYWRkIHRoZSBuZXcgU1ZHIGVsZW1lbnQuIE5vdGUgdGhhdFxuICAgICAgICAvLyB3ZSBjYW4ndCB1c2UgaW5uZXJIVE1MLCBiZWNhdXNlIElFIHdpbGwgdGhyb3cgaWYgdGhlIGVsZW1lbnQgaGFzIGEgZGF0YSBiaW5kaW5nLlxuICAgICAgICB3aGlsZSAoY2hpbGRDb3VudC0tKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGxheW91dEVsZW1lbnQuY2hpbGROb2Rlc1tjaGlsZENvdW50XTtcblxuICAgICAgICAgICAgLy8gMSBjb3JyZXNwb25kcyB0byBOb2RlLkVMRU1FTlRfTk9ERS4gV2UgcmVtb3ZlIGFsbCBub24tZWxlbWVudCBub2RlcyBpbiBvcmRlciB0byBnZXQgcmlkXG4gICAgICAgICAgICAvLyBvZiBhbnkgbG9vc2UgdGV4dCBub2RlcywgYXMgd2VsbCBhcyBhbnkgU1ZHIGVsZW1lbnRzIGluIG9yZGVyIHRvIHJlbW92ZSBhbnkgb2xkIGljb25zLlxuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlICE9PSAxIHx8IGNoaWxkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0RWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIHByaXZhdGUgYnVpbGRJY29uTmFtZUJ5VHlwZShpY29uTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmljb25UeXBlICYmIFsnZmlsbCcsICd0d290b25lJ10uaW5kZXhPZih0aGlzLmljb25UeXBlKSA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSBpY29uU3VmZml4TWFwW3RoaXMuaWNvblR5cGVdO1xuICAgICAgICAgICAgcmV0dXJuIGljb25OYW1lLmluY2x1ZGVzKGAtJHtzdWZmaXh9YCkgPyBpY29uTmFtZSA6IGAke2ljb25OYW1lfS0ke3N1ZmZpeH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGljb25OYW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3VwcG9ydCBTYWZhcmkgU1ZHIExpbmVhckdyYWRpZW50LlxuICAgICAqIEBwYXJhbSBzdmdcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEJhc2VVcmwoc3ZnOiBTVkdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHN0eWxlRWxlbWVudHMgPSBzdmcucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGVFbGVtZW50cy5mb3JFYWNoKChuOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKG4uc3R5bGUuY3NzVGV4dC5pbmNsdWRlcygndXJsJykpIHtcbiAgICAgICAgICAgICAgICBuLnN0eWxlLmZpbGwgPSBuLnN0eWxlLmZpbGwucmVwbGFjZSgndXJsKFwiJywgJ3VybChcIicgKyBsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobi5zdHlsZS5jc3NUZXh0LmluY2x1ZGVzKCdjbGlwLXBhdGgnKSkge1xuICAgICAgICAgICAgICAgIG4uc3R5bGUuY2xpcFBhdGggPSBuLnN0eWxlLmNsaXBQYXRoLnJlcGxhY2UoJ3VybChcIicsICd1cmwoXCInICsgbG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVGl0bGVFbGVtZW50KHN2ZzogU1ZHRWxlbWVudCkge1xuICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSBzdmcucXVlcnlTZWxlY3RvcigndGl0bGUnKTtcbiAgICAgICAgdGl0bGVFbGVtZW50ICYmIHRpdGxlRWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG59XG4iXX0=
|