@alegendstale/holly-components 2.0.3 → 2.0.5

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 (136) hide show
  1. package/custom-elements.json +6366 -0
  2. package/dist/components/absolute-container/absolute-container.js +79 -113
  3. package/dist/components/absolute-container/absolute-container.styles.js +20 -17
  4. package/dist/components/bottom-sheet/bottom-sheet.js +189 -319
  5. package/dist/components/bottom-sheet/bottom-sheet.styles.js +117 -114
  6. package/dist/components/canvas/canvas-base.d.ts +4 -1
  7. package/dist/components/canvas/canvas-base.d.ts.map +1 -1
  8. package/dist/components/canvas/canvas-base.js +51 -67
  9. package/dist/components/canvas/canvas-gradient.js +44 -69
  10. package/dist/components/canvas/canvas-image.js +112 -177
  11. package/dist/components/canvas/canvas-image.styles.js +23 -20
  12. package/dist/components/carousel-scroller/carousel-scroller.js +63 -87
  13. package/dist/components/carousel-scroller/carousel-scroller.styles.js +68 -65
  14. package/dist/components/color-palette/color-palette-utils.js +55 -104
  15. package/dist/components/color-palette/color-palette.js +250 -384
  16. package/dist/components/color-palette/color-palette.styles.js +92 -89
  17. package/dist/components/color-palette/component/color-palette-component.js +134 -188
  18. package/dist/components/color-palette/component/color-palette-component.styles.js +12 -9
  19. package/dist/components/color-palette/editor/color-palette-editor.js +413 -539
  20. package/dist/components/color-palette/editor/color-palette-editor.styles.js +149 -146
  21. package/dist/components/color-palette/editor/settings-item.js +32 -40
  22. package/dist/components/color-palette/editor/settings-item.styles.js +36 -33
  23. package/dist/components/color-palette/item/color-palette-item-edit.js +50 -84
  24. package/dist/components/color-palette/item/color-palette-item-edit.styles.js +53 -50
  25. package/dist/components/color-palette/item/color-palette-item.js +72 -107
  26. package/dist/components/color-palette/item/color-palette-item.styles.js +85 -82
  27. package/dist/components/color-palette/menu/color-palette-menu.js +162 -200
  28. package/dist/components/color-palette/menu/color-palette-menu.styles.js +51 -48
  29. package/dist/components/color-palette/menu/color-palette-reorder.js +76 -95
  30. package/dist/components/color-palette/menu/color-palette-reorder.styles.js +33 -30
  31. package/dist/components/draw-svg/draw-svg.js +35 -52
  32. package/dist/components/draw-svg/draw-svg.styles.js +41 -38
  33. package/dist/components/responsive-svg/responsive-svg.js +122 -174
  34. package/dist/components/responsive-svg/responsive-svg.styles.js +48 -45
  35. package/dist/components/tool-tip/tool-tip.d.ts +5 -1
  36. package/dist/components/tool-tip/tool-tip.d.ts.map +1 -1
  37. package/dist/components/tool-tip/tool-tip.js +64 -100
  38. package/dist/components/tool-tip/tool-tip.styles.js +60 -57
  39. package/dist/decorators/condCustomElement.js +8 -11
  40. package/dist/utils/EventEmitter.js +23 -23
  41. package/dist/utils/ResponsiveController.js +15 -18
  42. package/dist/utils/basicUtils.js +98 -146
  43. package/dist/utils/colorsea-wrapper.js +162 -166
  44. package/dist/utils/dragDropUtils.js +75 -119
  45. package/dist/utils/generateUtils.js +39 -73
  46. package/package.json +43 -60
  47. package/dist/components/absolute-container/absolute-container.stories.d.ts +0 -11
  48. package/dist/components/absolute-container/absolute-container.stories.d.ts.map +0 -1
  49. package/dist/components/absolute-container/absolute-container.stories.js +0 -64
  50. package/dist/components/absolute-container/index.d.ts +0 -2
  51. package/dist/components/absolute-container/index.d.ts.map +0 -1
  52. package/dist/components/absolute-container/index.js +0 -1
  53. package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts +0 -17
  54. package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts.map +0 -1
  55. package/dist/components/bottom-sheet/bottom-sheet.stories.js +0 -67
  56. package/dist/components/bottom-sheet/index.d.ts +0 -2
  57. package/dist/components/bottom-sheet/index.d.ts.map +0 -1
  58. package/dist/components/bottom-sheet/index.js +0 -1
  59. package/dist/components/canvas/canvas-base.stories.d.ts +0 -7
  60. package/dist/components/canvas/canvas-base.stories.d.ts.map +0 -1
  61. package/dist/components/canvas/canvas-base.stories.js +0 -24
  62. package/dist/components/canvas/canvas-gradient.stories.d.ts +0 -14
  63. package/dist/components/canvas/canvas-gradient.stories.d.ts.map +0 -1
  64. package/dist/components/canvas/canvas-gradient.stories.js +0 -46
  65. package/dist/components/canvas/canvas-image.stories.d.ts +0 -13
  66. package/dist/components/canvas/canvas-image.stories.d.ts.map +0 -1
  67. package/dist/components/canvas/canvas-image.stories.js +0 -49
  68. package/dist/components/canvas/index.d.ts +0 -3
  69. package/dist/components/canvas/index.d.ts.map +0 -1
  70. package/dist/components/canvas/index.js +0 -2
  71. package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts +0 -13
  72. package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts.map +0 -1
  73. package/dist/components/carousel-scroller/carousel-scroller.stories.js +0 -56
  74. package/dist/components/carousel-scroller/index.d.ts +0 -2
  75. package/dist/components/carousel-scroller/index.d.ts.map +0 -1
  76. package/dist/components/carousel-scroller/index.js +0 -1
  77. package/dist/components/color-palette/component/color-palette-component.stories.d.ts +0 -13
  78. package/dist/components/color-palette/component/color-palette-component.stories.d.ts.map +0 -1
  79. package/dist/components/color-palette/component/color-palette-component.stories.js +0 -75
  80. package/dist/components/color-palette/component/index.d.ts +0 -2
  81. package/dist/components/color-palette/component/index.d.ts.map +0 -1
  82. package/dist/components/color-palette/component/index.js +0 -1
  83. package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts +0 -18
  84. package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts.map +0 -1
  85. package/dist/components/color-palette/editor/color-palette-editor.stories.js +0 -67
  86. package/dist/components/color-palette/editor/index.d.ts +0 -2
  87. package/dist/components/color-palette/editor/index.d.ts.map +0 -1
  88. package/dist/components/color-palette/editor/index.js +0 -1
  89. package/dist/components/color-palette/index.d.ts +0 -6
  90. package/dist/components/color-palette/index.d.ts.map +0 -1
  91. package/dist/components/color-palette/index.js +0 -5
  92. package/dist/components/color-palette/item/index.d.ts +0 -3
  93. package/dist/components/color-palette/item/index.d.ts.map +0 -1
  94. package/dist/components/color-palette/item/index.js +0 -2
  95. package/dist/components/color-palette/menu/index.d.ts +0 -3
  96. package/dist/components/color-palette/menu/index.d.ts.map +0 -1
  97. package/dist/components/color-palette/menu/index.js +0 -2
  98. package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts +0 -33
  99. package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts.map +0 -1
  100. package/dist/components/color-palette/storybook/color-palette-invalid.stories.js +0 -62
  101. package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts +0 -52
  102. package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts.map +0 -1
  103. package/dist/components/color-palette/storybook/color-palette-valid.stories.js +0 -268
  104. package/dist/components/color-palette/storybook/color-palette.stories.d.ts +0 -27
  105. package/dist/components/color-palette/storybook/color-palette.stories.d.ts.map +0 -1
  106. package/dist/components/color-palette/storybook/color-palette.stories.js +0 -129
  107. package/dist/components/draw-svg/draw-svg.stories.d.ts +0 -7
  108. package/dist/components/draw-svg/draw-svg.stories.d.ts.map +0 -1
  109. package/dist/components/draw-svg/draw-svg.stories.js +0 -61
  110. package/dist/components/draw-svg/index.d.ts +0 -2
  111. package/dist/components/draw-svg/index.d.ts.map +0 -1
  112. package/dist/components/draw-svg/index.js +0 -1
  113. package/dist/components/responsive-svg/index.d.ts +0 -2
  114. package/dist/components/responsive-svg/index.d.ts.map +0 -1
  115. package/dist/components/responsive-svg/index.js +0 -1
  116. package/dist/components/responsive-svg/responsive-svg.stories.d.ts +0 -26
  117. package/dist/components/responsive-svg/responsive-svg.stories.d.ts.map +0 -1
  118. package/dist/components/responsive-svg/responsive-svg.stories.js +0 -194
  119. package/dist/components/tool-tip/index.d.ts +0 -2
  120. package/dist/components/tool-tip/index.d.ts.map +0 -1
  121. package/dist/components/tool-tip/index.js +0 -1
  122. package/dist/components/tool-tip/tool-tip.stories.d.ts +0 -16
  123. package/dist/components/tool-tip/tool-tip.stories.d.ts.map +0 -1
  124. package/dist/components/tool-tip/tool-tip.stories.js +0 -62
  125. package/dist/decorators/index.d.ts +0 -2
  126. package/dist/decorators/index.d.ts.map +0 -1
  127. package/dist/decorators/index.js +0 -1
  128. package/dist/index.d.ts +0 -11
  129. package/dist/index.d.ts.map +0 -1
  130. package/dist/index.js +0 -10
  131. package/dist/utils/index.d.ts +0 -5
  132. package/dist/utils/index.d.ts.map +0 -1
  133. package/dist/utils/index.js +0 -4
  134. package/dist/utils/types.d.ts +0 -5
  135. package/dist/utils/types.d.ts.map +0 -1
  136. package/dist/utils/types.js +0 -1
@@ -1,322 +1,192 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ import { LitElement as c, html as g } from "lit";
2
+ import { query as p, property as h, customElement as u } from "lit/decorators.js";
3
+ import { EventEmitter as d } from "../../utils/EventEmitter.js";
4
+ import f from "./bottom-sheet.styles.js";
5
+ var m = Object.defineProperty, y = Object.getOwnPropertyDescriptor, r = (t, e, i, n) => {
6
+ for (var s = n > 1 ? void 0 : n ? y(e, i) : e, a = t.length - 1, l; a >= 0; a--)
7
+ (l = t[a]) && (s = (n ? l(e, i, s) : l(s)) || s);
8
+ return n && s && m(e, i, s), s;
6
9
  };
7
- import { LitElement, html } from 'lit';
8
- import { customElement, property, query } from 'lit/decorators.js';
9
- import { EventEmitter } from '../../utils/EventEmitter.js';
10
- import styles from './bottom-sheet.styles.js';
11
- /**
12
- * A container component primarily for mobile devices which slides up and down from the bottom of the screen.
13
- *
14
- * @cssprop {<length> (dvh)} --height - The height of the sheet.
15
- */
16
- let BottomSheet = class BottomSheet extends LitElement {
17
- constructor() {
18
- super(...arguments);
19
- /** Whether the sheet is open or closed. */
20
- this.open = false;
21
- /** Whether the sheet is nonmodal. */
22
- this.nonmodal = false;
23
- /** Whether the sheet can be dragged. */
24
- this.dragging = false;
25
- /** Whether the sheet can be scrolled. */
26
- this.scrolling = false;
27
- /** An array of percentages that the sheet will stop at or be drawn to after being released. */
28
- this.snapPoints = [];
29
- /** The default percentage that the sheet will open to. */
30
- this.defaultSnap = NaN;
31
- /** Public way to subscribe to events. */
32
- this.emitter = new EventEmitter();
33
- /** @internal */
34
- this.startY = 0;
35
- /** @internal */
36
- this.startHeight = 0;
37
- /** @internal */
38
- this.previousTouch = null;
39
- /** @internal */
40
- this.lastScrollTop = 0;
41
- }
42
- static { this.styles = [styles]; }
43
- /**
44
- * Sets the height of the sheet.
45
- * Infinity can be used to fit content automatically.
46
- * @type {number}
47
- * @default fit-content
48
- */
49
- set height(val) {
50
- const newHeight = Math.min(Math.max(val, 0), 100);
51
- this.emitter.emit('snapped', this.isSnapped(newHeight), this.shadowRoot?.activeElement);
52
- // Automatically fit content if height is infinity
53
- if (!isFinite(val))
54
- this.style.setProperty('--height', `fit-content`);
55
- else
56
- this.style.setProperty('--height', `${Math.round(newHeight)}dvh`);
57
- }
58
- get height() {
59
- return parseInt(this.style.getPropertyValue('--height'));
60
- }
61
- connectedCallback() {
62
- super.connectedCallback();
63
- // Make sure sheet snap doesn't break on index 2.
64
- const lengthWhen2 = this.snapPoints.length === 2 ? 0 : 1;
65
- this.defaultSnap = this.snapPoints.length > 0 ? isNaN(this.defaultSnap) ? this.snapPoints[Math.round(this.snapPoints.length / 2) - lengthWhen2] : this.defaultSnap : NaN;
66
- this.emitter.on('snapped', this.onSnapped.bind(this));
67
- requestAnimationFrame(() => {
68
- this.showSheet(this.open);
69
- });
70
- }
71
- disconnectedCallback() {
72
- super.disconnectedCallback();
73
- this.emitter.clear();
74
- }
75
- render() {
76
- requestAnimationFrame(() => {
77
- this.setDialog(this.open);
78
- });
79
- return html `
80
- <dialog
81
- @click=${(e) => {
82
- // Prevents clicks from reaching elements underneath sheet
83
- e.stopPropagation();
84
- this.toggleSheet();
85
- }}
86
- >
87
- <button
88
- id="handle"
89
- part="__handle"
90
- @pointerdown=${this.pointerDown}
91
- @pointermove=${this.pointerMove}
92
- @pointerup=${this.pointerUp}
93
- @click=${(e) => {
94
- // Prevents clicks from reaching elements underneath sheet
95
- e.stopPropagation();
96
- }}
97
- >
98
-
99
- </button>
100
-
101
- <div
102
- id='content'
103
- part="__content"
104
- tabindex='0'
105
- @touchstart=${this.touchDown}
106
- @touchend=${this.touchUp}
107
- @touchmove=${this.touchMove}
108
- @scroll=${this.contentScroll}
109
- @touchcancel=${(e) => {
110
- console.warn('User Agent touchcancelled the event.', e.target);
111
- }}
112
- @dragstart=${(e) => {
113
- // Prevent slot children from being dragged
114
- e.preventDefault();
115
- }}
116
- @click=${(e) => {
117
- // Prevents clicks from reaching elements underneath sheet
118
- e.stopPropagation();
119
- }}
120
- >
121
- <slot></slot>
122
- </div>
123
- </dialog>
10
+ let o = class extends c {
11
+ constructor() {
12
+ super(...arguments), this.open = !1, this.nonmodal = !1, this.dragging = !1, this.scrolling = !1, this.snapPoints = [], this.defaultSnap = NaN, this.emitter = new d(), this.startY = 0, this.startHeight = 0, this.previousTouch = null, this.lastScrollTop = 0;
13
+ }
14
+ set height(t) {
15
+ const e = Math.min(Math.max(t, 0), 100);
16
+ this.emitter.emit("snapped", this.isSnapped(e), this.shadowRoot?.activeElement), isFinite(t) ? this.style.setProperty("--height", `${Math.round(e)}dvh`) : this.style.setProperty("--height", "fit-content");
17
+ }
18
+ get height() {
19
+ return parseInt(this.style.getPropertyValue("--height"));
20
+ }
21
+ connectedCallback() {
22
+ super.connectedCallback();
23
+ const t = this.snapPoints.length === 2 ? 0 : 1;
24
+ this.defaultSnap = this.snapPoints.length > 0 ? isNaN(this.defaultSnap) ? this.snapPoints[Math.round(this.snapPoints.length / 2) - t] : this.defaultSnap : NaN, this.emitter.on("snapped", this.onSnapped.bind(this)), requestAnimationFrame(() => {
25
+ this.showSheet(this.open);
26
+ });
27
+ }
28
+ disconnectedCallback() {
29
+ super.disconnectedCallback(), this.emitter.clear();
30
+ }
31
+ render() {
32
+ return requestAnimationFrame(() => {
33
+ this.setDialog(this.open);
34
+ }), g`
35
+ <dialog
36
+ @click=${(t) => {
37
+ t.stopPropagation(), this.toggleSheet();
38
+ }}
39
+ >
40
+ <button
41
+ id="handle"
42
+ part="__handle"
43
+ @pointerdown=${this.pointerDown}
44
+ @pointermove=${this.pointerMove}
45
+ @pointerup=${this.pointerUp}
46
+ @click=${(t) => {
47
+ t.stopPropagation();
48
+ }}
49
+ >
50
+
51
+ </button>
52
+
53
+ <div
54
+ id='content'
55
+ part="__content"
56
+ tabindex='0'
57
+ @touchstart=${this.touchDown}
58
+ @touchend=${this.touchUp}
59
+ @touchmove=${this.touchMove}
60
+ @scroll=${this.contentScroll}
61
+ @touchcancel=${(t) => {
62
+ console.warn("User Agent touchcancelled the event.", t.target);
63
+ }}
64
+ @dragstart=${(t) => {
65
+ t.preventDefault();
66
+ }}
67
+ @click=${(t) => {
68
+ t.stopPropagation();
69
+ }}
70
+ >
71
+ <slot></slot>
72
+ </div>
73
+ </dialog>
124
74
  `;
125
- }
126
- /**
127
- * Find closest point index to target in array
128
- */
129
- closestSnapPointIndex(snapPoints, target) {
130
- return snapPoints.reduce((closestIndex, value, index) => (Math.abs(value - target) < Math.abs(snapPoints[closestIndex] - target) ? index : closestIndex), 0);
131
- }
132
- /**
133
- * Sets sheet height to the closest snap
134
- * @param height percentage
135
- */
136
- setSnap(height) {
137
- if (this.snapPoints.length === 0)
138
- return;
139
- const currentSnap = this.snapPoints[this.closestSnapPointIndex(this.snapPoints, height)];
140
- // Hide sheet if current snap is the smallest
141
- if (currentSnap === this.snapPoints[0])
142
- this.showSheet(false);
143
- this.height = currentSnap;
144
- }
145
- /**
146
- * @returns Whether sheet is snapped to a snap point
147
- */
148
- isSnapped(height) {
149
- return this.snapPoints.some((val) => val === Math.round(height));
150
- }
151
- /**
152
- * Sets the display state of the sheet
153
- */
154
- showSheet(open) {
155
- this.open = open;
156
- this.height = isNaN(this.defaultSnap) ? Infinity : this.defaultSnap;
157
- this.setOverscroll(open);
158
- this.setDialog(open);
159
- }
160
- /**
161
- * Toggles the display state of the sheet
162
- */
163
- toggleSheet() {
164
- this.showSheet(!this.open);
165
- }
166
- /**
167
- * Remove overscroll to prevent mobile browsers from refreshing during drag
168
- */
169
- setOverscroll(open) {
170
- const htmlEl = document.querySelector('html');
171
- const bodyEl = document.querySelector('body');
172
- const behavior = open ? 'none' : 'unset';
173
- htmlEl && htmlEl.style.setProperty('overscroll-behavior-block', behavior);
174
- bodyEl && bodyEl.style.setProperty('overscroll-behavior-block', behavior);
175
- }
176
- setDialog(open) {
177
- if (open && !this.dialog.open) {
178
- if (this.nonmodal)
179
- this.dialog.show();
180
- else
181
- this.dialog.showModal();
182
- }
183
- else if (open && this.dialog.open) {
184
- // If a modal dialog is open, close and open a nonmodal dialog
185
- if (this.nonmodal && this.modalDialog) {
186
- this.dialog.close();
187
- this.dialog.show();
188
- }
189
- // If a nonmodal dialog is open, close and open a modal dialog
190
- else if (!this.nonmodal && this.nonModalDialog) {
191
- this.dialog.close();
192
- this.dialog.showModal();
193
- }
194
- }
195
- else {
196
- this.dialog.close();
197
- }
198
- }
199
- touchDown(e) {
200
- if (!(e.target instanceof HTMLElement))
201
- return;
202
- this.startY = e.touches[0].pageY;
203
- this.startHeight = this.height;
204
- }
205
- touchMove(e) {
206
- // Ensure target has pointer capture
207
- if (!(e.target instanceof HTMLElement))
208
- return;
209
- const touch = e.touches[0];
210
- let movementY = NaN;
211
- if (this.previousTouch) {
212
- movementY = touch.pageY - this.previousTouch.pageY;
213
- }
214
- this.previousTouch = touch;
215
- let deltaY = this.startY - e.touches[0].pageY;
216
- const newHeight = this.startHeight + (deltaY / window.innerHeight) * 100;
217
- // Allow user to drag
218
- if (!this.scrolling && this.dragging) {
219
- this.height = newHeight;
220
- }
221
- // Allow user to scroll
222
- else if (this.scrolling && this.dragging || this.scrolling && !this.dragging) {
223
- e.target.focus({ preventScroll: true });
224
- }
225
- /**
226
- * Allow user to scroll OR drag
227
- * Determined by first direction of movement
228
- */
229
- else if (!this.scrolling && !this.dragging) {
230
- // Scroll Down
231
- if (movementY >= 0) {
232
- // Ensure the height of the container never goes above the middle snap point when scrolling down
233
- this.height = Math.min(newHeight, this.defaultSnap || this.snapPoints[this.snapPoints.length - 1]);
234
- }
235
- // Scroll Up
236
- else {
237
- // Allow user to scroll
238
- e.target.focus({ preventScroll: true });
239
- }
240
- }
241
- }
242
- touchUp(e) {
243
- if (!(e.target instanceof HTMLElement))
244
- return;
245
- this.previousTouch = null;
246
- this.setSnap(this.height);
247
- }
248
- pointerDown(e) {
249
- if (!(e.target instanceof HTMLElement))
250
- return;
251
- e.target.setPointerCapture(e.pointerId);
252
- this.startY = e.pageY;
253
- this.startHeight = this.height;
254
- }
255
- pointerMove(e) {
256
- // Ensure target has pointer capture
257
- if (!(e.target instanceof HTMLElement && e.target.hasPointerCapture(e.pointerId)))
258
- return;
259
- // Ensure only one pointer is being tracked
260
- if (!e.isPrimary)
261
- return;
262
- // Prevents sheet drag from being interrupted
263
- e.preventDefault();
264
- let deltaY = this.startY - e.pageY;
265
- const newHeight = this.startHeight + (deltaY / window.innerHeight) * 100;
266
- if (e.target.id === 'handle') {
267
- this.height = newHeight;
268
- }
269
- }
270
- pointerUp(e) {
271
- if (!(e.target instanceof HTMLElement))
272
- return;
273
- e.target.releasePointerCapture(e.pointerId);
274
- this.setSnap(this.height);
275
- }
276
- onSnapped(snapped, activeElement) {
277
- this.dragging = !snapped;
278
- }
279
- contentScroll(e) {
280
- if (!(e.target instanceof HTMLElement && e.target.id === 'content'))
281
- return;
282
- const currentScrollTop = e.target.scrollTop;
283
- this.scrolling = currentScrollTop !== this.lastScrollTop;
284
- this.lastScrollTop = currentScrollTop;
285
- if (currentScrollTop === 0)
286
- this.scrolling = false;
287
- }
75
+ }
76
+ /**
77
+ * Find closest point index to target in array
78
+ */
79
+ closestSnapPointIndex(t, e) {
80
+ return t.reduce((i, n, s) => Math.abs(n - e) < Math.abs(t[i] - e) ? s : i, 0);
81
+ }
82
+ /**
83
+ * Sets sheet height to the closest snap
84
+ * @param height percentage
85
+ */
86
+ setSnap(t) {
87
+ if (this.snapPoints.length === 0) return;
88
+ const e = this.snapPoints[this.closestSnapPointIndex(this.snapPoints, t)];
89
+ e === this.snapPoints[0] && this.showSheet(!1), this.height = e;
90
+ }
91
+ /**
92
+ * @returns Whether sheet is snapped to a snap point
93
+ */
94
+ isSnapped(t) {
95
+ return this.snapPoints.some((e) => e === Math.round(t));
96
+ }
97
+ /**
98
+ * Sets the display state of the sheet
99
+ */
100
+ showSheet(t) {
101
+ this.open = t, this.height = isNaN(this.defaultSnap) ? 1 / 0 : this.defaultSnap, this.setOverscroll(t), this.setDialog(t);
102
+ }
103
+ /**
104
+ * Toggles the display state of the sheet
105
+ */
106
+ toggleSheet() {
107
+ this.showSheet(!this.open);
108
+ }
109
+ /**
110
+ * Remove overscroll to prevent mobile browsers from refreshing during drag
111
+ */
112
+ setOverscroll(t) {
113
+ const e = document.querySelector("html"), i = document.querySelector("body"), n = t ? "none" : "unset";
114
+ e && e.style.setProperty("overscroll-behavior-block", n), i && i.style.setProperty("overscroll-behavior-block", n);
115
+ }
116
+ setDialog(t) {
117
+ t && !this.dialog.open ? this.nonmodal ? this.dialog.show() : this.dialog.showModal() : t && this.dialog.open ? this.nonmodal && this.modalDialog ? (this.dialog.close(), this.dialog.show()) : !this.nonmodal && this.nonModalDialog && (this.dialog.close(), this.dialog.showModal()) : this.dialog.close();
118
+ }
119
+ touchDown(t) {
120
+ t.target instanceof HTMLElement && (this.startY = t.touches[0].pageY, this.startHeight = this.height);
121
+ }
122
+ touchMove(t) {
123
+ if (!(t.target instanceof HTMLElement)) return;
124
+ const e = t.touches[0];
125
+ let i = NaN;
126
+ this.previousTouch && (i = e.pageY - this.previousTouch.pageY), this.previousTouch = e;
127
+ let n = this.startY - t.touches[0].pageY;
128
+ const s = this.startHeight + n / window.innerHeight * 100;
129
+ !this.scrolling && this.dragging ? this.height = s : this.scrolling && this.dragging || this.scrolling && !this.dragging ? t.target.focus({ preventScroll: !0 }) : !this.scrolling && !this.dragging && (i >= 0 ? this.height = Math.min(s, this.defaultSnap || this.snapPoints[this.snapPoints.length - 1]) : t.target.focus({ preventScroll: !0 }));
130
+ }
131
+ touchUp(t) {
132
+ t.target instanceof HTMLElement && (this.previousTouch = null, this.setSnap(this.height));
133
+ }
134
+ pointerDown(t) {
135
+ t.target instanceof HTMLElement && (t.target.setPointerCapture(t.pointerId), this.startY = t.pageY, this.startHeight = this.height);
136
+ }
137
+ pointerMove(t) {
138
+ if (!(t.target instanceof HTMLElement && t.target.hasPointerCapture(t.pointerId)) || !t.isPrimary) return;
139
+ t.preventDefault();
140
+ let e = this.startY - t.pageY;
141
+ const i = this.startHeight + e / window.innerHeight * 100;
142
+ t.target.id === "handle" && (this.height = i);
143
+ }
144
+ pointerUp(t) {
145
+ t.target instanceof HTMLElement && (t.target.releasePointerCapture(t.pointerId), this.setSnap(this.height));
146
+ }
147
+ onSnapped(t, e) {
148
+ this.dragging = !t;
149
+ }
150
+ contentScroll(t) {
151
+ if (!(t.target instanceof HTMLElement && t.target.id === "content")) return;
152
+ const e = t.target.scrollTop;
153
+ this.scrolling = e !== this.lastScrollTop, this.lastScrollTop = e, e === 0 && (this.scrolling = !1);
154
+ }
155
+ };
156
+ o.styles = [f];
157
+ r([
158
+ p("dialog")
159
+ ], o.prototype, "dialog", 2);
160
+ r([
161
+ p("dialog:not(:modal)")
162
+ ], o.prototype, "nonModalDialog", 2);
163
+ r([
164
+ p("dialog:modal")
165
+ ], o.prototype, "modalDialog", 2);
166
+ r([
167
+ h({ type: Boolean, reflect: !0 })
168
+ ], o.prototype, "open", 2);
169
+ r([
170
+ h({ type: Boolean, reflect: !0 })
171
+ ], o.prototype, "nonmodal", 2);
172
+ r([
173
+ h({ type: Boolean, reflect: !0 })
174
+ ], o.prototype, "dragging", 2);
175
+ r([
176
+ h({ type: Boolean, reflect: !0 })
177
+ ], o.prototype, "scrolling", 2);
178
+ r([
179
+ h({ type: Array })
180
+ ], o.prototype, "snapPoints", 2);
181
+ r([
182
+ h({ type: Number })
183
+ ], o.prototype, "defaultSnap", 2);
184
+ r([
185
+ h({ type: Number, reflect: !0 })
186
+ ], o.prototype, "height", 1);
187
+ o = r([
188
+ u("bottom-sheet")
189
+ ], o);
190
+ export {
191
+ o as BottomSheet
288
192
  };
289
- __decorate([
290
- query('dialog')
291
- ], BottomSheet.prototype, "dialog", void 0);
292
- __decorate([
293
- query('dialog:not(:modal)')
294
- ], BottomSheet.prototype, "nonModalDialog", void 0);
295
- __decorate([
296
- query('dialog:modal')
297
- ], BottomSheet.prototype, "modalDialog", void 0);
298
- __decorate([
299
- property({ type: Boolean, reflect: true })
300
- ], BottomSheet.prototype, "open", void 0);
301
- __decorate([
302
- property({ type: Boolean, reflect: true })
303
- ], BottomSheet.prototype, "nonmodal", void 0);
304
- __decorate([
305
- property({ type: Boolean, reflect: true })
306
- ], BottomSheet.prototype, "dragging", void 0);
307
- __decorate([
308
- property({ type: Boolean, reflect: true })
309
- ], BottomSheet.prototype, "scrolling", void 0);
310
- __decorate([
311
- property({ type: Array })
312
- ], BottomSheet.prototype, "snapPoints", void 0);
313
- __decorate([
314
- property({ type: Number })
315
- ], BottomSheet.prototype, "defaultSnap", void 0);
316
- __decorate([
317
- property({ type: Number, reflect: true })
318
- ], BottomSheet.prototype, "height", null);
319
- BottomSheet = __decorate([
320
- customElement('bottom-sheet')
321
- ], BottomSheet);
322
- export { BottomSheet };