ng-virtual-list 14.12.0 → 14.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -11
- package/esm2020/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +309 -0
- package/{esm2022 → esm2020}/lib/components/ng-list-item/base/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/components/ng-list-item/const/index.mjs +40 -40
- package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/template-context.mjs +1 -1
- package/esm2020/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +200 -0
- package/{esm2022 → esm2020}/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +20 -20
- package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/create-display-id.mjs +9 -9
- package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/get-element-by-index.mjs +19 -19
- package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/index.mjs +4 -4
- package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/matrix-3d.mjs +12 -12
- package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +278 -0
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.mjs +21 -21
- package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +94 -0
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +20 -20
- package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +141 -0
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +20 -20
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/core/index.mjs +2 -2
- package/esm2020/lib/components/ng-prerender-container/core/prerender-track-box.mjs +201 -0
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/events/index.mjs +5 -5
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +1 -1
- package/esm2020/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +90 -0
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/ng-prerender-container.module.mjs +20 -20
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/cache.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/const/index.mjs +8 -8
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/scrollbar-states.mjs +6 -6
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.mjs +1 -1
- package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +27 -0
- package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +324 -0
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +19 -19
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.service.mjs +38 -36
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/scrollbar-state.mjs +1 -1
- package/esm2020/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +260 -0
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/const/index.mjs +9 -9
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-direction.mjs +11 -11
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-directions.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/index.mjs +3 -3
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
- package/esm2020/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +856 -0
- package/esm2020/lib/components/ng-scroll-view/utils/calculate-direction.mjs +17 -0
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +11 -11
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/get-dir.mjs +9 -9
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/index.mjs +5 -5
- package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/matrix-3d.mjs +9 -9
- package/esm2020/lib/components/ng-scroll-view/utils/scroll-box.mjs +45 -0
- package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-direction.mjs +5 -5
- package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-directions.mjs +1 -1
- package/esm2020/lib/components/ng-scroller/ng-scroller.component.mjs +521 -0
- package/{esm2022 → esm2020}/lib/components/ng-scroller/ng-scroller.module.mjs +22 -22
- package/{esm2022 → esm2020}/lib/components/ng-scroller/utils/index.mjs +2 -2
- package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.mjs +2 -0
- package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.mjs +2 -0
- package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.mjs +2 -0
- package/esm2020/lib/components/ng-scroller/utils/interfaces/index.mjs +2 -0
- package/esm2020/lib/components/ng-scroller/utils/scroll-box.mjs +52 -0
- package/{esm2022 → esm2020}/lib/const/index.mjs +164 -164
- package/esm2020/lib/core/cache-map.mjs +100 -0
- package/{esm2022 → esm2020}/lib/core/const/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/core/enums/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/core/enums/item-display-methods.mjs +13 -13
- package/{esm2022 → esm2020}/lib/core/events/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/core/events/track-box-events.mjs +11 -11
- package/{esm2022 → esm2020}/lib/core/interfaces/get-item-position-options.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/interfaces/get-metrics-returns.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/interfaces/item.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/interfaces/metrics.mjs +1 -1
- package/esm2020/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
- package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-options.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-returns.mjs +1 -1
- package/esm2020/lib/core/track-box.mjs +1352 -0
- package/esm2020/lib/core/tracker.mjs +209 -0
- package/{esm2022 → esm2020}/lib/core/types/cache-map-events.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/types/cache-map-listeners.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/types/cache.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/types/on-change-event-listener.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/types/on-tick-event-listener.mjs +1 -1
- package/{esm2022 → esm2020}/lib/core/utils/get-service-id-prop.mjs +9 -9
- package/{esm2022 → esm2020}/lib/core/utils/index.mjs +2 -2
- package/{esm2022 → esm2020}/lib/directives/index.mjs +3 -3
- package/esm2020/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +67 -0
- package/{esm2022 → esm2020}/lib/directives/locale-sensitive/locale-sensitive.module.mjs +19 -19
- package/esm2020/lib/directives/virtual-click/virtual-click.directive.mjs +66 -0
- package/{esm2022 → esm2020}/lib/directives/virtual-click/virtual-click.module.mjs +19 -19
- package/{esm2022 → esm2020}/lib/enums/alignments.mjs +11 -11
- package/{esm2022 → esm2020}/lib/enums/collapsing-modes.mjs +21 -21
- package/{esm2022 → esm2020}/lib/enums/collection-modes.mjs +17 -17
- package/{esm2022 → esm2020}/lib/enums/directions.mjs +17 -17
- package/{esm2022 → esm2020}/lib/enums/focus-alignments.mjs +13 -13
- package/{esm2022 → esm2020}/lib/enums/index.mjs +11 -11
- package/{esm2022 → esm2020}/lib/enums/selecting-modes-types.mjs +21 -21
- package/{esm2022 → esm2020}/lib/enums/selecting-modes.mjs +21 -21
- package/{esm2022 → esm2020}/lib/enums/snap-to-item-aligns.mjs +21 -21
- package/{esm2022 → esm2020}/lib/enums/snapping-methods.mjs +17 -17
- package/{esm2022 → esm2020}/lib/enums/spreading-modes.mjs +17 -17
- package/{esm2022 → esm2020}/lib/enums/text-directions.mjs +13 -13
- package/{esm2022 → esm2020}/lib/interfaces/animation-params.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/base-virtual-list-item-component.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/item-transformation.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/point.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/rect.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/render-stabilizer-options.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/scroll-event.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/scroll-options.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/scroll-params.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/scroll-to-params.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/scrolling-settings.mjs +1 -1
- package/{esm2022 → esm2020}/lib/interfaces/size.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/collection.model.mjs +2 -2
- package/{esm2022 → esm2020}/lib/models/component.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/display-object-config.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/display-object-measures.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/item-config-map.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/item.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/render-collection.model.mjs +2 -2
- package/{esm2022 → esm2020}/lib/models/render-item-config.model.mjs +1 -1
- package/{esm2022 → esm2020}/lib/models/render-item-measures.model.mjs +2 -2
- package/{esm2022 → esm2020}/lib/models/render-item.model.mjs +2 -2
- package/esm2020/lib/ng-virtual-list-public.service.mjs +122 -0
- package/esm2020/lib/ng-virtual-list.component.mjs +3255 -0
- package/{esm2022 → esm2020}/lib/ng-virtual-list.module.mjs +23 -23
- package/esm2020/lib/ng-virtual-list.service.mjs +430 -0
- package/esm2020/lib/transformations/deck-of-cards-3d.mjs +57 -0
- package/esm2020/lib/transformations/deck-of-cards.mjs +54 -0
- package/esm2020/lib/transformations/event-horizon.mjs +47 -0
- package/{esm2022 → esm2020}/lib/transformations/index.mjs +12 -12
- package/esm2020/lib/transformations/linear.mjs +47 -0
- package/esm2020/lib/transformations/swipe-3d.mjs +51 -0
- package/{esm2022 → esm2020}/lib/types/alignment.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/arithmetic-expression.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/collapsing-mode.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/collection-mode.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/color.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/direction.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/float-or-persentage-value.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/focus-alignment.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/focus-item-params.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/gradient-color-position.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/gradient-color-positions.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/id.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/item-transform.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/scroll-direction.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/selecting-mode.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/snap-to-item-align.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/snapping-distance.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/snapping-method.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/spreading-mode.mjs +1 -1
- package/{esm2022 → esm2020}/lib/types/text-direction.mjs +1 -1
- package/esm2020/lib/utils/animator/animator.mjs +80 -0
- package/{esm2022 → esm2020}/lib/utils/animator/const/index.mjs +1 -1
- package/{esm2022 → esm2020}/lib/utils/animator/ease.mjs +6 -6
- package/{esm2022 → esm2020}/lib/utils/animator/index.mjs +4 -4
- package/esm2020/lib/utils/animator/interfaces/animator-params.mjs +2 -0
- package/esm2020/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
- package/{esm2022 → esm2020}/lib/utils/animator/interfaces/index.mjs +1 -1
- package/esm2020/lib/utils/animator/types/easing.mjs +2 -0
- package/{esm2022 → esm2020}/lib/utils/animator/types/index.mjs +1 -1
- package/esm2020/lib/utils/buffer-interpolation.mjs +29 -0
- package/esm2020/lib/utils/cmap.mjs +34 -0
- package/esm2020/lib/utils/debounce.mjs +61 -0
- package/esm2020/lib/utils/disposable-component.mjs +29 -0
- package/esm2020/lib/utils/event-emitter/event-emitter.mjs +106 -0
- package/{esm2022 → esm2020}/lib/utils/event-emitter/index.mjs +2 -2
- package/esm2020/lib/utils/event-emitter/interfaces/event-emitter.mjs +2 -0
- package/{esm2022 → esm2020}/lib/utils/event-emitter/interfaces/index.mjs +1 -1
- package/esm2020/lib/utils/get-scroll-state-version.mjs +12 -0
- package/{esm2022 → esm2020}/lib/utils/get-selector-by-item-id.mjs +4 -4
- package/{esm2022 → esm2020}/lib/utils/index.mjs +4 -4
- package/esm2020/lib/utils/is-collapse-mode.mjs +18 -0
- package/{esm2022 → esm2020}/lib/utils/is-collection-mode.mjs +15 -15
- package/esm2020/lib/utils/is-direction.mjs +15 -0
- package/esm2020/lib/utils/is-persentage-value.mjs +14 -0
- package/esm2020/lib/utils/is-select-mode.mjs +18 -0
- package/{esm2022 → esm2020}/lib/utils/is-spreading-mode.mjs +15 -15
- package/esm2020/lib/utils/list-validators.mjs +27 -0
- package/esm2020/lib/utils/normalize-collection.mjs +42 -0
- package/esm2020/lib/utils/object.mjs +28 -0
- package/esm2020/lib/utils/parse-arithmetic-expression.mjs +53 -0
- package/esm2020/lib/utils/parse-float-or-persentage-value.mjs +17 -0
- package/esm2020/lib/utils/screen-reader-formatter.mjs +43 -0
- package/esm2020/lib/utils/scroll-event.mjs +46 -0
- package/esm2020/lib/utils/scrolling-direction.mjs +28 -0
- package/{esm2022 → esm2020}/lib/utils/snapping-method.mjs +8 -8
- package/esm2020/lib/utils/toggle-class-name.mjs +15 -0
- package/{esm2022 → esm2020}/lib/utils/validation.mjs +55 -55
- package/{esm2022 → esm2020}/ng-virtual-list.mjs +4 -4
- package/{esm2022 → esm2020}/public-api.mjs +19 -19
- package/fesm2015/ng-virtual-list.mjs +10731 -0
- package/fesm2015/ng-virtual-list.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/ng-virtual-list.mjs +10451 -10455
- package/fesm2020/ng-virtual-list.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +83 -83
- package/lib/components/ng-list-item/base/index.d.ts +2 -2
- package/lib/components/ng-list-item/const/index.d.ts +3 -3
- package/lib/components/ng-list-item/interfaces/index.d.ts +2 -2
- package/lib/components/ng-list-item/interfaces/template-context.d.ts +42 -42
- package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +30 -30
- package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +9 -9
- package/lib/components/ng-list-item/utils/create-display-id.d.ts +7 -7
- package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -15
- package/lib/components/ng-list-item/utils/index.d.ts +4 -4
- package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -7
- package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +104 -104
- package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.d.ts +10 -10
- package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +17 -17
- package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +9 -9
- package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +62 -62
- package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.d.ts +9 -9
- package/lib/components/ng-prerender-container/core/index.d.ts +2 -2
- package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +35 -35
- package/lib/components/ng-prerender-container/events/index.d.ts +6 -6
- package/lib/components/ng-prerender-container/interfaces/index.d.ts +2 -2
- package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +17 -17
- package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +40 -40
- package/lib/components/ng-prerender-container/ng-prerender-container.module.d.ts +9 -9
- package/lib/components/ng-prerender-container/types/cache.d.ts +13 -13
- package/lib/components/ng-prerender-container/types/index.d.ts +2 -2
- package/lib/components/ng-scroll-bar/const/index.d.ts +3 -3
- package/lib/components/ng-scroll-bar/enums/index.d.ts +2 -2
- package/lib/components/ng-scroll-bar/enums/scrollbar-states.d.ts +5 -5
- package/lib/components/ng-scroll-bar/interfaces/index.d.ts +3 -3
- package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +26 -26
- package/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.d.ts +13 -13
- package/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.d.ts +16 -16
- package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +102 -102
- package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +8 -8
- package/lib/components/ng-scroll-bar/ng-scroll-bar.service.d.ts +22 -22
- package/lib/components/ng-scroll-bar/types/index.d.ts +2 -2
- package/lib/components/ng-scroll-bar/types/scrollbar-state.d.ts +2 -2
- package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +89 -89
- package/lib/components/ng-scroll-view/const/index.d.ts +7 -7
- package/lib/components/ng-scroll-view/enums/index.d.ts +4 -4
- package/lib/components/ng-scroll-view/enums/scroller-direction.d.ts +10 -10
- package/lib/components/ng-scroll-view/enums/scroller-directions.d.ts +8 -8
- package/lib/components/ng-scroll-view/index.d.ts +5 -5
- package/lib/components/ng-scroll-view/interfaces/index.d.ts +2 -2
- package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +22 -22
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +124 -124
- package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +10 -7
- package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -7
- package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -7
- package/lib/components/ng-scroll-view/utils/index.d.ts +5 -5
- package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -7
- package/lib/components/ng-scroll-view/utils/scroll-box.d.ts +39 -39
- package/lib/components/ng-scroller/enums/index.d.ts +4 -4
- package/lib/components/ng-scroller/enums/scroller-direction.d.ts +4 -4
- package/lib/components/ng-scroller/enums/scroller-directions.d.ts +3 -3
- package/lib/components/ng-scroller/ng-scroller.component.d.ts +164 -164
- package/lib/components/ng-scroller/ng-scroller.module.d.ts +11 -11
- package/lib/components/ng-scroller/utils/index.d.ts +2 -2
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.d.ts +11 -0
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.d.ts +19 -0
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.d.ts +10 -0
- package/lib/components/ng-scroller/utils/interfaces/index.d.ts +4 -0
- package/lib/components/ng-scroller/utils/scroll-box.d.ts +23 -40
- package/lib/const/index.d.ts +153 -153
- package/lib/core/cache-map.d.ts +46 -46
- package/lib/core/const/index.d.ts +1 -1
- package/lib/core/enums/index.d.ts +2 -2
- package/lib/core/enums/item-display-methods.d.ts +12 -12
- package/lib/core/events/index.d.ts +2 -2
- package/lib/core/events/track-box-events.d.ts +10 -10
- package/lib/core/interfaces/get-item-position-options.d.ts +10 -10
- package/lib/core/interfaces/get-metrics-returns.d.ts +11 -11
- package/lib/core/interfaces/index.d.ts +8 -8
- package/lib/core/interfaces/item.d.ts +9 -9
- package/lib/core/interfaces/metrics.d.ts +51 -51
- package/lib/core/interfaces/recalculate-metrics-options.d.ts +33 -32
- package/lib/core/interfaces/update-collection-options.d.ts +10 -10
- package/lib/core/interfaces/update-collection-returns.d.ts +14 -14
- package/lib/core/track-box.d.ts +153 -153
- package/lib/core/tracker.d.ts +55 -55
- package/lib/core/types/cache-map-events.d.ts +8 -8
- package/lib/core/types/cache-map-listeners.d.ts +9 -9
- package/lib/core/types/cache.d.ts +12 -12
- package/lib/core/types/index.d.ts +6 -6
- package/lib/core/types/on-change-event-listener.d.ts +7 -7
- package/lib/core/types/on-tick-event-listener.d.ts +7 -7
- package/lib/core/utils/get-service-id-prop.d.ts +7 -7
- package/lib/core/utils/index.d.ts +2 -2
- package/lib/directives/index.d.ts +3 -3
- package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +29 -29
- package/lib/directives/locale-sensitive/locale-sensitive.module.d.ts +8 -8
- package/lib/directives/virtual-click/virtual-click.directive.d.ts +22 -22
- package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -8
- package/lib/enums/alignments.d.ts +10 -10
- package/lib/enums/collapsing-modes.d.ts +20 -20
- package/lib/enums/collection-modes.d.ts +16 -16
- package/lib/enums/directions.d.ts +16 -16
- package/lib/enums/focus-alignments.d.ts +12 -12
- package/lib/enums/index.d.ts +11 -11
- package/lib/enums/selecting-modes-types.d.ts +20 -20
- package/lib/enums/selecting-modes.d.ts +20 -20
- package/lib/enums/snap-to-item-aligns.d.ts +20 -20
- package/lib/enums/snapping-methods.d.ts +16 -16
- package/lib/enums/spreading-modes.d.ts +16 -16
- package/lib/enums/text-directions.d.ts +12 -12
- package/lib/interfaces/animation-params.d.ts +14 -14
- package/lib/interfaces/base-virtual-list-item-component.d.ts +23 -23
- package/lib/interfaces/index.d.ts +11 -11
- package/lib/interfaces/item-transformation.d.ts +22 -22
- package/lib/interfaces/point.d.ts +16 -16
- package/lib/interfaces/rect.d.ts +17 -17
- package/lib/interfaces/render-stabilizer-options.d.ts +12 -12
- package/lib/interfaces/scroll-event.d.ts +58 -58
- package/lib/interfaces/scroll-options.d.ts +28 -28
- package/lib/interfaces/scroll-params.d.ts +17 -17
- package/lib/interfaces/scroll-to-params.d.ts +7 -7
- package/lib/interfaces/scrolling-settings.d.ts +38 -38
- package/lib/interfaces/size.d.ts +16 -16
- package/lib/models/collection.model.d.ts +9 -9
- package/lib/models/component.model.d.ts +3 -3
- package/lib/models/display-object-config.model.d.ts +21 -21
- package/lib/models/display-object-measures.model.d.ts +45 -45
- package/lib/models/index.d.ts +9 -9
- package/lib/models/item-config-map.model.d.ts +35 -35
- package/lib/models/item.model.d.ts +17 -17
- package/lib/models/render-collection.model.d.ts +9 -9
- package/lib/models/render-item-config.model.d.ts +119 -119
- package/lib/models/render-item-measures.model.d.ts +116 -116
- package/lib/models/render-item.model.d.ts +40 -40
- package/lib/ng-virtual-list-public.service.d.ts +92 -92
- package/lib/ng-virtual-list.component.d.ts +771 -770
- package/lib/ng-virtual-list.module.d.ts +12 -12
- package/lib/ng-virtual-list.service.d.ts +153 -153
- package/lib/transformations/deck-of-cards-3d.d.ts +54 -54
- package/lib/transformations/deck-of-cards.d.ts +50 -50
- package/lib/transformations/event-horizon.d.ts +26 -26
- package/lib/transformations/index.d.ts +7 -7
- package/lib/transformations/linear.d.ts +26 -26
- package/lib/transformations/swipe-3d.d.ts +38 -38
- package/lib/types/alignment.d.ts +8 -8
- package/lib/types/arithmetic-expression.d.ts +10 -10
- package/lib/types/collapsing-mode.d.ts +8 -8
- package/lib/types/collection-mode.d.ts +8 -8
- package/lib/types/color.d.ts +4 -4
- package/lib/types/direction.d.ts +8 -8
- package/lib/types/float-or-persentage-value.d.ts +7 -7
- package/lib/types/focus-alignment.d.ts +8 -8
- package/lib/types/focus-item-params.d.ts +13 -13
- package/lib/types/gradient-color-position.d.ts +7 -7
- package/lib/types/gradient-color-positions.d.ts +8 -8
- package/lib/types/id.d.ts +7 -7
- package/lib/types/index.d.ts +20 -20
- package/lib/types/item-transform.d.ts +9 -9
- package/lib/types/scroll-direction.d.ts +8 -8
- package/lib/types/selecting-mode.d.ts +8 -8
- package/lib/types/snap-to-item-align.d.ts +8 -8
- package/lib/types/snapping-distance.d.ts +8 -8
- package/lib/types/snapping-method.d.ts +10 -10
- package/lib/types/spreading-mode.d.ts +8 -8
- package/lib/types/text-direction.d.ts +10 -10
- package/lib/utils/animator/animator.d.ts +16 -16
- package/lib/utils/animator/const/index.d.ts +1 -1
- package/lib/utils/animator/ease.d.ts +2 -2
- package/lib/utils/animator/index.d.ts +6 -6
- package/lib/utils/animator/interfaces/animator-params.d.ts +18 -18
- package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -13
- package/lib/utils/animator/interfaces/index.d.ts +3 -3
- package/lib/utils/animator/types/easing.d.ts +7 -7
- package/lib/utils/animator/types/index.d.ts +2 -2
- package/lib/utils/buffer-interpolation.d.ts +5 -5
- package/lib/utils/cmap.d.ts +16 -16
- package/lib/utils/debounce.d.ts +25 -25
- package/lib/utils/disposable-component.d.ts +15 -15
- package/lib/utils/event-emitter/event-emitter.d.ts +42 -42
- package/lib/utils/event-emitter/index.d.ts +4 -4
- package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +37 -37
- package/lib/utils/event-emitter/interfaces/index.d.ts +2 -2
- package/lib/utils/get-scroll-state-version.d.ts +1 -1
- package/lib/utils/get-selector-by-item-id.d.ts +2 -2
- package/lib/utils/index.d.ts +6 -6
- package/lib/utils/is-collapse-mode.d.ts +8 -8
- package/lib/utils/is-collection-mode.d.ts +8 -8
- package/lib/utils/is-direction.d.ts +8 -8
- package/lib/utils/is-persentage-value.d.ts +7 -7
- package/lib/utils/is-select-mode.d.ts +8 -8
- package/lib/utils/is-spreading-mode.d.ts +8 -8
- package/lib/utils/list-validators.d.ts +2 -2
- package/lib/utils/normalize-collection.d.ts +8 -8
- package/lib/utils/object.d.ts +4 -4
- package/lib/utils/parse-arithmetic-expression.d.ts +8 -8
- package/lib/utils/parse-float-or-persentage-value.d.ts +7 -7
- package/lib/utils/screen-reader-formatter.d.ts +7 -4
- package/lib/utils/scroll-event.d.ts +48 -48
- package/lib/utils/scrolling-direction.d.ts +17 -17
- package/lib/utils/snapping-method.d.ts +3 -3
- package/lib/utils/toggle-class-name.d.ts +7 -7
- package/lib/utils/validation.d.ts +35 -35
- package/package.json +11 -5
- package/public-api.d.ts +16 -16
- package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +0 -315
- package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +0 -200
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +0 -279
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +0 -94
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +0 -142
- package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +0 -198
- package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +0 -93
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +0 -25
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +0 -324
- package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +0 -262
- package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +0 -859
- package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +0 -17
- package/esm2022/lib/components/ng-scroll-view/utils/scroll-box.mjs +0 -45
- package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +0 -525
- package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +0 -52
- package/esm2022/lib/core/cache-map.mjs +0 -101
- package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +0 -2
- package/esm2022/lib/core/track-box.mjs +0 -1353
- package/esm2022/lib/core/tracker.mjs +0 -207
- package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +0 -68
- package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +0 -67
- package/esm2022/lib/ng-virtual-list-public.service.mjs +0 -120
- package/esm2022/lib/ng-virtual-list.component.mjs +0 -3246
- package/esm2022/lib/ng-virtual-list.service.mjs +0 -431
- package/esm2022/lib/transformations/deck-of-cards-3d.mjs +0 -57
- package/esm2022/lib/transformations/deck-of-cards.mjs +0 -54
- package/esm2022/lib/transformations/event-horizon.mjs +0 -47
- package/esm2022/lib/transformations/linear.mjs +0 -47
- package/esm2022/lib/transformations/swipe-3d.mjs +0 -51
- package/esm2022/lib/utils/animator/animator.mjs +0 -78
- package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +0 -2
- package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +0 -2
- package/esm2022/lib/utils/animator/types/easing.mjs +0 -2
- package/esm2022/lib/utils/buffer-interpolation.mjs +0 -29
- package/esm2022/lib/utils/cmap.mjs +0 -34
- package/esm2022/lib/utils/debounce.mjs +0 -61
- package/esm2022/lib/utils/disposable-component.mjs +0 -27
- package/esm2022/lib/utils/event-emitter/event-emitter.mjs +0 -105
- package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +0 -2
- package/esm2022/lib/utils/get-scroll-state-version.mjs +0 -12
- package/esm2022/lib/utils/is-collapse-mode.mjs +0 -18
- package/esm2022/lib/utils/is-direction.mjs +0 -15
- package/esm2022/lib/utils/is-persentage-value.mjs +0 -14
- package/esm2022/lib/utils/is-select-mode.mjs +0 -18
- package/esm2022/lib/utils/list-validators.mjs +0 -27
- package/esm2022/lib/utils/normalize-collection.mjs +0 -42
- package/esm2022/lib/utils/object.mjs +0 -28
- package/esm2022/lib/utils/parse-arithmetic-expression.mjs +0 -53
- package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +0 -17
- package/esm2022/lib/utils/screen-reader-formatter.mjs +0 -43
- package/esm2022/lib/utils/scroll-event.mjs +0 -48
- package/esm2022/lib/utils/scrolling-direction.mjs +0 -29
- package/esm2022/lib/utils/toggle-class-name.mjs +0 -15
- package/fesm2022/ng-virtual-list.mjs.map +0 -1
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { CMap } from "../utils/cmap";
|
|
2
|
-
import { SERVICE_PROP_DUMMY, SERVICE_PROP_DUMMY_ENABLED } from "../const";
|
|
3
|
-
import { getServiceIdProp } from "./utils";
|
|
4
|
-
/**
|
|
5
|
-
* Tracks display items by property
|
|
6
|
-
* Maximum performance for extremely large lists.
|
|
7
|
-
* It is based on algorithms for virtualization of screen objects.
|
|
8
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/core/tracker.ts
|
|
9
|
-
* @author Evgenii Alexandrovich Grebennikov
|
|
10
|
-
* @email djonnyx@gmail.com
|
|
11
|
-
*/
|
|
12
|
-
export class Tracker {
|
|
13
|
-
/**
|
|
14
|
-
* display objects dictionary of indexes by id
|
|
15
|
-
*/
|
|
16
|
-
_displayObjectIndexMapById = {};
|
|
17
|
-
set displayObjectIndexMapById(v) {
|
|
18
|
-
if (this._displayObjectIndexMapById === v) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
this._displayObjectIndexMapById = v;
|
|
22
|
-
}
|
|
23
|
-
get displayObjectIndexMapById() {
|
|
24
|
-
return this._displayObjectIndexMapById;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Dictionary displayItems propertyNameId by items propertyNameId
|
|
28
|
-
*/
|
|
29
|
-
_trackMap = new CMap();
|
|
30
|
-
get trackMap() {
|
|
31
|
-
return this._trackMap;
|
|
32
|
-
}
|
|
33
|
-
_trackingPropertyName;
|
|
34
|
-
set trackingPropertyName(v) {
|
|
35
|
-
this._trackingPropertyName = v;
|
|
36
|
-
}
|
|
37
|
-
constructor(trackingPropertyName) {
|
|
38
|
-
this._trackingPropertyName = trackingPropertyName;
|
|
39
|
-
}
|
|
40
|
-
tearOutSnapedDisplayObjectByItemId = (itemId, snappedComponents) => {
|
|
41
|
-
if (!snappedComponents || snappedComponents?.length === 0) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
const index = snappedComponents?.findIndex(comp => comp?.instance?.itemId === itemId);
|
|
45
|
-
if (index > -1) {
|
|
46
|
-
const comp = snappedComponents[index];
|
|
47
|
-
snappedComponents.splice(index, 1);
|
|
48
|
-
return comp;
|
|
49
|
-
}
|
|
50
|
-
return snappedComponents.shift() ?? null;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* tracking by propName
|
|
54
|
-
*/
|
|
55
|
-
track(items, components, snappedComponents, direction, trackBy) {
|
|
56
|
-
if (!items) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const untrackedItems = [...components], newTrackItems = [], untrackedComponentsByTypeMap = {}, isDown = direction === 0 || direction === 1, snapped = !!snappedComponents ? [...snappedComponents] : [];
|
|
60
|
-
let isRegularSnapped = false;
|
|
61
|
-
const serviceIdProp = getServiceIdProp(trackBy);
|
|
62
|
-
for (let i = isDown ? 0 : items.length - 1, l = isDown ? items.length : 0; isDown ? i < l : i >= l; isDown ? i++ : i--) {
|
|
63
|
-
const item = items[i], isDummy = item?.data?.[SERVICE_PROP_DUMMY] && (item?.data?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED);
|
|
64
|
-
if (isDummy) {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
const itemTrackingProperty = item[serviceIdProp] ?? item[trackBy];
|
|
68
|
-
let snappedComponent;
|
|
69
|
-
if (this._trackMap) {
|
|
70
|
-
if (this._trackMap.has(itemTrackingProperty)) {
|
|
71
|
-
const diId = this._trackMap.get(itemTrackingProperty), compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex] ?? null, data = item?.data, compId = comp?.instance?.id ?? null;
|
|
72
|
-
if (comp !== null && compId === diId && compId !== null && data?.[SERVICE_PROP_DUMMY] !== SERVICE_PROP_DUMMY_ENABLED) {
|
|
73
|
-
const indexByUntrackedItems = untrackedItems.findIndex(v => {
|
|
74
|
-
return v.instance.id === compId;
|
|
75
|
-
});
|
|
76
|
-
if (indexByUntrackedItems > -1) {
|
|
77
|
-
if (item.config.snapped || item.config.snappedOut) {
|
|
78
|
-
if (snapped.length > 0) {
|
|
79
|
-
snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);
|
|
80
|
-
if (!!snappedComponent) {
|
|
81
|
-
isRegularSnapped = true;
|
|
82
|
-
snappedComponent.instance.item = item;
|
|
83
|
-
snappedComponent.instance.show();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (!!snappedComponent) {
|
|
88
|
-
if (item.config.snapped || item.config.snappedOut) {
|
|
89
|
-
comp.instance.item = null;
|
|
90
|
-
comp.instance.hide();
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
comp.instance.item = item;
|
|
94
|
-
comp.instance.show();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
comp.instance.item = item;
|
|
99
|
-
comp.instance.show();
|
|
100
|
-
}
|
|
101
|
-
untrackedItems.splice(indexByUntrackedItems, 1);
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
this._trackMap.delete(itemTrackingProperty);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (untrackedItems.length > 0) {
|
|
111
|
-
newTrackItems.push(item);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (untrackedItems.length > 0) {
|
|
115
|
-
for (let i = 0, l = untrackedItems.length; i < l; i++) {
|
|
116
|
-
const comp = untrackedItems[i], type = comp?.instance.item?.data?.type;
|
|
117
|
-
if (!untrackedComponentsByTypeMap[type]) {
|
|
118
|
-
untrackedComponentsByTypeMap[type] = [];
|
|
119
|
-
}
|
|
120
|
-
untrackedComponentsByTypeMap[type].push({ comp, index: i });
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
for (let i = 0, l = newTrackItems.length; i < l; i++) {
|
|
124
|
-
let snappedComponent;
|
|
125
|
-
if (untrackedItems.length > 0) {
|
|
126
|
-
const item = newTrackItems[i], itemTrackingProperty = item.id, type = item.data?.type;
|
|
127
|
-
let comp;
|
|
128
|
-
if (type) {
|
|
129
|
-
const list = untrackedComponentsByTypeMap[type];
|
|
130
|
-
if (!!list && list.length > 0) {
|
|
131
|
-
const untrackedItem = list.shift();
|
|
132
|
-
if (untrackedItem) {
|
|
133
|
-
comp = untrackedItem.comp;
|
|
134
|
-
untrackedItems.slice(untrackedItem.index, 1);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
if (!comp) {
|
|
139
|
-
comp = untrackedItems.shift();
|
|
140
|
-
}
|
|
141
|
-
if (comp) {
|
|
142
|
-
if (item.config.snapped || item.config.snappedOut) {
|
|
143
|
-
if (snapped.length > 0) {
|
|
144
|
-
snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);
|
|
145
|
-
isRegularSnapped = true;
|
|
146
|
-
if (!!snappedComponent) {
|
|
147
|
-
snappedComponent.instance.item = item;
|
|
148
|
-
snappedComponent.instance.show();
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (!!snappedComponent) {
|
|
153
|
-
if (item.config.snapped || item.config.snappedOut) {
|
|
154
|
-
comp.instance.item = null;
|
|
155
|
-
comp.instance.hide();
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
comp.instance.item = item;
|
|
159
|
-
comp.instance.show();
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
comp.instance.item = item;
|
|
164
|
-
comp.instance.show();
|
|
165
|
-
}
|
|
166
|
-
if (this._trackMap) {
|
|
167
|
-
this._trackMap.set(itemTrackingProperty, comp.instance.id);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
if (untrackedItems.length) {
|
|
173
|
-
for (let i = 0, l = untrackedItems.length; i < l; i++) {
|
|
174
|
-
const comp = untrackedItems[i];
|
|
175
|
-
comp.instance.item = null;
|
|
176
|
-
comp.instance.hide();
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (!isRegularSnapped) {
|
|
180
|
-
for (let i = 0, l = snapped.length; i < l; i++) {
|
|
181
|
-
const snappedComponent = snapped[i];
|
|
182
|
-
if (!!snappedComponent) {
|
|
183
|
-
snappedComponent.instance.item = null;
|
|
184
|
-
snappedComponent.instance.hide();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
untrackComponentByIdProperty(component) {
|
|
190
|
-
if (!component) {
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
const propertyIdName = this._trackingPropertyName;
|
|
194
|
-
if (this._trackMap && component[propertyIdName] !== undefined) {
|
|
195
|
-
this._trackMap.delete(propertyIdName);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
clearTrackMap() {
|
|
199
|
-
this._trackMap.clear();
|
|
200
|
-
}
|
|
201
|
-
dispose() {
|
|
202
|
-
if (this._trackMap) {
|
|
203
|
-
this._trackMap.clear();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvcmUvdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFhM0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQ2hCOztPQUVHO0lBQ08sMEJBQTBCLEdBQTZCLEVBQUUsQ0FBQztJQUVwRSxJQUFJLHlCQUF5QixDQUFDLENBQTJCO1FBQ3JELElBQUksSUFBSSxDQUFDLDBCQUEwQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUyxHQUFHLElBQUksSUFBSSxFQUE4QixDQUFDO0lBRTdELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRVMscUJBQXFCLENBQVU7SUFFekMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFTO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksb0JBQTRCO1FBQ3BDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztJQUN0RCxDQUFDO0lBRU8sa0NBQWtDLEdBQUcsQ0FBQyxNQUFVLEVBQUUsaUJBQTRELEVBQzNGLEVBQUU7UUFDekIsSUFBSSxD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QVMsSUFBSyxTQUFpQixDQUFDLGNBQWMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTY3JvbGxEaXJlY3Rpb24gfSBmcm9tIFwiLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0Q29sbGVjdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvcmVuZGVyLWNvbGxlY3Rpb24ubW9kZWxcIjtcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlXCI7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IElkIH0gZnJvbSBcIi4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IENNYXAgfSBmcm9tIFwiLi4vdXRpbHMvY21hcFwiO1xyXG5pbXBvcnQgeyBTRVJWSUNFX1BST1BfRFVNTVksIFNFUlZJQ0VfUFJPUF9EVU1NWV9FTkFCTEVEIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IGdldFNlcnZpY2VJZFByb3AgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxudHlwZSBUcmFja2luZ1Byb3BlcnR5SWQgPSBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ8SSA9IGFueT4ge1xyXG4gICAgZ2V0Qm91bmRzKCk6IElTaXplO1xyXG4gICAgaXRlbUlkOiBJZDtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBpdGVtOiBJIHwgbnVsbDtcclxuICAgIHNob3c6ICgpID0+IHZvaWQ7XHJcbiAgICBoaWRlOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhY2tzIGRpc3BsYXkgaXRlbXMgYnkgcHJvcGVydHlcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb3JlL3RyYWNrZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVHJhY2tlcjxDIGV4dGVuZHMgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBkaXNwbGF5IG9iamVjdHMgZGljdGlvbmFyeSBvZiBpbmRleGVzIGJ5IGlkXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZDogeyBbaWQ6IG51bWJlcl06IG51bWJlciB9ID0ge307XHJcblxyXG4gICAgc2V0IGRpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQodjogeyBbaWQ6IG51bWJlcl06IG51bWJlciB9KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQgPT09IHYpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaWN0aW9uYXJ5IGRpc3BsYXlJdGVtcyBwcm9wZXJ0eU5hbWVJZCBieSBpdGVtcyBwcm9wZXJ0eU5hbWVJZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3RyYWNrTWFwID0gbmV3IENNYXA8VHJhY2tpbmdQcm9wZXJ0eUlkLCBudW1iZXI+KCk7XHJcblxyXG4gICAgZ2V0IHRyYWNrTWFwKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFja01hcDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RyYWNraW5nUHJvcGVydHlOYW1lITogc3RyaW5nO1xyXG5cclxuICAgIHNldCB0cmFja2luZ1Byb3BlcnR5TmFtZSh2OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IodHJhY2tpbmdQcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RyYWNraW5nUHJvcGVydHlOYW1lID0gdHJhY2tpbmdQcm9wZXJ0eU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0ZWFyT3V0U25hcGVkRGlzcGxheU9iamVjdEJ5SXRlbUlkID0gKGl0ZW1JZDogSWQsIHNuYXBwZWRDb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8Qz4+IHwgbnVsbCB8IHVuZGVmaW5lZCk6XHJcbiAgICAgICAgQ29tcG9uZW50UmVmPEM+IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgaWYgKCFzbmFwcGVkQ29tcG9uZW50cyB8fCBzbmFwcGVkQ29tcG9uZW50cz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbmRleCA9IHNuYXBwZWRDb21wb25lbnRzPy5maW5kSW5kZXgoY29tcCA9PiBjb21wPy5pbnN0YW5jZT8uaXRlbUlkID09PSBpdGVtSWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXAgPSBzbmFwcGVkQ29tcG9uZW50c1tpbmRleF07XHJcbiAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc25hcHBlZENvbXBvbmVudHMuc2hpZnQoKSA/PyBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhY2tpbmcgYnkgcHJvcE5hbWVcclxuICAgICAqL1xyXG4gICAgdHJhY2soaXRlbXM6IElSZW5kZXJWaXJ0dWFsTGlzdENvbGxlY3Rpb24sIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxDPj4sIHNuYXBwZWRDb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8Qz4+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbiwgdHJhY2tCeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1bnRyYWNrZWRJdGVtcyA9IFsuLi5jb21wb25lbnRzXSwgbmV3VHJhY2tJdGVtczogQXJyYXk8YW55PiA9IFtdLFxyXG4gICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwOiB7IFt0eXBlOiBzdHJpbmddOiBBcnJheTx7IGNvbXA6IENvbXBvbmVudFJlZjxDPjsgaW5kZXg6IG51bWJlciB9PjsgfSA9IHt9LFxyXG4gICAgICAgICAgICBpc0Rvd24gPSBkaXJlY3Rpb24gPT09IDAgfHwgZGlyZWN0aW9uID09PSAxLCBzbmFwcGVkID0gISFzbmFwcGVkQ29tcG9uZW50cyA/IFsuLi5zbmFwcGVkQ29tcG9uZW50c10gOiBbXTtcclxuICAgICAgICBsZXQgaXNSZWd1bGFyU25hcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBzZXJ2aWNlSWRQcm9wID0gZ2V0U2VydmljZUlkUHJvcCh0cmFja0J5KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gaXNEb3duID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSBpc0Rvd24gPyBpdGVtcy5sZW5ndGggOiAwOyBpc0Rvd24gPyBpIDwgbCA6IGkgPj0gbDsgaXNEb3duID8gaSsrIDogaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXSxcclxuICAgICAgICAgICAgICAgIGlzRHVtbXkgPSBpdGVtPy5kYXRhPy5bU0VSVklDRV9QUk9QX0RVTU1ZXSAmJiAoaXRlbT8uZGF0YT8uW1NFUlZJQ0VfUFJPUF9EVU1NWV0gPT09IFNFUlZJQ0VfUFJPUF9EVU1NWV9FTkFCTEVEKTtcclxuICAgICAgICAgICAgaWYgKGlzRHVtbXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1UcmFja2luZ1Byb3BlcnR5ID0gKGl0ZW0gYXMgYW55KVtzZXJ2aWNlSWRQcm9wXSA/PyAoaXRlbSBhcyBhbnkpW3RyYWNrQnldO1xyXG4gICAgICAgICAgICBsZXQgc25hcHBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXAuaGFzKGl0ZW1UcmFja2luZ1Byb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpSWQgPSB0aGlzLl90cmFja01hcC5nZXQoaXRlbVRyYWNraW5nUHJvcGVydHkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wSW5kZXggPSB0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkW2RpSWRdLCBjb21wID0gY29tcG9uZW50c1tjb21wSW5kZXhdID8/IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBpdGVtPy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wSWQgPSBjb21wPy5pbnN0YW5jZT8uaWQgPz8gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPT0gbnVsbCAmJiBjb21wSWQgPT09IGRpSWQgJiYgY29tcElkICE9PSBudWxsICYmIGRhdGE/LltTRVJWSUNFX1BST1BfRFVNTVldICE9PSBTRVJWSUNFX1BST1BfRFVNTVlfRU5BQkxFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleEJ5VW50cmFja2VkSXRlbXMgPSB1bnRyYWNrZWRJdGVtcy5maW5kSW5kZXgodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5pbnN0YW5jZS5pZCA9PT0gY29tcElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4QnlVbnRyYWNrZWRJdGVtcyA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb25maWcuc25hcHBlZCB8fCBpdGVtLmNvbmZpZy5zbmFwcGVkT3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXBwZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50ID0gdGhpcy50ZWFyT3V0U25hcGVkRGlzcGxheU9iamVjdEJ5SXRlbUlkKGl0ZW0uaWQsIHNuYXBwZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFzbmFwcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50Lmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFzbmFwcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29uZmlnLnNuYXBwZWQgfHwgaXRlbS5jb25maWcuc25hcHBlZE91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWRJdGVtcy5zcGxpY2UoaW5kZXhCeVVudHJhY2tlZEl0ZW1zLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFja01hcC5kZWxldGUoaXRlbVRyYWNraW5nUHJvcGVydHkpO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld1RyYWNrSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB1bnRyYWNrZWRJdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB1bnRyYWNrZWRJdGVtc1tpXSwgdHlwZSA9IGNvbXA/Lmluc3RhbmNlLml0ZW0/LmRhdGE/LnR5cGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXVudHJhY2tlZENvbXBvbmVudHNCeVR5cGVNYXBbdHlwZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdLnB1c2goeyBjb21wLCBpbmRleDogaSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBuZXdUcmFja0l0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgc25hcHBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXdUcmFja0l0ZW1zW2ldLCBpdGVtVHJhY2tpbmdQcm9wZXJ0eSA9IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGl0ZW0uZGF0YT8udHlwZTtcclxuICAgICAgICAgICAgICAgIGxldCBjb21wOiBDb21wb25lbnRSZWY8Qz4gfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIWxpc3QgJiYgbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVudHJhY2tlZEl0ZW0gPSBsaXN0LnNoaWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bnRyYWNrZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wID0gdW50cmFja2VkSXRlbS5jb21wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja2VkSXRlbXMuc2xpY2UodW50cmFja2VkSXRlbS5pbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IHVudHJhY2tlZEl0ZW1zLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb25maWcuc25hcHBlZCB8fCBpdGVtLmNvbmZpZy5zbmFwcGVkT3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwcGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQgPSB0aGlzLnRlYXJPdXRTbmFwZWREaXNwbGF5T2JqZWN0QnlJdGVtSWQoaXRlbS5pZCwgc25hcHBlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXNuYXBwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50Lmluc3RhbmNlLml0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIXNuYXBwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29uZmlnLnNuYXBwZWQgfHwgaXRlbS5jb25maWcuc25hcHBlZE91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhY2tNYXAuc2V0KGl0ZW1UcmFja2luZ1Byb3BlcnR5LCBjb21wLmluc3RhbmNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh1bnRyYWNrZWRJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB1bnRyYWNrZWRJdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB1bnRyYWNrZWRJdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFpc1JlZ3VsYXJTbmFwcGVkKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gc25hcHBlZC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNuYXBwZWRDb21wb25lbnQgPSBzbmFwcGVkW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhc25hcHBlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc25hcHBlZENvbXBvbmVudC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW50cmFja0NvbXBvbmVudEJ5SWRQcm9wZXJ0eShjb21wb25lbnQ/OiBDKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJvcGVydHlJZE5hbWUgPSB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwICYmIChjb21wb25lbnQgYXMgYW55KVtwcm9wZXJ0eUlkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl90cmFja01hcC5kZWxldGUocHJvcGVydHlJZE5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhclRyYWNrTWFwKCkge1xyXG4gICAgICAgIHRoaXMuX3RyYWNrTWFwLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXApIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhY2tNYXAuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, combineLatest, Subject, takeUntil, tap } from 'rxjs';
|
|
3
|
-
import { TextDirections } from '../../enums';
|
|
4
|
-
import { ScrollerDirection } from '../../components/ng-scroller/enums';
|
|
5
|
-
import { isDirection } from '../../utils/is-direction';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const RIGHT = 'right', DIR = 'dir';
|
|
8
|
-
/**
|
|
9
|
-
* LocaleSensitiveDirective
|
|
10
|
-
* Maximum performance for extremely large lists.
|
|
11
|
-
* It is based on algorithms for virtualization of screen objects.
|
|
12
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/directives/locale-sensitive/locale-sensitive.directive.ts
|
|
13
|
-
* @author Evgenii Alexandrovich Grebennikov
|
|
14
|
-
* @email djonnyx@gmail.com
|
|
15
|
-
*/
|
|
16
|
-
export class LocaleSensitiveDirective {
|
|
17
|
-
_elementRef;
|
|
18
|
-
_$unsubscribe = new Subject();
|
|
19
|
-
_$langTextDir = new BehaviorSubject(TextDirections.LTR);
|
|
20
|
-
$langTextDir = this._$langTextDir.asObservable();
|
|
21
|
-
set langTextDir(v) {
|
|
22
|
-
this._$langTextDir.next(v);
|
|
23
|
-
}
|
|
24
|
-
get langTextDir() { return this._$langTextDir.getValue(); }
|
|
25
|
-
_$listDir = new BehaviorSubject(ScrollerDirection.VERTICAL);
|
|
26
|
-
$listDir = this._$listDir.asObservable();
|
|
27
|
-
set listDir(v) {
|
|
28
|
-
this._$listDir.next(v);
|
|
29
|
-
}
|
|
30
|
-
get listDir() { return this._$listDir.getValue(); }
|
|
31
|
-
constructor(_elementRef) {
|
|
32
|
-
this._elementRef = _elementRef;
|
|
33
|
-
const $langTextDir = this.$langTextDir, $listDir = this.$listDir;
|
|
34
|
-
combineLatest([$langTextDir, $listDir]).pipe(takeUntil(this._$unsubscribe), tap(([dir, listDir]) => {
|
|
35
|
-
const element = this._elementRef.nativeElement, isVertical = isDirection(listDir, ScrollerDirection.VERTICAL);
|
|
36
|
-
element.setAttribute(DIR, isVertical ? dir : TextDirections.LTR);
|
|
37
|
-
if (dir === TextDirections.RTL && isVertical) {
|
|
38
|
-
element.style.textAlign = RIGHT;
|
|
39
|
-
element.classList.add(TextDirections.RTL);
|
|
40
|
-
element.classList.remove(TextDirections.LTR);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
element.classList.add(TextDirections.LTR);
|
|
44
|
-
element.classList.remove(TextDirections.RTL);
|
|
45
|
-
}
|
|
46
|
-
})).subscribe();
|
|
47
|
-
}
|
|
48
|
-
ngOnDestroy() {
|
|
49
|
-
if (this._$unsubscribe) {
|
|
50
|
-
this._$unsubscribe.next();
|
|
51
|
-
this._$unsubscribe.complete();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleSensitiveDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: LocaleSensitiveDirective, selector: "[localeSensitive]", inputs: { langTextDir: "langTextDir", listDir: "listDir" }, ngImport: i0 });
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleSensitiveDirective, decorators: [{
|
|
58
|
-
type: Directive,
|
|
59
|
-
args: [{
|
|
60
|
-
selector: '[localeSensitive]',
|
|
61
|
-
standalone: false,
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { langTextDir: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], listDir: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2xvY2FsZS1zZW5zaXRpdmUvbG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUd2RCxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQ25CLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFZDs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQXNCZjtJQXJCVixhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV0QyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUxRCxJQUNJLFdBQVcsQ0FBQyxDQUFnQjtRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUduRCxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQTRCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELElBQ0ksT0FBTyxDQUFDLENBQTRCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5ELFlBQW9CLFdBQW9DO1FBQXBDLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUNwQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUUzQixhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUE0QixFQUMzRCxVQUFVLEdBQUcsV0FBVyxDQUFDLE9BQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLElBQUksR0FBRyxLQUFLLGNBQWMsQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDaEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO3dHQWpEVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsS0FBSztpQkFDbEI7K0VBUUssV0FBVztzQkFEZCxLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTY3JvbGxlckRpcmVjdGlvbiwgU2Nyb2xsZXJEaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9uZy1zY3JvbGxlci9lbnVtcyc7XHJcbmltcG9ydCB7IGlzRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvaXMtZGlyZWN0aW9uJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbmNvbnN0IFJJR0hUID0gJ3JpZ2h0JyxcclxuICBESVIgPSAnZGlyJztcclxuXHJcbi8qKlxyXG4gKiBMb2NhbGVTZW5zaXRpdmVEaXJlY3RpdmVcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2xvY2FsZS1zZW5zaXRpdmUvbG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tsb2NhbGVTZW5zaXRpdmVdJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsZVNlbnNpdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJvdGVjdGVkIF8kdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIF8kbGFuZ1RleHREaXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHREaXJlY3Rpb24+KFRleHREaXJlY3Rpb25zLkxUUik7XHJcbiAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsYW5nVGV4dERpcih2OiBUZXh0RGlyZWN0aW9uKSB7XHJcbiAgICB0aGlzLl8kbGFuZ1RleHREaXIubmV4dCh2KTtcclxuICB9XHJcbiAgZ2V0IGxhbmdUZXh0RGlyKCkgeyByZXR1cm4gdGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcblxyXG4gIHByaXZhdGUgXyRsaXN0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxlckRpcmVjdGlvbnMgfCBudWxsPihTY3JvbGxlckRpcmVjdGlvbi5WRVJUSUNBTCk7XHJcbiAgcmVhZG9ubHkgJGxpc3REaXIgPSB0aGlzLl8kbGlzdERpci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbGlzdERpcih2OiBTY3JvbGxlckRpcmVjdGlvbnMgfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kbGlzdERpci5uZXh0KHYpO1xyXG4gIH1cclxuICBnZXQgbGlzdERpcigpIHsgcmV0dXJuIHRoaXMuXyRsaXN0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGNvbnN0ICRsYW5nVGV4dERpciA9IHRoaXMuJGxhbmdUZXh0RGlyLFxyXG4gICAgICAkbGlzdERpciA9IHRoaXMuJGxpc3REaXI7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGxhbmdUZXh0RGlyLCAkbGlzdERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtkaXIsIGxpc3REaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgIGlzVmVydGljYWwgPSBpc0RpcmVjdGlvbihsaXN0RGlyISwgU2Nyb2xsZXJEaXJlY3Rpb24uVkVSVElDQUwpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKERJUiwgaXNWZXJ0aWNhbCA/IGRpciA6IFRleHREaXJlY3Rpb25zLkxUUik7XHJcbiAgICAgICAgaWYgKGRpciA9PT0gVGV4dERpcmVjdGlvbnMuUlRMICYmIGlzVmVydGljYWwpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc3R5bGUudGV4dEFsaWduID0gUklHSFQ7XHJcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoVGV4dERpcmVjdGlvbnMuUlRMKTtcclxuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoVGV4dERpcmVjdGlvbnMuTFRSKTtcclxuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShUZXh0RGlyZWN0aW9ucy5SVEwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fJHVuc3Vic2NyaWJlKSB7XHJcbiAgICAgIHRoaXMuXyR1bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgIHRoaXMuXyR1bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { fromEvent, of, race, Subject } from 'rxjs';
|
|
3
|
-
import { filter, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const DEFAULT_MAX_DISTANCE = 40;
|
|
6
|
-
/**
|
|
7
|
-
* ItemClickDirective
|
|
8
|
-
* Maximum performance for extremely large lists.
|
|
9
|
-
* It is based on algorithms for virtualization of screen objects.
|
|
10
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/directives/item-click/item-click.directive.ts
|
|
11
|
-
* @author Evgenii Alexandrovich Grebennikov
|
|
12
|
-
* @email djonnyx@gmail.com
|
|
13
|
-
*/
|
|
14
|
-
export class VirtualClickDirective {
|
|
15
|
-
_elementRef;
|
|
16
|
-
_$unsubscribe = new Subject();
|
|
17
|
-
_maxDistance = DEFAULT_MAX_DISTANCE;
|
|
18
|
-
set maxDistance(v) {
|
|
19
|
-
this._maxDistance = (v !== null || v !== undefined) ? Number(v) : DEFAULT_MAX_DISTANCE;
|
|
20
|
-
}
|
|
21
|
-
onVirtualClick = new EventEmitter();
|
|
22
|
-
constructor(_elementRef) {
|
|
23
|
-
this._elementRef = _elementRef;
|
|
24
|
-
const $pointerPressed = fromEvent(this._elementRef.nativeElement, 'pointerdown'), $pointerCancel = race([
|
|
25
|
-
fromEvent(window, 'pointerup').pipe(takeUntil(this._$unsubscribe)),
|
|
26
|
-
fromEvent(window, 'pointerleave').pipe(takeUntil(this._$unsubscribe)),
|
|
27
|
-
]), $pointerRelease = fromEvent(this._elementRef.nativeElement, 'pointerup', { passive: false });
|
|
28
|
-
$pointerPressed.pipe(takeUntil(this._$unsubscribe), switchMap(e => {
|
|
29
|
-
const x = Math.abs(e.clientX), y = Math.abs(e.clientY);
|
|
30
|
-
return $pointerRelease.pipe(takeUntil(this._$unsubscribe), takeUntil(race([
|
|
31
|
-
$pointerCancel,
|
|
32
|
-
fromEvent(window, 'pointermove').pipe(takeUntil(this._$unsubscribe), switchMap(e => {
|
|
33
|
-
const xx = x - Math.abs(e.clientX), yy = y - Math.abs(e.clientY), dist = Math.sqrt(Math.pow(xx, 2) + Math.pow(yy, 2));
|
|
34
|
-
if (dist > this._maxDistance) {
|
|
35
|
-
return of(true);
|
|
36
|
-
}
|
|
37
|
-
return of(false);
|
|
38
|
-
}), takeUntil(this._$unsubscribe), filter(v => !!v)),
|
|
39
|
-
])), takeUntil(this._$unsubscribe), tap(e => {
|
|
40
|
-
if (e) {
|
|
41
|
-
this.onVirtualClick.emit(e);
|
|
42
|
-
}
|
|
43
|
-
}));
|
|
44
|
-
})).subscribe();
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
if (this._$unsubscribe) {
|
|
48
|
-
this._$unsubscribe.next();
|
|
49
|
-
this._$unsubscribe.complete();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VirtualClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: VirtualClickDirective, selector: "[virtualClick]", inputs: { maxDistance: ["maxClickDistance", "maxDistance"] }, outputs: { onVirtualClick: "onVirtualClick" }, ngImport: i0 });
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VirtualClickDirective, decorators: [{
|
|
56
|
-
type: Directive,
|
|
57
|
-
args: [{
|
|
58
|
-
selector: '[virtualClick]',
|
|
59
|
-
standalone: false,
|
|
60
|
-
}]
|
|
61
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { maxDistance: [{
|
|
62
|
-
type: Input,
|
|
63
|
-
args: ['maxClickDistance']
|
|
64
|
-
}], onVirtualClick: [{
|
|
65
|
-
type: Output
|
|
66
|
-
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL3ZpcnR1YWwtY2xpY2svdmlydHVhbC1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbkUsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEM7Ozs7Ozs7R0FPRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7SUFhVjtJQVpWLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXRDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQztJQUU1QyxJQUNJLFdBQVcsQ0FBQyxDQUFnQjtRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7SUFDM0YsQ0FBQztJQUdELGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztJQUUvRCxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQWUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQzFGLGNBQWMsR0FBRyxJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgb2YsIHJhY2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuY29uc3QgREVGQVVMVF9NQVhfRElTVEFOQ0UgPSA0MDtcclxuXHJcbi8qKlxyXG4gKiBJdGVtQ2xpY2tEaXJlY3RpdmVcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2l0ZW0tY2xpY2svaXRlbS1jbGljay5kaXJlY3RpdmUudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3ZpcnR1YWxDbGlja10nLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsQ2xpY2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIF8kdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgX21heERpc3RhbmNlID0gREVGQVVMVF9NQVhfRElTVEFOQ0U7XHJcblxyXG4gICAgQElucHV0KCdtYXhDbGlja0Rpc3RhbmNlJylcclxuICAgIHNldCBtYXhEaXN0YW5jZSh2OiBudW1iZXIgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fbWF4RGlzdGFuY2UgPSAodiAhPT0gbnVsbCB8fCB2ICE9PSB1bmRlZmluZWQpID8gTnVtYmVyKHYpIDogREVGQVVMVF9NQVhfRElTVEFOQ0U7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBvblZpcnR1YWxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8UG9pbnRlckV2ZW50IHwgVG91Y2hFdmVudD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgY29uc3QgJHBvaW50ZXJQcmVzc2VkID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmRvd24nKSxcclxuICAgICAgICAgICAgJHBvaW50ZXJDYW5jZWwgPSByYWNlKFtcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdwb2ludGVydXAnKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHdpbmRvdywgJ3BvaW50ZXJsZWF2ZScpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgJHBvaW50ZXJSZWxlYXNlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcnVwJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgJHBvaW50ZXJQcmVzc2VkLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gTWF0aC5hYnMoZS5jbGllbnRYKSxcclxuICAgICAgICAgICAgICAgICAgICB5ID0gTWF0aC5hYnMoZS5jbGllbnRZKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAkcG9pbnRlclJlbGVhc2UucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhY2UoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvaW50ZXJDYW5jZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih3aW5kb3csICdwb2ludGVybW92ZScpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4eCA9IHggLSBNYXRoLmFicyhlLmNsaWVudFgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXkgPSB5IC0gTWF0aC5hYnMoZS5jbGllbnRZKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSBNYXRoLnNxcnQoTWF0aC5wb3coeHgsIDIpICsgTWF0aC5wb3coeXksIDIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0ID4gdGhpcy5fbWF4RGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIodiA9PiAhIXYpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVmlydHVhbENsaWNrLmVtaXQoZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyR1bnN1YnNjcmliZSkge1xyXG4gICAgICAgICAgICB0aGlzLl8kdW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLl8kdW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { NgVirtualListService } from './ng-virtual-list.service';
|
|
3
|
-
import { FocusAlignments } from './enums';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* NgVirtualListPublicService
|
|
7
|
-
* Maximum performance for extremely large lists.
|
|
8
|
-
* It is based on algorithms for virtualization of screen objects.
|
|
9
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/ng-virtual-list-publick.service.ts
|
|
10
|
-
* @author Evgenii Alexandrovich Grebennikov
|
|
11
|
-
* @email djonnyx@gmail.com
|
|
12
|
-
*/
|
|
13
|
-
export class NgVirtualListPublicService {
|
|
14
|
-
_internalService = inject(NgVirtualListService);
|
|
15
|
-
/**
|
|
16
|
-
* Unique list identifier.
|
|
17
|
-
*/
|
|
18
|
-
get id() { return this._internalService.id; }
|
|
19
|
-
/**
|
|
20
|
-
* Informs about a click on a list item.
|
|
21
|
-
*/
|
|
22
|
-
get $virtualClick() { return this._internalService.$virtualClick; }
|
|
23
|
-
;
|
|
24
|
-
/**
|
|
25
|
-
* Informs about the selection of a list item(s).
|
|
26
|
-
*/
|
|
27
|
-
get $selectedIds() { return this._internalService.$selectedIds; }
|
|
28
|
-
;
|
|
29
|
-
/**
|
|
30
|
-
* Informs about the collapse (expanding) of a list element(s).
|
|
31
|
-
*/
|
|
32
|
-
get $collapsedIds() { return this._internalService.$collapsedIds; }
|
|
33
|
-
;
|
|
34
|
-
/**
|
|
35
|
-
* Informs the focus on the specified list item.
|
|
36
|
-
*/
|
|
37
|
-
get $focusItem() { return this._internalService.$focusItem; }
|
|
38
|
-
;
|
|
39
|
-
/**
|
|
40
|
-
* Notifies about the next change detection tick. Works similarly to `setTimeout` with a timeout of 0.
|
|
41
|
-
*/
|
|
42
|
-
get $tick() { return this._internalService.$tick; }
|
|
43
|
-
;
|
|
44
|
-
/**
|
|
45
|
-
* Specifies a list of selected items.
|
|
46
|
-
*/
|
|
47
|
-
set selectedIds(ids) {
|
|
48
|
-
this._internalService.selectedIds = ids;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Returns a list of selected items.
|
|
52
|
-
*/
|
|
53
|
-
get selectedIds() { return this._internalService.selectedIds; }
|
|
54
|
-
/**
|
|
55
|
-
* Specifies a list of collapsed elements.
|
|
56
|
-
*/
|
|
57
|
-
set collapsedIds(ids) {
|
|
58
|
-
this._internalService.collapsedIds = ids;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Returns a list of collapsed elements.
|
|
62
|
-
*/
|
|
63
|
-
get collapsedIds() { return this._internalService.collapsedIds; }
|
|
64
|
-
/**
|
|
65
|
-
* Updates the list
|
|
66
|
-
* @param immediately - Indicates that the list is updated instantly.
|
|
67
|
-
*/
|
|
68
|
-
update(immediately = false) {
|
|
69
|
-
this._internalService.update(immediately);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Selects a list item
|
|
73
|
-
* @param id
|
|
74
|
-
* @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.
|
|
75
|
-
*/
|
|
76
|
-
select(id, selected = undefined) {
|
|
77
|
-
this._internalService.select(id, selected);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Collapse list items
|
|
81
|
-
* @param id
|
|
82
|
-
* @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.
|
|
83
|
-
*/
|
|
84
|
-
collapse(id, collapsed = undefined) {
|
|
85
|
-
this._internalService.collapse(id, collapsed);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Focus an list item by a given id.
|
|
89
|
-
*/
|
|
90
|
-
focus(id, align = FocusAlignments.NONE, scrollBehavior = "auto") {
|
|
91
|
-
return this._internalService.focusById(id, align, scrollBehavior);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.
|
|
95
|
-
*/
|
|
96
|
-
scrollTo(id, cb = null, options = null) {
|
|
97
|
-
this._internalService.scrollTo(id, cb, options);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Scrolls the scroll area to the first item in the collection.
|
|
101
|
-
*/
|
|
102
|
-
scrollToStart(options) {
|
|
103
|
-
this._internalService.scrollToStart(options);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Scrolls the list to the end of the content size.
|
|
107
|
-
*/
|
|
108
|
-
scrollToEnd(options) {
|
|
109
|
-
this._internalService.scrollToEnd(options);
|
|
110
|
-
}
|
|
111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
112
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, providedIn: 'root' });
|
|
113
|
-
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, decorators: [{
|
|
115
|
-
type: Injectable,
|
|
116
|
-
args: [{
|
|
117
|
-
providedIn: 'root'
|
|
118
|
-
}]
|
|
119
|
-
}] });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LXB1YmxpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbmctdmlydHVhbC1saXN0LXB1YmxpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRTFDOzs7Ozs7O0dBT0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzdCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0gsSUFBSSxFQUFFLEtBQWEsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRDs7T0FFRztJQUNILElBQUksYUFBYSxLQUFxRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUVwSDs7T0FFRztJQUNILElBQUksWUFBWSxLQUF3QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUVyRzs7T0FFRztJQUNILElBQUksYUFBYSxLQUE0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUzRjs7T0FFRztJQUNILElBQUksVUFBVSxLQUFrQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUzRjs7T0FFRztJQUNILElBQUksS0FBSyxLQUF1QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUV0RTs7T0FFRztJQUNILElBQUksV0FBVyxDQUFDLEdBQTBCO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxJQUFJLFlBQVksQ0FBQyxHQUFjO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFakU7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGNBQXVCLEtBQUs7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxFQUFNLEVBQUUsV0FBZ0MsU0FBUztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7UUFJSTtJQUNKLFFBQVEsQ0FBQyxFQUFNLEVBQUUsWUFBaUMsU0FBUztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsRUFBTSxFQUFFLFFBQXdCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlDLE1BQU07UUFDakcsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUVEOztRQUVJO0lBQ0osUUFBUSxDQUFDLEVBQU0sRUFBRSxLQUEwQixJQUFJLEVBQUUsVUFBaUMsSUFBSTtRQUNwRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE9BQXdCO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLE9BQXdCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0E3R1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IElTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnQsIElkIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEZvY3VzSXRlbVBhcmFtcyB9IGZyb20gJy4vdHlwZXMvZm9jdXMtaXRlbS1wYXJhbXMnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB9IGZyb20gJy4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb2N1c0FsaWdubWVudHMgfSBmcm9tICcuL2VudW1zJztcclxuXHJcbi8qKlxyXG4gKiBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZVxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL25nLXZpcnR1YWwtbGlzdC1wdWJsaWNrLnNlcnZpY2UudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfaW50ZXJuYWxTZXJ2aWNlID0gaW5qZWN0KE5nVmlydHVhbExpc3RTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIGxpc3QgaWRlbnRpZmllci5cclxuICAgKi9cclxuICBnZXQgaWQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS5pZDsgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmZvcm1zIGFib3V0IGEgY2xpY2sgb24gYSBsaXN0IGl0ZW0uXHJcbiAgICovXHJcbiAgZ2V0ICR2aXJ0dWFsQ2xpY2soKTogT2JzZXJ2YWJsZTxJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsPiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJHZpcnR1YWxDbGljazsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5mb3JtcyBhYm91dCB0aGUgc2VsZWN0aW9uIG9mIGEgbGlzdCBpdGVtKHMpLlxyXG4gICAqL1xyXG4gIGdldCAkc2VsZWN0ZWRJZHMoKTogT2JzZXJ2YWJsZTxBcnJheTxJZD4gfCBJZCB8IG51bGw+IHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS4kc2VsZWN0ZWRJZHM7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZm9ybXMgYWJvdXQgdGhlIGNvbGxhcHNlIChleHBhbmRpbmcpIG9mIGEgbGlzdCBlbGVtZW50KHMpLlxyXG4gICAqL1xyXG4gIGdldCAkY29sbGFwc2VkSWRzKCk6IE9ic2VydmFibGU8QXJyYXk8SWQ+PiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJGNvbGxhcHNlZElkczsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5mb3JtcyB0aGUgZm9jdXMgb24gdGhlIHNwZWNpZmllZCBsaXN0IGl0ZW0uXHJcbiAgICovXHJcbiAgZ2V0ICRmb2N1c0l0ZW0oKTogT2JzZXJ2YWJsZTxGb2N1c0l0ZW1QYXJhbXM+IHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS4kZm9jdXNJdGVtOyB9O1xyXG5cclxuICAvKipcclxuICAgKiBOb3RpZmllcyBhYm91dCB0aGUgbmV4dCBjaGFuZ2UgZGV0ZWN0aW9uIHRpY2suIFdvcmtzIHNpbWlsYXJseSB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgMC5cclxuICAgKi9cclxuICBnZXQgJHRpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJHRpY2s7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwZWNpZmllcyBhIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgc2V0IHNlbGVjdGVkSWRzKGlkczogQXJyYXk8SWQ+IHwgSWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0ZWRJZHMgPSBpZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcy5cclxuICAgKi9cclxuICBnZXQgc2VsZWN0ZWRJZHMoKSB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0ZWRJZHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3BlY2lmaWVzIGEgbGlzdCBvZiBjb2xsYXBzZWQgZWxlbWVudHMuXHJcbiAgICovXHJcbiAgc2V0IGNvbGxhcHNlZElkcyhpZHM6IEFycmF5PElkPikge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlZElkcyA9IGlkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGNvbGxhcHNlZCBlbGVtZW50cy5cclxuICAgKi9cclxuICBnZXQgY29sbGFwc2VkSWRzKCkgeyByZXR1cm4gdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlZElkczsgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBsaXN0XHJcbiAgICogQHBhcmFtIGltbWVkaWF0ZWx5IC0gSW5kaWNhdGVzIHRoYXQgdGhlIGxpc3QgaXMgdXBkYXRlZCBpbnN0YW50bHkuXHJcbiAgICovXHJcbiAgdXBkYXRlKGltbWVkaWF0ZWx5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuX2ludGVybmFsU2VydmljZS51cGRhdGUoaW1tZWRpYXRlbHkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAqIEBwYXJhbSBpZCBcclxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBzZWxlY3Rpb24vZGVzZWxlY3Rpb24gaXMgcGVyZm9ybWVkLlxyXG4gICAqL1xyXG4gIHNlbGVjdChpZDogSWQsIHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0KGlkLCBzZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gaWQgXHJcbiAgICAqIEBwYXJhbSBjb2xsYXBzZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBjb2xsYXBzZS9leHBhbmQgaXMgcGVyZm9ybWVkLlxyXG4gICAgKi9cclxuICBjb2xsYXBzZShpZDogSWQsIGNvbGxhcHNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlKGlkLCBjb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9jdXMgYW4gbGlzdCBpdGVtIGJ5IGEgZ2l2ZW4gaWQuXHJcbiAgICovXHJcbiAgZm9jdXMoaWQ6IElkLCBhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuTk9ORSwgc2Nyb2xsQmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gXCJhdXRvXCIpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuZm9jdXNCeUlkKGlkLCBhbGlnbiwgc2Nyb2xsQmVoYXZpb3IpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVGhlIG1ldGhvZCBzY3JvbGxzIHRoZSBsaXN0IHRvIHRoZSBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGBpZGAgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzY3JvbGxlZCBhcmVhLlxyXG4gICAgKi9cclxuICBzY3JvbGxUbyhpZDogSWQsIGNiOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCwgb3B0aW9uczogSVNjcm9sbE9wdGlvbnMgfCBudWxsID0gbnVsbCkge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLnNjcm9sbFRvKGlkLCBjYiwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY3JvbGxzIHRoZSBzY3JvbGwgYXJlYSB0byB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi5cclxuICAgKi9cclxuICBzY3JvbGxUb1N0YXJ0KG9wdGlvbnM/OiBJU2Nyb2xsT3B0aW9ucykge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLnNjcm9sbFRvU3RhcnQob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY3JvbGxzIHRoZSBsaXN0IHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgc2l6ZS5cclxuICAgKi9cclxuICBzY3JvbGxUb0VuZChvcHRpb25zPzogSVNjcm9sbE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX2ludGVybmFsU2VydmljZS5zY3JvbGxUb0VuZChvcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19
|