@edm-sdui/sdui 1.0.69 → 1.0.70
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/edm-sdui-sdui-1.0.70.tgz +0 -0
- package/fesm2022/edm-sdui-sdui.mjs +1360 -516
- package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
- package/package.json +6 -7
- package/types/edm-sdui-sdui.d.ts +1560 -0
- package/types/edm-sdui-sdui.d.ts.map +1 -0
- package/edm-sdui-sdui-1.0.69.tgz +0 -0
- package/edm-sdui-sdui.d.ts.map +0 -1
- package/esm2022/edm-sdui-sdui.mjs +0 -5
- package/esm2022/lib/components/navigation-controls/navigation-controls.component.mjs +0 -27
- package/esm2022/lib/components/uicomponent/button/button.component.mjs +0 -56
- package/esm2022/lib/components/uicomponent/column/column.component.mjs +0 -27
- package/esm2022/lib/components/uicomponent/image/image.component.mjs +0 -61
- package/esm2022/lib/components/uicomponent/image/ranking-svg.mjs +0 -186
- package/esm2022/lib/components/uicomponent/label/label.component.mjs +0 -97
- package/esm2022/lib/components/uicomponent/media-type/media-type.component.mjs +0 -71
- package/esm2022/lib/components/uicomponent/modal/modal.component.mjs +0 -30
- package/esm2022/lib/components/uicomponent/picker/picker.component.mjs +0 -56
- package/esm2022/lib/components/uicomponent/picker-item/picker-item.component.mjs +0 -34
- package/esm2022/lib/components/uicomponent/profile-button/profile-button.component.mjs +0 -115
- package/esm2022/lib/components/uicomponent/progress-bar/progress-bar.component.mjs +0 -42
- package/esm2022/lib/components/uicomponent/row/row.component.mjs +0 -22
- package/esm2022/lib/components/uicomponent/row-divisor/row-divisor.component.mjs +0 -22
- package/esm2022/lib/components/uicomponent/scrollable-column/scrollable-column.component.mjs +0 -33
- package/esm2022/lib/components/uicomponent/scrollable-row/scrollable-row.component.mjs +0 -131
- package/esm2022/lib/components/uicomponent/search-bar/search-bar.component.mjs +0 -102
- package/esm2022/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.mjs +0 -139
- package/esm2022/lib/components/uicomponent/space/space.component.mjs +0 -20
- package/esm2022/lib/components/uicomponent/tag/tag.component.mjs +0 -59
- package/esm2022/lib/components/uicomponent/tags-row/tag/tag.component.mjs +0 -282
- package/esm2022/lib/components/uicomponent/tags-row/tags-row.component.mjs +0 -178
- package/esm2022/lib/components/uicomponent/uicomponent.component.mjs +0 -52
- package/esm2022/lib/components/uicomponent/zstack/zstack.component.mjs +0 -23
- package/esm2022/lib/components/uilayout/centered-content-layout/centered-content-layout.component.mjs +0 -24
- package/esm2022/lib/components/uilayout/fab/fab.component.mjs +0 -42
- package/esm2022/lib/components/uilayout/single-column-layout/single-column-layout.component.mjs +0 -22
- package/esm2022/lib/components/uilayout/uinavigation/uinavigation.component.mjs +0 -15
- package/esm2022/lib/components/uiscreen/uiscreen.component.mjs +0 -31
- package/esm2022/lib/core/services/font-size-mapping.service.mjs +0 -30
- package/esm2022/lib/core/services/modal.service.mjs +0 -30
- package/esm2022/lib/core/services/scroll-spy.service.mjs +0 -102
- package/esm2022/lib/core/services/translation.service.mjs +0 -53
- package/esm2022/lib/core/services/ui-action-handlers.service.mjs +0 -17
- package/esm2022/lib/core/services/ui-action.service.mjs +0 -112
- package/esm2022/lib/core/services/uiscreen.service.mjs +0 -205
- package/esm2022/lib/core/tokens/sdui-config.token.mjs +0 -4
- package/esm2022/lib/core/uicomposition/enums/uicomponent-type.mjs +0 -36
- package/esm2022/lib/core/uicomposition/enums/uiplatform-type.mjs +0 -7
- package/esm2022/lib/core/uicomposition/enums/uiscene.mjs +0 -5
- package/esm2022/lib/core/uicomposition/enums/uiscreen-container-type.mjs +0 -6
- package/esm2022/lib/core/uicomposition/enums/uiscreen-identifier.mjs +0 -6
- package/esm2022/lib/core/uicomposition/mapping/component-mapping.mjs +0 -36
- package/esm2022/lib/core/uicomposition/models/uicentered-content-layout.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uicomponent.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uielement.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uilayout.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uinavigation.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uiscreen-config.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uiscreen.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uisingle-column-layout.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uitag.mjs +0 -2
- package/esm2022/lib/core/uicomposition/models/uiview.mjs +0 -2
- package/esm2022/lib/core/uitheme/enums/uiaction-type.mjs +0 -17
- package/esm2022/lib/core/uitheme/enums/uialignment-type.mjs +0 -7
- package/esm2022/lib/core/uitheme/enums/uiaspect-type.mjs +0 -6
- package/esm2022/lib/core/uitheme/enums/uiasset.mjs +0 -437
- package/esm2022/lib/core/uitheme/enums/uicolor.mjs +0 -157
- package/esm2022/lib/core/uitheme/enums/uicontent-type.mjs +0 -11
- package/esm2022/lib/core/uitheme/enums/uidimension.mjs +0 -49
- package/esm2022/lib/core/uitheme/enums/uijustify.mjs +0 -9
- package/esm2022/lib/core/uitheme/enums/uipadding-level.mjs +0 -12
- package/esm2022/lib/core/uitheme/enums/uipresentation-style.mjs +0 -7
- package/esm2022/lib/core/uitheme/enums/uiradius-level.mjs +0 -10
- package/esm2022/lib/core/uitheme/enums/uishadow-blur-radius.mjs +0 -5
- package/esm2022/lib/core/uitheme/enums/uishadow-offset.mjs +0 -5
- package/esm2022/lib/core/uitheme/enums/uisize.mjs +0 -22
- package/esm2022/lib/core/uitheme/enums/uispacing-level.mjs +0 -10
- package/esm2022/lib/core/uitheme/enums/uitext-style.mjs +0 -15
- package/esm2022/lib/core/uitheme/mapping/alignment-mapping.mjs +0 -7
- package/esm2022/lib/core/uitheme/mapping/aspect-mapping.mjs +0 -6
- package/esm2022/lib/core/uitheme/mapping/asset-mapping.mjs +0 -437
- package/esm2022/lib/core/uitheme/mapping/color-mapping.mjs +0 -157
- package/esm2022/lib/core/uitheme/mapping/dimension-mapping.mjs +0 -51
- package/esm2022/lib/core/uitheme/mapping/justify-mapping.mjs +0 -9
- package/esm2022/lib/core/uitheme/mapping/pad-mapping.mjs +0 -12
- package/esm2022/lib/core/uitheme/mapping/radius-mapping.mjs +0 -10
- package/esm2022/lib/core/uitheme/mapping/shadow-mapping.mjs +0 -9
- package/esm2022/lib/core/uitheme/mapping/size-mapping.mjs +0 -26
- package/esm2022/lib/core/uitheme/mapping/space-mapping.mjs +0 -10
- package/esm2022/lib/core/uitheme/mapping/text-style-mapping.mjs +0 -33
- package/esm2022/lib/core/uitheme/models/uiaction.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uialignment.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uibackground.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uicontent-inset.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uihover.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uipadding.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uiradius.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uishadow.mjs +0 -2
- package/esm2022/lib/core/uitheme/models/uispacing.mjs +0 -2
- package/esm2022/lib/core/utils/url-parser.util.mjs +0 -26
- package/esm2022/lib/core/view-models/uiscreen.viewmodel.mjs +0 -106
- package/esm2022/lib/directives/uiview.directive.mjs +0 -401
- package/esm2022/lib/sdui-routing.module.mjs +0 -28
- package/esm2022/lib/sdui.component.mjs +0 -51
- package/esm2022/lib/sdui.module.mjs +0 -139
- package/esm2022/public-api.mjs +0 -13
- package/index.d.ts +0 -6
- package/lib/components/navigation-controls/navigation-controls.component.d.ts +0 -12
- package/lib/components/navigation-controls/navigation-controls.component.d.ts.map +0 -1
- package/lib/components/uicomponent/button/button.component.d.ts +0 -19
- package/lib/components/uicomponent/button/button.component.d.ts.map +0 -1
- package/lib/components/uicomponent/column/column.component.d.ts +0 -12
- package/lib/components/uicomponent/column/column.component.d.ts.map +0 -1
- package/lib/components/uicomponent/image/image.component.d.ts +0 -18
- package/lib/components/uicomponent/image/image.component.d.ts.map +0 -1
- package/lib/components/uicomponent/image/ranking-svg.d.ts +0 -2
- package/lib/components/uicomponent/image/ranking-svg.d.ts.map +0 -1
- package/lib/components/uicomponent/label/label.component.d.ts +0 -18
- package/lib/components/uicomponent/label/label.component.d.ts.map +0 -1
- package/lib/components/uicomponent/media-type/media-type.component.d.ts +0 -24
- package/lib/components/uicomponent/media-type/media-type.component.d.ts.map +0 -1
- package/lib/components/uicomponent/modal/modal.component.d.ts +0 -15
- package/lib/components/uicomponent/modal/modal.component.d.ts.map +0 -1
- package/lib/components/uicomponent/picker/picker.component.d.ts +0 -22
- package/lib/components/uicomponent/picker/picker.component.d.ts.map +0 -1
- package/lib/components/uicomponent/picker-item/picker-item.component.d.ts +0 -16
- package/lib/components/uicomponent/picker-item/picker-item.component.d.ts.map +0 -1
- package/lib/components/uicomponent/profile-button/profile-button.component.d.ts +0 -22
- package/lib/components/uicomponent/profile-button/profile-button.component.d.ts.map +0 -1
- package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts +0 -15
- package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts.map +0 -1
- package/lib/components/uicomponent/row/row.component.d.ts +0 -11
- package/lib/components/uicomponent/row/row.component.d.ts.map +0 -1
- package/lib/components/uicomponent/row-divisor/row-divisor.component.d.ts +0 -11
- package/lib/components/uicomponent/row-divisor/row-divisor.component.d.ts.map +0 -1
- package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts +0 -15
- package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts.map +0 -1
- package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts +0 -29
- package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts.map +0 -1
- package/lib/components/uicomponent/search-bar/search-bar.component.d.ts +0 -19
- package/lib/components/uicomponent/search-bar/search-bar.component.d.ts.map +0 -1
- package/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.d.ts +0 -22
- package/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.d.ts.map +0 -1
- package/lib/components/uicomponent/space/space.component.d.ts +0 -11
- package/lib/components/uicomponent/space/space.component.d.ts.map +0 -1
- package/lib/components/uicomponent/tag/tag.component.d.ts +0 -19
- package/lib/components/uicomponent/tag/tag.component.d.ts.map +0 -1
- package/lib/components/uicomponent/tags-row/tag/tag.component.d.ts +0 -39
- package/lib/components/uicomponent/tags-row/tag/tag.component.d.ts.map +0 -1
- package/lib/components/uicomponent/tags-row/tags-row.component.d.ts +0 -37
- package/lib/components/uicomponent/tags-row/tags-row.component.d.ts.map +0 -1
- package/lib/components/uicomponent/uicomponent.component.d.ts +0 -18
- package/lib/components/uicomponent/uicomponent.component.d.ts.map +0 -1
- package/lib/components/uicomponent/zstack/zstack.component.d.ts +0 -11
- package/lib/components/uicomponent/zstack/zstack.component.d.ts.map +0 -1
- package/lib/components/uilayout/centered-content-layout/centered-content-layout.component.d.ts +0 -11
- package/lib/components/uilayout/centered-content-layout/centered-content-layout.component.d.ts.map +0 -1
- package/lib/components/uilayout/fab/fab.component.d.ts +0 -17
- package/lib/components/uilayout/fab/fab.component.d.ts.map +0 -1
- package/lib/components/uilayout/single-column-layout/single-column-layout.component.d.ts +0 -10
- package/lib/components/uilayout/single-column-layout/single-column-layout.component.d.ts.map +0 -1
- package/lib/components/uilayout/uinavigation/uinavigation.component.d.ts +0 -8
- package/lib/components/uilayout/uinavigation/uinavigation.component.d.ts.map +0 -1
- package/lib/components/uiscreen/uiscreen.component.d.ts +0 -13
- package/lib/components/uiscreen/uiscreen.component.d.ts.map +0 -1
- package/lib/core/services/font-size-mapping.service.d.ts +0 -10
- package/lib/core/services/font-size-mapping.service.d.ts.map +0 -1
- package/lib/core/services/modal.service.d.ts +0 -11
- package/lib/core/services/modal.service.d.ts.map +0 -1
- package/lib/core/services/scroll-spy.service.d.ts +0 -31
- package/lib/core/services/scroll-spy.service.d.ts.map +0 -1
- package/lib/core/services/translation.service.d.ts +0 -13
- package/lib/core/services/translation.service.d.ts.map +0 -1
- package/lib/core/services/ui-action-handlers.service.d.ts +0 -9
- package/lib/core/services/ui-action-handlers.service.d.ts.map +0 -1
- package/lib/core/services/ui-action.service.d.ts +0 -17
- package/lib/core/services/ui-action.service.d.ts.map +0 -1
- package/lib/core/services/uiscreen.service.d.ts +0 -26
- package/lib/core/services/uiscreen.service.d.ts.map +0 -1
- package/lib/core/tokens/sdui-config.token.d.ts +0 -4
- package/lib/core/tokens/sdui-config.token.d.ts.map +0 -1
- package/lib/core/uicomposition/enums/uicomponent-type.d.ts +0 -26
- package/lib/core/uicomposition/enums/uicomponent-type.d.ts.map +0 -1
- package/lib/core/uicomposition/enums/uiplatform-type.d.ts +0 -6
- package/lib/core/uicomposition/enums/uiplatform-type.d.ts.map +0 -1
- package/lib/core/uicomposition/enums/uiscene.d.ts +0 -4
- package/lib/core/uicomposition/enums/uiscene.d.ts.map +0 -1
- package/lib/core/uicomposition/enums/uiscreen-container-type.d.ts +0 -5
- package/lib/core/uicomposition/enums/uiscreen-container-type.d.ts.map +0 -1
- package/lib/core/uicomposition/enums/uiscreen-identifier.d.ts +0 -5
- package/lib/core/uicomposition/enums/uiscreen-identifier.d.ts.map +0 -1
- package/lib/core/uicomposition/mapping/component-mapping.d.ts +0 -4
- package/lib/core/uicomposition/mapping/component-mapping.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uicentered-content-layout.d.ts +0 -11
- package/lib/core/uicomposition/models/uicentered-content-layout.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uicomponent.d.ts +0 -12
- package/lib/core/uicomposition/models/uicomponent.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uielement.d.ts +0 -28
- package/lib/core/uicomposition/models/uielement.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uilayout.d.ts +0 -4
- package/lib/core/uicomposition/models/uilayout.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uinavigation.d.ts +0 -6
- package/lib/core/uicomposition/models/uinavigation.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uiscreen-config.d.ts +0 -6
- package/lib/core/uicomposition/models/uiscreen-config.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uiscreen.d.ts +0 -20
- package/lib/core/uicomposition/models/uiscreen.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uisingle-column-layout.d.ts +0 -12
- package/lib/core/uicomposition/models/uisingle-column-layout.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uitag.d.ts +0 -6
- package/lib/core/uicomposition/models/uitag.d.ts.map +0 -1
- package/lib/core/uicomposition/models/uiview.d.ts +0 -33
- package/lib/core/uicomposition/models/uiview.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uiaction-type.d.ts +0 -13
- package/lib/core/uitheme/enums/uiaction-type.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uialignment-type.d.ts +0 -6
- package/lib/core/uitheme/enums/uialignment-type.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uiaspect-type.d.ts +0 -5
- package/lib/core/uitheme/enums/uiaspect-type.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uiasset.d.ts +0 -436
- package/lib/core/uitheme/enums/uiasset.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uicolor.d.ts +0 -156
- package/lib/core/uitheme/enums/uicolor.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uicontent-type.d.ts +0 -10
- package/lib/core/uitheme/enums/uicontent-type.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uidimension.d.ts +0 -48
- package/lib/core/uitheme/enums/uidimension.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uijustify.d.ts +0 -8
- package/lib/core/uitheme/enums/uijustify.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uipadding-level.d.ts +0 -11
- package/lib/core/uitheme/enums/uipadding-level.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uipresentation-style.d.ts +0 -6
- package/lib/core/uitheme/enums/uipresentation-style.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uiradius-level.d.ts +0 -9
- package/lib/core/uitheme/enums/uiradius-level.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uishadow-blur-radius.d.ts +0 -4
- package/lib/core/uitheme/enums/uishadow-blur-radius.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uishadow-offset.d.ts +0 -4
- package/lib/core/uitheme/enums/uishadow-offset.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uisize.d.ts +0 -21
- package/lib/core/uitheme/enums/uisize.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uispacing-level.d.ts +0 -9
- package/lib/core/uitheme/enums/uispacing-level.d.ts.map +0 -1
- package/lib/core/uitheme/enums/uitext-style.d.ts +0 -14
- package/lib/core/uitheme/enums/uitext-style.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/alignment-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/alignment-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/aspect-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/aspect-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/asset-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/asset-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/color-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/color-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/dimension-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/dimension-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/justify-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/justify-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/pad-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/pad-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/radius-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/radius-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/shadow-mapping.d.ts +0 -5
- package/lib/core/uitheme/mapping/shadow-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/size-mapping.d.ts +0 -12
- package/lib/core/uitheme/mapping/size-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/space-mapping.d.ts +0 -3
- package/lib/core/uitheme/mapping/space-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/mapping/text-style-mapping.d.ts +0 -5
- package/lib/core/uitheme/mapping/text-style-mapping.d.ts.map +0 -1
- package/lib/core/uitheme/models/uiaction.d.ts +0 -10
- package/lib/core/uitheme/models/uiaction.d.ts.map +0 -1
- package/lib/core/uitheme/models/uialignment.d.ts +0 -5
- package/lib/core/uitheme/models/uialignment.d.ts.map +0 -1
- package/lib/core/uitheme/models/uibackground.d.ts +0 -7
- package/lib/core/uitheme/models/uibackground.d.ts.map +0 -1
- package/lib/core/uitheme/models/uicontent-inset.d.ts +0 -8
- package/lib/core/uitheme/models/uicontent-inset.d.ts.map +0 -1
- package/lib/core/uitheme/models/uihover.d.ts +0 -4
- package/lib/core/uitheme/models/uihover.d.ts.map +0 -1
- package/lib/core/uitheme/models/uipadding.d.ts +0 -8
- package/lib/core/uitheme/models/uipadding.d.ts.map +0 -1
- package/lib/core/uitheme/models/uiradius.d.ts +0 -8
- package/lib/core/uitheme/models/uiradius.d.ts.map +0 -1
- package/lib/core/uitheme/models/uishadow.d.ts +0 -11
- package/lib/core/uitheme/models/uishadow.d.ts.map +0 -1
- package/lib/core/uitheme/models/uispacing.d.ts +0 -5
- package/lib/core/uitheme/models/uispacing.d.ts.map +0 -1
- package/lib/core/utils/url-parser.util.d.ts +0 -3
- package/lib/core/utils/url-parser.util.d.ts.map +0 -1
- package/lib/core/view-models/uiscreen.viewmodel.d.ts +0 -39
- package/lib/core/view-models/uiscreen.viewmodel.d.ts.map +0 -1
- package/lib/directives/uiview.directive.d.ts +0 -54
- package/lib/directives/uiview.directive.d.ts.map +0 -1
- package/lib/sdui-routing.module.d.ts +0 -10
- package/lib/sdui-routing.module.d.ts.map +0 -1
- package/lib/sdui.component.d.ts +0 -17
- package/lib/sdui.component.d.ts.map +0 -1
- package/lib/sdui.module.d.ts +0 -47
- package/lib/sdui.module.d.ts.map +0 -1
- package/public-api.d.ts +0 -7
- package/public-api.d.ts.map +0 -1
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Inject, Renderer2, ViewChild } from "@angular/core";
|
|
2
|
-
import { colorMapping } from "../../../core/uitheme/mapping/color-mapping";
|
|
3
|
-
import { textStyleMappingLineHeight } from "../../../core/uitheme/mapping/text-style-mapping";
|
|
4
|
-
import { FontSizeMappingService } from "../../../core/services/font-size-mapping.service";
|
|
5
|
-
import { UISize } from "../../../core/uitheme/enums/uisize";
|
|
6
|
-
import { sizeMappingHeight } from "../../../core/uitheme/mapping/size-mapping";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../core/services/font-size-mapping.service";
|
|
9
|
-
import * as i2 from "@angular/common";
|
|
10
|
-
import * as i3 from "../../../directives/uiview.directive";
|
|
11
|
-
export class TagComponent {
|
|
12
|
-
constructor(uiComponent, renderer, fontSizeMappingService) {
|
|
13
|
-
this.uiComponent = uiComponent;
|
|
14
|
-
this.renderer = renderer;
|
|
15
|
-
this.fontSizeMappingService = fontSizeMappingService;
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
}
|
|
19
|
-
ngAfterViewInit() {
|
|
20
|
-
if (this.uiComponent.element) {
|
|
21
|
-
this.applyElement(this.uiComponent.element);
|
|
22
|
-
}
|
|
23
|
-
if (this.uiComponent.element) {
|
|
24
|
-
this.applyLabelElement(this.uiComponent.element);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
applyElement(element) {
|
|
28
|
-
}
|
|
29
|
-
applyLabelElement(element) {
|
|
30
|
-
if (element.textColor) {
|
|
31
|
-
const color = colorMapping[element.textColor];
|
|
32
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'color', color);
|
|
33
|
-
}
|
|
34
|
-
const textStyleMappingFontSize = this.fontSizeMappingService.getMapping();
|
|
35
|
-
if (element.textStyle) {
|
|
36
|
-
const fontSize = textStyleMappingFontSize[element.textStyle];
|
|
37
|
-
const lineHeight = textStyleMappingLineHeight[element.textStyle];
|
|
38
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'font-size', fontSize);
|
|
39
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'line-height', lineHeight);
|
|
40
|
-
}
|
|
41
|
-
this.renderer.setStyle(this.tagElementRef.nativeElement, 'height', sizeMappingHeight[UISize.ASSET_8]);
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TagComponent, isStandalone: false, selector: "edm-sdui-tag", viewQueries: [{ propertyName: "tagElementRef", first: true, predicate: ["tagElement"], descendants: true }, { propertyName: "tagNameElementRef", first: true, predicate: ["tagNameElement"], descendants: true }], ngImport: i0, template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>", styles: [":host{display:contents}.tag{padding:4px 8px;display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagComponent, decorators: [{
|
|
47
|
-
type: Component,
|
|
48
|
-
args: [{ standalone: false, selector: 'edm-sdui-tag', template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>", styles: [":host{display:contents}.tag{padding:4px 8px;display:flex;align-items:center}\n"] }]
|
|
49
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
50
|
-
type: Inject,
|
|
51
|
-
args: ['uiComponent']
|
|
52
|
-
}] }, { type: i0.Renderer2 }, { type: i1.FontSizeMappingService }], propDecorators: { tagElementRef: [{
|
|
53
|
-
type: ViewChild,
|
|
54
|
-
args: ['tagElement']
|
|
55
|
-
}], tagNameElementRef: [{
|
|
56
|
-
type: ViewChild,
|
|
57
|
-
args: ['tagNameElement']
|
|
58
|
-
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQStCLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7OztBQVEvRSxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3BELENBQUM7SUFFTCxRQUFRO0lBRVIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBa0I7SUFFdkMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQWtCO1FBQzFDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQ3BDLFdBQVcsRUFDWCxRQUFRLENBQ1QsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQzsrR0FoRFUsWUFBWSxrQkFLYixhQUFhO21HQUxaLFlBQVksNFJDZnpCLGlNQUVNOzs0RkRhTyxZQUFZO2tCQU54QixTQUFTO2lDQUdJLEtBQUssWUFDUCxjQUFjOzswQkFPckIsTUFBTTsyQkFBQyxhQUFhO3NHQUpFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTSxpQkFBaUI7c0JBQTdDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVUlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWllbGVtZW50XCI7XG5pbXBvcnQgeyBjb2xvck1hcHBpbmcgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZ1wiO1xuaW1wb3J0IHsgZ2V0VGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplLCB0ZXh0U3R5bGVNYXBwaW5nTGluZUhlaWdodCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy90ZXh0LXN0eWxlLW1hcHBpbmdcIjtcbmltcG9ydCB7IEZvbnRTaXplTWFwcGluZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBVSVNpemUgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3Vpc2l6ZVwiO1xuaW1wb3J0IHsgc2l6ZU1hcHBpbmdIZWlnaHQgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvc2l6ZS1tYXBwaW5nXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdHlsZVVybDogJy4vdGFnLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxuICBzZWxlY3RvcjogJ2VkbS1zZHVpLXRhZycsXG59KVxuZXhwb3J0IGNsYXNzIFRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0VsZW1lbnQnKSB0YWdFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGFnTmFtZUVsZW1lbnQnKSB0YWdOYW1lRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgndWlDb21wb25lbnQnKSBwdWJsaWMgdWlDb21wb25lbnQ6IFVJQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGZvbnRTaXplTWFwcGluZ1NlcnZpY2U6IEZvbnRTaXplTWFwcGluZ1NlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQuZWxlbWVudCkge1xuICAgICAgdGhpcy5hcHBseUxhYmVsRWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuXG4gIH1cblxuICBwcml2YXRlIGFwcGx5TGFiZWxFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LnRleHRDb2xvcikge1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvck1hcHBpbmdbZWxlbWVudC50ZXh0Q29sb3JdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhZ05hbWVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsIGNvbG9yKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0U3R5bGVNYXBwaW5nRm9udFNpemUgPSB0aGlzLmZvbnRTaXplTWFwcGluZ1NlcnZpY2UuZ2V0TWFwcGluZygpO1xuXG4gICAgaWYgKGVsZW1lbnQudGV4dFN0eWxlKSB7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZVtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHRbZWxlbWVudC50ZXh0U3R5bGVdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy50YWdOYW1lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgZm9udFNpemVcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFnTmFtZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xpbmUtaGVpZ2h0JywgbGluZUhlaWdodCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhZ0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIHNpemVNYXBwaW5nSGVpZ2h0W1VJU2l6ZS5BU1NFVF84XSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWdcIiAjdGFnRWxlbWVudCAqbmdJZj1cInVpQ29tcG9uZW50XCIgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRhZy1uYW1lXCIgI3RhZ05hbWVFbGVtZW50Pnt7IHVpQ29tcG9uZW50LmVsZW1lbnQ/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxuPC9kaXY+Il19
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Inject, Renderer2, ViewChild } from "@angular/core";
|
|
2
|
-
import { colorMapping } from "../../../../core/uitheme/mapping/color-mapping";
|
|
3
|
-
import { textStyleMappingLineHeight } from "../../../../core/uitheme/mapping/text-style-mapping";
|
|
4
|
-
import { FontSizeMappingService } from "../../../../core/services/font-size-mapping.service";
|
|
5
|
-
import { ScrollSpyService } from "../../../../core/services/scroll-spy.service";
|
|
6
|
-
import { Subject } from "rxjs";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../../core/services/font-size-mapping.service";
|
|
9
|
-
import * as i2 from "../../../../core/services/scroll-spy.service";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "../../../../directives/uiview.directive";
|
|
12
|
-
export class TagsRowTagComponent {
|
|
13
|
-
static { this.scrollSpyInitialized = false; }
|
|
14
|
-
static { this.scrollSpy$ = null; }
|
|
15
|
-
static { this.scrollSpySub = null; }
|
|
16
|
-
static { this.scrollSpyInitTries = 0; }
|
|
17
|
-
static { this.scrollSpyContainer = null; }
|
|
18
|
-
static { this.activeId = null; }
|
|
19
|
-
static { this.isScrollingToSection = false; }
|
|
20
|
-
static { this.instanceCount = 0; }
|
|
21
|
-
constructor(uiComponent, renderer, fontSizeMappingService, scrollSpy) {
|
|
22
|
-
this.uiComponent = uiComponent;
|
|
23
|
-
this.renderer = renderer;
|
|
24
|
-
this.fontSizeMappingService = fontSizeMappingService;
|
|
25
|
-
this.scrollSpy = scrollSpy;
|
|
26
|
-
this.destroy$ = new Subject();
|
|
27
|
-
TagsRowTagComponent.instanceCount++;
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
}
|
|
31
|
-
ngAfterViewInit() {
|
|
32
|
-
if (this.uiComponent.element) {
|
|
33
|
-
this.applyElement(this.uiComponent.element);
|
|
34
|
-
this.applyLabelElement(this.uiComponent.element);
|
|
35
|
-
// Map: tag.action.param -> section div id
|
|
36
|
-
const actionParam = this.uiComponent?.element?.action?.param;
|
|
37
|
-
if (actionParam != null && this.tagElementRef?.nativeElement) {
|
|
38
|
-
this.renderer.setAttribute(this.tagElementRef.nativeElement, 'data-tag', String(actionParam));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
console.warn('[TagComponent] tag without action.param', this.uiComponent?.element);
|
|
42
|
-
}
|
|
43
|
-
// Reaplica seleção se este tag corresponde ao ativo atual.
|
|
44
|
-
this.syncSelectionState();
|
|
45
|
-
// IMPORTANT: TagsRowTagComponent renders once per tag.
|
|
46
|
-
// We initialize the scroll observer only once, but we MUST NOT tie it to the first instance lifecycle,
|
|
47
|
-
// because the first instance may be destroyed (e.g. rerender) and the subscription would die.
|
|
48
|
-
this.initScrollSpyOnce();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
applyElement(element) {
|
|
52
|
-
}
|
|
53
|
-
markSelectedTag(id) {
|
|
54
|
-
const tags = Array.from(document.querySelectorAll('.row-tag'));
|
|
55
|
-
const dataTags = tags.map(t => t.getAttribute('data-tag'));
|
|
56
|
-
TagsRowTagComponent.activeId = id;
|
|
57
|
-
for (const t of tags)
|
|
58
|
-
t.classList.remove('row-tag--selected');
|
|
59
|
-
const active = document.querySelector(`.row-tag[data-tag="${CSS.escape(id)}"]`);
|
|
60
|
-
if (!active) {
|
|
61
|
-
console.warn('[TagComponent] active tag not found for id', id);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
active.classList.add('row-tag--selected');
|
|
65
|
-
this.ensureTagVisible(active);
|
|
66
|
-
}
|
|
67
|
-
onTagClick() {
|
|
68
|
-
const actionParam = this.tagElementRef?.nativeElement?.getAttribute('data-tag');
|
|
69
|
-
if (!actionParam)
|
|
70
|
-
return;
|
|
71
|
-
try {
|
|
72
|
-
sessionStorage.setItem('exploreLastTag', actionParam);
|
|
73
|
-
sessionStorage.setItem('exploreLastAnchor', actionParam);
|
|
74
|
-
}
|
|
75
|
-
catch { }
|
|
76
|
-
this.markSelectedTag(actionParam);
|
|
77
|
-
this.scrollToSection(actionParam);
|
|
78
|
-
}
|
|
79
|
-
scrollToSection(id, attemptsLeft = 15, delayMs = 200) {
|
|
80
|
-
const sectionEl = document.getElementById(id);
|
|
81
|
-
if (!sectionEl) {
|
|
82
|
-
if (attemptsLeft <= 0)
|
|
83
|
-
return;
|
|
84
|
-
setTimeout(() => this.scrollToSection(id, attemptsLeft - 1, delayMs), delayMs);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const container = this.resolveScrollContainer();
|
|
88
|
-
const offset = document.querySelector('.tags-row--can-fix') ? 140 : 180;
|
|
89
|
-
const isPage = container === document.documentElement ||
|
|
90
|
-
container === document.body ||
|
|
91
|
-
container === document.scrollingElement;
|
|
92
|
-
TagsRowTagComponent.isScrollingToSection = true;
|
|
93
|
-
if (isPage) {
|
|
94
|
-
const top = sectionEl.getBoundingClientRect().top + window.scrollY - offset;
|
|
95
|
-
window.scrollTo({ top, behavior: 'smooth' });
|
|
96
|
-
}
|
|
97
|
-
else if (container) {
|
|
98
|
-
const top = sectionEl.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop - offset;
|
|
99
|
-
container.scrollTo({ top, behavior: 'smooth' });
|
|
100
|
-
}
|
|
101
|
-
setTimeout(() => {
|
|
102
|
-
TagsRowTagComponent.isScrollingToSection = false;
|
|
103
|
-
this.markSelectedTag(id);
|
|
104
|
-
}, 700);
|
|
105
|
-
}
|
|
106
|
-
selectFirstTagAsDefault() {
|
|
107
|
-
requestAnimationFrame(() => {
|
|
108
|
-
if (TagsRowTagComponent.activeId)
|
|
109
|
-
return;
|
|
110
|
-
try {
|
|
111
|
-
const savedTag = sessionStorage.getItem('exploreLastTag');
|
|
112
|
-
if (savedTag) {
|
|
113
|
-
this.markSelectedTag(savedTag);
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
// Se há um anchor pendente, aguarda o spy detectar a seção correta após o scroll
|
|
117
|
-
// para evitar selecionar a primeira tag e depois a certa (flash visual)
|
|
118
|
-
const hasPendingAnchor = !!sessionStorage.getItem('exploreLastAnchor');
|
|
119
|
-
if (hasPendingAnchor)
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
catch { }
|
|
123
|
-
const firstTag = document.querySelector('.row-tag[data-tag]');
|
|
124
|
-
const firstTagId = firstTag?.getAttribute('data-tag');
|
|
125
|
-
if (firstTagId) {
|
|
126
|
-
this.markSelectedTag(firstTagId);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
syncSelectionState() {
|
|
131
|
-
const dataTag = this.tagElementRef?.nativeElement?.getAttribute('data-tag');
|
|
132
|
-
if (!dataTag)
|
|
133
|
-
return;
|
|
134
|
-
if (TagsRowTagComponent.activeId && TagsRowTagComponent.activeId === dataTag) {
|
|
135
|
-
this.tagElementRef.nativeElement.classList.add('row-tag--selected');
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
this.tagElementRef.nativeElement.classList.remove('row-tag--selected');
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
applyLabelElement(element) {
|
|
142
|
-
if (element.textColor) {
|
|
143
|
-
const color = colorMapping[element.textColor];
|
|
144
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'color', color);
|
|
145
|
-
}
|
|
146
|
-
const textStyleMappingFontSize = this.fontSizeMappingService.getMapping();
|
|
147
|
-
if (element.textStyle) {
|
|
148
|
-
const fontSize = textStyleMappingFontSize[element.textStyle];
|
|
149
|
-
const lineHeight = textStyleMappingLineHeight[element.textStyle];
|
|
150
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'font-size', fontSize);
|
|
151
|
-
this.renderer.setStyle(this.tagNameElementRef.nativeElement, 'line-height', lineHeight);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
initScrollSpyOnce() {
|
|
155
|
-
// Already subscribed
|
|
156
|
-
if (TagsRowTagComponent.scrollSpySub) {
|
|
157
|
-
const currentContainer = this.resolveScrollContainer();
|
|
158
|
-
const stale = !TagsRowTagComponent.scrollSpyContainer?.isConnected || (currentContainer && TagsRowTagComponent.scrollSpyContainer !== currentContainer);
|
|
159
|
-
if (!stale)
|
|
160
|
-
return;
|
|
161
|
-
try {
|
|
162
|
-
TagsRowTagComponent.scrollSpySub.unsubscribe();
|
|
163
|
-
}
|
|
164
|
-
catch { }
|
|
165
|
-
TagsRowTagComponent.scrollSpySub = null;
|
|
166
|
-
TagsRowTagComponent.scrollSpy$ = null;
|
|
167
|
-
TagsRowTagComponent.scrollSpyContainer = null;
|
|
168
|
-
TagsRowTagComponent.scrollSpyInitialized = false;
|
|
169
|
-
}
|
|
170
|
-
// Ensure container exists; TagComponent can render before the scroll container is in the DOM.
|
|
171
|
-
const containerExists = !!this.resolveScrollContainer();
|
|
172
|
-
if (!containerExists) {
|
|
173
|
-
TagsRowTagComponent.scrollSpyInitTries++;
|
|
174
|
-
if (TagsRowTagComponent.scrollSpyInitTries <= 30) {
|
|
175
|
-
requestAnimationFrame(() => this.initScrollSpyOnce());
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
console.warn('[TagComponent] ScrollSpy: .scrollable-container not found after retries');
|
|
179
|
-
}
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
try {
|
|
183
|
-
TagsRowTagComponent.scrollSpyInitialized = true;
|
|
184
|
-
const currentContainer = this.resolveScrollContainer();
|
|
185
|
-
TagsRowTagComponent.scrollSpy$ = this.scrollSpy.observeActiveId({
|
|
186
|
-
container: currentContainer,
|
|
187
|
-
anchorSelector: '[data-anchor-target], .column[id]',
|
|
188
|
-
getOffsetTop: () => (document.querySelector('.tags-row--can-fix') ? 140 : 180),
|
|
189
|
-
resolveId: (anchor) => {
|
|
190
|
-
const section = anchor.closest('[data-anchor-target]');
|
|
191
|
-
if (section?.id)
|
|
192
|
-
return section.id;
|
|
193
|
-
if (anchor.id)
|
|
194
|
-
return anchor.id;
|
|
195
|
-
return anchor.closest('[id]')?.id || null;
|
|
196
|
-
},
|
|
197
|
-
debug: false,
|
|
198
|
-
});
|
|
199
|
-
TagsRowTagComponent.scrollSpyContainer = currentContainer;
|
|
200
|
-
TagsRowTagComponent.scrollSpySub = TagsRowTagComponent.scrollSpy$.subscribe({
|
|
201
|
-
next: (activeId) => {
|
|
202
|
-
if (TagsRowTagComponent.isScrollingToSection)
|
|
203
|
-
return;
|
|
204
|
-
if (!activeId) {
|
|
205
|
-
if (!TagsRowTagComponent.activeId) {
|
|
206
|
-
this.selectFirstTagAsDefault();
|
|
207
|
-
}
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
// Salva anchor e tag no sessionStorage para restaurar posição ao voltar
|
|
211
|
-
try {
|
|
212
|
-
sessionStorage.setItem('exploreLastAnchor', activeId);
|
|
213
|
-
sessionStorage.setItem('exploreLastTag', activeId);
|
|
214
|
-
}
|
|
215
|
-
catch { }
|
|
216
|
-
this.markSelectedTag(activeId);
|
|
217
|
-
},
|
|
218
|
-
error: (err) => {
|
|
219
|
-
console.error('[TagComponent] ScrollSpy subscription error', err);
|
|
220
|
-
},
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
catch (e) {
|
|
224
|
-
console.error('[TagComponent] ScrollSpy init failed', e);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
resolveScrollContainer() {
|
|
228
|
-
const explicit = document.querySelector('.scrollable-container');
|
|
229
|
-
if (explicit && explicit.scrollHeight > explicit.clientHeight) {
|
|
230
|
-
return explicit;
|
|
231
|
-
}
|
|
232
|
-
const anchorSample = document.querySelector('.column[id]') ||
|
|
233
|
-
document.querySelector('[data-anchor-target]');
|
|
234
|
-
if (anchorSample) {
|
|
235
|
-
return this.scrollSpy.getScrollParent(anchorSample);
|
|
236
|
-
}
|
|
237
|
-
return document.scrollingElement || document.documentElement;
|
|
238
|
-
}
|
|
239
|
-
ensureTagVisible(tagEl) {
|
|
240
|
-
// Double RAF: garante que o layout esteja estabilizado antes de calcular os rects
|
|
241
|
-
requestAnimationFrame(() => {
|
|
242
|
-
requestAnimationFrame(() => {
|
|
243
|
-
tagEl.scrollIntoView({ behavior: 'auto', block: 'nearest', inline: 'nearest' });
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
ngOnDestroy() {
|
|
248
|
-
this.destroy$.next();
|
|
249
|
-
this.destroy$.complete();
|
|
250
|
-
TagsRowTagComponent.instanceCount--;
|
|
251
|
-
if (TagsRowTagComponent.instanceCount <= 0) {
|
|
252
|
-
// Reset completo: garante inicialização limpa na próxima visita ao Explorar
|
|
253
|
-
TagsRowTagComponent.instanceCount = 0;
|
|
254
|
-
TagsRowTagComponent.activeId = null;
|
|
255
|
-
TagsRowTagComponent.scrollSpyInitTries = 0;
|
|
256
|
-
TagsRowTagComponent.scrollSpyInitialized = false;
|
|
257
|
-
try {
|
|
258
|
-
TagsRowTagComponent.scrollSpySub?.unsubscribe();
|
|
259
|
-
}
|
|
260
|
-
catch { }
|
|
261
|
-
TagsRowTagComponent.scrollSpySub = null;
|
|
262
|
-
TagsRowTagComponent.scrollSpy$ = null;
|
|
263
|
-
TagsRowTagComponent.scrollSpyContainer = null;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagsRowTagComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }, { token: i2.ScrollSpyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
267
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TagsRowTagComponent, isStandalone: false, selector: "edm-sdui-tags-row-tag", viewQueries: [{ propertyName: "tagElementRef", first: true, predicate: ["tagElement"], descendants: true }, { propertyName: "tagNameElementRef", first: true, predicate: ["tagNameElement"], descendants: true }], ngImport: i0, template: "<div class=\"row-tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\" (click)=\"onTagClick()\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>\n", styles: [":host{display:contents}.row-tag{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1.5px solid var(--tag-explorer-aux);cursor:pointer;font-size:16px;flex-shrink:0}.row-tag:hover{background-color:var(--bt-tag-explorer-on)}.row-tag--selected{border-color:var(--tag-explorer-highlight);background-color:var(--bt-tag-explorer-on);background-origin:border-box}.tag-name{font-weight:600;color:var(--font-bt-tag-explorer-on);font-size:15px;line-height:17.25px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
|
|
268
|
-
}
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagsRowTagComponent, decorators: [{
|
|
270
|
-
type: Component,
|
|
271
|
-
args: [{ standalone: false, selector: 'edm-sdui-tags-row-tag', template: "<div class=\"row-tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\" (click)=\"onTagClick()\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>\n", styles: [":host{display:contents}.row-tag{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1.5px solid var(--tag-explorer-aux);cursor:pointer;font-size:16px;flex-shrink:0}.row-tag:hover{background-color:var(--bt-tag-explorer-on)}.row-tag--selected{border-color:var(--tag-explorer-highlight);background-color:var(--bt-tag-explorer-on);background-origin:border-box}.tag-name{font-weight:600;color:var(--font-bt-tag-explorer-on);font-size:15px;line-height:17.25px}\n"] }]
|
|
272
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
273
|
-
type: Inject,
|
|
274
|
-
args: ['uiComponent']
|
|
275
|
-
}] }, { type: i0.Renderer2 }, { type: i1.FontSizeMappingService }, { type: i2.ScrollSpyService }], propDecorators: { tagElementRef: [{
|
|
276
|
-
type: ViewChild,
|
|
277
|
-
args: ['tagElement']
|
|
278
|
-
}], tagNameElementRef: [{
|
|
279
|
-
type: ViewChild,
|
|
280
|
-
args: ['tagNameElement']
|
|
281
|
-
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvdGFncy1yb3cvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3RhZ3Mtcm93L3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDOUUsT0FBTyxFQUErQiwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBYyxPQUFPLEVBQTJCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLG1CQUFtQjthQUlmLHlCQUFvQixHQUFHLEtBQUssQUFBUixDQUFTO2FBQzdCLGVBQVUsR0FBcUMsSUFBSSxBQUF6QyxDQUEwQzthQUNwRCxpQkFBWSxHQUF3QixJQUFJLEFBQTVCLENBQTZCO2FBQ3pDLHVCQUFrQixHQUFHLENBQUMsQUFBSixDQUFLO2FBQ3ZCLHVCQUFrQixHQUF1QixJQUFJLEFBQTNCLENBQTRCO2FBQzlDLGFBQVEsR0FBa0IsSUFBSSxBQUF0QixDQUF1QjthQUMvQix5QkFBb0IsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUM3QixrQkFBYSxHQUFHLENBQUMsQUFBSixDQUFLO0lBRWpDLFlB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QUNqRCxJQUFJLENBQUM7Z0JBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7WUFDakUsbUJBQW1CLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN4QyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLG1CQUFtQixDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQzsrR0F2UlUsbUJBQW1CLGtCQWNwQixhQUFhO21HQWRaLG1CQUFtQixxU0NqQmhDLGdPQUdBOzs0RkRjYSxtQkFBbUI7a0JBTi9CLFNBQVM7aUNBR0ksS0FBSyxZQUNQLHVCQUF1Qjs7MEJBZ0I5QixNQUFNOzJCQUFDLGFBQWE7cUlBYkUsYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZO2dCQUNNLGlCQUFpQjtzQkFBN0MsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVJQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnRcIjtcbmltcG9ydCB7IFVJRWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpZWxlbWVudFwiO1xuaW1wb3J0IHsgY29sb3JNYXBwaW5nIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2NvbG9yLW1hcHBpbmdcIjtcbmltcG9ydCB7IGdldFRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSwgdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvdGV4dC1zdHlsZS1tYXBwaW5nXCI7XG5pbXBvcnQgeyBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvZm9udC1zaXplLW1hcHBpbmcuc2VydmljZVwiO1xuaW1wb3J0IHsgVUlTaXplIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aXNpemVcIjtcbmltcG9ydCB7IHNpemVNYXBwaW5nSGVpZ2h0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3NpemUtbWFwcGluZ1wiO1xuaW1wb3J0IHsgU2Nyb2xsU3B5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3Njcm9sbC1zcHkuc2VydmljZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc3R5bGVVcmw6ICcuL3RhZy5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS10YWdzLXJvdy10YWcnLFxufSlcbmV4cG9ydCBjbGFzcyBUYWdzUm93VGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0YWdFbGVtZW50JykgdGFnRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0YWdOYW1lRWxlbWVudCcpIHRhZ05hbWVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxTcHlJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxTcHkkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweUluaXRUcmllcyA9IDA7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweUNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgYWN0aXZlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBpc1Njcm9sbGluZ1RvU2VjdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZUNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZm9udFNpemVNYXBwaW5nU2VydmljZTogRm9udFNpemVNYXBwaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHNjcm9sbFNweTogU2Nyb2xsU3B5U2VydmljZVxuICApIHtcbiAgICBUYWdzUm93VGFnQ29tcG9uZW50Lmluc3RhbmNlQ291bnQrKztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQuZWxlbWVudCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnQodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KTtcbiAgICAgIHRoaXMuYXBwbHlMYWJlbEVsZW1lbnQodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KTtcblxuICAgICAgLy8gTWFwOiB0YWcuYWN0aW9uLnBhcmFtIC0+IHNlY3Rpb24gZGl2IGlkXG4gICAgICBjb25zdCBhY3Rpb25QYXJhbSA9ICh0aGlzLnVpQ29tcG9uZW50Py5lbGVtZW50IGFzIGFueSk/LmFjdGlvbj8ucGFyYW07XG4gICAgICBpZiAoYWN0aW9uUGFyYW0gIT0gbnVsbCAmJiB0aGlzLnRhZ0VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50YWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkYXRhLXRhZycsIFN0cmluZyhhY3Rpb25QYXJhbSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbVGFnQ29tcG9uZW50XSB0YWcgd2l0aG91dCBhY3Rpb24ucGFyYW0nLCB0aGlzLnVpQ29tcG9uZW50Py5lbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVhcGxpY2Egc2VsZcOnw6NvIHNlIGVzdGUgdGFnIGNvcnJlc3BvbmRlIGFvIGF0aXZvIGF0dWFsLlxuICAgICAgdGhpcy5zeW5jU2VsZWN0aW9uU3RhdGUoKTtcblxuICAgICAgLy8gSU1QT1JUQU5UOiBUYWdzUm93VGFnQ29tcG9uZW50IHJlbmRlcnMgb25jZSBwZXIgdGFnLlxuICAgICAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgc2Nyb2xsIG9ic2VydmVyIG9ubHkgb25jZSwgYnV0IHdlIE1VU1QgTk9UIHRpZSBpdCB0byB0aGUgZmlyc3QgaW5zdGFuY2UgbGlmZWN5Y2xlLFxuICAgICAgLy8gYmVjYXVzZSB0aGUgZmlyc3QgaW5zdGFuY2UgbWF5IGJlIGRlc3Ryb3llZCAoZS5nLiByZXJlbmRlcikgYW5kIHRoZSBzdWJzY3JpcHRpb24gd291bGQgZGllLlxuICAgICAgdGhpcy5pbml0U2Nyb2xsU3B5T25jZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrU2VsZWN0ZWRUYWcoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcucm93LXRhZycpKTtcbiAgICBjb25zdCBkYXRhVGFncyA9IHRhZ3MubWFwKHQgPT4gdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJykpO1xuICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuYWN0aXZlSWQgPSBpZDtcbiAgICBmb3IgKGNvbnN0IHQgb2YgdGFncykgdC5jbGFzc0xpc3QucmVtb3ZlKCdyb3ctdGFnLS1zZWxlY3RlZCcpO1xuICAgIGNvbnN0IGFjdGl2ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGAucm93LXRhZ1tkYXRhLXRhZz1cIiR7Q1NTLmVzY2FwZShpZCl9XCJdYCk7XG4gICAgaWYgKCFhY3RpdmUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1RhZ0NvbXBvbmVudF0gYWN0aXZlIHRhZyBub3QgZm91bmQgZm9yIGlkJywgaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhY3RpdmUuY2xhc3NMaXN0LmFkZCgncm93LXRhZy0tc2VsZWN0ZWQnKTtcbiAgICB0aGlzLmVuc3VyZVRhZ1Zpc2libGUoYWN0aXZlKTtcbiAgfVxuXG4gIG9uVGFnQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uUGFyYW0gPSB0aGlzLnRhZ0VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKTtcbiAgICBpZiAoIWFjdGlvblBhcmFtKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZXhwbG9yZUxhc3RUYWcnLCBhY3Rpb25QYXJhbSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdleHBsb3JlTGFzdEFuY2hvcicsIGFjdGlvblBhcmFtKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0aGlzLm1hcmtTZWxlY3RlZFRhZyhhY3Rpb25QYXJhbSk7XG4gICAgdGhpcy5zY3JvbGxUb1NlY3Rpb24oYWN0aW9uUGFyYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb1NlY3Rpb24oaWQ6IHN0cmluZywgYXR0ZW1wdHNMZWZ0ID0gMTUsIGRlbGF5TXMgPSAyMDApOiB2b2lkIHtcbiAgICBjb25zdCBzZWN0aW9uRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG5cbiAgICBpZiAoIXNlY3Rpb25FbCkge1xuICAgICAgaWYgKGF0dGVtcHRzTGVmdCA8PSAwKSByZXR1cm47XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9TZWN0aW9uKGlkLCBhdHRlbXB0c0xlZnQgLSAxLCBkZWxheU1zKSwgZGVsYXlNcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5yZXNvbHZlU2Nyb2xsQ29udGFpbmVyKCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRhZ3Mtcm93LS1jYW4tZml4JykgPyAxNDAgOiAxODA7XG4gICAgY29uc3QgaXNQYWdlID1cbiAgICAgIGNvbnRhaW5lciA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8XG4gICAgICBjb250YWluZXIgPT09IGRvY3VtZW50LmJvZHkgfHxcbiAgICAgIGNvbnRhaW5lciA9PT0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDtcblxuICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuaXNTY3JvbGxpbmdUb1NlY3Rpb24gPSB0cnVlO1xuXG4gICAgaWYgKGlzUGFnZSkge1xuICAgICAgY29uc3QgdG9wID0gc2VjdGlvbkVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gb2Zmc2V0O1xuICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfSBlbHNlIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnN0IHRvcCA9IHNlY3Rpb25FbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIG9mZnNldDtcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7IHRvcCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5pc1Njcm9sbGluZ1RvU2VjdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrU2VsZWN0ZWRUYWcoaWQpO1xuICAgIH0sIDcwMCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEZpcnN0VGFnQXNEZWZhdWx0KCk6IHZvaWQge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBpZiAoVGFnc1Jvd1RhZ0NvbXBvbmVudC5hY3RpdmVJZCkgcmV0dXJuO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzYXZlZFRhZyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V4cGxvcmVMYXN0VGFnJyk7XG4gICAgICAgIGlmIChzYXZlZFRhZykge1xuICAgICAgICAgIHRoaXMubWFya1NlbGVjdGVkVGFnKHNhdmVkVGFnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2UgaMOhIHVtIGFuY2hvciBwZW5kZW50ZSwgYWd1YXJkYSBvIHNweSBkZXRlY3RhciBhIHNlw6fDo28gY29ycmV0YSBhcMOzcyBvIHNjcm9sbFxuICAgICAgICAvLyBwYXJhIGV2aXRhciBzZWxlY2lvbmFyIGEgcHJpbWVpcmEgdGFnIGUgZGVwb2lzIGEgY2VydGEgKGZsYXNoIHZpc3VhbClcbiAgICAgICAgY29uc3QgaGFzUGVuZGluZ0FuY2hvciA9ICEhc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZXhwbG9yZUxhc3RBbmNob3InKTtcbiAgICAgICAgaWYgKGhhc1BlbmRpbmdBbmNob3IpIHJldHVybjtcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgY29uc3QgZmlyc3RUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnJvdy10YWdbZGF0YS10YWddJyk7XG4gICAgICBjb25zdCBmaXJzdFRhZ0lkID0gZmlyc3RUYWc/LmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKTtcbiAgICAgIGlmIChmaXJzdFRhZ0lkKSB7XG4gICAgICAgIHRoaXMubWFya1NlbGVjdGVkVGFnKGZpcnN0VGFnSWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VsZWN0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVRhZyA9IHRoaXMudGFnRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZ2V0QXR0cmlidXRlKCdkYXRhLXRhZycpO1xuICAgIGlmICghZGF0YVRhZykgcmV0dXJuO1xuICAgIGlmIChUYWdzUm93VGFnQ29tcG9uZW50LmFjdGl2ZUlkICYmIFRhZ3NSb3dUYWdDb21wb25lbnQuYWN0aXZlSWQgPT09IGRhdGFUYWcpIHtcbiAgICAgIHRoaXMudGFnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Jvdy10YWctLXNlbGVjdGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Jvdy10YWctLXNlbGVjdGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUxhYmVsRWxlbWVudChlbGVtZW50OiBVSUVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC50ZXh0Q29sb3IpIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JNYXBwaW5nW2VsZW1lbnQudGV4dENvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWdOYW1lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sb3InLCBjb2xvcik7XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplID0gdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKTtcblxuICAgIGlmIChlbGVtZW50LnRleHRTdHlsZSkge1xuICAgICAgY29uc3QgZm9udFNpemUgPSB0ZXh0U3R5bGVNYXBwaW5nRm9udFNpemVbZWxlbWVudC50ZXh0U3R5bGVdO1xuICAgICAgY29uc3QgbGluZUhlaWdodCA9IHRleHRTdHlsZU1hcHBpbmdMaW5lSGVpZ2h0W2VsZW1lbnQudGV4dFN0eWxlXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMudGFnTmFtZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgIGZvbnRTaXplXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhZ05hbWVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsaW5lLWhlaWdodCcsIGxpbmVIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNjcm9sbFNweU9uY2UoKTogdm9pZCB7XG4gICAgLy8gQWxyZWFkeSBzdWJzY3JpYmVkXG4gICAgaWYgKFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5U3ViKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q29udGFpbmVyID0gdGhpcy5yZXNvbHZlU2Nyb2xsQ29udGFpbmVyKCk7XG4gICAgICBjb25zdCBzdGFsZSA9ICFUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweUNvbnRhaW5lcj8uaXNDb25uZWN0ZWQgfHwgKGN1cnJlbnRDb250YWluZXIgJiYgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHlDb250YWluZXIgIT09IGN1cnJlbnRDb250YWluZXIpO1xuICAgICAgaWYgKCFzdGFsZSkgcmV0dXJuO1xuXG4gICAgICB0cnkge1xuICAgICAgICBUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfSBjYXRjaCB7fVxuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHlTdWIgPSBudWxsO1xuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHkkID0gbnVsbDtcbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5Q29udGFpbmVyID0gbnVsbDtcbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgY29udGFpbmVyIGV4aXN0czsgVGFnQ29tcG9uZW50IGNhbiByZW5kZXIgYmVmb3JlIHRoZSBzY3JvbGwgY29udGFpbmVyIGlzIGluIHRoZSBET00uXG4gICAgY29uc3QgY29udGFpbmVyRXhpc3RzID0gISF0aGlzLnJlc29sdmVTY3JvbGxDb250YWluZXIoKTtcbiAgICBpZiAoIWNvbnRhaW5lckV4aXN0cykge1xuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHlJbml0VHJpZXMrKztcbiAgICAgIGlmIChUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweUluaXRUcmllcyA8PSAzMCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5pbml0U2Nyb2xsU3B5T25jZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1RhZ0NvbXBvbmVudF0gU2Nyb2xsU3B5OiAuc2Nyb2xsYWJsZS1jb250YWluZXIgbm90IGZvdW5kIGFmdGVyIHJldHJpZXMnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHlJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRDb250YWluZXIgPSB0aGlzLnJlc29sdmVTY3JvbGxDb250YWluZXIoKSE7XG5cbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5JCA9IHRoaXMuc2Nyb2xsU3B5Lm9ic2VydmVBY3RpdmVJZCh7XG4gICAgICAgIGNvbnRhaW5lcjogY3VycmVudENvbnRhaW5lciEsXG4gICAgICAgIGFuY2hvclNlbGVjdG9yOiAnW2RhdGEtYW5jaG9yLXRhcmdldF0sIC5jb2x1bW5baWRdJyxcbiAgICAgICAgZ2V0T2Zmc2V0VG9wOiAoKSA9PiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRhZ3Mtcm93LS1jYW4tZml4JykgPyAxNDAgOiAxODApLFxuICAgICAgICByZXNvbHZlSWQ6IChhbmNob3IpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWN0aW9uID0gYW5jaG9yLmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KCdbZGF0YS1hbmNob3ItdGFyZ2V0XScpO1xuICAgICAgICAgIGlmIChzZWN0aW9uPy5pZCkgcmV0dXJuIHNlY3Rpb24uaWQ7XG4gICAgICAgICAgaWYgKGFuY2hvci5pZCkgcmV0dXJuIGFuY2hvci5pZDtcbiAgICAgICAgICByZXR1cm4gYW5jaG9yLmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KCdbaWRdJyk/LmlkIHx8IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweUNvbnRhaW5lciA9IGN1cnJlbnRDb250YWluZXIhO1xuXG4gICAgICBUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweVN1YiA9IFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoYWN0aXZlSWQpID0+IHtcbiAgICAgICAgICBpZiAoVGFnc1Jvd1RhZ0NvbXBvbmVudC5pc1Njcm9sbGluZ1RvU2VjdGlvbikgcmV0dXJuO1xuICAgICAgICAgIGlmICghYWN0aXZlSWQpIHtcbiAgICAgICAgICAgIGlmICghVGFnc1Jvd1RhZ0NvbXBvbmVudC5hY3RpdmVJZCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0VGFnQXNEZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNhbHZhIGFuY2hvciBlIHRhZyBubyBzZXNzaW9uU3RvcmFnZSBwYXJhIHJlc3RhdXJhciBwb3Npw6fDo28gYW8gdm9sdGFyXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2V4cGxvcmVMYXN0QW5jaG9yJywgYWN0aXZlSWQpO1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZXhwbG9yZUxhc3RUYWcnLCBhY3RpdmVJZCk7XG4gICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIHRoaXMubWFya1NlbGVjdGVkVGFnKGFjdGl2ZUlkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFnQ29tcG9uZW50XSBTY3JvbGxTcHkgc3Vic2NyaXB0aW9uIGVycm9yJywgZXJyKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWdDb21wb25lbnRdIFNjcm9sbFNweSBpbml0IGZhaWxlZCcsIGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGV4cGxpY2l0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbGFibGUtY29udGFpbmVyJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChleHBsaWNpdCAmJiBleHBsaWNpdC5zY3JvbGxIZWlnaHQgPiBleHBsaWNpdC5jbGllbnRIZWlnaHQpIHtcbiAgICAgIHJldHVybiBleHBsaWNpdDtcbiAgICB9XG5cbiAgICBjb25zdCBhbmNob3JTYW1wbGUgPVxuICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW5baWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsKSB8fFxuICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFuY2hvci10YXJnZXRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsKTtcblxuICAgIGlmIChhbmNob3JTYW1wbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjcm9sbFNweS5nZXRTY3JvbGxQYXJlbnQoYW5jaG9yU2FtcGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVGFnVmlzaWJsZSh0YWdFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBEb3VibGUgUkFGOiBnYXJhbnRlIHF1ZSBvIGxheW91dCBlc3RlamEgZXN0YWJpbGl6YWRvIGFudGVzIGRlIGNhbGN1bGFyIG9zIHJlY3RzXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRhZ0VsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdhdXRvJywgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnbmVhcmVzdCcgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICBUYWdzUm93VGFnQ29tcG9uZW50Lmluc3RhbmNlQ291bnQtLTtcbiAgICBpZiAoVGFnc1Jvd1RhZ0NvbXBvbmVudC5pbnN0YW5jZUNvdW50IDw9IDApIHtcbiAgICAgIC8vIFJlc2V0IGNvbXBsZXRvOiBnYXJhbnRlIGluaWNpYWxpemHDp8OjbyBsaW1wYSBuYSBwcsOzeGltYSB2aXNpdGEgYW8gRXhwbG9yYXJcbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuaW5zdGFuY2VDb3VudCA9IDA7XG4gICAgICBUYWdzUm93VGFnQ29tcG9uZW50LmFjdGl2ZUlkID0gbnVsbDtcbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5SW5pdFRyaWVzID0gMDtcbiAgICAgIFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgIHRyeSB7IFRhZ3NSb3dUYWdDb21wb25lbnQuc2Nyb2xsU3B5U3ViPy51bnN1YnNjcmliZSgpOyB9IGNhdGNoIHt9XG4gICAgICBUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweVN1YiA9IG51bGw7XG4gICAgICBUYWdzUm93VGFnQ29tcG9uZW50LnNjcm9sbFNweSQgPSBudWxsO1xuICAgICAgVGFnc1Jvd1RhZ0NvbXBvbmVudC5zY3JvbGxTcHlDb250YWluZXIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvdy10YWdcIiAjdGFnRWxlbWVudCAqbmdJZj1cInVpQ29tcG9uZW50XCIgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIiAoY2xpY2spPVwib25UYWdDbGljaygpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0YWctbmFtZVwiICN0YWdOYW1lRWxlbWVudD57eyB1aUNvbXBvbmVudC5lbGVtZW50Py5sYWJlbCA/PyAnJyB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Inject, Injector, Renderer2, ViewChild, } from '@angular/core';
|
|
2
|
-
import { UIComponentType } from '../../../core/uicomposition/enums/uicomponent-type';
|
|
3
|
-
import { TagsRowTagComponent } from './tag/tag.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "../../../directives/uiview.directive";
|
|
7
|
-
export class TagsRowComponent {
|
|
8
|
-
constructor(uiComponent, injector, hostRef, cdr, renderer) {
|
|
9
|
-
this.uiComponent = uiComponent;
|
|
10
|
-
this.injector = injector;
|
|
11
|
-
this.hostRef = hostRef;
|
|
12
|
-
this.cdr = cdr;
|
|
13
|
-
this.renderer = renderer;
|
|
14
|
-
this.isFixed = false;
|
|
15
|
-
this.canFix = false;
|
|
16
|
-
this.tagComponent = TagsRowTagComponent;
|
|
17
|
-
this.injectorCache = new Map();
|
|
18
|
-
}
|
|
19
|
-
get tags() {
|
|
20
|
-
return this.uiComponent.tags ?? [];
|
|
21
|
-
}
|
|
22
|
-
trackByLabel(index, tag) {
|
|
23
|
-
return tag.label ?? index;
|
|
24
|
-
}
|
|
25
|
-
createInjector(tag, index) {
|
|
26
|
-
const key = this.getTagKey(tag, index);
|
|
27
|
-
const cached = this.injectorCache.get(key);
|
|
28
|
-
if (cached)
|
|
29
|
-
return cached;
|
|
30
|
-
const component = {
|
|
31
|
-
type: UIComponentType.TAG,
|
|
32
|
-
element: tag,
|
|
33
|
-
};
|
|
34
|
-
const injector = Injector.create({
|
|
35
|
-
providers: [{ provide: 'uiComponent', useValue: component }],
|
|
36
|
-
parent: this.injector,
|
|
37
|
-
});
|
|
38
|
-
this.injectorCache.set(key, injector);
|
|
39
|
-
return injector;
|
|
40
|
-
}
|
|
41
|
-
getTagKey(tag, index) {
|
|
42
|
-
return tag.label ?? tag?.action?.param ?? index;
|
|
43
|
-
}
|
|
44
|
-
ngAfterViewInit() {
|
|
45
|
-
requestAnimationFrame(() => {
|
|
46
|
-
this.measureLayout();
|
|
47
|
-
this.updateFixedState();
|
|
48
|
-
this.cdr.detectChanges();
|
|
49
|
-
// In production, fonts/images/header can change heights after initial paint,
|
|
50
|
-
// which shifts the trigger point and causes a visible "jump".
|
|
51
|
-
// Observe size changes and re-measure.
|
|
52
|
-
const el = this.tagsRowRef?.nativeElement;
|
|
53
|
-
if (el && typeof ResizeObserver !== 'undefined') {
|
|
54
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
55
|
-
this.measureLayout(true);
|
|
56
|
-
this.updateFixedState();
|
|
57
|
-
this.cdr.detectChanges();
|
|
58
|
-
});
|
|
59
|
-
this.resizeObserver.observe(el);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
ngOnDestroy() {
|
|
64
|
-
this.resizeObserver?.disconnect();
|
|
65
|
-
this.resizeObserver = undefined;
|
|
66
|
-
document.body.classList.remove('sdui-tags-fixed');
|
|
67
|
-
}
|
|
68
|
-
onWindowScroll() {
|
|
69
|
-
this.updateFixedState();
|
|
70
|
-
}
|
|
71
|
-
measureLayout(force = false) {
|
|
72
|
-
const hostEl = this.hostRef.nativeElement;
|
|
73
|
-
const tagsEl = this.tagsRowRef?.nativeElement;
|
|
74
|
-
// Height spacer: keep the host reserving space so the content below doesn’t jump
|
|
75
|
-
if (tagsEl) {
|
|
76
|
-
const h = tagsEl.getBoundingClientRect().height;
|
|
77
|
-
if (force ||
|
|
78
|
-
!this.lastMeasuredHeight ||
|
|
79
|
-
Math.abs(h - this.lastMeasuredHeight) > 0.5) {
|
|
80
|
-
this.lastMeasuredHeight = h;
|
|
81
|
-
this.hostMinHeight = h;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Trigger position: only capture/refresh when not fixed, because fixed changes the rect
|
|
85
|
-
if (!this.isFixed) {
|
|
86
|
-
const rect = hostEl.getBoundingClientRect();
|
|
87
|
-
const docTop = rect.top + window.scrollY;
|
|
88
|
-
if (force ||
|
|
89
|
-
!this.lastMeasuredDocTop ||
|
|
90
|
-
Math.abs(docTop - this.lastMeasuredDocTop) > 0.5) {
|
|
91
|
-
this.lastMeasuredDocTop = docTop;
|
|
92
|
-
this.initialTop = docTop;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
updateFixedState() {
|
|
97
|
-
this.measureLayout();
|
|
98
|
-
const offset = this.getStickyOffset();
|
|
99
|
-
const targetTop = offset;
|
|
100
|
-
const triggerPoint = (this.initialTop ?? 0) - offset;
|
|
101
|
-
const shouldFix = window.scrollY >= triggerPoint;
|
|
102
|
-
this.canFix = shouldFix;
|
|
103
|
-
document.body.classList.toggle('sdui-tags-fixed', shouldFix);
|
|
104
|
-
if (shouldFix) {
|
|
105
|
-
if (!this.isFixed) {
|
|
106
|
-
this.isFixed = true;
|
|
107
|
-
this.setTagsRowTop(targetTop);
|
|
108
|
-
this.cdr.detectChanges();
|
|
109
|
-
requestAnimationFrame(() => {
|
|
110
|
-
if (this.isFixed) {
|
|
111
|
-
this.setTagsRowTop(targetTop);
|
|
112
|
-
this.cdr.detectChanges();
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
this.setTagsRowTop(targetTop);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.isFixed = false;
|
|
122
|
-
this.setTagsRowTop(undefined);
|
|
123
|
-
this.measureLayout(true);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
getStickyOffset() {
|
|
127
|
-
// 1) Honour the explicit CSS custom-property if set
|
|
128
|
-
const variable = getComputedStyle(document.documentElement).getPropertyValue('--sdui-sticky-offset');
|
|
129
|
-
const parsed = parseInt(variable || '', 10);
|
|
130
|
-
if (!isNaN(parsed))
|
|
131
|
-
return parsed;
|
|
132
|
-
// 2) Dynamically measure the fixed app header (nb-layout-header)
|
|
133
|
-
// so the tags-row sits right below it regardless of screen size.
|
|
134
|
-
const appHeader = document.querySelector('nb-layout-header');
|
|
135
|
-
if (appHeader) {
|
|
136
|
-
return appHeader.offsetHeight;
|
|
137
|
-
}
|
|
138
|
-
return 74; // ultimate fallback
|
|
139
|
-
}
|
|
140
|
-
setTagsRowTop(value) {
|
|
141
|
-
const el = this.tagsRowRef?.nativeElement;
|
|
142
|
-
if (!el)
|
|
143
|
-
return;
|
|
144
|
-
if (value === undefined || value === null) {
|
|
145
|
-
this.renderer.removeStyle(el, 'top');
|
|
146
|
-
this.hostRef.nativeElement.style.removeProperty('--tags-row-bottom');
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
this.renderer.setStyle(el, 'top', `${value}px`);
|
|
150
|
-
const height = el.getBoundingClientRect().height;
|
|
151
|
-
this.hostRef.nativeElement.style.setProperty('--tags-row-bottom', `${value + height}px`);
|
|
152
|
-
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagsRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TagsRowComponent, isStandalone: false, selector: "edm-sdui-tags-row", host: { listeners: { "window:scroll": "onWindowScroll()" }, properties: { "class.tags-row--fixed": "this.isFixed", "class.tags-row--can-fix": "this.canFix", "style.min-height.px": "this.hostMinHeight" } }, viewQueries: [{ propertyName: "tagsRowRef", first: true, predicate: ["tagsRowElement"], descendants: true }], ngImport: i0, template: "<div class=\"tags-row\" #tagsRowElement [class.tags-row-fixed]=\"isFixed\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <ng-container *ngFor=\"let tag of tags; let i = index; trackBy: trackByLabel\">\n <ng-container\n *ngComponentOutlet=\"tagComponent; injector: createInjector(tag, i)\"\n ></ng-container>\n </ng-container>\n <span class=\"tags-row-spacer\" aria-hidden=\"true\"></span>\n</div>\n", styles: [":host{display:block;width:100%;box-sizing:border-box;margin-top:var(--sdui-header-margin-top, 12px)}.tags-row{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;padding:6px 0;padding-left:var(--sdui-tags-row-padding-x, 16px);background-color:inherit;justify-content:flex-start;box-sizing:border-box;width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-padding-left:var(--sdui-tags-row-padding-x, 16px);scroll-padding-right:var(--sdui-tags-row-padding-x, 16px);scrollbar-width:none;padding-bottom:8px!important}:host .tags-row>*{flex:0 0 auto}.tags-row-spacer{flex:0 0 var(--sdui-tags-row-padding-x, 16px);min-width:var(--sdui-tags-row-padding-x, 16px);height:1px;pointer-events:none}:host.tags-row--fixed{box-sizing:border-box}:host.tags-row--fixed .tags-row{position:fixed;top:var(--sdui-tags-row-top, 78px);left:var(--sdui-tags-row-left, 32px);right:0;z-index:120;transition:top .16s ease;will-change:top;padding:6px 0;padding-left:var(--sdui-tags-row-padding-x, 16px);padding-right:var(--sdui-tags-row-padding-x, 32px)}@media (max-width: 565px){:host.tags-row--fixed .tags-row{left:var(--sdui-tags-row-left-mobile, 0);top:var(--sdui-tags-row-top-mobile, var(--sdui-tags-row-top, 78px));padding-left:var(--sdui-tags-row-padding-x, 16px);padding-right:var(--sdui-tags-row-padding-x, 32px)}}:host.tags-row--can-fix:before{content:\"\";position:fixed;top:0;left:0;right:0;height:var(--tags-row-bottom, 120px);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background-color:color-mix(in srgb,var(--bg) 60%,transparent);pointer-events:none;z-index:119}\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
|
|
155
|
-
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagsRowComponent, decorators: [{
|
|
157
|
-
type: Component,
|
|
158
|
-
args: [{ selector: 'edm-sdui-tags-row', standalone: false, template: "<div class=\"tags-row\" #tagsRowElement [class.tags-row-fixed]=\"isFixed\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <ng-container *ngFor=\"let tag of tags; let i = index; trackBy: trackByLabel\">\n <ng-container\n *ngComponentOutlet=\"tagComponent; injector: createInjector(tag, i)\"\n ></ng-container>\n </ng-container>\n <span class=\"tags-row-spacer\" aria-hidden=\"true\"></span>\n</div>\n", styles: [":host{display:block;width:100%;box-sizing:border-box;margin-top:var(--sdui-header-margin-top, 12px)}.tags-row{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;padding:6px 0;padding-left:var(--sdui-tags-row-padding-x, 16px);background-color:inherit;justify-content:flex-start;box-sizing:border-box;width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-padding-left:var(--sdui-tags-row-padding-x, 16px);scroll-padding-right:var(--sdui-tags-row-padding-x, 16px);scrollbar-width:none;padding-bottom:8px!important}:host .tags-row>*{flex:0 0 auto}.tags-row-spacer{flex:0 0 var(--sdui-tags-row-padding-x, 16px);min-width:var(--sdui-tags-row-padding-x, 16px);height:1px;pointer-events:none}:host.tags-row--fixed{box-sizing:border-box}:host.tags-row--fixed .tags-row{position:fixed;top:var(--sdui-tags-row-top, 78px);left:var(--sdui-tags-row-left, 32px);right:0;z-index:120;transition:top .16s ease;will-change:top;padding:6px 0;padding-left:var(--sdui-tags-row-padding-x, 16px);padding-right:var(--sdui-tags-row-padding-x, 32px)}@media (max-width: 565px){:host.tags-row--fixed .tags-row{left:var(--sdui-tags-row-left-mobile, 0);top:var(--sdui-tags-row-top-mobile, var(--sdui-tags-row-top, 78px));padding-left:var(--sdui-tags-row-padding-x, 16px);padding-right:var(--sdui-tags-row-padding-x, 32px)}}:host.tags-row--can-fix:before{content:\"\";position:fixed;top:0;left:0;right:0;height:var(--tags-row-bottom, 120px);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background-color:color-mix(in srgb,var(--bg) 60%,transparent);pointer-events:none;z-index:119}\n"] }]
|
|
159
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
160
|
-
type: Inject,
|
|
161
|
-
args: ['uiComponent']
|
|
162
|
-
}] }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], propDecorators: { isFixed: [{
|
|
163
|
-
type: HostBinding,
|
|
164
|
-
args: ['class.tags-row--fixed']
|
|
165
|
-
}], canFix: [{
|
|
166
|
-
type: HostBinding,
|
|
167
|
-
args: ['class.tags-row--can-fix']
|
|
168
|
-
}], hostMinHeight: [{
|
|
169
|
-
type: HostBinding,
|
|
170
|
-
args: ['style.min-height.px']
|
|
171
|
-
}], tagsRowRef: [{
|
|
172
|
-
type: ViewChild,
|
|
173
|
-
args: ['tagsRowElement']
|
|
174
|
-
}], onWindowScroll: [{
|
|
175
|
-
type: HostListener,
|
|
176
|
-
args: ['window:scroll']
|
|
177
|
-
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC90YWdzLXJvdy90YWdzLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3RhZ3Mtcm93L3RhZ3Mtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBRVIsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFRMUQsTUFBTSxPQUFPLGdCQUFnQjtJQVkzQixZQUNnQyxXQUF3QixFQUM5QyxRQUFrQixFQUNsQixPQUFnQyxFQUNoQyxHQUFzQixFQUN0QixRQUFtQjtRQUpHLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWhCUyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2QsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUd2RCxpQkFBWSxHQUFHLG1CQUFtQixDQUFDO1FBQzNCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFZMUQsQ0FBQztJQUVKLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FB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c0JBQTdDLFdBQVc7dUJBQUMseUJBQXlCO2dCQUNGLGFBQWE7c0JBQWhELFdBQVc7dUJBQUMscUJBQXFCO2dCQUNMLFVBQVU7c0JBQXRDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQTBFM0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFVJQ29tcG9uZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9lbnVtcy91aWNvbXBvbmVudC10eXBlJztcbmltcG9ydCB7IFVJVGFnIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aXRhZyc7XG5pbXBvcnQgeyBUYWdzUm93VGFnQ29tcG9uZW50IH0gZnJvbSAnLi90YWcvdGFnLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VkbS1zZHVpLXRhZ3Mtcm93JyxcbiAgc3R5bGVVcmw6ICcuL3RhZ3Mtcm93LmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZ3Mtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFRhZ3NSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhZ3Mtcm93LS1maXhlZCcpIGlzRml4ZWQgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWdzLXJvdy0tY2FuLWZpeCcpIGNhbkZpeCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQucHgnKSBob3N0TWluSGVpZ2h0PzogbnVtYmVyO1xuICBAVmlld0NoaWxkKCd0YWdzUm93RWxlbWVudCcpIHRhZ3NSb3dSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgdGFnQ29tcG9uZW50ID0gVGFnc1Jvd1RhZ0NvbXBvbmVudDtcbiAgcHJpdmF0ZSBpbmplY3RvckNhY2hlID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIEluamVjdG9yPigpO1xuICBwcml2YXRlIGluaXRpYWxUb3A/OiBudW1iZXI7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBsYXN0TWVhc3VyZWRIZWlnaHQ/OiBudW1iZXI7XG4gIHByaXZhdGUgbGFzdE1lYXN1cmVkRG9jVG9wPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3VpQ29tcG9uZW50JykgcHVibGljIHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudCxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge31cblxuICBnZXQgdGFncygpOiBVSVRhZ1tdIHtcbiAgICByZXR1cm4gdGhpcy51aUNvbXBvbmVudC50YWdzID8/IFtdO1xuICB9XG5cbiAgdHJhY2tCeUxhYmVsKGluZGV4OiBudW1iZXIsIHRhZzogVUlUYWcpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiB0YWcubGFiZWwgPz8gaW5kZXg7XG4gIH1cblxuICBjcmVhdGVJbmplY3Rvcih0YWc6IFVJVGFnLCBpbmRleDogbnVtYmVyKTogSW5qZWN0b3Ige1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0VGFnS2V5KHRhZywgaW5kZXgpO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5qZWN0b3JDYWNoZS5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29tcG9uZW50OiBVSUNvbXBvbmVudCA9IHtcbiAgICAgIHR5cGU6IFVJQ29tcG9uZW50VHlwZS5UQUcsXG4gICAgICBlbGVtZW50OiB0YWcsXG4gICAgfTtcblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ3VpQ29tcG9uZW50JywgdXNlVmFsdWU6IGNvbXBvbmVudCB9XSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcbiAgICB0aGlzLmluamVjdG9yQ2FjaGUuc2V0KGtleSwgaW5qZWN0b3IpO1xuICAgIHJldHVybiBpbmplY3RvcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFnS2V5KHRhZzogVUlUYWcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiB0YWcubGFiZWwgPz8gKHRhZyBhcyBhbnkpPy5hY3Rpb24/LnBhcmFtID8/IGluZGV4O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLm1lYXN1cmVMYXlvdXQoKTtcbiAgICAgIHRoaXMudXBkYXRlRml4ZWRTdGF0ZSgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBJbiBwcm9kdWN0aW9uLCBmb250cy9pbWFnZXMvaGVhZGVyIGNhbiBjaGFuZ2UgaGVpZ2h0cyBhZnRlciBpbml0aWFsIHBhaW50LFxuICAgICAgLy8gd2hpY2ggc2hpZnRzIHRoZSB0cmlnZ2VyIHBvaW50IGFuZCBjYXVzZXMgYSB2aXNpYmxlIFwianVtcFwiLlxuICAgICAgLy8gT2JzZXJ2ZSBzaXplIGNoYW5nZXMgYW5kIHJlLW1lYXN1cmUuXG4gICAgICBjb25zdCBlbCA9IHRoaXMudGFnc1Jvd1JlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChlbCAmJiB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVhc3VyZUxheW91dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZpeGVkU3RhdGUoKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdzZHVpLXRhZ3MtZml4ZWQnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICBvbldpbmRvd1Njcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZpeGVkU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVhc3VyZUxheW91dChmb3JjZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdEVsID0gdGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGFnc0VsID0gdGhpcy50YWdzUm93UmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgLy8gSGVpZ2h0IHNwYWNlcjoga2VlcCB0aGUgaG9zdCByZXNlcnZpbmcgc3BhY2Ugc28gdGhlIGNvbnRlbnQgYmVsb3cgZG9lc27igJl0IGp1bXBcbiAgICBpZiAodGFnc0VsKSB7XG4gICAgICBjb25zdCBoID0gdGFnc0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgIGlmIChcbiAgICAgICAgZm9yY2UgfHxcbiAgICAgICAgIXRoaXMubGFzdE1lYXN1cmVkSGVpZ2h0IHx8XG4gICAgICAgIE1hdGguYWJzKGggLSB0aGlzLmxhc3RNZWFzdXJlZEhlaWdodCkgPiAwLjVcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxhc3RNZWFzdXJlZEhlaWdodCA9IGg7XG4gICAgICAgIHRoaXMuaG9zdE1pbkhlaWdodCA9IGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBwb3NpdGlvbjogb25seSBjYXB0dXJlL3JlZnJlc2ggd2hlbiBub3QgZml4ZWQsIGJlY2F1c2UgZml4ZWQgY2hhbmdlcyB0aGUgcmVjdFxuICAgIGlmICghdGhpcy5pc0ZpeGVkKSB7XG4gICAgICBjb25zdCByZWN0ID0gaG9zdEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgZG9jVG9wID0gcmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIGlmIChcbiAgICAgICAgZm9yY2UgfHxcbiAgICAgICAgIXRoaXMubGFzdE1lYXN1cmVkRG9jVG9wIHx8XG4gICAgICAgIE1hdGguYWJzKGRvY1RvcCAtIHRoaXMubGFzdE1lYXN1cmVkRG9jVG9wKSA+IDAuNVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGFzdE1lYXN1cmVkRG9jVG9wID0gZG9jVG9wO1xuICAgICAgICB0aGlzLmluaXRpYWxUb3AgPSBkb2NUb3A7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaXhlZFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMubWVhc3VyZUxheW91dCgpO1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5nZXRTdGlja3lPZmZzZXQoKTtcbiAgICBjb25zdCB0YXJnZXRUb3AgPSBvZmZzZXQ7XG4gICAgY29uc3QgdHJpZ2dlclBvaW50ID0gKHRoaXMuaW5pdGlhbFRvcCA/PyAwKSAtIG9mZnNldDtcbiAgICBjb25zdCBzaG91bGRGaXggPSB3aW5kb3cuc2Nyb2xsWSA+PSB0cmlnZ2VyUG9pbnQ7XG4gICAgdGhpcy5jYW5GaXggPSBzaG91bGRGaXg7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzZHVpLXRhZ3MtZml4ZWQnLCBzaG91bGRGaXgpO1xuICAgIGlmIChzaG91bGRGaXgpIHtcbiAgICAgIGlmICghdGhpcy5pc0ZpeGVkKSB7XG4gICAgICAgIHRoaXMuaXNGaXhlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0VGFnc1Jvd1RvcCh0YXJnZXRUb3ApO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNGaXhlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWdzUm93VG9wKHRhcmdldFRvcCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0VGFnc1Jvd1RvcCh0YXJnZXRUb3ApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRml4ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0VGFnc1Jvd1RvcCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tZWFzdXJlTGF5b3V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RpY2t5T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgLy8gMSkgSG9ub3VyIHRoZSBleHBsaWNpdCBDU1MgY3VzdG9tLXByb3BlcnR5IGlmIHNldFxuICAgIGNvbnN0IHZhcmlhYmxlID0gZ2V0Q29tcHV0ZWRTdHlsZShcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICApLmdldFByb3BlcnR5VmFsdWUoJy0tc2R1aS1zdGlja3ktb2Zmc2V0Jyk7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFyaWFibGUgfHwgJycsIDEwKTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHJldHVybiBwYXJzZWQ7XG5cbiAgICAvLyAyKSBEeW5hbWljYWxseSBtZWFzdXJlIHRoZSBmaXhlZCBhcHAgaGVhZGVyIChuYi1sYXlvdXQtaGVhZGVyKVxuICAgIC8vICAgIHNvIHRoZSB0YWdzLXJvdyBzaXRzIHJpZ2h0IGJlbG93IGl0IHJlZ2FyZGxlc3Mgb2Ygc2NyZWVuIHNpemUuXG4gICAgY29uc3QgYXBwSGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ25iLWxheW91dC1oZWFkZXInKTtcbiAgICBpZiAoYXBwSGVhZGVyKSB7XG4gICAgICByZXR1cm4gYXBwSGVhZGVyLm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gNzQ7IC8vIHVsdGltYXRlIGZhbGxiYWNrXG4gIH1cblxuICBwcml2YXRlIHNldFRhZ3NSb3dUb3AodmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMudGFnc1Jvd1JlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoZWwsICd0b3AnKTtcbiAgICAgIHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXRhZ3Mtcm93LWJvdHRvbScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAndG9wJywgYCR7dmFsdWV9cHhgKTtcbiAgICBjb25zdCBoZWlnaHQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgdGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS10YWdzLXJvdy1ib3R0b20nLFxuICAgICAgYCR7dmFsdWUgKyBoZWlnaHR9cHhgLFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWdzLXJvd1wiICN0YWdzUm93RWxlbWVudCBbY2xhc3MudGFncy1yb3ctZml4ZWRdPVwiaXNGaXhlZFwiICpuZ0lmPVwidWlDb21wb25lbnRcIiBbZWRtU2R1aVZpZXddPVwidWlDb21wb25lbnQuZWxlbWVudFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUxhYmVsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwidGFnQ29tcG9uZW50OyBpbmplY3RvcjogY3JlYXRlSW5qZWN0b3IodGFnLCBpKVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPHNwYW4gY2xhc3M9XCJ0YWdzLXJvdy1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG48L2Rpdj5cbiJdfQ==
|