@ethlete/core 0.2.0-next.2 → 0.2.0-next.20

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 (146) hide show
  1. package/esm2020/lib/components/public-api.mjs +2 -0
  2. package/esm2020/lib/components/structured-data/public-api.mjs +2 -0
  3. package/esm2020/lib/components/structured-data/structured-data.component.mjs +37 -0
  4. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +37 -0
  5. package/esm2020/lib/directives/click-outside/public-api.mjs +2 -0
  6. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.mjs +3 -0
  7. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +147 -0
  8. package/esm2020/lib/directives/cursor-drag-scroll/public-api.mjs +2 -0
  9. package/esm2020/lib/directives/let/let.directive.mjs +8 -8
  10. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +11 -11
  11. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +11 -12
  12. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.constants.mjs +3 -0
  13. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +171 -0
  14. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.types.mjs +2 -0
  15. package/esm2020/lib/directives/observe-scroll-state/public-api.mjs +3 -0
  16. package/esm2020/lib/directives/public-api.mjs +10 -3
  17. package/esm2020/lib/directives/repeat/repeat.directive.mjs +10 -11
  18. package/esm2020/lib/directives/scroll-observer-first-element/index.mjs +2 -0
  19. package/esm2020/lib/directives/scroll-observer-first-element/public-api.mjs +2 -0
  20. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +31 -0
  21. package/esm2020/lib/directives/scroll-observer-ignore-target/index.mjs +2 -0
  22. package/esm2020/lib/directives/scroll-observer-ignore-target/public-api.mjs +2 -0
  23. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +18 -0
  24. package/esm2020/lib/directives/scroll-observer-last-element/index.mjs +2 -0
  25. package/esm2020/lib/directives/scroll-observer-last-element/public-api.mjs +2 -0
  26. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +34 -0
  27. package/esm2020/lib/directives/seo/public-api.mjs +5 -0
  28. package/esm2020/lib/directives/seo/seo.directive.constants.mjs +3 -0
  29. package/esm2020/lib/directives/seo/seo.directive.mjs +166 -0
  30. package/esm2020/lib/directives/seo/seo.directive.types.mjs +2 -0
  31. package/esm2020/lib/directives/seo/seo.directive.utils.mjs +7 -0
  32. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +15 -0
  33. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.types.mjs +2 -0
  34. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.mjs +34 -0
  35. package/esm2020/lib/pipes/normalize-game-result-type/public-api.mjs +4 -0
  36. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +15 -0
  37. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.types.mjs +2 -0
  38. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.util.mjs +47 -0
  39. package/esm2020/lib/pipes/normalize-match-participants/public-api.mjs +4 -0
  40. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +15 -0
  41. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.types.mjs +2 -0
  42. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.util.mjs +126 -0
  43. package/esm2020/lib/pipes/normalize-match-score/public-api.mjs +4 -0
  44. package/esm2020/lib/pipes/normalize-match-state/index.mjs +2 -0
  45. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.constants.mjs +2 -0
  46. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +15 -0
  47. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.util.mjs +19 -0
  48. package/esm2020/lib/pipes/normalize-match-state/public-api.mjs +4 -0
  49. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +15 -0
  50. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.util.mjs +38 -0
  51. package/esm2020/lib/pipes/normalize-match-type/public-api.mjs +3 -0
  52. package/esm2020/lib/pipes/public-api.mjs +6 -1
  53. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  54. package/esm2020/lib/public-api.mjs +2 -1
  55. package/esm2020/lib/services/click-observer.service.mjs +73 -0
  56. package/esm2020/lib/services/content-observer.service.mjs +6 -6
  57. package/esm2020/lib/services/destroy.service.mjs +19 -0
  58. package/esm2020/lib/services/focus-visible.service.mjs +7 -7
  59. package/esm2020/lib/services/public-api.mjs +7 -4
  60. package/esm2020/lib/services/resize-observer.service.mjs +6 -6
  61. package/esm2020/lib/services/router-state.service.mjs +81 -0
  62. package/esm2020/lib/services/viewport.service.mjs +16 -16
  63. package/esm2020/lib/types/angular.types.mjs +36 -2
  64. package/esm2020/lib/types/i18n.types.mjs +2 -0
  65. package/esm2020/lib/types/public-api.mjs +3 -2
  66. package/esm2020/lib/utils/clone.util.mjs +78 -0
  67. package/esm2020/lib/utils/cookie.util.mjs +48 -0
  68. package/esm2020/lib/utils/equal.util.mjs +118 -0
  69. package/esm2020/lib/utils/index.mjs +2 -0
  70. package/esm2020/lib/utils/public-api.mjs +7 -2
  71. package/esm2020/lib/utils/reactive-binding.util.mjs +111 -0
  72. package/esm2020/lib/utils/scrollable.utils.mjs +5 -0
  73. package/fesm2015/ethlete-core.mjs +1788 -289
  74. package/fesm2015/ethlete-core.mjs.map +1 -1
  75. package/fesm2020/ethlete-core.mjs +1784 -288
  76. package/fesm2020/ethlete-core.mjs.map +1 -1
  77. package/lib/components/public-api.d.ts +1 -0
  78. package/lib/components/structured-data/public-api.d.ts +1 -0
  79. package/lib/components/structured-data/structured-data.component.d.ts +11 -0
  80. package/lib/directives/click-outside/click-outside.directive.d.ts +12 -0
  81. package/lib/directives/click-outside/public-api.d.ts +1 -0
  82. package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.d.ts +2 -0
  83. package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.d.ts +27 -0
  84. package/lib/directives/cursor-drag-scroll/public-api.d.ts +1 -0
  85. package/lib/directives/let/let.directive.d.ts +1 -1
  86. package/lib/directives/observe-content/observe-content.directive.d.ts +2 -4
  87. package/lib/directives/observe-resize/observe-resize.directive.d.ts +3 -5
  88. package/lib/directives/observe-scroll-state/observe-scroll-state.constants.d.ts +3 -0
  89. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +31 -0
  90. package/lib/directives/observe-scroll-state/observe-scroll-state.types.d.ts +6 -0
  91. package/lib/directives/observe-scroll-state/public-api.d.ts +3 -0
  92. package/lib/directives/public-api.d.ts +9 -2
  93. package/lib/directives/repeat/repeat.directive.d.ts +3 -4
  94. package/lib/directives/scroll-observer-first-element/index.d.ts +1 -0
  95. package/lib/directives/scroll-observer-first-element/public-api.d.ts +1 -0
  96. package/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.d.ts +10 -0
  97. package/lib/directives/scroll-observer-ignore-target/index.d.ts +1 -0
  98. package/lib/directives/scroll-observer-ignore-target/public-api.d.ts +1 -0
  99. package/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.d.ts +6 -0
  100. package/lib/directives/scroll-observer-last-element/index.d.ts +1 -0
  101. package/lib/directives/scroll-observer-last-element/public-api.d.ts +1 -0
  102. package/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.d.ts +10 -0
  103. package/lib/directives/seo/public-api.d.ts +4 -0
  104. package/lib/directives/seo/seo.directive.constants.d.ts +3 -0
  105. package/lib/directives/seo/seo.directive.d.ts +21 -0
  106. package/lib/directives/seo/seo.directive.types.d.ts +51 -0
  107. package/lib/directives/seo/seo.directive.utils.d.ts +2 -0
  108. package/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.d.ts +7 -0
  109. package/lib/pipes/normalize-game-result-type/normalize-game-result-type.types.d.ts +4 -0
  110. package/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.d.ts +2 -0
  111. package/lib/pipes/normalize-game-result-type/public-api.d.ts +3 -0
  112. package/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.d.ts +7 -0
  113. package/lib/pipes/normalize-match-participants/normalize-match-participants.types.d.ts +21 -0
  114. package/lib/pipes/normalize-match-participants/normalize-match-participants.util.d.ts +4 -0
  115. package/lib/pipes/normalize-match-participants/public-api.d.ts +3 -0
  116. package/lib/pipes/normalize-match-score/normalize-match-score.pipe.d.ts +7 -0
  117. package/lib/pipes/normalize-match-score/normalize-match-score.types.d.ts +12 -0
  118. package/lib/pipes/normalize-match-score/normalize-match-score.util.d.ts +27 -0
  119. package/lib/pipes/normalize-match-score/public-api.d.ts +3 -0
  120. package/lib/pipes/normalize-match-state/index.d.ts +1 -0
  121. package/lib/pipes/normalize-match-state/normalize-match-state.constants.d.ts +7 -0
  122. package/lib/pipes/normalize-match-state/normalize-match-state.pipe.d.ts +7 -0
  123. package/lib/pipes/normalize-match-state/normalize-match-state.util.d.ts +3 -0
  124. package/lib/pipes/normalize-match-state/public-api.d.ts +3 -0
  125. package/lib/pipes/normalize-match-type/normalize-match-type.pipe.d.ts +7 -0
  126. package/lib/pipes/normalize-match-type/normalize-match-type.util.d.ts +3 -0
  127. package/lib/pipes/normalize-match-type/public-api.d.ts +2 -0
  128. package/lib/pipes/public-api.d.ts +5 -0
  129. package/lib/public-api.d.ts +1 -0
  130. package/lib/services/click-observer.service.d.ts +21 -0
  131. package/lib/services/destroy.service.d.ts +9 -0
  132. package/lib/services/public-api.d.ts +6 -3
  133. package/lib/services/router-state.service.d.ts +34 -0
  134. package/lib/services/viewport.types.d.ts +1 -1
  135. package/lib/types/angular.types.d.ts +14 -1
  136. package/lib/types/i18n.types.d.ts +4 -0
  137. package/lib/types/public-api.d.ts +2 -1
  138. package/lib/types/viewport.types.d.ts +2 -2
  139. package/lib/utils/clone.util.d.ts +15 -0
  140. package/lib/utils/cookie.util.d.ts +5 -0
  141. package/lib/utils/equal.util.d.ts +27 -0
  142. package/lib/utils/index.d.ts +1 -0
  143. package/lib/utils/public-api.d.ts +6 -1
  144. package/lib/utils/reactive-binding.util.d.ts +19 -0
  145. package/lib/utils/scrollable.utils.d.ts +1 -0
  146. package/package.json +9 -5
@@ -0,0 +1,118 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable no-var */
3
+ /**
4
+ * Stolen from dequal to avoid adding a dependency
5
+ * https://github.com/lukeed/dequal
6
+ *
7
+ * The MIT License (MIT)
8
+ *
9
+ * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
10
+ *
11
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ * of this software and associated documentation files (the "Software"), to deal
13
+ * in the Software without restriction, including without limitation the rights
14
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ * copies of the Software, and to permit persons to whom the Software is
16
+ * furnished to do so, subject to the following conditions:
17
+ *
18
+ * The above copyright notice and this permission notice shall be included in
19
+ * all copies or substantial portions of the Software.
20
+ *
21
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27
+ * THE SOFTWARE.
28
+ */
29
+ const has = Object.prototype.hasOwnProperty;
30
+ function find(iter, tar, key) {
31
+ for (key of iter.keys()) {
32
+ if (equal(key, tar))
33
+ return key;
34
+ }
35
+ }
36
+ export const equal = (foo, bar) => {
37
+ var ctor, len, tmp;
38
+ if (foo === bar)
39
+ return true;
40
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
41
+ if (ctor === Date)
42
+ return foo.getTime() === bar.getTime();
43
+ if (ctor === RegExp)
44
+ return foo.toString() === bar.toString();
45
+ if (ctor === Array) {
46
+ if ((len = foo.length) === bar.length) {
47
+ while (len-- && equal(foo[len], bar[len]))
48
+ ;
49
+ }
50
+ return len === -1;
51
+ }
52
+ if (ctor === Set) {
53
+ if (foo.size !== bar.size) {
54
+ return false;
55
+ }
56
+ for (len of foo) {
57
+ tmp = len;
58
+ if (tmp && typeof tmp === 'object') {
59
+ tmp = find(bar, tmp);
60
+ if (!tmp)
61
+ return false;
62
+ }
63
+ if (!bar.has(tmp))
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ if (ctor === Map) {
69
+ if (foo.size !== bar.size) {
70
+ return false;
71
+ }
72
+ for (len of foo) {
73
+ tmp = len[0];
74
+ if (tmp && typeof tmp === 'object') {
75
+ tmp = find(bar, tmp);
76
+ if (!tmp)
77
+ return false;
78
+ }
79
+ if (!equal(len[1], bar.get(tmp))) {
80
+ return false;
81
+ }
82
+ }
83
+ return true;
84
+ }
85
+ if (ctor === ArrayBuffer) {
86
+ foo = new Uint8Array(foo);
87
+ bar = new Uint8Array(bar);
88
+ }
89
+ else if (ctor === DataView) {
90
+ if ((len = foo.byteLength) === bar.byteLength) {
91
+ while (len-- && foo.getInt8(len) === bar.getInt8(len))
92
+ ;
93
+ }
94
+ return len === -1;
95
+ }
96
+ if (ArrayBuffer.isView(foo)) {
97
+ if ((len = foo.byteLength) === bar.byteLength) {
98
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
99
+ //@ts-ignore
100
+ while (len-- && foo[len] === bar[len])
101
+ ;
102
+ }
103
+ return len === -1;
104
+ }
105
+ if (!ctor || typeof foo === 'object') {
106
+ len = 0;
107
+ for (ctor in foo) {
108
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))
109
+ return false;
110
+ if (!(ctor in bar) || !equal(foo[ctor], bar[ctor]))
111
+ return false;
112
+ }
113
+ return Object.keys(bar).length === len;
114
+ }
115
+ }
116
+ return foo !== foo && bar !== bar;
117
+ };
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YWwudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2VxdWFsLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELDJCQUEyQjtBQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUVILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBRTVDLFNBQVMsSUFBSSxDQUFDLElBQVMsRUFBRSxHQUFRLEVBQUUsR0FBUztJQUMxQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsRUFBRTtJQUMxQyxJQUFJLElBQVMsRUFBRSxHQUFRLEVBQUUsR0FBUSxDQUFDO0lBQ2xDLElBQUksR0FBRyxLQUFLLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU3QixJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFDOUQsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxRCxJQUFJLElBQUksS0FBSyxNQUFNO1lBQUUsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTlELElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FB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QUFLLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ2hCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUFFLE9BQU8sS0FBSyxDQUFDO2FBQ2xFO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7U0FDeEM7S0FDRjtJQUVELE9BQU8sR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xuLyoqXG4gKiBTdG9sZW4gZnJvbSBkZXF1YWwgdG8gYXZvaWQgYWRkaW5nIGEgZGVwZW5kZW5jeVxuICogaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9kZXF1YWxcbiAqXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbmNvbnN0IGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGZpbmQoaXRlcjogYW55LCB0YXI6IGFueSwga2V5PzogYW55KSB7XG4gIGZvciAoa2V5IG9mIGl0ZXIua2V5cygpKSB7XG4gICAgaWYgKGVxdWFsKGtleSwgdGFyKSkgcmV0dXJuIGtleTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZXF1YWwgPSAoZm9vOiBhbnksIGJhcjogYW55KSA9PiB7XG4gIHZhciBjdG9yOiBhbnksIGxlbjogYW55LCB0bXA6IGFueTtcbiAgaWYgKGZvbyA9PT0gYmFyKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoZm9vICYmIGJhciAmJiAoY3RvciA9IGZvby5jb25zdHJ1Y3RvcikgPT09IGJhci5jb25zdHJ1Y3Rvcikge1xuICAgIGlmIChjdG9yID09PSBEYXRlKSByZXR1cm4gZm9vLmdldFRpbWUoKSA9PT0gYmFyLmdldFRpbWUoKTtcbiAgICBpZiAoY3RvciA9PT0gUmVnRXhwKSByZXR1cm4gZm9vLnRvU3RyaW5nKCkgPT09IGJhci50b1N0cmluZygpO1xuXG4gICAgaWYgKGN0b3IgPT09IEFycmF5KSB7XG4gICAgICBpZiAoKGxlbiA9IGZvby5sZW5ndGgpID09PSBiYXIubGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlIChsZW4tLSAmJiBlcXVhbChmb29bbGVuXSwgYmFyW2xlbl0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZW4gPT09IC0xO1xuICAgIH1cblxuICAgIGlmIChjdG9yID09PSBTZXQpIHtcbiAgICAgIGlmIChmb28uc2l6ZSAhPT0gYmFyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZm9yIChsZW4gb2YgZm9vKSB7XG4gICAgICAgIHRtcCA9IGxlbjtcbiAgICAgICAgaWYgKHRtcCAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRtcCA9IGZpbmQoYmFyLCB0bXApO1xuICAgICAgICAgIGlmICghdG1wKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFiYXIuaGFzKHRtcCkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjdG9yID09PSBNYXApIHtcbiAgICAgIGlmIChmb28uc2l6ZSAhPT0gYmFyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZm9yIChsZW4gb2YgZm9vKSB7XG4gICAgICAgIHRtcCA9IGxlblswXTtcbiAgICAgICAgaWYgKHRtcCAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRtcCA9IGZpbmQoYmFyLCB0bXApO1xuICAgICAgICAgIGlmICghdG1wKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlcXVhbChsZW5bMV0sIGJhci5nZXQodG1wKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgZm9vID0gbmV3IFVpbnQ4QXJyYXkoZm9vKTtcbiAgICAgIGJhciA9IG5ldyBVaW50OEFycmF5KGJhcik7XG4gICAgfSBlbHNlIGlmIChjdG9yID09PSBEYXRhVmlldykge1xuICAgICAgaWYgKChsZW4gPSBmb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlIChsZW4tLSAmJiBmb28uZ2V0SW50OChsZW4pID09PSBiYXIuZ2V0SW50OChsZW4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZW4gPT09IC0xO1xuICAgIH1cblxuICAgIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZm9vKSkge1xuICAgICAgaWYgKChsZW4gPSBmb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHdoaWxlIChsZW4tLSAmJiBmb29bbGVuXSA9PT0gYmFyW2xlbl0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlbiA9PT0gLTE7XG4gICAgfVxuXG4gICAgaWYgKCFjdG9yIHx8IHR5cGVvZiBmb28gPT09ICdvYmplY3QnKSB7XG4gICAgICBsZW4gPSAwO1xuICAgICAgZm9yIChjdG9yIGluIGZvbykge1xuICAgICAgICBpZiAoaGFzLmNhbGwoZm9vLCBjdG9yKSAmJiArK2xlbiAmJiAhaGFzLmNhbGwoYmFyLCBjdG9yKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIShjdG9yIGluIGJhcikgfHwgIWVxdWFsKGZvb1tjdG9yXSwgYmFyW2N0b3JdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGJhcikubGVuZ3RoID09PSBsZW47XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbyAhPT0gZm9vICYmIGJhciAhPT0gYmFyO1xufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,3 +1,8 @@
1
- export * from './viewport.util';
2
1
  export * from './clamp.util';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuIl19
2
+ export * from './clone.util';
3
+ export * from './cookie.util';
4
+ export * from './equal.util';
5
+ export * from './reactive-binding.util';
6
+ export * from './scrollable.utils';
7
+ export * from './viewport.util';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG9uZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29va2llLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3RpdmUtYmluZGluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYWJsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LnV0aWwnO1xuIl19
@@ -0,0 +1,111 @@
1
+ import { ElementRef, inject } from '@angular/core';
2
+ import { distinctUntilChanged, takeUntil } from 'rxjs';
3
+ import { DestroyService } from '../services';
4
+ const isAttributeRenderBinding = (value) => typeof value === 'boolean';
5
+ const isAttributeValueBinding = (value) => typeof value === 'object';
6
+ export const createReactiveBindings = (...values) => {
7
+ const rootElementRef = inject(ElementRef);
8
+ const destroy$ = inject(DestroyService, { host: true }).destroy$;
9
+ const subscriptions = [];
10
+ const pushedAttributes = [];
11
+ const defaults = {};
12
+ const push = (value) => {
13
+ const { attribute, observable, elementRef } = value;
14
+ const elRef = elementRef || rootElementRef;
15
+ const attributes = Array.isArray(attribute) ? attribute : [attribute];
16
+ pushedAttributes.push(attributes);
17
+ for (const attribute of attributes) {
18
+ if (!defaults[attribute]) {
19
+ defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;
20
+ }
21
+ }
22
+ const subscription = observable
23
+ .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => {
24
+ if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {
25
+ return a === b;
26
+ }
27
+ else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {
28
+ return a.render === b.render && a.value === b.value;
29
+ }
30
+ return false;
31
+ }))
32
+ .subscribe((value) => {
33
+ const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];
34
+ for (const attribute of currentAttributes) {
35
+ const isSingleClassMutation = attribute.startsWith('class.');
36
+ const isMultipleClassMutation = attribute === 'class';
37
+ const render = isAttributeRenderBinding(value) ? value : value.render;
38
+ if (isSingleClassMutation) {
39
+ const className = attribute.replace('class.', '');
40
+ if (!className) {
41
+ continue;
42
+ }
43
+ if (!render) {
44
+ elRef.nativeElement.classList.remove(className);
45
+ }
46
+ else {
47
+ elRef.nativeElement.classList.add(className);
48
+ }
49
+ }
50
+ else if (isMultipleClassMutation) {
51
+ const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;
52
+ if (!classes) {
53
+ continue;
54
+ }
55
+ if (!render) {
56
+ elRef.nativeElement.classList.remove(...classes.split(' '));
57
+ }
58
+ else {
59
+ elRef.nativeElement.classList.add(...classes.split(' '));
60
+ }
61
+ }
62
+ else {
63
+ const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;
64
+ if (!attribute) {
65
+ continue;
66
+ }
67
+ if (!render) {
68
+ elRef.nativeElement.removeAttribute(attribute);
69
+ }
70
+ else {
71
+ elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);
72
+ }
73
+ }
74
+ }
75
+ });
76
+ subscriptions.push({ attributes, subscription });
77
+ };
78
+ const remove = (...attributes) => {
79
+ for (const attribute of attributes) {
80
+ const sub = subscriptions.find((s) => s.attributes.includes(attribute));
81
+ const attributeStack = pushedAttributes.find((a) => a.includes(attribute));
82
+ if (sub) {
83
+ sub.attributes = sub.attributes.filter((a) => a !== attribute);
84
+ attributeStack?.splice(attributeStack.indexOf(attribute), 1);
85
+ if (sub.attributes.length === 0) {
86
+ sub.subscription.unsubscribe();
87
+ subscriptions.splice(subscriptions.indexOf(sub), 1);
88
+ }
89
+ }
90
+ }
91
+ };
92
+ const reset = () => {
93
+ for (const attribute in defaults) {
94
+ if (defaults[attribute] === undefined) {
95
+ rootElementRef.nativeElement.removeAttribute(attribute);
96
+ }
97
+ else {
98
+ rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
99
+ }
100
+ }
101
+ };
102
+ for (const value of values) {
103
+ push(value);
104
+ }
105
+ return {
106
+ push,
107
+ remove,
108
+ reset,
109
+ };
110
+ };
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtYmluZGluZy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvcmVhY3RpdmUtYmluZGluZy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFlN0MsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixLQUFxRCxFQUNwQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ2pFLE1BQU0sdUJBQXVCLEdBQUcsQ0FDOUIsS0FBcUQsRUFDckIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztBQVEvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsTUFBNEIsRUFBeUIsRUFBRTtJQUMvRixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFakUsTUFBTSxhQUFhLEdBQTJELEVBQUUsQ0FBQztJQUNqRixNQUFNLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUV4QyxNQUFNLFFBQVEsR0FBdUMsRUFBRSxDQUFDO0lBRXhELE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNwRCxNQUFNLEtBQUssR0FBRyxVQUFVLElBQUksY0FBYyxDQUFDO1FB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VSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRTdELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMvQixhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JEO2FBQ0Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNqQixLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsRUFBRTtZQUNoQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNMLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFXLENBQUMsQ0FBQzthQUNyRjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2I7SUFFRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxudHlwZSBBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcgPSB7XG4gIHJlbmRlcjogYm9vbGVhbjtcbiAgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXI7XG59O1xuXG50eXBlIEF0dHJpYnV0ZVJlbmRlckJpbmRpbmcgPSBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBSZWFjdGl2ZUF0dHJpYnV0ZXMgPSB7XG4gIGF0dHJpYnV0ZTogc3RyaW5nIHwgc3RyaW5nW107XG4gIG9ic2VydmFibGU6IE9ic2VydmFibGU8QXR0cmlidXRlVmFsdWVCaW5kaW5nIHwgQXR0cmlidXRlUmVuZGVyQmluZGluZz47XG4gIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcbn07XG5cbmNvbnN0IGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyA9IChcbiAgdmFsdWU6IEF0dHJpYnV0ZVZhbHVlQmluZGluZyB8IEF0dHJpYnV0ZVJlbmRlckJpbmRpbmcsXG4pOiB2YWx1ZSBpcyBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xuY29uc3QgaXNBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcgPSAoXG4gIHZhbHVlOiBBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcgfCBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nLFxuKTogdmFsdWUgaXMgQXR0cmlidXRlVmFsdWVCaW5kaW5nID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmVCaW5kaW5nUmVzdWx0IHtcbiAgcmVzZXQ6ICgpID0+IHZvaWQ7XG4gIHJlbW92ZTogKC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICBwdXNoOiAodmFsdWU6IFJlYWN0aXZlQXR0cmlidXRlcykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MgPSAoLi4udmFsdWVzOiBSZWFjdGl2ZUF0dHJpYnV0ZXNbXSk6IFJlYWN0aXZlQmluZGluZ1Jlc3VsdCA9PiB7XG4gIGNvbnN0IHJvb3RFbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgY29uc3QgZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVNlcnZpY2UsIHsgaG9zdDogdHJ1ZSB9KS5kZXN0cm95JDtcblxuICBjb25zdCBzdWJzY3JpcHRpb25zOiB7IGF0dHJpYnV0ZXM6IHN0cmluZ1tdOyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB9W10gPSBbXTtcbiAgY29uc3QgcHVzaGVkQXR0cmlidXRlczogc3RyaW5nW11bXSA9IFtdO1xuXG4gIGNvbnN0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+ID0ge307XG5cbiAgY29uc3QgcHVzaCA9ICh2YWx1ZTogUmVhY3RpdmVBdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgeyBhdHRyaWJ1dGUsIG9ic2VydmFibGUsIGVsZW1lbnRSZWYgfSA9IHZhbHVlO1xuICAgIGNvbnN0IGVsUmVmID0gZWxlbWVudFJlZiB8fCByb290RWxlbWVudFJlZjtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gQXJyYXkuaXNBcnJheShhdHRyaWJ1dGUpID8gYXR0cmlidXRlIDogW2F0dHJpYnV0ZV07XG4gICAgcHVzaGVkQXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZXMpO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKCFkZWZhdWx0c1thdHRyaWJ1dGVdKSB7XG4gICAgICAgIGRlZmF1bHRzW2F0dHJpYnV0ZV0gPSBlbFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpIHx8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKGEpICYmIGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyhiKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0F0dHJpYnV0ZVZhbHVlQmluZGluZyhhKSAmJiBpc0F0dHJpYnV0ZVZhbHVlQmluZGluZyhiKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEucmVuZGVyID09PSBiLnJlbmRlciAmJiBhLnZhbHVlID09PSBiLnZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50QXR0cmlidXRlcyA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgocykgPT4gcy5zb21lKChjdXJyZW50KSA9PiBhdHRyaWJ1dGVzLmluY2x1ZGVzKGN1cnJlbnQpKSkgfHwgW107XG5cbiAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgY3VycmVudEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBjb25zdCBpc1NpbmdsZUNsYXNzTXV0YXRpb24gPSBhdHRyaWJ1dGUuc3RhcnRzV2l0aCgnY2xhc3MuJyk7XG4gICAgICAgICAgY29uc3QgaXNNdWx0aXBsZUNsYXNzTXV0YXRpb24gPSBhdHRyaWJ1dGUgPT09ICdjbGFzcyc7XG5cbiAgICAgICAgICBjb25zdCByZW5kZXIgPSBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS5yZW5kZXI7XG5cbiAgICAgICAgICBpZiAoaXNTaW5nbGVDbGFzc011dGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBhdHRyaWJ1dGUucmVwbGFjZSgnY2xhc3MuJywgJycpO1xuXG4gICAgICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZW5kZXIpIHtcbiAgICAgICAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGVDbGFzc011dGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKHZhbHVlKSA/ICcnIDogYCR7dmFsdWUudmFsdWV9YDtcblxuICAgICAgICAgICAgaWYgKCFjbGFzc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlbmRlcikge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5zcGxpdCgnICcpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyh2YWx1ZSkgPyB0cnVlIDogYCR7dmFsdWUudmFsdWV9YDtcblxuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVuZGVyKSB7XG4gICAgICAgICAgICAgIGVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGAke2F0dHJpYnV0ZVZhbHVlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzdWJzY3JpcHRpb25zLnB1c2goeyBhdHRyaWJ1dGVzLCBzdWJzY3JpcHRpb24gfSk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlID0gKC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgY29uc3Qgc3ViID0gc3Vic2NyaXB0aW9ucy5maW5kKChzKSA9PiBzLmF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTdGFjayA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgoYSkgPT4gYS5pbmNsdWRlcyhhdHRyaWJ1dGUpKTtcblxuICAgICAgaWYgKHN1Yikge1xuICAgICAgICBzdWIuYXR0cmlidXRlcyA9IHN1Yi5hdHRyaWJ1dGVzLmZpbHRlcigoYSkgPT4gYSAhPT0gYXR0cmlidXRlKTtcbiAgICAgICAgYXR0cmlidXRlU3RhY2s/LnNwbGljZShhdHRyaWJ1dGVTdGFjay5pbmRleE9mKGF0dHJpYnV0ZSksIDEpO1xuXG4gICAgICAgIGlmIChzdWIuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzdWIuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9ucy5zcGxpY2Uoc3Vic2NyaXB0aW9ucy5pbmRleE9mKHN1YiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIGluIGRlZmF1bHRzKSB7XG4gICAgICBpZiAoZGVmYXVsdHNbYXR0cmlidXRlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJvb3RFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGRlZmF1bHRzW2F0dHJpYnV0ZV0gYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBwdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHVzaCxcbiAgICByZW1vdmUsXG4gICAgcmVzZXQsXG4gIH07XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ export const elementCanScroll = (element) => {
2
+ const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;
3
+ return scrollHeight > clientHeight || scrollWidth > clientWidth;
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3Njcm9sbGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7SUFDdkQsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUV6RSxPQUFPLFlBQVksR0FBRyxZQUFZLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZWxlbWVudENhblNjcm9sbCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCB7IHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggfSA9IGVsZW1lbnQ7XG5cbiAgcmV0dXJuIHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodCB8fCBzY3JvbGxXaWR0aCA+IGNsaWVudFdpZHRoO1xufTtcbiJdfQ==