@cuby-ui/cdk 0.0.180 → 0.0.181

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.
Files changed (129) hide show
  1. package/constants/empty.d.ts +10 -0
  2. package/constants/handlers.d.ts +8 -0
  3. package/constants/index.d.ts +2 -0
  4. package/directives/let.directive.d.ts +1 -1
  5. package/directives/target.directive.d.ts +1 -1
  6. package/esm2022/constants/empty.mjs +24 -0
  7. package/esm2022/constants/handlers.mjs +11 -0
  8. package/esm2022/constants/index.mjs +4 -0
  9. package/{esm2020 → esm2022}/directives/auto-resizing.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/directives/click-outside.directive.mjs +4 -4
  11. package/{esm2020 → esm2022}/directives/content-editable-value-accessor.directive.mjs +4 -4
  12. package/{esm2020 → esm2022}/directives/dimensions-observer.directive.mjs +4 -4
  13. package/{esm2020 → esm2022}/directives/element.directive.mjs +4 -4
  14. package/{esm2020 → esm2022}/directives/focus-trap.directive.mjs +4 -4
  15. package/{esm2020 → esm2022}/directives/item.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/directives/let.directive.mjs +4 -4
  17. package/{esm2020 → esm2022}/directives/target.directive.mjs +4 -4
  18. package/esm2022/observables/if-map.mjs +5 -0
  19. package/esm2022/observables/index.mjs +5 -0
  20. package/esm2022/observables/typed-from-event.mjs +9 -0
  21. package/esm2022/observables/watch.mjs +6 -0
  22. package/esm2022/observables/zone.mjs +34 -0
  23. package/{esm2020 → esm2022}/pipes/filter.pipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/services/destroy.service.mjs +4 -4
  25. package/esm2022/services/id.service.mjs +18 -0
  26. package/{esm2020 → esm2022}/services/popover.service.mjs +4 -4
  27. package/esm2022/tokens/active-element.mjs +54 -0
  28. package/esm2022/tokens/environment.mjs +45 -0
  29. package/esm2022/tokens/index.mjs +10 -0
  30. package/esm2022/tokens/navigator.mjs +6 -0
  31. package/esm2022/tokens/removed-element.mjs +19 -0
  32. package/esm2022/tokens/user-agent.mjs +6 -0
  33. package/esm2022/types/context.mjs +2 -0
  34. package/esm2022/types/handler.mjs +2 -0
  35. package/esm2022/types/index.mjs +9 -0
  36. package/esm2022/utils/dom/element-checks.mjs +20 -0
  37. package/esm2022/utils/dom/get-actual-target.mjs +7 -0
  38. package/esm2022/utils/dom/get-document-or-shadow-root.mjs +6 -0
  39. package/esm2022/utils/dom/get-element-obscurers.mjs +44 -0
  40. package/esm2022/utils/dom/index.mjs +7 -0
  41. package/esm2022/utils/dom/inject-element.mjs +5 -0
  42. package/esm2022/utils/index.mjs +7 -0
  43. package/esm2022/utils/math/clamp.mjs +11 -0
  44. package/esm2022/utils/math/index.mjs +2 -0
  45. package/esm2022/utils/miscellaneous/array-remove.mjs +4 -0
  46. package/esm2022/utils/miscellaneous/index.mjs +5 -0
  47. package/esm2022/utils/miscellaneous/is-present.mjs +4 -0
  48. package/esm2022/utils/miscellaneous/pure.mjs +81 -0
  49. package/esm2022/utils/miscellaneous/px.mjs +7 -0
  50. package/esm2022/utils/platform/index.mjs +2 -0
  51. package/esm2022/utils/platform/is-ios.mjs +6 -0
  52. package/fesm2022/cuby-ui-cdk.mjs +958 -0
  53. package/fesm2022/cuby-ui-cdk.mjs.map +1 -0
  54. package/observables/if-map.d.ts +3 -0
  55. package/observables/index.d.ts +4 -0
  56. package/observables/typed-from-event.d.ts +16 -0
  57. package/observables/watch.d.ts +3 -0
  58. package/observables/zone.d.ts +7 -0
  59. package/package.json +8 -14
  60. package/tokens/active-element.d.ts +5 -0
  61. package/tokens/environment.d.ts +19 -0
  62. package/tokens/index.d.ts +5 -0
  63. package/tokens/navigator.d.ts +2 -0
  64. package/tokens/removed-element.d.ts +4 -0
  65. package/tokens/user-agent.d.ts +2 -0
  66. package/types/context.d.ts +3 -0
  67. package/types/handler.d.ts +4 -0
  68. package/types/index.d.ts +2 -0
  69. package/utils/dom/element-checks.d.ts +6 -0
  70. package/utils/dom/get-actual-target.d.ts +4 -0
  71. package/utils/dom/get-document-or-shadow-root.d.ts +1 -0
  72. package/utils/dom/get-element-obscurers.d.ts +9 -0
  73. package/utils/dom/index.d.ts +5 -1
  74. package/utils/dom/inject-element.d.ts +1 -0
  75. package/utils/index.d.ts +3 -0
  76. package/utils/math/clamp.d.ts +8 -0
  77. package/utils/math/index.d.ts +1 -0
  78. package/utils/miscellaneous/array-remove.d.ts +1 -0
  79. package/utils/miscellaneous/index.d.ts +4 -0
  80. package/utils/miscellaneous/is-present.d.ts +1 -0
  81. package/utils/miscellaneous/pure.d.ts +21 -0
  82. package/utils/miscellaneous/px.d.ts +4 -0
  83. package/utils/platform/index.d.ts +1 -0
  84. package/utils/platform/is-ios.d.ts +3 -0
  85. package/esm2020/constants/index.mjs +0 -2
  86. package/esm2020/services/id.service.mjs +0 -18
  87. package/esm2020/tokens/index.mjs +0 -5
  88. package/esm2020/types/index.mjs +0 -7
  89. package/esm2020/utils/dom/index.mjs +0 -3
  90. package/esm2020/utils/dom/is-html-element.mjs +0 -4
  91. package/esm2020/utils/index.mjs +0 -4
  92. package/fesm2015/cuby-ui-cdk.mjs +0 -572
  93. package/fesm2015/cuby-ui-cdk.mjs.map +0 -1
  94. package/fesm2020/cuby-ui-cdk.mjs +0 -579
  95. package/fesm2020/cuby-ui-cdk.mjs.map +0 -1
  96. package/utils/dom/is-html-element.d.ts +0 -1
  97. /package/{esm2020 → esm2022}/constants/svg-node-filter.mjs +0 -0
  98. /package/{esm2020 → esm2022}/cuby-ui-cdk.mjs +0 -0
  99. /package/{esm2020 → esm2022}/date-time/index.mjs +0 -0
  100. /package/{esm2020 → esm2022}/date-time/time.mjs +0 -0
  101. /package/{esm2020 → esm2022}/directives/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/directives/let.context.mjs +0 -0
  103. /package/{esm2020 → esm2022}/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/interfaces/dimensions.mjs +0 -0
  105. /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
  106. /package/{esm2020 → esm2022}/interfaces/on-change.mjs +0 -0
  107. /package/{esm2020 → esm2022}/interfaces/on-touched.mjs +0 -0
  108. /package/{esm2020 → esm2022}/pipes/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/services/index.mjs +0 -0
  110. /package/{esm2020 → esm2022}/tokens/history.mjs +0 -0
  111. /package/{esm2020 → esm2022}/tokens/local-storage.mjs +0 -0
  112. /package/{esm2020 → esm2022}/tokens/session-storage.mjs +0 -0
  113. /package/{esm2020 → esm2022}/tokens/window.mjs +0 -0
  114. /package/{esm2020 → esm2022}/types/date-time.mjs +0 -0
  115. /package/{esm2020 → esm2022}/types/input-type.mjs +0 -0
  116. /package/{esm2020 → esm2022}/types/mapper.mjs +0 -0
  117. /package/{esm2020 → esm2022}/types/matcher.mjs +0 -0
  118. /package/{esm2020 → esm2022}/types/nullable.mjs +0 -0
  119. /package/{esm2020 → esm2022}/types/value-of.mjs +0 -0
  120. /package/{esm2020 → esm2022}/utils/dom/contains-or-after.mjs +0 -0
  121. /package/{esm2020 → esm2022}/utils/focus/blur-native-focused.mjs +0 -0
  122. /package/{esm2020 → esm2022}/utils/focus/get-closest-focusable.mjs +0 -0
  123. /package/{esm2020 → esm2022}/utils/focus/get-native-focused.mjs +0 -0
  124. /package/{esm2020 → esm2022}/utils/focus/index.mjs +0 -0
  125. /package/{esm2020 → esm2022}/utils/focus/is-native-keyboard-focusable.mjs +0 -0
  126. /package/{esm2020 → esm2022}/utils/focus/is-native-mouse-focusable.mjs +0 -0
  127. /package/{esm2020 → esm2022}/utils/token/create-token.mjs +0 -0
  128. /package/{esm2020 → esm2022}/utils/token/index.mjs +0 -0
  129. /package/{esm2020 → esm2022}/utils/token/provide.mjs +0 -0
@@ -0,0 +1,54 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { inject, NgZone } from '@angular/core';
3
+ import { CUI_WINDOW } from './window';
4
+ import { cuiTypedFromEvent, cuiZonefreeScheduler } from '../observables';
5
+ import { cuiCreateTokenFromFactory, cuiGetActualTarget, cuiGetDocumentOrShadowRoot, cuiIsNativeMouseFocusable, } from '../utils';
6
+ import { distinctUntilChanged, filter, map, merge, of, repeat, share, startWith, switchMap, take, takeUntil, timer, withLatestFrom, } from 'rxjs';
7
+ import { CUI_REMOVED_ELEMENT } from './removed-element';
8
+ // Checks if focusout event should be considered leaving active zone
9
+ function isValidFocusout(target, removedElement = null) {
10
+ return (
11
+ // Not due to switching tabs/going to DevTools
12
+ cuiGetDocumentOrShadowRoot(target).activeElement !== target &&
13
+ // Not due to button/input becoming disabled or under disabled fieldset
14
+ !target.matches(':disabled') &&
15
+ // Not due to element being removed from DOM
16
+ !removedElement?.contains(target) &&
17
+ // Not due to scrollable element became non-scrollable
18
+ cuiIsNativeMouseFocusable(target));
19
+ }
20
+ function shadowRootActiveElement(root) {
21
+ return merge(cuiTypedFromEvent(root, 'focusin').pipe(map(({ target }) => target)), cuiTypedFromEvent(root, 'focusout').pipe(filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)), map(({ relatedTarget }) => relatedTarget)));
22
+ }
23
+ /**
24
+ * Active element on the document for ActiveZone
25
+ */
26
+ export const CUI_ACTIVE_ELEMENT = cuiCreateTokenFromFactory(() => {
27
+ const removedElement$ = inject(CUI_REMOVED_ELEMENT);
28
+ const win = inject(CUI_WINDOW);
29
+ const doc = inject(DOCUMENT);
30
+ const zone = inject(NgZone);
31
+ const focusout$ = cuiTypedFromEvent(win, 'focusout', { capture: true });
32
+ const focusin$ = cuiTypedFromEvent(win, 'focusin', { capture: true });
33
+ const blur$ = cuiTypedFromEvent(win, 'blur');
34
+ const mousedown$ = cuiTypedFromEvent(win, 'mousedown');
35
+ const mouseup$ = cuiTypedFromEvent(win, 'mouseup');
36
+ return merge(focusout$.pipe(takeUntil(mousedown$), repeat({ delay: () => mouseup$ }), withLatestFrom(removedElement$), filter(([event, removedElement]) => isValidFocusout(cuiGetActualTarget(event), removedElement)), map(([{ relatedTarget }]) => relatedTarget)), blur$.pipe(map(() => doc.activeElement), filter((element) => !!element?.matches('iframe'))), focusin$.pipe(switchMap((event) => {
37
+ const target = cuiGetActualTarget(event);
38
+ const root = cuiGetDocumentOrShadowRoot(target);
39
+ return root === doc
40
+ ? of(target)
41
+ : shadowRootActiveElement(root).pipe(startWith(target));
42
+ })), mousedown$.pipe(switchMap((event) => {
43
+ const actualTargetInCurrentTime = cuiGetActualTarget(event);
44
+ return !doc.activeElement || doc.activeElement === doc.body
45
+ ? of(actualTargetInCurrentTime)
46
+ : focusout$.pipe(take(1), map(
47
+ /**
48
+ * Do not use `map(() => cuiGetActualTarget(event))`
49
+ * because we have different result in runtime
50
+ */
51
+ () => actualTargetInCurrentTime), takeUntil(timer(0, cuiZonefreeScheduler(zone))));
52
+ }))).pipe(distinctUntilChanged(), share());
53
+ });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdG9rZW5zL2FjdGl2ZS1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUM1Qix5QkFBeUIsR0FDMUIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxFQUFFLEVBQ0YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsS0FBSyxFQUNMLGNBQWMsR0FDakIsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxvRUFBb0U7QUFDcEUsU0FBUyxlQUFlLENBQUMsTUFBVyxFQUFFLGlCQUFpQyxJQUFJO0lBQ3ZFLE9BQU87SUFDSCw4Q0FBOEM7SUFDOUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxLQUFLLE1BQU07UUFDM0QsdUVBQXVFO1FBQ3ZFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDNUIsNENBQTRDO1FBQzVDLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDakMsc0RBQXNEO1FBQ3RELHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUNwQyxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsSUFBYztJQUMzQyxPQUFPLEtBQUssQ0FDUixpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ2xFLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3BDLE1BQU0sQ0FDRixDQUFDLEVBQUMsTUFBTSxFQUFFLGFBQWEsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FDMUUsRUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFDLGFBQWEsRUFBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FDMUMsQ0FDSixDQUFDO0FBQ04sQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBRXpELEdBQUcsRUFBRTtJQUNILE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN0RSxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFbkQsT0FBTyxLQUFLLENBQ1IsU0FBUyxDQUFDLElBQUksQ0FDVixTQUFTLENBQUMsVUFBVSxDQUFDLEVBQ3JCLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxFQUMvQixjQUFjLENBQUMsZUFBZSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FDL0IsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUM3RCxFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxhQUFhLEVBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FDNUMsRUFDRCxLQUFLLENBQUMsSUFBSSxDQUNOLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQzVCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDcEQsRUFDRCxRQUFRLENBQUMsSUFBSSxDQUNULFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLDBCQUEwQixDQUFDLE1BQU0sQ0FBYSxDQUFDO1FBRTVELE9BQU8sSUFBSSxLQUFLLEdBQUc7WUFDZixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNaLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQ0wsRUFDRCxVQUFVLENBQUMsSUFBSSxDQUNYLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2hCLE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGFBQWEsS0FBSyxHQUFHLENBQUMsSUFBSTtZQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBQy9CLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHO1lBQ0M7OztlQUdHO1lBQ0gsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQ2xDLEVBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNsRCxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtpbmplY3QsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDVUlfV0lORE9XIH0gZnJvbSAnLi93aW5kb3cnO1xuaW1wb3J0IHtjdWlUeXBlZEZyb21FdmVudCwgY3VpWm9uZWZyZWVTY2hlZHVsZXJ9IGZyb20gJy4uL29ic2VydmFibGVzJztcbmltcG9ydCB7XG4gICAgY3VpQ3JlYXRlVG9rZW5Gcm9tRmFjdG9yeSxcbiAgICBjdWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgY3VpR2V0RG9jdW1lbnRPclNoYWRvd1Jvb3QsXG4gIGN1aUlzTmF0aXZlTW91c2VGb2N1c2FibGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlsdGVyLFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBvZixcbiAgICByZXBlYXQsXG4gICAgc2hhcmUsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbiAgICB0aW1lcixcbiAgICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q1VJX1JFTU9WRURfRUxFTUVOVH0gZnJvbSAnLi9yZW1vdmVkLWVsZW1lbnQnO1xuXG4vLyBDaGVja3MgaWYgZm9jdXNvdXQgZXZlbnQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgbGVhdmluZyBhY3RpdmUgem9uZVxuZnVuY3Rpb24gaXNWYWxpZEZvY3Vzb3V0KHRhcmdldDogYW55LCByZW1vdmVkRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgLy8gTm90IGR1ZSB0byBzd2l0Y2hpbmcgdGFicy9nb2luZyB0byBEZXZUb29sc1xuICAgICAgICBjdWlHZXREb2N1bWVudE9yU2hhZG93Um9vdCh0YXJnZXQpLmFjdGl2ZUVsZW1lbnQgIT09IHRhcmdldCAmJlxuICAgICAgICAvLyBOb3QgZHVlIHRvIGJ1dHRvbi9pbnB1dCBiZWNvbWluZyBkaXNhYmxlZCBvciB1bmRlciBkaXNhYmxlZCBmaWVsZHNldFxuICAgICAgICAhdGFyZ2V0Lm1hdGNoZXMoJzpkaXNhYmxlZCcpICYmXG4gICAgICAgIC8vIE5vdCBkdWUgdG8gZWxlbWVudCBiZWluZyByZW1vdmVkIGZyb20gRE9NXG4gICAgICAgICFyZW1vdmVkRWxlbWVudD8uY29udGFpbnModGFyZ2V0KSAmJlxuICAgICAgICAvLyBOb3QgZHVlIHRvIHNjcm9sbGFibGUgZWxlbWVudCBiZWNhbWUgbm9uLXNjcm9sbGFibGVcbiAgICAgICAgY3VpSXNOYXRpdmVNb3VzZUZvY3VzYWJsZSh0YXJnZXQpXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gc2hhZG93Um9vdEFjdGl2ZUVsZW1lbnQocm9vdDogRG9jdW1lbnQpOiBPYnNlcnZhYmxlPEV2ZW50VGFyZ2V0IHwgbnVsbD4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgY3VpVHlwZWRGcm9tRXZlbnQocm9vdCwgJ2ZvY3VzaW4nKS5waXBlKG1hcCgoe3RhcmdldH0pID0+IHRhcmdldCkpLFxuICAgICAgICBjdWlUeXBlZEZyb21FdmVudChyb290LCAnZm9jdXNvdXQnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICh7dGFyZ2V0LCByZWxhdGVkVGFyZ2V0fSkgPT4gISFyZWxhdGVkVGFyZ2V0ICYmIGlzVmFsaWRGb2N1c291dCh0YXJnZXQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoe3JlbGF0ZWRUYXJnZXR9KSA9PiByZWxhdGVkVGFyZ2V0KSxcbiAgICAgICAgKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEFjdGl2ZSBlbGVtZW50IG9uIHRoZSBkb2N1bWVudCBmb3IgQWN0aXZlWm9uZVxuICovXG5leHBvcnQgY29uc3QgQ1VJX0FDVElWRV9FTEVNRU5UID0gY3VpQ3JlYXRlVG9rZW5Gcm9tRmFjdG9yeTxcbiAgICBPYnNlcnZhYmxlPEV2ZW50VGFyZ2V0IHwgbnVsbD5cbj4oKCkgPT4ge1xuICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50JCA9IGluamVjdChDVUlfUkVNT1ZFRF9FTEVNRU5UKTtcbiAgICBjb25zdCB3aW4gPSBpbmplY3QoQ1VJX1dJTkRPVyk7XG4gICAgY29uc3QgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgY29uc3QgZm9jdXNvdXQkID0gY3VpVHlwZWRGcm9tRXZlbnQod2luLCAnZm9jdXNvdXQnLCB7Y2FwdHVyZTogdHJ1ZX0pO1xuICAgIGNvbnN0IGZvY3VzaW4kID0gY3VpVHlwZWRGcm9tRXZlbnQod2luLCAnZm9jdXNpbicsIHtjYXB0dXJlOiB0cnVlfSk7XG4gICAgY29uc3QgYmx1ciQgPSBjdWlUeXBlZEZyb21FdmVudCh3aW4sICdibHVyJyk7XG4gICAgY29uc3QgbW91c2Vkb3duJCA9IGN1aVR5cGVkRnJvbUV2ZW50KHdpbiwgJ21vdXNlZG93bicpO1xuICAgIGNvbnN0IG1vdXNldXAkID0gY3VpVHlwZWRGcm9tRXZlbnQod2luLCAnbW91c2V1cCcpO1xuXG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICBmb2N1c291dCQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbChtb3VzZWRvd24kKSxcbiAgICAgICAgICAgIHJlcGVhdCh7ZGVsYXk6ICgpID0+IG1vdXNldXAkfSksXG4gICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbShyZW1vdmVkRWxlbWVudCQpLFxuICAgICAgICAgICAgZmlsdGVyKChbZXZlbnQsIHJlbW92ZWRFbGVtZW50XSkgPT5cbiAgICAgICAgICAgICAgICBpc1ZhbGlkRm9jdXNvdXQoY3VpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KSwgcmVtb3ZlZEVsZW1lbnQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoW3tyZWxhdGVkVGFyZ2V0fV0pID0+IHJlbGF0ZWRUYXJnZXQpLFxuICAgICAgICApLFxuICAgICAgICBibHVyJC5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IGRvYy5hY3RpdmVFbGVtZW50KSxcbiAgICAgICAgICAgIGZpbHRlcigoZWxlbWVudCkgPT4gISFlbGVtZW50Py5tYXRjaGVzKCdpZnJhbWUnKSksXG4gICAgICAgICksXG4gICAgICAgIGZvY3VzaW4kLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gY3VpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCByb290ID0gY3VpR2V0RG9jdW1lbnRPclNoYWRvd1Jvb3QodGFyZ2V0KSBhcyBEb2N1bWVudDtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb290ID09PSBkb2NcbiAgICAgICAgICAgICAgICAgICAgPyBvZih0YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgIDogc2hhZG93Um9vdEFjdGl2ZUVsZW1lbnQocm9vdCkucGlwZShzdGFydFdpdGgodGFyZ2V0KSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICAgbW91c2Vkb3duJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFRhcmdldEluQ3VycmVudFRpbWUgPSBjdWlHZXRBY3R1YWxUYXJnZXQoZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICFkb2MuYWN0aXZlRWxlbWVudCB8fCBkb2MuYWN0aXZlRWxlbWVudCA9PT0gZG9jLmJvZHlcbiAgICAgICAgICAgICAgICAgICAgPyBvZihhY3R1YWxUYXJnZXRJbkN1cnJlbnRUaW1lKVxuICAgICAgICAgICAgICAgICAgICA6IGZvY3Vzb3V0JC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIERvIG5vdCB1c2UgYG1hcCgoKSA9PiBjdWlHZXRBY3R1YWxUYXJnZXQoZXZlbnQpKWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGJlY2F1c2Ugd2UgaGF2ZSBkaWZmZXJlbnQgcmVzdWx0IGluIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gYWN0dWFsVGFyZ2V0SW5DdXJyZW50VGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRpbWVyKDAsIGN1aVpvbmVmcmVlU2NoZWR1bGVyKHpvbmUpKSksXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZSgpKTtcbn0pO1xuIl19
@@ -0,0 +1,45 @@
1
+ import { inject } from '@angular/core';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { CUI_NAVIGATOR, CUI_USER_AGENT, CUI_WINDOW } from '../tokens';
4
+ import { cuiIsIos } from '../utils';
5
+ import { CUI_FALSE_HANDLER } from '../constants';
6
+ import { cuiCreateTokenFromFactory } from '../utils';
7
+ import { fromEvent, map } from 'rxjs';
8
+ // https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/
9
+ const firstRegex =
10
+ // eslint-disable-next-line sonarjs/regex-complexity
11
+ /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series([46])0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;
12
+ const secondRegex =
13
+ // eslint-disable-next-line sonarjs/regex-complexity
14
+ /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;
15
+ export const CUI_IS_MOBILE = cuiCreateTokenFromFactory(() => firstRegex.test(inject(CUI_USER_AGENT).toLowerCase()) ||
16
+ secondRegex.test(inject(CUI_USER_AGENT).slice(0, 4).toLowerCase()));
17
+ export const CUI_IS_IOS = cuiCreateTokenFromFactory(() => cuiIsIos(inject(CUI_NAVIGATOR)));
18
+ export const CUI_IS_ANDROID = cuiCreateTokenFromFactory(() => inject(CUI_IS_MOBILE) && !inject(CUI_IS_IOS));
19
+ export const CUI_IS_WEBKIT = cuiCreateTokenFromFactory(() => !!inject(CUI_WINDOW)?.webkitConvertPointFromNodeToPage);
20
+ export const CUI_PLATFORM = cuiCreateTokenFromFactory(() => {
21
+ if (inject(CUI_IS_IOS)) {
22
+ return 'ios';
23
+ }
24
+ return inject(CUI_IS_ANDROID) ? 'android' : 'web';
25
+ });
26
+ export const CUI_IS_TOUCH = cuiCreateTokenFromFactory(() => {
27
+ const media = inject(CUI_WINDOW).matchMedia('(pointer: coarse)');
28
+ return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {
29
+ initialValue: media.matches,
30
+ });
31
+ });
32
+ /**
33
+ * Detect if app is running under Cypress
34
+ * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}
35
+ */
36
+ export const CUI_IS_CYPRESS = cuiCreateTokenFromFactory(() => !!inject(CUI_WINDOW).Cypress);
37
+ /**
38
+ * Manually provide `true` when running tests in Playwright
39
+ */
40
+ export const CUI_IS_PLAYWRIGHT = cuiCreateTokenFromFactory(CUI_FALSE_HANDLER);
41
+ /**
42
+ * Detect if app is running under any of test frameworks
43
+ */
44
+ export const CUI_IS_E2E = cuiCreateTokenFromFactory(() => inject(CUI_IS_CYPRESS) || inject(CUI_IS_PLAYWRIGHT));
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdG9rZW5zL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVTtBQUNaLG9EQUFvRDtBQUNwRCwwVEFBMFQsQ0FBQztBQUMvVCxNQUFNLFdBQVc7QUFDYixvREFBb0Q7QUFDcEQsaWlEQUFpaUQsQ0FBQztBQUV0aUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLHlCQUF5QixDQUNsRCxHQUFHLEVBQUUsQ0FDRCxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRCxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ3pFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFM0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLHlCQUF5QixDQUNuRCxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQ3JELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcseUJBQXlCLENBQ2xELEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQU0sVUFBVSxDQUFDLEVBQUUsZ0NBQWdDLENBQ3BFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQTRCLEdBQUcsRUFBRTtJQUNsRixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUVELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUU7SUFDdkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRWxFLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtRQUN2RSxZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDOUIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcseUJBQXlCLENBQ25ELEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQU0sVUFBVSxDQUFDLENBQUMsT0FBTyxDQUMxQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBVSxpQkFBaUIsQ0FBQyxDQUFDO0FBRXZGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUMvQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDVUlfTkFWSUdBVE9SLCBDVUlfVVNFUl9BR0VOVCwgQ1VJX1dJTkRPVyB9IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQge2N1aUlzSW9zfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0NVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5fSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWFwfSBmcm9tICdyeGpzJztcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzExMzgxNzMwLzI3MDY0MjYgaHR0cDovL2RldGVjdG1vYmlsZWJyb3dzZXJzLmNvbS9cbmNvbnN0IGZpcnN0UmVnZXggPVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL3JlZ2V4LWNvbXBsZXhpdHlcbiAgICAvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXFwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoWzQ2XSkwfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby87XG5jb25zdCBzZWNvbmRSZWdleCA9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvcmVnZXgtY29tcGxleGl0eVxuICAgIC8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihbZXZdKXd8YnVtYnxidy0oW251XSl8YzU1XFwvfGNhcGl8Y2N3YXxjZG0tfGNlbGx8Y2h0bXxjbGRjfGNtZC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGMtc3xkZXZpfGRpY2F8ZG1vYnxkbyhbY3BdKW98ZHMoMTJ8LWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShbLV9dKXxnMSB1fGc1NjB8Z2VuZXxnZi01fGctbW98Z28oXFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZC0oW21wdF0pfGhlaS18aGkocHR8dGEpfGhwKCBpfGlwKXxocy1jfGh0KGMoWy0gX2FncHN0XSl8dHApfGh1KGF3fHRjKXxpLSgyMHxnb3xtYSl8aTIzMHxpYWMoWyBcXC0vXSl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKFt0dl0pYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KFsgL10pfGtsb258a3B0IHxrd2MtfGt5byhbY2tdKXxsZShub3x4aSl8bGcoIGd8XFwvKFtrbHVdKXw1MHw1NHwtW2Etd10pfGxpYnd8bHlueHxtMS13fG0zZ2F8bTUwXFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bS1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChbLSBvdl0pfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMChbMDJdKXxuNTAoWzAyNV0pfG43KDAoWzAxXSl8MTApfG5lKChbY21dKS18b258dGZ8d2Z8d2d8d3QpfG5vayhbNmldKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihbYWR0XSl8cGR4Z3xwZygxM3wtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdC1nfHFhLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8LVsyLTddfGktKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVxcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aC18b298cC0pfHNka1xcL3xzZShjKFstMDFdKXw0N3xtY3xuZHxyaSl8c2doLXxzaGFyfHNpZShbLW1dKXxzay0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGgtfHYtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsLXx0ZGctfHRlbChbaW1dKXx0aW0tfHQtbW98dG8ocGx8c2gpfHRzKDcwfG0tfG0zfG01KXx0eC05fHVwKFxcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhbLSBdKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhcy18eW91cnx6ZXRvfHp0ZS0vO1xuXG5leHBvcnQgY29uc3QgQ1VJX0lTX01PQklMRSA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoXG4gICAgKCkgPT5cbiAgICAgICAgZmlyc3RSZWdleC50ZXN0KGluamVjdChDVUlfVVNFUl9BR0VOVCkudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgc2Vjb25kUmVnZXgudGVzdChpbmplY3QoQ1VJX1VTRVJfQUdFTlQpLnNsaWNlKDAsIDQpLnRvTG93ZXJDYXNlKCkpLFxuKTtcblxuZXhwb3J0IGNvbnN0IENVSV9JU19JT1MgPSBjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5KCgpID0+IGN1aUlzSW9zKGluamVjdChDVUlfTkFWSUdBVE9SKSkpO1xuXG5leHBvcnQgY29uc3QgQ1VJX0lTX0FORFJPSUQgPSBjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5KFxuICAgICgpID0+IGluamVjdChDVUlfSVNfTU9CSUxFKSAmJiAhaW5qZWN0KENVSV9JU19JT1MpLFxuKTtcblxuZXhwb3J0IGNvbnN0IENVSV9JU19XRUJLSVQgPSBjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5KFxuICAgICgpID0+ICEhaW5qZWN0PGFueT4oQ1VJX1dJTkRPVyk/LndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlLFxuKTtcblxuZXhwb3J0IGNvbnN0IENVSV9QTEFURk9STSA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3Rvcnk8J2FuZHJvaWQnIHwgJ2lvcycgfCAnd2ViJz4oKCkgPT4ge1xuICAgIGlmIChpbmplY3QoQ1VJX0lTX0lPUykpIHtcbiAgICAgICAgcmV0dXJuICdpb3MnO1xuICAgIH1cblxuICAgIHJldHVybiBpbmplY3QoQ1VJX0lTX0FORFJPSUQpID8gJ2FuZHJvaWQnIDogJ3dlYic7XG59KTtcblxuZXhwb3J0IGNvbnN0IENVSV9JU19UT1VDSCA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoKCkgPT4ge1xuICAgIGNvbnN0IG1lZGlhID0gaW5qZWN0KENVSV9XSU5ET1cgKS5tYXRjaE1lZGlhKCcocG9pbnRlcjogY29hcnNlKScpO1xuXG4gICAgcmV0dXJuIHRvU2lnbmFsKGZyb21FdmVudChtZWRpYSwgJ2NoYW5nZScpLnBpcGUobWFwKCgpID0+IG1lZGlhLm1hdGNoZXMpKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IG1lZGlhLm1hdGNoZXMsXG4gICAgfSk7XG59KTtcblxuLyoqXG4gKiBEZXRlY3QgaWYgYXBwIGlzIHJ1bm5pbmcgdW5kZXIgQ3lwcmVzc1xuICoge0BsaW5rIGh0dHBzOi8vZG9jcy5jeXByZXNzLmlvL2ZhcS9xdWVzdGlvbnMvdXNpbmctY3lwcmVzcy1mYXEjSXMtdGhlcmUtYW55LXdheS10by1kZXRlY3QtaWYtbXktYXBwLWlzLXJ1bm5pbmctdW5kZXItQ3lwcmVzcyBDeXByZXNzIGRvY3N9XG4gKi9cbmV4cG9ydCBjb25zdCBDVUlfSVNfQ1lQUkVTUyA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoXG4gICAgKCkgPT4gISFpbmplY3Q8YW55PihDVUlfV0lORE9XKS5DeXByZXNzLFxuKTtcblxuLyoqXG4gKiBNYW51YWxseSBwcm92aWRlIGB0cnVlYCB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gUGxheXdyaWdodFxuICovXG5leHBvcnQgY29uc3QgQ1VJX0lTX1BMQVlXUklHSFQgPSBjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5PGJvb2xlYW4+KENVSV9GQUxTRV9IQU5ETEVSKTtcblxuLyoqXG4gKiBEZXRlY3QgaWYgYXBwIGlzIHJ1bm5pbmcgdW5kZXIgYW55IG9mIHRlc3QgZnJhbWV3b3Jrc1xuICovXG5leHBvcnQgY29uc3QgQ1VJX0lTX0UyRSA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoXG4gICAgKCkgPT4gaW5qZWN0KENVSV9JU19DWVBSRVNTKSB8fCBpbmplY3QoQ1VJX0lTX1BMQVlXUklHSFQpLFxuKTtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export * from './active-element';
2
+ export * from './environment';
3
+ export * from './history';
4
+ export * from './local-storage';
5
+ export * from './navigator';
6
+ export * from './removed-element';
7
+ export * from './session-storage';
8
+ export * from './user-agent';
9
+ export * from './window';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGl2ZS1lbGVtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9oaXN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWwtc3RvcmFnZSc7XG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZWQtZWxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tc3RvcmFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYWdlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aW5kb3cnO1xuIl19
@@ -0,0 +1,6 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ import { CUI_WINDOW } from './window';
3
+ export const CUI_NAVIGATOR = new InjectionToken('[CUI_NAVIGATOR]', {
4
+ factory: () => inject(CUI_WINDOW).navigator,
5
+ });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3Rva2Vucy9uYXZpZ2F0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVksaUJBQWlCLEVBQUU7SUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTO0NBQzVDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q1VJX1dJTkRPV30gZnJvbSAnLi93aW5kb3cnO1xuXG5leHBvcnQgY29uc3QgQ1VJX05BVklHQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXZpZ2F0b3I+KCdbQ1VJX05BVklHQVRPUl0nLCB7XG4gIGZhY3Rvcnk6ICgpID0+IGluamVjdChDVUlfV0lORE9XKS5uYXZpZ2F0b3IsXG59KTtcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { ɵAnimationEngine as AnimationEngine } from '@angular/animations/browser';
2
+ import { inject } from '@angular/core';
3
+ import { cuiCreateTokenFromFactory } from '../utils';
4
+ import { BehaviorSubject, map, share, startWith, switchMap, timer } from 'rxjs';
5
+ /**
6
+ * Element currently being removed by AnimationEngine
7
+ */
8
+ export const CUI_REMOVED_ELEMENT = cuiCreateTokenFromFactory(() => {
9
+ const stub = { onRemovalComplete: () => { } };
10
+ const element$ = new BehaviorSubject(null);
11
+ const engine = inject(AnimationEngine, { optional: true }) || stub;
12
+ const { onRemovalComplete = stub.onRemovalComplete } = engine;
13
+ engine.onRemovalComplete = (element, context) => {
14
+ element$.next(element);
15
+ onRemovalComplete.call(engine, element, context);
16
+ };
17
+ return element$.pipe(switchMap((element) => timer(0).pipe(map(() => null), startWith(element))), share());
18
+ });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlZC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3Rva2Vucy9yZW1vdmVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixJQUFJLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDLEdBQUcsRUFBRTtJQUM5RCxNQUFNLElBQUksR0FBRyxFQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksZUFBZSxDQUFpQixJQUFJLENBQUMsQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2pFLE1BQU0sRUFBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFFNUQsTUFBTSxDQUFDLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNoQixTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNsQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNULEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsT0FBTyxDQUFDLENBQ3JCLENBQ0osRUFDRCxLQUFLLEVBQUUsQ0FDVixDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge8m1QW5pbWF0aW9uRW5naW5lIGFzIEFuaW1hdGlvbkVuZ2luZX0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucy9icm93c2VyJztcbmltcG9ydCB7aW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWFwLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBFbGVtZW50IGN1cnJlbnRseSBiZWluZyByZW1vdmVkIGJ5IEFuaW1hdGlvbkVuZ2luZVxuICovXG5leHBvcnQgY29uc3QgQ1VJX1JFTU9WRURfRUxFTUVOVCA9IGN1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoKCkgPT4ge1xuICAgIGNvbnN0IHN0dWIgPSB7b25SZW1vdmFsQ29tcGxldGU6ICgpID0+IHt9fTtcbiAgICBjb25zdCBlbGVtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IGVuZ2luZSA9IGluamVjdChBbmltYXRpb25FbmdpbmUsIHtvcHRpb25hbDogdHJ1ZX0pIHx8IHN0dWI7XG4gICAgY29uc3Qge29uUmVtb3ZhbENvbXBsZXRlID0gc3R1Yi5vblJlbW92YWxDb21wbGV0ZX0gPSBlbmdpbmU7XG5cbiAgICBlbmdpbmUub25SZW1vdmFsQ29tcGxldGUgPSAoZWxlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgICBlbGVtZW50JC5uZXh0KGVsZW1lbnQpO1xuICAgICAgICBvblJlbW92YWxDb21wbGV0ZS5jYWxsKGVuZ2luZSwgZWxlbWVudCwgY29udGV4dCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlbGVtZW50JC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGVsZW1lbnQpID0+XG4gICAgICAgICAgICB0aW1lcigwKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBudWxsKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoZWxlbWVudCksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpLFxuICAgICk7XG59KTtcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ import { CUI_NAVIGATOR } from './navigator';
3
+ export const CUI_USER_AGENT = new InjectionToken('[CUI_USER_AGENT]', {
4
+ factory: () => inject(CUI_NAVIGATOR).userAgent,
5
+ });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay90b2tlbnMvdXNlci1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxrQkFBa0IsRUFBRTtJQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVM7Q0FDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtDVUlfTkFWSUdBVE9SfSBmcm9tICcuL25hdmlnYXRvcic7XG5cbmV4cG9ydCBjb25zdCBDVUlfVVNFUl9BR0VOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdbQ1VJX1VTRVJfQUdFTlRdJywge1xuICBmYWN0b3J5OiAoKSA9PiBpbmplY3QoQ1VJX05BVklHQVRPUikudXNlckFnZW50LFxufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay90eXBlcy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEN1aUNvbnRleHQ8VD4ge1xuICAkaW1wbGljaXQ6IFQ7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay90eXBlcy9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDdWlIYW5kbGVyPFQsIEc+ID0gKGl0ZW06IFQpID0+IEc7XG5leHBvcnQgdHlwZSBDdWlCb29sZWFuSGFuZGxlcjxUPiA9IEN1aUhhbmRsZXI8VCwgYm9vbGVhbj47XG5leHBvcnQgdHlwZSBDdWlTdHJpbmdIYW5kbGVyPFQ+ID0gQ3VpSGFuZGxlcjxULCBzdHJpbmc+O1xuZXhwb3J0IHR5cGUgQ3VpTnVtYmVySGFuZGxlcjxUPiA9IEN1aUhhbmRsZXI8VCwgbnVtYmVyPjtcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ export * from './context';
2
+ export * from './date-time';
3
+ export * from './handler';
4
+ export * from './input-type';
5
+ export * from './mapper';
6
+ export * from './matcher';
7
+ export * from './nullable';
8
+ export * from './value-of';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXRpbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi9udWxsYWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlLW9mJztcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ export function cuiIsInput(element) {
2
+ return element.matches('input');
3
+ }
4
+ export function cuiIsTextarea(element) {
5
+ return element.matches('textarea');
6
+ }
7
+ export function cuiIsTextfield(element) {
8
+ return cuiIsInput(element) || cuiIsTextarea(element);
9
+ }
10
+ export function cuiIsElement(node) {
11
+ return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;
12
+ }
13
+ export function cuiIsHTMLElement(node) {
14
+ const defaultView = node?.ownerDocument.defaultView;
15
+ return !!node && !!defaultView && node instanceof defaultView.HTMLElement;
16
+ }
17
+ export function cuiIsTextNode(node) {
18
+ return node.nodeType === Node.TEXT_NODE;
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1jaGVja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL2VsZW1lbnQtY2hlY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBZ0I7SUFDdkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWdCO0lBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsT0FBZ0I7SUFFaEIsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUN4QixJQUEwQztJQUUxQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFhO0lBQzFDLE1BQU0sV0FBVyxHQUFJLElBQTRCLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUU3RSxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLFlBQVksV0FBVyxDQUFDLFdBQVcsQ0FBQztBQUM5RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFVO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3VpSXNJbnB1dChlbGVtZW50OiBFbGVtZW50KTogZWxlbWVudCBpcyBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKCdpbnB1dCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VpSXNUZXh0YXJlYShlbGVtZW50OiBFbGVtZW50KTogZWxlbWVudCBpcyBIVE1MVGV4dEFyZWFFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKCd0ZXh0YXJlYScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VpSXNUZXh0ZmllbGQoXG4gICAgZWxlbWVudDogRWxlbWVudCxcbik6IGVsZW1lbnQgaXMgSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQge1xuICAgIHJldHVybiBjdWlJc0lucHV0KGVsZW1lbnQpIHx8IGN1aUlzVGV4dGFyZWEoZWxlbWVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWlJc0VsZW1lbnQoXG4gICAgbm9kZT86IEVsZW1lbnQgfCBFdmVudFRhcmdldCB8IE5vZGUgfCBudWxsLFxuKTogbm9kZSBpcyBFbGVtZW50IHtcbiAgICByZXR1cm4gISFub2RlICYmICdub2RlVHlwZScgaW4gbm9kZSAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1aUlzSFRNTEVsZW1lbnQobm9kZTogdW5rbm93bik6IG5vZGUgaXMgSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGRlZmF1bHRWaWV3ID0gKG5vZGUgYXMgRWxlbWVudCB8IHVuZGVmaW5lZCk/Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cbiAgICByZXR1cm4gISFub2RlICYmICEhZGVmYXVsdFZpZXcgJiYgbm9kZSBpbnN0YW5jZW9mIGRlZmF1bHRWaWV3LkhUTUxFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VpSXNUZXh0Tm9kZShub2RlOiBOb2RlKTogbm9kZSBpcyBUZXh0IHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREU7XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Gets actual target from open Shadow DOM if event happened within it
3
+ */
4
+ export function cuiGetActualTarget(event) {
5
+ return event.composedPath()[0];
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFjdHVhbC10YXJnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL2dldC1hY3R1YWwtdGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQVk7SUFDM0MsT0FBTyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFTLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2V0cyBhY3R1YWwgdGFyZ2V0IGZyb20gb3BlbiBTaGFkb3cgRE9NIGlmIGV2ZW50IGhhcHBlbmVkIHdpdGhpbiBpdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50OiBFdmVudCk6IE5vZGUge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKVswXSBhcyBOb2RlO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export function cuiGetDocumentOrShadowRoot(node) {
2
+ return 'getRootNode' in node && node.isConnected
3
+ ? node.getRootNode()
4
+ : node.ownerDocument;
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWRvY3VtZW50LW9yLXNoYWRvdy1yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL2RvbS9nZXQtZG9jdW1lbnQtb3Itc2hhZG93LXJvb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLDBCQUEwQixDQUFDLElBQVU7SUFDakQsT0FBTyxhQUFhLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXO1FBQzVDLENBQUMsQ0FBRSxJQUFJLENBQUMsV0FBVyxFQUFlO1FBQ2xDLENBQUMsQ0FBRSxJQUFJLENBQUMsYUFBc0MsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGN1aUdldERvY3VtZW50T3JTaGFkb3dSb290KG5vZGU6IE5vZGUpOiBEb2N1bWVudE9yU2hhZG93Um9vdCB7XG4gICAgcmV0dXJuICdnZXRSb290Tm9kZScgaW4gbm9kZSAmJiBub2RlLmlzQ29ubmVjdGVkXG4gICAgICAgID8gKG5vZGUuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudClcbiAgICAgICAgOiAobm9kZS5vd25lckRvY3VtZW50IGFzIERvY3VtZW50T3JTaGFkb3dSb290KTtcbn1cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { cuiClamp } from '../math';
2
+ import { cuiIsPresent } from '../miscellaneous';
3
+ import { cuiGetDocumentOrShadowRoot } from './get-document-or-shadow-root';
4
+ /**
5
+ * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible
6
+ *
7
+ * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered
8
+ * ```ts
9
+ * function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null
10
+ * ```
11
+ */
12
+ export function cuiGetElementObscures(element) {
13
+ const { ownerDocument } = element;
14
+ if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {
15
+ return null;
16
+ }
17
+ const { innerWidth, innerHeight } = ownerDocument.defaultView;
18
+ const doc = cuiGetDocumentOrShadowRoot(element);
19
+ const rect = element.getBoundingClientRect();
20
+ if (rect.width === 0 && rect.height === 0) {
21
+ return null;
22
+ }
23
+ const left = cuiClamp(Math.round(rect.left) + 2, 0, innerWidth);
24
+ const top = cuiClamp(Math.round(rect.top) + 2, 0, innerHeight);
25
+ const right = cuiClamp(Math.round(rect.right) - 2, 0, innerWidth);
26
+ const bottom = cuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);
27
+ const horizontalMiddle = cuiClamp(Math.round(rect.left + rect.width / 2), 0, innerWidth);
28
+ const verticalMiddle = cuiClamp(Math.round(rect.top + rect.height / 2), 0, innerHeight);
29
+ const elements = [
30
+ doc.elementFromPoint(horizontalMiddle, top),
31
+ doc.elementFromPoint(horizontalMiddle, bottom),
32
+ doc.elementFromPoint(left, verticalMiddle),
33
+ doc.elementFromPoint(right, verticalMiddle),
34
+ ];
35
+ const nonNull = elements.filter(cuiIsPresent);
36
+ if (!nonNull.length) {
37
+ return [];
38
+ }
39
+ const filtered = nonNull.filter((el) => !element.contains(el) && !el.contains(element));
40
+ return filtered.length === 4
41
+ ? filtered
42
+ : null;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVsZW1lbnQtb2JzY3VyZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL2RvbS9nZXQtZWxlbWVudC1vYnNjdXJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDakMsT0FBZ0I7SUFFaEIsTUFBTSxFQUFDLGFBQWEsRUFBQyxHQUFHLE9BQU8sQ0FBQztJQUVoQyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtRQUMvRCxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsTUFBTSxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUMsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzVELE1BQU0sR0FBRyxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRTdDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdkMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdEMsQ0FBQyxFQUNELFVBQVUsQ0FDYixDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDdEMsQ0FBQyxFQUNELFdBQVcsQ0FDZCxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUc7UUFDYixHQUFHLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDO1FBQzNDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7UUFDOUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7UUFDMUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUM7S0FDOUMsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDakIsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQzNCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUN6RCxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFFLFFBQWlEO1FBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdWlDbGFtcH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQge2N1aUlzUHJlc2VudH0gZnJvbSAnLi4vbWlzY2VsbGFuZW91cyc7XG5cbmltcG9ydCB7Y3VpR2V0RG9jdW1lbnRPclNoYWRvd1Jvb3R9IGZyb20gJy4vZ2V0LWRvY3VtZW50LW9yLXNoYWRvdy1yb290JztcblxuLyoqXG4gKiBSZXR1cm5zIGFycmF5IG9mIEVsZW1lbnRzIGNvdmVyaW5nIGVkZ2VzIG9mIGdpdmVuIGVsZW1lbnQgb3IgbnVsbCBpZiBhdCBsZWFzdCBvbmUgZWRnZSBtaWRkbGUgcG9pbnQgaXMgdmlzaWJsZVxuICpcbiAqIENBVVRJT046IEVtcHR5IGFycmF5IG1lYW5zIGVsZW1lbnQgaWYgb2Zmc2NyZWVuIGkuZS4gY292ZXJlZCBieSBubyBlbGVtZW50cywgcmF0aGVyIHRoYW4gbm90IGNvdmVyZWRcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiBjdWlHZXRFbGVtZW50T2JzY3VyZXMoZWxlbWVudDogRWxlbWVudCk6IHJlYWRvbmx5IFtFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50XSB8IFtdIHwgbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdWlHZXRFbGVtZW50T2JzY3VyZXMoXG4gICAgZWxlbWVudDogRWxlbWVudCxcbik6IHJlYWRvbmx5IFtFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50XSB8IFtdIHwgbnVsbCB7XG4gICAgY29uc3Qge293bmVyRG9jdW1lbnR9ID0gZWxlbWVudDtcblxuICAgIGlmICghb3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcgfHwgIWVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHtpbm5lcldpZHRoLCBpbm5lckhlaWdodH0gPSBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGNvbnN0IGRvYyA9IGN1aUdldERvY3VtZW50T3JTaGFkb3dSb290KGVsZW1lbnQpO1xuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHJlY3Qud2lkdGggPT09IDAgJiYgcmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbGVmdCA9IGN1aUNsYW1wKE1hdGgucm91bmQocmVjdC5sZWZ0KSArIDIsIDAsIGlubmVyV2lkdGgpO1xuICAgIGNvbnN0IHRvcCA9IGN1aUNsYW1wKE1hdGgucm91bmQocmVjdC50b3ApICsgMiwgMCwgaW5uZXJIZWlnaHQpO1xuICAgIGNvbnN0IHJpZ2h0ID0gY3VpQ2xhbXAoTWF0aC5yb3VuZChyZWN0LnJpZ2h0KSAtIDIsIDAsIGlubmVyV2lkdGgpO1xuICAgIGNvbnN0IGJvdHRvbSA9IGN1aUNsYW1wKE1hdGgucm91bmQocmVjdC5ib3R0b20pIC0gMiwgMCwgaW5uZXJIZWlnaHQpO1xuICAgIGNvbnN0IGhvcml6b250YWxNaWRkbGUgPSBjdWlDbGFtcChcbiAgICAgICAgTWF0aC5yb3VuZChyZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMiksXG4gICAgICAgIDAsXG4gICAgICAgIGlubmVyV2lkdGgsXG4gICAgKTtcbiAgICBjb25zdCB2ZXJ0aWNhbE1pZGRsZSA9IGN1aUNsYW1wKFxuICAgICAgICBNYXRoLnJvdW5kKHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyKSxcbiAgICAgICAgMCxcbiAgICAgICAgaW5uZXJIZWlnaHQsXG4gICAgKTtcbiAgICBjb25zdCBlbGVtZW50cyA9IFtcbiAgICAgICAgZG9jLmVsZW1lbnRGcm9tUG9pbnQoaG9yaXpvbnRhbE1pZGRsZSwgdG9wKSxcbiAgICAgICAgZG9jLmVsZW1lbnRGcm9tUG9pbnQoaG9yaXpvbnRhbE1pZGRsZSwgYm90dG9tKSxcbiAgICAgICAgZG9jLmVsZW1lbnRGcm9tUG9pbnQobGVmdCwgdmVydGljYWxNaWRkbGUpLFxuICAgICAgICBkb2MuZWxlbWVudEZyb21Qb2ludChyaWdodCwgdmVydGljYWxNaWRkbGUpLFxuICAgIF07XG4gICAgY29uc3Qgbm9uTnVsbCA9IGVsZW1lbnRzLmZpbHRlcihjdWlJc1ByZXNlbnQpO1xuXG4gICAgaWYgKCFub25OdWxsLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWQgPSBub25OdWxsLmZpbHRlcihcbiAgICAgICAgKGVsKSA9PiAhZWxlbWVudC5jb250YWlucyhlbCkgJiYgIWVsLmNvbnRhaW5zKGVsZW1lbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gZmlsdGVyZWQubGVuZ3RoID09PSA0XG4gICAgICAgID8gKGZpbHRlcmVkIGFzIFtFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50LCBFbGVtZW50XSlcbiAgICAgICAgOiBudWxsO1xufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './contains-or-after';
2
+ export * from './element-checks';
3
+ export * from './get-actual-target';
4
+ export * from './get-document-or-shadow-root';
5
+ export * from './get-element-obscurers';
6
+ export * from './inject-element';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250YWlucy1vci1hZnRlcic7XG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnQtY2hlY2tzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWFjdHVhbC10YXJnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZG9jdW1lbnQtb3Itc2hhZG93LXJvb3QnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZWxlbWVudC1vYnNjdXJlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmplY3QtZWxlbWVudCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { ElementRef, inject } from '@angular/core';
2
+ export function cuiInjectElement() {
3
+ return inject(ElementRef).nativeElement;
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL2luamVjdC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE1BQU0sVUFBVSxnQkFBZ0I7SUFDNUIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWlJbmplY3RFbGVtZW50PFQgPSBIVE1MRWxlbWVudD4oKTogVCB7XG4gICAgcmV0dXJuIGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './dom';
2
+ export * from './focus';
3
+ export * from './math';
4
+ export * from './miscellaneous';
5
+ export * from './platform';
6
+ export * from './token';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRoJztcbmV4cG9ydCAqIGZyb20gJy4vbWlzY2VsbGFuZW91cyc7XG5leHBvcnQgKiBmcm9tICcuL3BsYXRmb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4nO1xuIl19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Clamps a value between two inclusive limits
3
+ *
4
+ * @param value
5
+ * @param min lower limit
6
+ * @param max upper limit
7
+ */
8
+ export function cuiClamp(value, min, max) {
9
+ return Math.min(max, Math.max(min, value));
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWF0aC9jbGFtcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUM5RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhbXBzIGEgdmFsdWUgYmV0d2VlbiB0d28gaW5jbHVzaXZlIGxpbWl0c1xuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIG1pbiBsb3dlciBsaW1pdFxuICogQHBhcmFtIG1heCB1cHBlciBsaW1pdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VpQ2xhbXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCB2YWx1ZSkpO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './clamp';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWF0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2xhbXAnOyJdfQ==
@@ -0,0 +1,4 @@
1
+ export function cuiArrayRemove(array, index) {
2
+ return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktcmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvYXJyYXktcmVtb3ZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxjQUFjLENBQUksS0FBbUIsRUFBRSxLQUFhO0lBQ2hFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3VpQXJyYXlSZW1vdmU8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSwgaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gICAgcmV0dXJuIGFycmF5LnNsaWNlKDAsIE1hdGgubWF4KGluZGV4LCAwKSkuY29uY2F0KGFycmF5LnNsaWNlKE1hdGgubWF4KGluZGV4ICsgMSwgMCkpKTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './array-remove';
2
+ export * from './is-present';
3
+ export * from './pure';
4
+ export * from './px';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcnJheS1yZW1vdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1wcmVzZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL3B4JztcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export function cuiIsPresent(value) {
2
+ return value !== null && value !== undefined;
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtcHJlc2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9taXNjZWxsYW5lb3VzL2lzLXByZXNlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBSSxLQUFnQjtJQUM1QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGN1aUlzUHJlc2VudDxUPih2YWx1ZT86IFQgfCBudWxsKTogdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,81 @@
1
+ function decorateMethod(originalMethod) {
2
+ let previousArgs = [];
3
+ let originalFnWasCalledLeastAtOnce = false;
4
+ let pureValue;
5
+ return function cuiPureMethodPatched(...args) {
6
+ const isPure = originalFnWasCalledLeastAtOnce &&
7
+ previousArgs.length === args.length &&
8
+ args.every((arg, index) => arg === previousArgs[index]);
9
+ if (isPure) {
10
+ return pureValue;
11
+ }
12
+ previousArgs = args;
13
+ pureValue = originalMethod.apply(this, args);
14
+ originalFnWasCalledLeastAtOnce = true;
15
+ return pureValue;
16
+ };
17
+ }
18
+ function decorateGetter(originalGetter, propertyKey, enumerable = true) {
19
+ return function cuiPureGetterPatched() {
20
+ const value = originalGetter.call(this);
21
+ Object.defineProperty(this, propertyKey, { enumerable, value });
22
+ return value;
23
+ };
24
+ }
25
+ export function cuiPure(target, propertyKeyOrContext, descriptor) {
26
+ if (typeof target === 'function') {
27
+ const context = propertyKeyOrContext;
28
+ if (context.kind === 'getter') {
29
+ return decorateGetter(target, context.name);
30
+ }
31
+ if (context.kind === 'method') {
32
+ return decorateMethod(target);
33
+ }
34
+ throw new CuiPureException();
35
+ }
36
+ const { get, enumerable, value } = descriptor;
37
+ const propertyKey = propertyKeyOrContext;
38
+ if (get) {
39
+ return {
40
+ configurable: true,
41
+ enumerable,
42
+ get: decorateGetter(get, propertyKey, enumerable),
43
+ };
44
+ }
45
+ if (typeof value !== 'function') {
46
+ throw new CuiPureException();
47
+ }
48
+ const original = value;
49
+ return {
50
+ configurable: true,
51
+ enumerable,
52
+ get() {
53
+ let previousArgs = [];
54
+ let originalFnWasCalledLeastAtOnce = false;
55
+ let pureValue;
56
+ const patched = (...args) => {
57
+ const isPure = originalFnWasCalledLeastAtOnce &&
58
+ previousArgs.length === args.length &&
59
+ args.every((arg, index) => arg === previousArgs[index]);
60
+ if (isPure) {
61
+ return pureValue;
62
+ }
63
+ previousArgs = args;
64
+ pureValue = original.apply(this, args);
65
+ originalFnWasCalledLeastAtOnce = true;
66
+ return pureValue;
67
+ };
68
+ Object.defineProperty(this, propertyKey, {
69
+ configurable: true,
70
+ value: patched,
71
+ });
72
+ return patched;
73
+ },
74
+ };
75
+ }
76
+ export class CuiPureException extends Error {
77
+ constructor() {
78
+ super('cuiPure can only be used with functions or getters');
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9taXNjZWxsYW5lb3VzL3B1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxjQUFjLENBQ3JCLGNBQStDO0lBRS9DLElBQUksWUFBWSxHQUF1QixFQUFFLENBQUM7SUFDMUMsSUFBSSw4QkFBOEIsR0FBRyxLQUFLLENBQUM7SUFDM0MsSUFBSSxTQUFrQixDQUFDO0lBRXZCLE9BQU8sU0FBUyxvQkFBb0IsQ0FBZSxHQUFHLElBQWU7UUFDbkUsTUFBTSxNQUFNLEdBQ1YsOEJBQThCO1lBQzlCLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU07WUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixTQUFTLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsOEJBQThCLEdBQUcsSUFBSSxDQUFDO1FBRXRDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsY0FBNkIsRUFDN0IsV0FBNEIsRUFDNUIsVUFBVSxHQUFHLElBQUk7SUFFakIsT0FBTyxTQUFTLG9CQUFvQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBRTlELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQTZCRCxNQUFNLFVBQVUsT0FBTyxDQUNyQixNQUFrRCxFQUNsRCxvQkFFVSxFQUNWLFVBQXFFO0lBRXJFLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLG9CQUNYLENBQUM7UUFFTixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzdCLE9BQU8sY0FBYyxDQUFDLE1BQXVCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlEO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLGNBQWMsQ0FBQyxNQUF5QyxDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztLQUM5QjtJQUVELE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxHQUFHLFVBQVcsQ0FBQztJQUM3QyxNQUFNLFdBQVcsR0FBRyxvQkFBOEIsQ0FBQztJQUVuRCxJQUFJLEdBQUcsRUFBRTtRQUNQLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVO1lBQ1YsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztTQUNsRCxDQUFDO0tBQ0g7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUMvQixNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztLQUM5QjtJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV2QixPQUFPO1FBQ0wsWUFBWSxFQUFFLElBQUk7UUFDbEIsVUFBVTtRQUNWLEdBQUc7WUFDRCxJQUFJLFlBQVksR0FBdUIsRUFBRSxDQUFDO1lBQzFDLElBQUksOEJBQThCLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksU0FBa0IsQ0FBQztZQUV2QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBZSxFQUFXLEVBQUU7Z0JBQzlDLE1BQU0sTUFBTSxHQUNWLDhCQUE4QjtvQkFDOUIsWUFBWSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTTtvQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFMUQsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2dCQUVELFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO2dCQUV0QyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3ZDLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsT0FBTzthQUNmLENBQUMsQ0FBQztZQUVILE9BQU8sT0FBa0IsQ0FBQztRQUM1QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsS0FBSztJQUN6QztRQUNFLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGRlY29yYXRlTWV0aG9kKFxuICBvcmlnaW5hbE1ldGhvZDogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bixcbik6ICh0aGlzOiBvYmplY3QsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93biB7XG4gIGxldCBwcmV2aW91c0FyZ3M6IHJlYWRvbmx5IHVua25vd25bXSA9IFtdO1xuICBsZXQgb3JpZ2luYWxGbldhc0NhbGxlZExlYXN0QXRPbmNlID0gZmFsc2U7XG4gIGxldCBwdXJlVmFsdWU6IHVua25vd247XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGN1aVB1cmVNZXRob2RQYXRjaGVkKHRoaXM6IG9iamVjdCwgLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgY29uc3QgaXNQdXJlID1cbiAgICAgIG9yaWdpbmFsRm5XYXNDYWxsZWRMZWFzdEF0T25jZSAmJlxuICAgICAgcHJldmlvdXNBcmdzLmxlbmd0aCA9PT0gYXJncy5sZW5ndGggJiZcbiAgICAgIGFyZ3MuZXZlcnkoKGFyZywgaW5kZXgpID0+IGFyZyA9PT0gcHJldmlvdXNBcmdzW2luZGV4XSk7XG5cbiAgICBpZiAoaXNQdXJlKSB7XG4gICAgICByZXR1cm4gcHVyZVZhbHVlO1xuICAgIH1cblxuICAgIHByZXZpb3VzQXJncyA9IGFyZ3M7XG4gICAgcHVyZVZhbHVlID0gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgb3JpZ2luYWxGbldhc0NhbGxlZExlYXN0QXRPbmNlID0gdHJ1ZTtcblxuICAgIHJldHVybiBwdXJlVmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlR2V0dGVyKFxuICBvcmlnaW5hbEdldHRlcjogKCkgPT4gdW5rbm93bixcbiAgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCxcbiAgZW51bWVyYWJsZSA9IHRydWUsXG4pOiAodGhpczogb2JqZWN0KSA9PiB1bmtub3duIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGN1aVB1cmVHZXR0ZXJQYXRjaGVkKHRoaXM6IG9iamVjdCk6IHVua25vd24ge1xuICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxHZXR0ZXIuY2FsbCh0aGlzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge2VudW1lcmFibGUsIHZhbHVlfSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBsYXp5IGluaXRpYWxpemF0aW9uIGZvciBnZXR0ZXIgb3IgbWVtb2l6YXRpb24gb2YgYSBmdW5jdGlvbiBjYWxsIHNpbWlsYXIgdG8gcHVyZSB7QGxpbms6IFBpcGV9LlxuICogUmVwbGFjZXMgZ2V0dGVyIHdpdGggaXRzIGNhbGN1bGF0ZWQgdmFsdWUgdXBvbiBmaXJzdCBjYWxsIG9yIGtlZXBzIHRyYWNrIG9mIGxhc3QgY2FsbCBhcmd1bWVudHMgYW5kIHJldHVybmVkXG4gKiB2YWx1ZSBmb3IgZnVuY3Rpb24sIHNraXBwaW5nIGNhbGN1bGF0aW9uIHdoZW4gYXJndW1lbnRzIGFyZSBzdHJpY3RseSB0aGUgc2FtZS5cbiAqXG4gKiBAdGhyb3dzIGVycm9yIGlmIHVzZWQgbm90IG9uIGdldHRlciBvciBmdW5jdGlvblxuICpcbiAqIENBVVRJT046IHRoZXkgbXVzdCBiZSBwdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VpUHVyZTxUPihcbiAgdGFyZ2V0OiBvYmplY3QsXG4gIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gIHtnZXQsIGVudW1lcmFibGUsIHZhbHVlfTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4sXG4pOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPjtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIGxhenkgaW5pdGlhbGl6YXRpb24gZm9yIGdldHRlciBvciBtZW1vaXphdGlvbiBvZiBhIGZ1bmN0aW9uIGNhbGwgc2ltaWxhciB0byBwdXJlIHtAbGluazogUGlwZX0uXG4gKiBSZXBsYWNlcyBnZXR0ZXIgd2l0aCBpdHMgY2FsY3VsYXRlZCB2YWx1ZSB1cG9uIGZpcnN0IGNhbGwgb3Iga2VlcHMgdHJhY2sgb2YgbGFzdCBjYWxsIGFyZ3VtZW50cyBhbmQgcmV0dXJuZWRcbiAqIHZhbHVlIGZvciBmdW5jdGlvbiwgc2tpcHBpbmcgY2FsY3VsYXRpb24gd2hlbiBhcmd1bWVudHMgYXJlIHN0cmljdGx5IHRoZSBzYW1lLlxuICpcbiAqIENBVVRJT046IHRoZXkgbXVzdCBiZSBwdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VpUHVyZTxBIGV4dGVuZHMgdW5rbm93bltdLCBSPihcbiAgdGFyZ2V0OiAoLi4uYXJnczogQSkgPT4gUixcbiAgY29udGV4dDogYW55XG4pOiAoLi4uYXJnczogQSkgPT4gUjtcblxuZXhwb3J0IGZ1bmN0aW9uIGN1aVB1cmUoXG4gIHRhcmdldDogb2JqZWN0IHwgKCguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24pLFxuICBwcm9wZXJ0eUtleU9yQ29udGV4dDpcbiAgICBhbnlcbiAgICB8IHN0cmluZyxcbiAgZGVzY3JpcHRvcj86IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPCguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24+LFxuKTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8dW5rbm93bj4gfCAoKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bikge1xuICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBwcm9wZXJ0eUtleU9yQ29udGV4dCBhc1xuICAgICAgYW55O1xuXG4gICAgaWYgKGNvbnRleHQua2luZCA9PT0gJ2dldHRlcicpIHtcbiAgICAgIHJldHVybiBkZWNvcmF0ZUdldHRlcih0YXJnZXQgYXMgKCkgPT4gdW5rbm93biwgY29udGV4dC5uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5raW5kID09PSAnbWV0aG9kJykge1xuICAgICAgcmV0dXJuIGRlY29yYXRlTWV0aG9kKHRhcmdldCBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQ3VpUHVyZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgY29uc3Qge2dldCwgZW51bWVyYWJsZSwgdmFsdWV9ID0gZGVzY3JpcHRvciE7XG4gIGNvbnN0IHByb3BlcnR5S2V5ID0gcHJvcGVydHlLZXlPckNvbnRleHQgYXMgc3RyaW5nO1xuXG4gIGlmIChnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZSxcbiAgICAgIGdldDogZGVjb3JhdGVHZXR0ZXIoZ2V0LCBwcm9wZXJ0eUtleSwgZW51bWVyYWJsZSksXG4gICAgfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgQ3VpUHVyZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWwgPSB2YWx1ZTtcblxuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlLFxuICAgIGdldCgpOiB1bmtub3duIHtcbiAgICAgIGxldCBwcmV2aW91c0FyZ3M6IHJlYWRvbmx5IHVua25vd25bXSA9IFtdO1xuICAgICAgbGV0IG9yaWdpbmFsRm5XYXNDYWxsZWRMZWFzdEF0T25jZSA9IGZhbHNlO1xuICAgICAgbGV0IHB1cmVWYWx1ZTogdW5rbm93bjtcblxuICAgICAgY29uc3QgcGF0Y2hlZCA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcbiAgICAgICAgY29uc3QgaXNQdXJlID1cbiAgICAgICAgICBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgJiZcbiAgICAgICAgICBwcmV2aW91c0FyZ3MubGVuZ3RoID09PSBhcmdzLmxlbmd0aCAmJlxuICAgICAgICAgIGFyZ3MuZXZlcnkoKGFyZywgaW5kZXgpID0+IGFyZyA9PT0gcHJldmlvdXNBcmdzW2luZGV4XSk7XG5cbiAgICAgICAgaWYgKGlzUHVyZSkge1xuICAgICAgICAgIHJldHVybiBwdXJlVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c0FyZ3MgPSBhcmdzO1xuICAgICAgICBwdXJlVmFsdWUgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgb3JpZ2luYWxGbldhc0NhbGxlZExlYXN0QXRPbmNlID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gcHVyZVZhbHVlO1xuICAgICAgfTtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHBhdGNoZWQsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHBhdGNoZWQgYXMgdW5rbm93bjtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQ3VpUHVyZUV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2N1aVB1cmUgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGZ1bmN0aW9ucyBvciBnZXR0ZXJzJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Adds 'px' to the number and turns it into a string
3
+ */
4
+ export function cuiPx(value) {
5
+ return `${value}px`;
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cy9weC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBYTtJQUNqQyxPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRkcyAncHgnIHRvIHRoZSBudW1iZXIgYW5kIHR1cm5zIGl0IGludG8gYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1aVB4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dmFsdWV9cHhgO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './is-ios';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvcGxhdGZvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lzLWlvcyc7Il19
@@ -0,0 +1,6 @@
1
+ export const CUI_SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;
2
+ export const CUI_IOS_REG_EXP = /ipad|iphone|ipod/i;
3
+ export function cuiIsIos({ userAgent, maxTouchPoints }) {
4
+ return CUI_SAFARI_REG_EXP.test(userAgent) || (CUI_IOS_REG_EXP.test(userAgent) && maxTouchPoints > 1);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL3BsYXRmb3JtL2lzLWlvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUM7QUFFbkQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFDLFNBQVMsRUFBRSxjQUFjLEVBQVk7SUFDN0QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENVSV9TQUZBUklfUkVHX0VYUCA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pO1xuZXhwb3J0IGNvbnN0IENVSV9JT1NfUkVHX0VYUCA9IC9pcGFkfGlwaG9uZXxpcG9kL2k7XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWlJc0lvcyh7dXNlckFnZW50LCBtYXhUb3VjaFBvaW50c306IE5hdmlnYXRvcik6IGJvb2xlYW4ge1xuICByZXR1cm4gQ1VJX1NBRkFSSV9SRUdfRVhQLnRlc3QodXNlckFnZW50KSB8fCAoQ1VJX0lPU19SRUdfRVhQLnRlc3QodXNlckFnZW50KSAmJiBtYXhUb3VjaFBvaW50cyA+IDEpO1xufVxuIl19