@fundamental-ngx/cdk 0.43.2 → 0.44.0-rc.1
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/data-source/data-source.directive.d.ts +1 -1
- package/esm2022/data-source/base/base-data-source.class.mjs +112 -0
- package/{esm2020 → esm2022}/data-source/data-source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/data-source/data-source.module.mjs +5 -5
- package/{esm2020 → esm2022}/forms/cva/cva-control.class.mjs +4 -4
- package/{esm2020 → esm2022}/forms/cva/cva.directive.mjs +4 -4
- package/{esm2020 → esm2022}/forms/forms.module.mjs +5 -5
- package/{esm2020 → esm2022}/fundamental-ngx.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/abstract-fd-ngx-class.mjs +4 -4
- package/{esm2020 → esm2022}/utils/components/dynamic-portal/dynamic-portal.component.mjs +4 -4
- package/esm2022/utils/directives/auto-complete/auto-complete.directive.mjs +136 -0
- package/{esm2020 → esm2022}/utils/directives/auto-complete/auto-complete.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/breakpoints/breakpoint.directive.mjs +8 -8
- package/{esm2020 → esm2022}/utils/directives/clicked/clicked-behavior.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/clicked/clicked-event.plugin.mjs +4 -4
- package/esm2022/utils/directives/clicked/clicked.directive.mjs +51 -0
- package/{esm2020 → esm2022}/utils/directives/clicked/fdk-clicked-provider.service.mjs +4 -4
- package/esm2022/utils/directives/disabled/disabled-behavior.directive.mjs +114 -0
- package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/disabled/disabled.observer.mjs +4 -4
- package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled-provider.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +11 -11
- package/esm2022/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +98 -0
- package/esm2022/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +114 -0
- package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.directive.mjs +10 -10
- package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.module.mjs +5 -5
- package/esm2022/utils/directives/focusable-item/focusable-item.directive.mjs +217 -0
- package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable.observer.mjs +4 -4
- package/esm2022/utils/directives/focusable-list/focusable-list.directive.mjs +330 -0
- package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.module.mjs +5 -5
- package/esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +79 -0
- package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +5 -5
- package/esm2022/utils/directives/initial-focus/initial-focus.directive.mjs +152 -0
- package/{esm2020 → esm2022}/utils/directives/initial-focus/initial-focus.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/intersection-spy/intersection-spy.directive.mjs +4 -4
- package/esm2022/utils/directives/line-clamp/line-clamp.directive.mjs +262 -0
- package/{esm2020 → esm2022}/utils/directives/line-clamp/line-clamp.module.mjs +11 -11
- package/esm2022/utils/directives/only-digits/only-digits.directive.mjs +218 -0
- package/{esm2020 → esm2022}/utils/directives/only-digits/only-digits.module.mjs +5 -5
- package/esm2022/utils/directives/overflow-list/overflow-list-item.directive.mjs +42 -0
- package/esm2022/utils/directives/overflow-list/overflow-list.directive.mjs +142 -0
- package/{esm2020 → esm2022}/utils/directives/overflow-list/overflow-list.module.mjs +11 -11
- package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly-provider.service.mjs +4 -4
- package/esm2022/utils/directives/readonly/readonly-behavior.directive.mjs +97 -0
- package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/readonly/readonly.observer.mjs +4 -4
- package/esm2022/utils/directives/repeat/repeat.directive.mjs +65 -0
- package/{esm2020 → esm2022}/utils/directives/repeat/repeat.module.mjs +5 -5
- package/esm2022/utils/directives/resize/resize-handle.directive.mjs +42 -0
- package/esm2022/utils/directives/resize/resize.directive.mjs +231 -0
- package/{esm2020 → esm2022}/utils/directives/resize/resize.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.directive.mjs +12 -12
- package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.directive.mjs +10 -10
- package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/directives/selectable-list/selection.service.mjs +4 -4
- package/esm2022/utils/directives/template/template.directive.mjs +49 -0
- package/{esm2020 → esm2022}/utils/directives/template/template.module.mjs +5 -5
- package/esm2022/utils/directives/truncate/truncate.directive.mjs +96 -0
- package/{esm2020 → esm2022}/utils/directives/truncate/truncate.module.mjs +5 -5
- package/esm2022/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +274 -0
- package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +4 -4
- package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +4 -4
- package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +4 -4
- package/{esm2020 → esm2022}/utils/drag-and-drop/drag-and-drop.module.mjs +5 -5
- package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component.service.mjs +4 -4
- package/esm2022/utils/functions/get-document-font-size.mjs +9 -0
- package/{esm2020 → esm2022}/utils/pipes/async-or-sync.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/displayFn.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/filter-strings.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/is-compact.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/make-async.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/pipe.module.mjs +23 -23
- package/{esm2020 → esm2022}/utils/pipes/safe.pipe.mjs +4 -4
- package/esm2022/utils/pipes/search-highlight.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/utils/pipes/truncate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/two-digits.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/pipes/value-by-path.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/content-density.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/destroyed.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/focus-trap.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/keyboard-support/keyboard-support.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/local-storage.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/observers/attribute.observer.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/resize-observer.service.mjs +7 -7
- package/{esm2020 → esm2022}/utils/services/rtl.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/tabbable-element.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/services/themes.service.mjs +4 -4
- package/esm2022/utils/toast/base-toast-positions.mjs +108 -0
- package/{esm2020 → esm2022}/utils/toast/base-toast.service.mjs +4 -4
- package/{esm2020 → esm2022}/utils/toast/classes/base-toast-animated-container.component.mjs +4 -4
- package/{esm2020 → esm2022}/utils/toast/classes/base-toast-container.component.mjs +4 -4
- package/{esm2020 → esm2022}/utils/toast/classes/base-toast-overlay-container.mjs +4 -4
- package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.mjs +4 -4
- package/{esm2020 → esm2022}/utils/utils.module.mjs +77 -77
- package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs +11 -11
- package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs +10 -10
- package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-utils.mjs +662 -657
- package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/fundamental-ngx-cdk.mjs +4 -4
- package/fesm2022/fundamental-ngx-cdk.mjs.map +1 -0
- package/forms/cva/cva.directive.d.ts +1 -1
- package/fundamental-ngx-cdk-v0.44.0-rc.1.tgz +0 -0
- package/package.json +23 -35
- package/utils/abstract-fd-ngx-class.d.ts +1 -1
- package/utils/components/dynamic-portal/dynamic-portal.component.d.ts +1 -1
- package/utils/directives/auto-complete/auto-complete.directive.d.ts +2 -2
- package/utils/directives/breakpoints/breakpoint.directive.d.ts +1 -1
- package/utils/directives/clicked/clicked.directive.d.ts +2 -2
- package/utils/directives/disabled/disabled-behavior.directive.d.ts +2 -2
- package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +2 -2
- package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +2 -2
- package/utils/directives/focusable-grid/focusable-grid.directive.d.ts +1 -1
- package/utils/directives/focusable-item/focusable-item.directive.d.ts +2 -2
- package/utils/directives/focusable-list/focusable-list.directive.d.ts +2 -2
- package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +2 -2
- package/utils/directives/initial-focus/initial-focus.directive.d.ts +2 -2
- package/utils/directives/intersection-spy/intersection-spy.directive.d.ts +1 -1
- package/utils/directives/line-clamp/line-clamp.directive.d.ts +4 -4
- package/utils/directives/only-digits/only-digits.directive.d.ts +2 -2
- package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +2 -2
- package/utils/directives/overflow-list/overflow-list.directive.d.ts +2 -2
- package/utils/directives/readonly/readonly-behavior.directive.d.ts +2 -2
- package/utils/directives/repeat/repeat.directive.d.ts +2 -2
- package/utils/directives/resize/resize-handle.directive.d.ts +2 -2
- package/utils/directives/resize/resize.directive.d.ts +2 -2
- package/utils/directives/selectable-list/selectable-item.directive.d.ts +1 -1
- package/utils/directives/selectable-list/selectable-list.directive.d.ts +1 -1
- package/utils/directives/template/template.directive.d.ts +2 -2
- package/utils/directives/truncate/truncate.directive.d.ts +2 -2
- package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +1 -1
- package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +1 -1
- package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +1 -1
- package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +1 -1
- package/utils/toast/classes/base-toast-animated-container.component.d.ts +1 -1
- package/utils/toast/classes/base-toast-container.component.d.ts +1 -1
- package/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.d.ts +1 -1
- package/esm2020/data-source/base/base-data-source.class.mjs +0 -112
- package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +0 -136
- package/esm2020/utils/directives/clicked/clicked.directive.mjs +0 -51
- package/esm2020/utils/directives/disabled/disabled-behavior.directive.mjs +0 -114
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +0 -98
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +0 -114
- package/esm2020/utils/directives/focusable-item/focusable-item.directive.mjs +0 -217
- package/esm2020/utils/directives/focusable-list/focusable-list.directive.mjs +0 -330
- package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +0 -79
- package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +0 -152
- package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +0 -262
- package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +0 -218
- package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +0 -42
- package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +0 -142
- package/esm2020/utils/directives/readonly/readonly-behavior.directive.mjs +0 -97
- package/esm2020/utils/directives/repeat/repeat.directive.mjs +0 -65
- package/esm2020/utils/directives/resize/resize-handle.directive.mjs +0 -42
- package/esm2020/utils/directives/resize/resize.directive.mjs +0 -231
- package/esm2020/utils/directives/template/template.directive.mjs +0 -49
- package/esm2020/utils/directives/truncate/truncate.directive.mjs +0 -96
- package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +0 -272
- package/esm2020/utils/functions/get-document-font-size.mjs +0 -5
- package/esm2020/utils/pipes/search-highlight.pipe.mjs +0 -32
- package/esm2020/utils/toast/base-toast-positions.mjs +0 -108
- package/fesm2015/fundamental-ngx-cdk-data-source.mjs +0 -405
- package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +0 -1
- package/fesm2015/fundamental-ngx-cdk-forms.mjs +0 -398
- package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +0 -1
- package/fesm2015/fundamental-ngx-cdk-utils.mjs +0 -7611
- package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +0 -1
- package/fesm2015/fundamental-ngx-cdk.mjs.map +0 -1
- package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +0 -1
- package/fesm2020/fundamental-ngx-cdk.mjs +0 -29
- package/fesm2020/fundamental-ngx-cdk.mjs.map +0 -1
- package/fundamental-ngx-cdk-v0.43.2.tgz +0 -0
- /package/{esm2020 → esm2022}/data-source/base/abstract-data-provider.class.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/fundamental-ngx-cdk-data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/helpers/apply-datasource-directive.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/helpers/common.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/helpers/is-datasource.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/index.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/models/data-source-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/models/data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/models/matching-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/data-source/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/fundamental-ngx-cdk-forms.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/helpers/state.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/index.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/models/cva.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/models/form-error.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/models/form-field.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/models/form-state.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/models/select-item.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/tokens/form-field-control.token.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/tokens/form-field.token.mjs +0 -0
- /package/{esm2020 → esm2022}/fundamental-ngx-cdk.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/function-strategy.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/observable-strategy.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/promise-strategy.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/select-strategy.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/subscription-strategy.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/async-strategy/value-strategy.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/coercion/array.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/consts/error-messages.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/consts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/consts/overflow-priority-score.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/consts/unicode-letters.regex.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/consts/unicode-numbers.regex.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/datatypes/color-accent.datatype.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/datatypes/hash.datatype.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/datatypes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/datatypes/size.datatype.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/apply-css-class.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/apply-css-style.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/coerce-boolean.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/coerce-css-pixel.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/decorators/setter-alternator.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/deprecated-selector.class.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/breakpoints/responsive-breakpoints.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/clicked/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/default-disabled-view-modifier.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-view-modifier.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled.token.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/disabled/set-disabled-state.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-grid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-item/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-item/is-element-focusable-by-default.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/focusable-list/scroll.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/default-readonly-view-modifier.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly.token.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-view-modifier.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/readonly/set-readonly-state.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/selectable-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/selectable-list/select-component-root.token.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.token.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/drag-and-drop/dnd.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/drag-and-drop/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/drag-and-drop/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-config.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-container.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-injector.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dynamic-component/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/consumer-provider-factory.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/element-size.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/intersection-observable.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/is-compact-density.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/is-odd.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/key-util.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/module-deprecations-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/parser-file-size.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/random-color-accent.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/resize-observable.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/scroll.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/functions/uuidv4-generator.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/fundamental-ngx-cdk-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/helpers/get-native-element.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/helpers/range-selector.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/content-density.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/css-class-builder.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/css-style-builder.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/has-element-ref.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/keyboard-support-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/module-deprecation.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/interfaces/require.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/list-item/list-item-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/models/nullable.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/base-toast-animations.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-config.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-container-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-duration-dismissible-container-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-text-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/tokens/module-deprecations.token.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/tokens/viewport-size.observable.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/typecheck.mjs +0 -0
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, inject, Input, NgZone } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
|
|
5
|
-
import { DestroyedService } from '../../services';
|
|
6
|
-
import { TabbableElementService } from '../../services/tabbable-element.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../services/tabbable-element.service";
|
|
9
|
-
export class DeprecatedInitialFocusDirective extends DeprecatedSelector {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
/** @hidden */
|
|
13
|
-
this._initialFocusDirective = inject(InitialFocusDirective, { host: true });
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* CSS selector of an element that should be focused.
|
|
17
|
-
*/
|
|
18
|
-
set initialFocusTarget(value) {
|
|
19
|
-
this._initialFocusDirective.fdkInitialFocus = value;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
DeprecatedInitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedInitialFocusDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
-
DeprecatedInitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedInitialFocusDirective, isStandalone: true, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: { initialFocusTarget: ["fd-initial-focus", "initialFocusTarget"] }, providers: [
|
|
24
|
-
{
|
|
25
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
26
|
-
useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
|
|
27
|
-
}
|
|
28
|
-
], usesInheritance: true, ngImport: i0 });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedInitialFocusDirective, decorators: [{
|
|
30
|
-
type: Directive,
|
|
31
|
-
args: [{
|
|
32
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
33
|
-
selector: '[fdInitialFocus], [fd-initial-focus]',
|
|
34
|
-
standalone: true,
|
|
35
|
-
providers: [
|
|
36
|
-
{
|
|
37
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
38
|
-
useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}]
|
|
42
|
-
}], propDecorators: { initialFocusTarget: [{
|
|
43
|
-
type: Input,
|
|
44
|
-
args: ['fd-initial-focus']
|
|
45
|
-
}] } });
|
|
46
|
-
export class InitialFocusDirective {
|
|
47
|
-
/**
|
|
48
|
-
* Whether initial focus enabled for a current element.
|
|
49
|
-
*/
|
|
50
|
-
set enabled(value) {
|
|
51
|
-
if (value === this.enabled) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this._enabled$.next(value);
|
|
55
|
-
}
|
|
56
|
-
get enabled() {
|
|
57
|
-
return this._enabled$.getValue();
|
|
58
|
-
}
|
|
59
|
-
/** @hidden */
|
|
60
|
-
constructor(_elmRef, _ngZone, _tabbableService) {
|
|
61
|
-
this._elmRef = _elmRef;
|
|
62
|
-
this._ngZone = _ngZone;
|
|
63
|
-
this._tabbableService = _tabbableService;
|
|
64
|
-
/**
|
|
65
|
-
* CSS selector of an element that should be focused.
|
|
66
|
-
*/
|
|
67
|
-
this.fdkInitialFocus = '.fd-initial-focus-item';
|
|
68
|
-
/** @hidden */
|
|
69
|
-
this._destroy$ = inject(DestroyedService);
|
|
70
|
-
/** @hidden */
|
|
71
|
-
this._enabled$ = new BehaviorSubject(true);
|
|
72
|
-
/**
|
|
73
|
-
* Whether to focus last element in a found array of elements.
|
|
74
|
-
*/
|
|
75
|
-
this.focusLastElement = false;
|
|
76
|
-
}
|
|
77
|
-
/** @hidden */
|
|
78
|
-
ngAfterViewInit() {
|
|
79
|
-
this._enabled$
|
|
80
|
-
.pipe(distinctUntilChanged(), filter((enabled) => enabled), takeUntil(this._destroy$))
|
|
81
|
-
.subscribe(() => {
|
|
82
|
-
this._executeOnEmpty(() => this._focus());
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* @hidden
|
|
87
|
-
* Executes a function when the zone is stable.
|
|
88
|
-
*/
|
|
89
|
-
_executeOnEmpty(fn) {
|
|
90
|
-
if (!this._ngZone.hasPendingMicrotasks) {
|
|
91
|
-
fn();
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* @hidden
|
|
99
|
-
* Searches for an appropriate focusable element
|
|
100
|
-
*/
|
|
101
|
-
_getFocusableElement() {
|
|
102
|
-
if (!this.fdkInitialFocus) {
|
|
103
|
-
return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
|
|
104
|
-
}
|
|
105
|
-
const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(this.fdkInitialFocus);
|
|
106
|
-
console.log(autoFocusableItems);
|
|
107
|
-
if (autoFocusableItems.length > 0) {
|
|
108
|
-
return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];
|
|
109
|
-
}
|
|
110
|
-
// If no elements found, fallback to a first tabbable element.
|
|
111
|
-
return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
|
|
112
|
-
}
|
|
113
|
-
/** @hidden */
|
|
114
|
-
_focus() {
|
|
115
|
-
if (!this.enabled) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const elm = this._getFocusableElement();
|
|
119
|
-
elm?.focus();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
InitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InitialFocusDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.TabbableElementService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
123
|
-
InitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: InitialFocusDirective, isStandalone: true, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: { fdkInitialFocus: "fdkInitialFocus", enabled: "enabled", focusLastElement: "focusLastElement" }, providers: [
|
|
124
|
-
DestroyedService,
|
|
125
|
-
TabbableElementService,
|
|
126
|
-
{
|
|
127
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
128
|
-
useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
|
|
129
|
-
}
|
|
130
|
-
], ngImport: i0 });
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InitialFocusDirective, decorators: [{
|
|
132
|
-
type: Directive,
|
|
133
|
-
args: [{
|
|
134
|
-
selector: '[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]',
|
|
135
|
-
standalone: true,
|
|
136
|
-
providers: [
|
|
137
|
-
DestroyedService,
|
|
138
|
-
TabbableElementService,
|
|
139
|
-
{
|
|
140
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
141
|
-
useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
|
|
142
|
-
}
|
|
143
|
-
]
|
|
144
|
-
}]
|
|
145
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.TabbableElementService }]; }, propDecorators: { fdkInitialFocus: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], enabled: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], focusLastElement: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBYWpGLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxrQkFBa0I7SUFYdkU7O1FBWUksY0FBYztRQUNOLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBU2xGO0lBUEc7O09BRUc7SUFDSCxJQUNJLGtCQUFrQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEQsQ0FBQzs7NEhBVlEsK0JBQStCO2dIQUEvQiwrQkFBK0IsK0pBUDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FB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a0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzdHO1FBRUQsOERBQThEO1FBQzlELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxjQUFjO0lBQ04sTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7O2tIQS9GUSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnTkFUbkI7UUFDUCxnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsc0NBQXNDLENBQUM7U0FDNUY7S0FDSjsyRkFFUSxxQkFBcUI7a0JBWmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlEQUF5RDtvQkFDbkUsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEI7NEJBQ0ksT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLHNDQUFzQyxDQUFDO3lCQUM1RjtxQkFDSjtpQkFDSjsySkFNRyxlQUFlO3NCQURkLEtBQUs7Z0JBT0YsT0FBTztzQkFEVixLQUFLO2dCQXNCTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgRGVwcmVjYXRlZFNlbGVjdG9yLFxuICAgIEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgIGdldERlcHJlY2F0ZWRNb2RlbFxufSBmcm9tICcuLi8uLi9kZXByZWNhdGVkLXNlbGVjdG9yLmNsYXNzJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFiYmFibGUtZWxlbWVudC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZEluaXRpYWxGb2N1c10sIFtmZC1pbml0aWFsLWZvY3VzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgICAgICAgICB1c2VWYWx1ZTogZ2V0RGVwcmVjYXRlZE1vZGVsKCdbZmRrSW5pdGlhbEZvY3VzXScsICdbZmRJbml0aWFsRm9jdXNdLCBbZmQtaW5pdGlhbC1mb2N1c10nKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkSW5pdGlhbEZvY3VzRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxGb2N1c0RpcmVjdGl2ZSA9IGluamVjdChJbml0aWFsRm9jdXNEaXJlY3RpdmUsIHsgaG9zdDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIENTUyBzZWxlY3RvciBvZiBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQuXG4gICAgICovXG4gICAgQElucHV0KCdmZC1pbml0aWFsLWZvY3VzJylcbiAgICBzZXQgaW5pdGlhbEZvY3VzVGFyZ2V0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbEZvY3VzRGlyZWN0aXZlLmZka0luaXRpYWxGb2N1cyA9IHZhbHVlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrSW5pdGlhbEZvY3VzXSwgW2ZkSW5pdGlhbEZvY3VzXSwgW2ZkLWluaXRpYWwtZm9jdXNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtJbml0aWFsRm9jdXNdJywgJ1tmZEluaXRpYWxGb2N1c10sIFtmZC1pbml0aWFsLWZvY3VzXScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqIENTUyBzZWxlY3RvciBvZiBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmZGtJbml0aWFsRm9jdXMgPSAnLmZkLWluaXRpYWwtZm9jdXMtaXRlbSc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGluaXRpYWwgZm9jdXMgZW5hYmxlZCBmb3IgYSBjdXJyZW50IGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZvY3VzIGxhc3QgZWxlbWVudCBpbiBhIGZvdW5kIGFycmF5IG9mIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNMYXN0RWxlbWVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxtUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJhYmxlU2VydmljZTogVGFiYmFibGVFbGVtZW50U2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbmFibGVkJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGVuYWJsZWQpID0+IGVuYWJsZWQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGVPbkVtcHR5KCgpID0+IHRoaXMuX2ZvY3VzKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZXhlY3V0ZU9uRW1wdHkoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWljcm90YXNrcykge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWFyY2hlcyBmb3IgYW4gYXBwcm9wcmlhdGUgZm9jdXNhYmxlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5mZGtJbml0aWFsRm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzTGFzdEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0ZvY3VzYWJsZUl0ZW1zID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIHRoaXMuZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICkgYXMgTm9kZUxpc3RPZjxIVE1MRWxlbWVudD47XG4gICAgICAgIGNvbnNvbGUubG9nKGF1dG9Gb2N1c2FibGVJdGVtcyk7XG5cbiAgICAgICAgaWYgKGF1dG9Gb2N1c2FibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNMYXN0RWxlbWVudCA/IGF1dG9Gb2N1c2FibGVJdGVtc1swXSA6IGF1dG9Gb2N1c2FibGVJdGVtc1thdXRvRm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBlbGVtZW50cyBmb3VuZCwgZmFsbGJhY2sgdG8gYSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50LlxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c0xhc3RFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsbSA9IHRoaXMuX2dldEZvY3VzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgZWxtPy5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
2
|
-
import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ChangeDetectorRef } from '@angular/core';
|
|
3
|
-
import { fromEvent } from 'rxjs';
|
|
4
|
-
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
-
import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class DeprecatedLineClampTargetDirective extends DeprecatedSelector {
|
|
8
|
-
}
|
|
9
|
-
DeprecatedLineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampTargetDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
-
DeprecatedLineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedLineClampTargetDirective, isStandalone: true, selector: "[fdLineClampTarget], [fd-lineclamp-target]", providers: [
|
|
11
|
-
{
|
|
12
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
13
|
-
useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
|
|
14
|
-
}
|
|
15
|
-
], usesInheritance: true, ngImport: i0 });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampTargetDirective, decorators: [{
|
|
17
|
-
type: Directive,
|
|
18
|
-
args: [{
|
|
19
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
20
|
-
selector: '[fdLineClampTarget], [fd-lineclamp-target]',
|
|
21
|
-
standalone: true,
|
|
22
|
-
providers: [
|
|
23
|
-
{
|
|
24
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
25
|
-
useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
|
|
26
|
-
}
|
|
27
|
-
]
|
|
28
|
-
}]
|
|
29
|
-
}] });
|
|
30
|
-
export class DeprecatedLineClampDirective extends DeprecatedSelector {
|
|
31
|
-
}
|
|
32
|
-
DeprecatedLineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
-
DeprecatedLineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedLineClampDirective, isStandalone: true, selector: "[fdLineClamp], [fd-lineclamp]", providers: [
|
|
34
|
-
{
|
|
35
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
36
|
-
useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
|
|
37
|
-
}
|
|
38
|
-
], usesInheritance: true, ngImport: i0 });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampDirective, decorators: [{
|
|
40
|
-
type: Directive,
|
|
41
|
-
args: [{
|
|
42
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
43
|
-
selector: '[fdLineClamp], [fd-lineclamp]',
|
|
44
|
-
standalone: true,
|
|
45
|
-
providers: [
|
|
46
|
-
{
|
|
47
|
-
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
48
|
-
useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
}]
|
|
52
|
-
}] });
|
|
53
|
-
export class LineClampTargetDirective {
|
|
54
|
-
/** @hidden */
|
|
55
|
-
constructor(_elementRef) {
|
|
56
|
-
this._elementRef = _elementRef;
|
|
57
|
-
/**
|
|
58
|
-
* Event with target instance for clamping
|
|
59
|
-
*/
|
|
60
|
-
this.update = new EventEmitter();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Native element of clamping target
|
|
64
|
-
*/
|
|
65
|
-
get targetElement() {
|
|
66
|
-
return this._elementRef.nativeElement;
|
|
67
|
-
}
|
|
68
|
-
/** @hidden */
|
|
69
|
-
ngOnChanges() {
|
|
70
|
-
this.update.emit(this);
|
|
71
|
-
}
|
|
72
|
-
/** @hidden */
|
|
73
|
-
ngAfterViewInit() {
|
|
74
|
-
this.update.emit(this);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
LineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampTargetDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
78
|
-
LineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: LineClampTargetDirective, isStandalone: true, selector: "[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]", inputs: { fdLineClampTargetText: "fdLineClampTargetText" }, outputs: { update: "update" }, exportAs: ["fdLineClampTarget"], usesOnChanges: true, ngImport: i0 });
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampTargetDirective, decorators: [{
|
|
80
|
-
type: Directive,
|
|
81
|
-
args: [{
|
|
82
|
-
selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',
|
|
83
|
-
exportAs: 'fdLineClampTarget',
|
|
84
|
-
standalone: true
|
|
85
|
-
}]
|
|
86
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fdLineClampTargetText: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], update: [{
|
|
89
|
-
type: Output
|
|
90
|
-
}] } });
|
|
91
|
-
export class LineClampDirective {
|
|
92
|
-
/**
|
|
93
|
-
* Count lines for clamping
|
|
94
|
-
*/
|
|
95
|
-
set fdLineClampLines(value) {
|
|
96
|
-
this._lineCount = coerceNumberProperty(value);
|
|
97
|
-
}
|
|
98
|
-
/** @hidden */
|
|
99
|
-
/**
|
|
100
|
-
* Root native element of clamping box
|
|
101
|
-
*/
|
|
102
|
-
get rootElement() {
|
|
103
|
-
return this._elementRef.nativeElement;
|
|
104
|
-
}
|
|
105
|
-
/** @hidden */
|
|
106
|
-
constructor(_elementRef, _renderer, _cdRef) {
|
|
107
|
-
this._elementRef = _elementRef;
|
|
108
|
-
this._renderer = _renderer;
|
|
109
|
-
this._cdRef = _cdRef;
|
|
110
|
-
/**
|
|
111
|
-
* Clamping state
|
|
112
|
-
*/
|
|
113
|
-
this.fdLineclampState = false;
|
|
114
|
-
/**
|
|
115
|
-
* Event return count of lines from the target
|
|
116
|
-
*/
|
|
117
|
-
this.lineCountUpdate = new EventEmitter();
|
|
118
|
-
/** @hidden */
|
|
119
|
-
this._isNativeSupport = true;
|
|
120
|
-
}
|
|
121
|
-
/** @hidden */
|
|
122
|
-
ngAfterViewInit() {
|
|
123
|
-
this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';
|
|
124
|
-
// need to use setTimeout to force recheck of parent elements
|
|
125
|
-
setTimeout(() => {
|
|
126
|
-
this._checkLineCount();
|
|
127
|
-
});
|
|
128
|
-
this.windowResize$ = fromEvent(window, 'resize')
|
|
129
|
-
.pipe(distinctUntilChanged(), debounceTime(200))
|
|
130
|
-
.subscribe({
|
|
131
|
-
next: () => this._checkLineCount()
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
/** @hidden */
|
|
135
|
-
ngOnDestroy() {
|
|
136
|
-
if (this.windowResize$) {
|
|
137
|
-
this.windowResize$.unsubscribe();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/** @hidden */
|
|
141
|
-
ngOnChanges() {
|
|
142
|
-
this.reset();
|
|
143
|
-
this.refreshClamp();
|
|
144
|
-
}
|
|
145
|
-
/** @hidden */
|
|
146
|
-
reset() {
|
|
147
|
-
if (this._lineClampTarget && this._originalText) {
|
|
148
|
-
this._lineClampTarget.textContent = this._originalText;
|
|
149
|
-
}
|
|
150
|
-
if (this._isNativeSupport) {
|
|
151
|
-
this._resetNative();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
/** @hidden */
|
|
155
|
-
refreshTarget(event) {
|
|
156
|
-
this._lineClampTarget = event.targetElement;
|
|
157
|
-
this._originalText = event.fdLineClampTargetText;
|
|
158
|
-
this._checkLineCount();
|
|
159
|
-
}
|
|
160
|
-
/** @hidden */
|
|
161
|
-
refreshClamp() {
|
|
162
|
-
if (this.fdLineclampState && this._lineCount) {
|
|
163
|
-
this.native();
|
|
164
|
-
if (!this._isNativeSupport) {
|
|
165
|
-
this._truncate();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/** @hidden
|
|
170
|
-
* Truncate text in the target box, if browser not support lineclamp style
|
|
171
|
-
*/
|
|
172
|
-
_truncate() {
|
|
173
|
-
if (!this._lineClampTarget) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);
|
|
177
|
-
const ellipsisTextArray = this._originalText.split(' ');
|
|
178
|
-
const ellipsisText = () => {
|
|
179
|
-
if (this.rootElement.scrollHeight > lineClampHeight) {
|
|
180
|
-
ellipsisTextArray.pop();
|
|
181
|
-
this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';
|
|
182
|
-
ellipsisText.call(this);
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
ellipsisText();
|
|
186
|
-
}
|
|
187
|
-
/** @hidden
|
|
188
|
-
* Get lineheight for rootelement, if browser not support lineclamp style
|
|
189
|
-
*/
|
|
190
|
-
getLineHeight() {
|
|
191
|
-
const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');
|
|
192
|
-
if (lineHeight === 'normal') {
|
|
193
|
-
return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;
|
|
194
|
-
}
|
|
195
|
-
return parseFloat(lineHeight);
|
|
196
|
-
}
|
|
197
|
-
/** @hidden
|
|
198
|
-
* Setup native styles for lineclamp text
|
|
199
|
-
*/
|
|
200
|
-
native() {
|
|
201
|
-
if (this._isNativeSupport) {
|
|
202
|
-
this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');
|
|
203
|
-
this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');
|
|
204
|
-
this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');
|
|
205
|
-
this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');
|
|
206
|
-
this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/** @hidden
|
|
210
|
-
* Reset native styles for lineclamp text
|
|
211
|
-
*/
|
|
212
|
-
_resetNative() {
|
|
213
|
-
if (this._isNativeSupport) {
|
|
214
|
-
this._renderer.setStyle(this.rootElement, 'display', '');
|
|
215
|
-
this._renderer.setStyle(this.rootElement, 'overflow', '');
|
|
216
|
-
this._renderer.setStyle(this.rootElement, 'text-overflow', '');
|
|
217
|
-
this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');
|
|
218
|
-
this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/** @hidden */
|
|
222
|
-
_checkLineCount() {
|
|
223
|
-
if (!this.rootElement) {
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
const style = window.getComputedStyle(this.rootElement, null);
|
|
227
|
-
this.reset();
|
|
228
|
-
const fontSize = parseInt(style.getPropertyValue('font-size'), 10);
|
|
229
|
-
const boxSizing = style.getPropertyValue('box-sizing');
|
|
230
|
-
let height = parseInt(style.getPropertyValue('height'), 10);
|
|
231
|
-
let lineHeight = parseFloat(style.getPropertyValue('line-height'));
|
|
232
|
-
if (isNaN(lineHeight)) {
|
|
233
|
-
lineHeight = fontSize * 1.2;
|
|
234
|
-
}
|
|
235
|
-
if (boxSizing === 'border-box') {
|
|
236
|
-
const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);
|
|
237
|
-
const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);
|
|
238
|
-
const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);
|
|
239
|
-
const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);
|
|
240
|
-
height = height - padding_top - padding_bottom - border_top - border_bottom;
|
|
241
|
-
}
|
|
242
|
-
this.refreshClamp();
|
|
243
|
-
this.lineCountUpdate.emit(Math.ceil(height / lineHeight));
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
LineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
247
|
-
LineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: LineClampDirective, isStandalone: true, selector: "[fdkLineClamp], [fdLineClamp], [fd-lineclamp]", inputs: { fdLineClampLines: "fdLineClampLines", fdLineclampState: "fdLineclampState" }, outputs: { lineCountUpdate: "lineCountUpdate" }, exportAs: ["fdLineClamp"], usesOnChanges: true, ngImport: i0 });
|
|
248
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampDirective, decorators: [{
|
|
249
|
-
type: Directive,
|
|
250
|
-
args: [{
|
|
251
|
-
selector: '[fdkLineClamp], [fdLineClamp], [fd-lineclamp]',
|
|
252
|
-
exportAs: 'fdLineClamp',
|
|
253
|
-
standalone: true
|
|
254
|
-
}]
|
|
255
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { fdLineClampLines: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], fdLineclampState: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], lineCountUpdate: [{
|
|
260
|
-
type: Output
|
|
261
|
-
}] } });
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvbGluZS1jbGFtcC9saW5lLWNsYW1wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFhekMsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLGtCQUFrQjs7K0hBQTdELGtDQUFrQzttSEFBbEMsa0NBQWtDLHlGQVBoQztRQUNQO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsNENBQTRDLENBQUM7U0FDckc7S0FDSjsyRkFFUSxrQ0FBa0M7a0JBWDlDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsNENBQTRDO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSw0Q0FBNEMsQ0FBQzt5QkFDckc7cUJBQ0o7aUJBQ0o7O0FBY0QsTUFBTSxPQUFPLDRCQUE2QixT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UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOzsrR0F6TFEsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsK0NBQStDO29CQUN6RCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3lKQU1PLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkTGluZUNsYW1wVGFyZ2V0XSwgW2ZkLWxpbmVjbGFtcC10YXJnZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdJywgJ1tmZExpbmVDbGFtcFRhcmdldF0sIFtmZC1saW5lY2xhbXAtdGFyZ2V0XScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZExpbmVDbGFtcF0sIFtmZC1saW5lY2xhbXBdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdJywgJ1tmZExpbmVDbGFtcF0sIFtmZC1saW5lY2xhbXBdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZExpbmVDbGFtcERpcmVjdGl2ZSBleHRlbmRzIERlcHJlY2F0ZWRTZWxlY3RvciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdLCBbZmRMaW5lQ2xhbXBUYXJnZXRdLCBbZmQtbGluZWNsYW1wLXRhcmdldF0nLFxuICAgIGV4cG9ydEFzOiAnZmRMaW5lQ2xhbXBUYXJnZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgdGV4dCBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZUNsYW1wVGFyZ2V0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2l0aCB0YXJnZXQgaW5zdGFuY2UgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQE91dHB1dCgpIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgb2YgY2xhbXBpbmcgdGFyZ2V0XG4gICAgICovXG4gICAgZ2V0IHRhcmdldEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBdLCBbZmRMaW5lQ2xhbXBdLCBbZmQtbGluZWNsYW1wXScsXG4gICAgZXhwb3J0QXM6ICdmZExpbmVDbGFtcCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaW5lQ2xhbXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQ291bnQgbGluZXMgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRMaW5lQ2xhbXBMaW5lcyh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9saW5lQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhbXBpbmcgc3RhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZWNsYW1wU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHJldHVybiBjb3VudCBvZiBsaW5lcyBmcm9tIHRoZSB0YXJnZXRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsaW5lQ291bnRVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZUNsYW1wVGFyZ2V0OiBIVE1MRWxlbWVudDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29yaWdpbmFsVGV4dDogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB3aW5kb3dSZXNpemUkOiBTdWJzY3JpcHRpb247XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc05hdGl2ZVN1cHBvcnQgPSB0cnVlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZUNvdW50OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8qKlxuICAgICAqIFJvb3QgbmF0aXZlIGVsZW1lbnQgb2YgY2xhbXBpbmcgYm94XG4gICAgICovXG4gICAgZ2V0IHJvb3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNOYXRpdmVTdXBwb3J0ID0gdHlwZW9mIHRoaXMucm9vdEVsZW1lbnQuc3R5bGUud2Via2l0TGluZUNsYW1wICE9PSAndW5kZWZpbmVkJztcblxuICAgICAgICAvLyBuZWVkIHRvIHVzZSBzZXRUaW1lb3V0IHRvIGZvcmNlIHJlY2hlY2sgb2YgcGFyZW50IGVsZW1lbnRzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tMaW5lQ291bnQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy53aW5kb3dSZXNpemUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMuX2NoZWNrTGluZUNvdW50KClcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLndpbmRvd1Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93UmVzaXplJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDbGFtcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9saW5lQ2xhbXBUYXJnZXQgJiYgdGhpcy5fb3JpZ2luYWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9saW5lQ2xhbXBUYXJnZXQudGV4dENvbnRlbnQgPSB0aGlzLl9vcmlnaW5hbFRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXROYXRpdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVmcmVzaFRhcmdldChldmVudDogTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpbmVDbGFtcFRhcmdldCA9IGV2ZW50LnRhcmdldEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX29yaWdpbmFsVGV4dCA9IGV2ZW50LmZkTGluZUNsYW1wVGFyZ2V0VGV4dDtcbiAgICAgICAgdGhpcy5fY2hlY2tMaW5lQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZnJlc2hDbGFtcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmRMaW5lY2xhbXBTdGF0ZSAmJiB0aGlzLl9saW5lQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RydW5jYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFRydW5jYXRlIHRleHQgaW4gdGhlIHRhcmdldCBib3gsIGlmIGJyb3dzZXIgbm90IHN1cHBvcnQgbGluZWNsYW1wIHN0eWxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHJ1bmNhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbGluZUNsYW1wVGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGluZUNsYW1wSGVpZ2h0ID0gTWF0aC5jZWlsKHRoaXMuZ2V0TGluZUhlaWdodCgpICogdGhpcy5fbGluZUNvdW50KTtcbiAgICAgICAgY29uc3QgZWxsaXBzaXNUZXh0QXJyYXkgPSB0aGlzLl9vcmlnaW5hbFRleHQuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZWxsaXBzaXNUZXh0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucm9vdEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gbGluZUNsYW1wSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWxsaXBzaXNUZXh0QXJyYXkucG9wKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGluZUNsYW1wVGFyZ2V0LnRleHRDb250ZW50ID0gZWxsaXBzaXNUZXh0QXJyYXkuam9pbignICcpICsgJy4uLic7XG4gICAgICAgICAgICAgICAgZWxsaXBzaXNUZXh0LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGVsbGlwc2lzVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogR2V0IGxpbmVoZWlnaHQgZm9yIHJvb3RlbGVtZW50LCBpZiBicm93c2VyIG5vdCBzdXBwb3J0IGxpbmVjbGFtcCBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TGluZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKTtcbiAgICAgICAgaWYgKGxpbmVIZWlnaHQgPT09ICdub3JtYWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksIDEwKSAqIDEuMjU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChsaW5lSGVpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFNldHVwIG5hdGl2ZSBzdHlsZXMgZm9yIGxpbmVjbGFtcCB0ZXh0XG4gICAgICovXG4gICAgcHJpdmF0ZSBuYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICdkaXNwbGF5JywgJy13ZWJraXQtYm94Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAndGV4dC1vdmVyZmxvdycsICdlbGxpcHNpcycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtYm94LW9yaWVudCcsICd2ZXJ0aWNhbCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtbGluZS1jbGFtcCcsIGAke3RoaXMuX2xpbmVDb3VudH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogUmVzZXQgbmF0aXZlIHN0eWxlcyBmb3IgbGluZWNsYW1wIHRleHRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNldE5hdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnb3ZlcmZsb3cnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAndGV4dC1vdmVyZmxvdycsICcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWJveC1vcmllbnQnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnLXdlYmtpdC1saW5lLWNsYW1wJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja0xpbmVDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCBudWxsKTtcblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgMTApO1xuICAgICAgICBjb25zdCBib3hTaXppbmcgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2l6aW5nJyk7XG4gICAgICAgIGxldCBoZWlnaHQgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKSwgMTApO1xuICAgICAgICBsZXQgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKSk7XG4gICAgICAgIGlmIChpc05hTihsaW5lSGVpZ2h0KSkge1xuICAgICAgICAgICAgbGluZUhlaWdodCA9IGZvbnRTaXplICogMS4yO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3hTaXppbmcgPT09ICdib3JkZXItYm94Jykge1xuICAgICAgICAgICAgY29uc3QgcGFkZGluZ190b3AgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBwYWRkaW5nX2JvdHRvbSA9IHBhcnNlSW50KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlcl90b3AgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItdG9wLXdpZHRoJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlcl9ib3R0b20gPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItYm90dG9tLXdpZHRoJyksIDEwKTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAtIHBhZGRpbmdfdG9wIC0gcGFkZGluZ19ib3R0b20gLSBib3JkZXJfdG9wIC0gYm9yZGVyX2JvdHRvbTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2hDbGFtcCgpO1xuICAgICAgICB0aGlzLmxpbmVDb3VudFVwZGF0ZS5lbWl0KE1hdGguY2VpbChoZWlnaHQgLyBsaW5lSGVpZ2h0KSk7XG4gICAgfVxufVxuIl19
|