@cas-smartdesign/tab-bar 4.0.2 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/doc.css +1 -1
- package/dist/docs/doc.mjs +75 -79
- package/dist/tab-bar-with-externals.js +45 -68
- package/dist/tab-bar-with-externals.js.map +4 -4
- package/dist/tab-bar.mjs +40 -40
- package/dist/tab-bar.mjs.map +1 -1
- package/npm-third-party-licenses.json +62 -47
- package/package.json +5 -5
package/dist/tab-bar.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { LitElement as f,
|
|
1
|
+
import { LitElement as f, unsafeCSS as x, css as g, html as l } from "lit";
|
|
2
2
|
import { property as h } from "lit/decorators/property.js";
|
|
3
3
|
import { createPopper as y } from "@popperjs/core";
|
|
4
4
|
import m, { ListDataProvider as S, SelectionType as E } from "@cas-smartdesign/virtual-list";
|
|
5
|
-
const L = ":host{contain:content;outline:none}:host(:not([selected])) .text{opacity:.8}:host(:hover),:host(:focus),:host([anchors-shown]){background-color:var(--sd-tab-bar-hover-color, #e7f1fa);cursor:pointer}.root{position:relative;overflow:hidden;width:100%;height:100%;display:flex;align-items:center;justify-content:flex-start;padding:var(--sd-tab-bar-padding, 8px) calc(2 * var(--sd-tab-bar-padding, 8px));box-sizing:border-box}.counter{text-align:center;background-color:#d9d9d9;min-width:24px;height:24px;line-height:24px;margin-left:calc(-.5 * var(--sd-tab-bar-padding, 8px));margin-right:var(--sd-tab-bar-padding, 8px)}:host([selected]) .counter{color:var(--sd-tab-bar-selected-counter-color, white);background-color:var(--sd-tab-bar-selected-counter-background-color, #3b85d1)}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-grow:1}.down-arrow{padding-left:calc(1.5 * var(--sd-tab-bar-padding, 8px));margin-right:calc(-1 * var(--sd-tab-bar-padding, 8px));outline:none;fill:var(--sd-tab-bar-color, #1467ba);flex:0 0 auto}.ripple{position:absolute;background:var(--sd-tab-bar-color, #1467ba);border-radius:50%;width:5px;height:5px;animation:rippleEffect .88s 1;opacity:0}@keyframes rippleEffect{0%{transform:scale(1);opacity:.4}to{transform:scale(100);opacity:0}}";
|
|
6
|
-
var C = Object.defineProperty,
|
|
7
|
-
for (var s =
|
|
8
|
-
(n = c[
|
|
9
|
-
return
|
|
5
|
+
const L = ":host{contain:content;outline:none}:host(:not([selected])) .text{opacity:.8}:host(:hover),:host(:focus),:host([anchors-shown]){background-color:var(--sd-tab-bar-hover-color, #e7f1fa);cursor:pointer}:host(:focus-visible){box-shadow:0 0 0 1px var(--sd-tab-bar-focus-color, #1467ba) inset}.root{position:relative;overflow:hidden;width:100%;height:100%;display:flex;align-items:center;justify-content:flex-start;padding:var(--sd-tab-bar-padding, 8px) calc(2 * var(--sd-tab-bar-padding, 8px));box-sizing:border-box}.counter{text-align:center;background-color:#d9d9d9;min-width:24px;height:24px;line-height:24px;margin-left:calc(-.5 * var(--sd-tab-bar-padding, 8px));margin-right:var(--sd-tab-bar-padding, 8px)}:host([selected]) .counter{color:var(--sd-tab-bar-selected-counter-color, white);background-color:var(--sd-tab-bar-selected-counter-background-color, #3b85d1)}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-grow:1}.down-arrow{padding-left:calc(1.5 * var(--sd-tab-bar-padding, 8px));margin-right:calc(-1 * var(--sd-tab-bar-padding, 8px));outline:none;fill:var(--sd-tab-bar-color, #1467ba);flex:0 0 auto}.ripple{position:absolute;background:var(--sd-tab-bar-color, #1467ba);border-radius:50%;width:5px;height:5px;animation:rippleEffect .88s 1;opacity:0}@keyframes rippleEffect{0%{transform:scale(1);opacity:.4}to{transform:scale(100);opacity:0}}";
|
|
6
|
+
var C = Object.defineProperty, p = (c, t, e, o) => {
|
|
7
|
+
for (var s = void 0, i = c.length - 1, n; i >= 0; i--)
|
|
8
|
+
(n = c[i]) && (s = n(t, e, s) || s);
|
|
9
|
+
return s && C(t, e, s), s;
|
|
10
10
|
};
|
|
11
11
|
const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
12
12
|
constructor() {
|
|
@@ -37,15 +37,15 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
37
37
|
super.firstUpdated(t);
|
|
38
38
|
const e = window.CSS && window.CSS.supports;
|
|
39
39
|
this._cssMathMaxSupported = e && CSS.supports("max-width", "max(50vw)");
|
|
40
|
-
const
|
|
41
|
-
|
|
40
|
+
const o = this.ownerDocument;
|
|
41
|
+
o.adoptedStyleSheets && (this.shadowRoot.adoptedStyleSheets = [
|
|
42
42
|
...this.shadowRoot.adoptedStyleSheets,
|
|
43
|
-
...
|
|
43
|
+
...o.adoptedStyleSheets
|
|
44
44
|
]), this.addEventListener("pointerdown", (s) => {
|
|
45
45
|
if (!this.noInk && !this.showRipple) {
|
|
46
46
|
this.showRipple = !0;
|
|
47
|
-
const
|
|
48
|
-
n.style.left = `${s.clientX -
|
|
47
|
+
const i = this.getBoundingClientRect(), n = this.shadowRoot.querySelector(".ripple");
|
|
48
|
+
n.style.left = `${s.clientX - i.left}px`, n.style.top = `${s.clientY - i.top}px`, n.style.display = "", n.addEventListener(
|
|
49
49
|
"animationend",
|
|
50
50
|
() => {
|
|
51
51
|
n.style.display = "none", this.showRipple = !1;
|
|
@@ -62,8 +62,8 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
62
62
|
}
|
|
63
63
|
static get styles() {
|
|
64
64
|
return [
|
|
65
|
-
|
|
66
|
-
${
|
|
65
|
+
g`
|
|
66
|
+
${x(L)}
|
|
67
67
|
`
|
|
68
68
|
];
|
|
69
69
|
}
|
|
@@ -93,8 +93,8 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
93
93
|
this.dispatchEvent(new CustomEvent("selection", { detail: { anchor: t } }));
|
|
94
94
|
}
|
|
95
95
|
isPointerAbove(t, e) {
|
|
96
|
-
const
|
|
97
|
-
return
|
|
96
|
+
const o = e.getBoundingClientRect();
|
|
97
|
+
return o.left <= t.clientX && o.right >= t.clientX && o.top <= t.clientY && o.bottom >= t.clientY;
|
|
98
98
|
}
|
|
99
99
|
showAnchors() {
|
|
100
100
|
!this.anchorsShown && this.hasAnchors && (this.root.addEventListener("pointerleave", this.handlePointerLeave), this.list || this.createList(), this.dataProvider.items = this.anchors.map((t, e) => ({
|
|
@@ -160,26 +160,26 @@ b.ID = "sd-tab";
|
|
|
160
160
|
let r = b;
|
|
161
161
|
p([
|
|
162
162
|
h({ type: String })
|
|
163
|
-
], r.prototype, "text"
|
|
163
|
+
], r.prototype, "text");
|
|
164
164
|
p([
|
|
165
165
|
h({ type: Array })
|
|
166
|
-
], r.prototype, "anchors"
|
|
166
|
+
], r.prototype, "anchors");
|
|
167
167
|
p([
|
|
168
168
|
h()
|
|
169
|
-
], r.prototype, "index"
|
|
169
|
+
], r.prototype, "index");
|
|
170
170
|
p([
|
|
171
171
|
h()
|
|
172
|
-
], r.prototype, "showCounter"
|
|
172
|
+
], r.prototype, "showCounter");
|
|
173
173
|
p([
|
|
174
174
|
h({ type: Boolean, reflect: !0, attribute: "anchors-shown" })
|
|
175
|
-
], r.prototype, "anchorsShown"
|
|
175
|
+
], r.prototype, "anchorsShown");
|
|
176
176
|
m.ensureDefined();
|
|
177
177
|
customElements.get(r.ID) || customElements.define(r.ID, r);
|
|
178
|
-
const
|
|
179
|
-
var
|
|
180
|
-
for (var s =
|
|
181
|
-
(n = c[
|
|
182
|
-
return
|
|
178
|
+
const I = ":host{display:block;outline:none;contain:content}:host([vertical]) .tab-button-container{flex-direction:column}:host([vertical]) .slider{top:0;width:2px}:host(:not([vertical])) .slider{bottom:0;height:2px}.root{display:flex;width:100%;overflow:hidden}.tab-button-container{display:flex;flex-wrap:nowrap;overflow:hidden;position:relative;flex:1 1 auto}@supports (scrollbar-width: none){:host(:not([vertical])) .tab-button-container{overflow-x:auto;scrollbar-width:none}:host(:not([vertical])) .tab-button-container::-webkit-scrollbar{display:none}}@supports selector(::-webkit-scrollbar){:host(:not([vertical])) .tab-button-container{overflow-x:auto;scrollbar-width:none}:host(:not([vertical])) .tab-button-container::-webkit-scrollbar{display:none}}:host([vertical]) .root{height:100%}:host([vertical]) .tab-button-container{overflow-y:auto;height:100%}:host([vertical]) ::slotted(*){flex-shrink:0;flex-grow:0}.slider{background-color:var(--sd-tab-bar-color, #1467ba);position:absolute;left:0}:host(:not([no-slide])) .slider,:host([no-slide=false]) .slider{transition-duration:var(--sd-tab-bar-slide-duration, .5s)}.scroll-button{cursor:pointer;padding:4px;position:relative;flex:0 0 auto;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 2px #00000024,0 1px 5px #0000001f,0 3px 1px -2px #0003}.scroll-button>svg{width:24px;height:24px;fill:var(--sd-tab-bar-color, #1467ba)}.ripple{position:absolute;left:0;top:0;background-position:center;transition:background-color .88s;opacity:.4;width:100%;height:100%;border-radius:50%}.ripple:active{background-color:var(--sd-tab-bar-color, #1467ba);background-size:100%;transition:background-color 0s}";
|
|
179
|
+
var B = Object.defineProperty, d = (c, t, e, o) => {
|
|
180
|
+
for (var s = void 0, i = c.length - 1, n; i >= 0; i--)
|
|
181
|
+
(n = c[i]) && (s = n(t, e, s) || s);
|
|
182
|
+
return s && B(t, e, s), s;
|
|
183
183
|
};
|
|
184
184
|
const v = 40, u = class u extends f {
|
|
185
185
|
constructor() {
|
|
@@ -229,17 +229,17 @@ const v = 40, u = class u extends f {
|
|
|
229
229
|
...e.adoptedStyleSheets
|
|
230
230
|
]), this.shadowRoot.querySelector("slot").addEventListener("slotchange", this.handleSlotChange), this.addEventListener("keydown", this.handleKeyDown), this.tabButtonContainer.addEventListener("wheel", (s) => {
|
|
231
231
|
if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {
|
|
232
|
-
const
|
|
232
|
+
const i = document.elementsFromPoint(s.x, s.y)[0];
|
|
233
233
|
this.tabButtonContainer.scrollLeft += s.deltaY;
|
|
234
234
|
const n = document.elementsFromPoint(s.x, s.y)[0];
|
|
235
|
-
|
|
235
|
+
i != n && (i instanceof r && i.hideAnchors(), n instanceof r && n.showAnchors()), s.preventDefault();
|
|
236
236
|
}
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
239
|
static get styles() {
|
|
240
240
|
return [
|
|
241
|
-
|
|
242
|
-
${
|
|
241
|
+
g`
|
|
242
|
+
${x(I)}
|
|
243
243
|
`
|
|
244
244
|
];
|
|
245
245
|
}
|
|
@@ -277,10 +277,10 @@ const v = 40, u = class u extends f {
|
|
|
277
277
|
updateSelectionState() {
|
|
278
278
|
this.tabElements && this.tabElements.forEach((t, e) => {
|
|
279
279
|
e === this._selectedIndex ? (t.selected = !0, this.slider && window.requestAnimationFrame(() => {
|
|
280
|
-
let
|
|
281
|
-
t.offsetParent != this._tabButtonContainer && (
|
|
282
|
-
const
|
|
283
|
-
this.vertical ? (
|
|
280
|
+
let o = t.offsetLeft, s = t.offsetTop;
|
|
281
|
+
t.offsetParent != this._tabButtonContainer && (o -= this._tabButtonContainer.offsetLeft, s -= this._tabButtonContainer.offsetTop);
|
|
282
|
+
const i = this.slider;
|
|
283
|
+
this.vertical ? (i.style.height = t.offsetHeight + "px", i.style.transform = `translateY(${s}px)`) : (i.style.width = t.offsetWidth + "px", i.style.transform = `translateX(${o}px)`);
|
|
284
284
|
})) : t.selected = !1;
|
|
285
285
|
});
|
|
286
286
|
}
|
|
@@ -304,7 +304,7 @@ const v = 40, u = class u extends f {
|
|
|
304
304
|
const t = this.tabElements[this.focusedIndex];
|
|
305
305
|
let e = t.offsetLeft;
|
|
306
306
|
t.offsetParent != this._tabButtonContainer && (e -= this._tabButtonContainer.offsetLeft);
|
|
307
|
-
const
|
|
307
|
+
const o = t.offsetWidth, s = e + o;
|
|
308
308
|
if (e > this.tabButtonContainer.scrollLeft && s < this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth)
|
|
309
309
|
return;
|
|
310
310
|
this.tabButtonContainer.scrollLeft < e ? this.tabButtonContainer.scrollLeft = s - this.tabButtonContainer.offsetWidth : this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth > s && (this.tabButtonContainer.scrollLeft = e);
|
|
@@ -339,22 +339,22 @@ u.ID = "sd-tab-bar", u.shadowRootOptions = {
|
|
|
339
339
|
let a = u;
|
|
340
340
|
d([
|
|
341
341
|
h({ type: Boolean, reflect: !0, attribute: "no-bar" })
|
|
342
|
-
], a.prototype, "noBar"
|
|
342
|
+
], a.prototype, "noBar");
|
|
343
343
|
d([
|
|
344
344
|
h({ type: Boolean, reflect: !0, attribute: "no-slide" })
|
|
345
|
-
], a.prototype, "noSlide"
|
|
345
|
+
], a.prototype, "noSlide");
|
|
346
346
|
d([
|
|
347
347
|
h({ type: Boolean, reflect: !0 })
|
|
348
|
-
], a.prototype, "vertical"
|
|
348
|
+
], a.prototype, "vertical");
|
|
349
349
|
d([
|
|
350
350
|
h({ type: Boolean, reflect: !0, attribute: "show-counter" })
|
|
351
|
-
], a.prototype, "showCounter"
|
|
351
|
+
], a.prototype, "showCounter");
|
|
352
352
|
d([
|
|
353
353
|
h()
|
|
354
|
-
], a.prototype, "showLeftScrollButton"
|
|
354
|
+
], a.prototype, "showLeftScrollButton");
|
|
355
355
|
d([
|
|
356
356
|
h()
|
|
357
|
-
], a.prototype, "showRightScrollButton"
|
|
357
|
+
], a.prototype, "showRightScrollButton");
|
|
358
358
|
customElements.get(a.ID) || customElements.define(a.ID, a);
|
|
359
359
|
export {
|
|
360
360
|
r as Tab,
|
package/dist/tab-bar.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bar.mjs","sources":["../tab.ts","../tab-bar.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { createPopper, Instance as Popper } from \"@popperjs/core\";\nimport \"@cas-smartdesign/virtual-list\";\nimport VirtualList, { ListDataProvider, SelectionType } from \"@cas-smartdesign/virtual-list\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Tab.ID]: Tab;\n }\n}\nimport style from \"./tab-style.scss?inline\";\n\nconst isIE11 = navigator.userAgent.indexOf(\"Trident\") !== -1;\n\nexport interface ISelectionEvent {\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface Tab {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Tab extends LitElement {\n public static readonly ID = \"sd-tab\";\n\n @property({ type: String })\n public text: string;\n @property({ type: Array })\n public anchors: string[];\n @property()\n public index: number;\n @property()\n public showCounter: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: \"anchors-shown\" })\n private anchorsShown: boolean;\n\n public noInk: boolean;\n public vertical: boolean;\n\n public minimumOverlayWidth = 150;\n\n private showRipple: boolean;\n private popper: Popper;\n private list: VirtualList;\n private dataProvider: ListDataProvider;\n private _cssMathMaxSupported: boolean;\n\n get selected(): boolean {\n return this.hasAttribute(\"selected\");\n }\n\n set selected(newValue: boolean) {\n if (newValue) {\n this.setAttribute(\"selected\", \"\");\n } else {\n this.removeAttribute(\"selected\");\n if (this.shadowRoot && this.showRipple) {\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n }\n }\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n const supportsCSS = window.CSS && window.CSS.supports;\n this._cssMathMaxSupported = supportsCSS && CSS.supports(\"max-width\", \"max(50vw)\");\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n this.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n if (!this.noInk && !this.showRipple) {\n this.showRipple = true;\n const rect: DOMRect = this.getBoundingClientRect();\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.left = `${event.clientX - rect.left}px`;\n rippleElement.style.top = `${event.clientY - rect.top}px`;\n rippleElement.style.display = \"\";\n rippleElement.addEventListener(\n \"animationend\",\n () => {\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n },\n { once: true },\n );\n }\n });\n this.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.list) === -1) {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n this.addEventListener(\"keydown\", this.handleKeyDown);\n if (!this.hasAttribute(\"tabindex\")) {\n this.setAttribute(\"tabindex\", \"0\");\n }\n }\n\n public disconnectedCallback(): void {\n super.disconnectedCallback();\n this.hideAnchors();\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render() {\n return html`\n <div class=\"root\" @pointerover=${this.showAnchors} @pointerdown=${this.showAnchors}>\n ${this.showCounter ? html` <span class=\"counter\">${this.index + 1}</span> ` : \"\"}\n <div class=\"text\">${this.text}</div>\n <div class=\"ripple\" style=\"display: none\"></div>\n ${this.hasAnchors\n ? html`\n <svg class=\"down-arrow\" tabindex=\"-1\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path d=\"M13 4v2l-5 5-5-5v-2l5 5z\"></path>\n </svg>\n `\n : \"\"}\n </div>\n `;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.hasAnchors) {\n const anchorTriggerKeys = this.vertical\n ? [\"Left\", \"ArrowLeft\", \"Right\", \"ArrowRight\", \"Enter\"]\n : [\"Down\", \"ArrowDown\", \"Up\", \"ArrowUp\", \"Enter\"];\n if (anchorTriggerKeys.indexOf(event.key) === -1) {\n this.hideAnchors();\n this.focus();\n } else {\n if (!this.anchorsShown) {\n this.showAnchors();\n window.requestAnimationFrame(() => {\n // IE would scroll down to bottom because the anchor list has not yet positioned there.\n this.list.focusIndex = 0;\n this.list.focus();\n\n this.updateDropdownSizes();\n });\n }\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.key === \"Enter\") {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private updateDropdownSizes(): void {\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const overlayMaxHeight = (viewportHeight - this.offsetHeight) * 0.5;\n Object.assign(this.list.style, {\n maxHeight: `${overlayMaxHeight}px`,\n minWidth: `${Math.max(this.offsetWidth, this.minimumOverlayWidth)}px`,\n maxWidth: this._cssMathMaxSupported\n ? `max(50vw, ${this.offsetWidth}px)`\n : Math.max((window.innerWidth || document.documentElement.clientWidth) / 2, this.offsetWidth) + \"px\",\n });\n }\n\n private handleListSelection = (event: CustomEvent) => {\n this.hideAnchors();\n event.stopPropagation();\n this.dispatchSelectionEvent(this.anchors[event.detail.index]);\n this.focus();\n };\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(new CustomEvent<ISelectionEvent>(\"selection\", { detail: { anchor: selectedAnchor } }));\n }\n\n private handlePointerLeave = (event: PointerEvent) => {\n if (isIE11 || (this.list && !this.list.contains(event.target as HTMLElement))) {\n window.addEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (!this.isPointerAbove(event, this) && !this.isPointerAbove(event, this.list)) {\n this.hideAnchors();\n window.removeEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private isPointerAbove(event: PointerEvent, element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.left <= event.clientX &&\n rect.right >= event.clientX &&\n rect.top <= event.clientY &&\n rect.bottom >= event.clientY\n );\n }\n\n public showAnchors() {\n if (!this.anchorsShown && this.hasAnchors) {\n this.root.addEventListener(\"pointerleave\", this.handlePointerLeave);\n if (!this.list) {\n this.createList();\n }\n this.dataProvider.items = this.anchors.map((anchor, index) => {\n return {\n caption: anchor,\n index,\n };\n });\n\n this.updateDropdownSizes();\n this.ownerDocument.body.appendChild(this.list);\n if (!this.popper) {\n this.popper = createPopper(this, this.list, {\n placement: this.vertical ? \"right-start\" : \"bottom-start\",\n modifiers: [\n {\n name: \"computeStyles\",\n options: {\n gpuAcceleration: !isIE11,\n },\n },\n {\n name: \"hide\",\n enabled: false,\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 0,\n },\n },\n {\n name: \"adjustWidthIfNeeded\",\n enabled: true,\n phase: \"read\",\n fn({ state }) {\n const list = state.elements.popper as VirtualList;\n list.increaseWidthOnNextRenderIfNeeded();\n },\n },\n ],\n });\n }\n\n window.requestAnimationFrame(() => {\n if (this.popper) {\n this.popper.update();\n }\n });\n\n this.anchorsShown = true;\n }\n }\n\n private createList(): void {\n this.list = document.createElement(VirtualList.ID) as VirtualList;\n this.dataProvider = new ListDataProvider();\n this.dataProvider.finalSizeIsKnown = true;\n this.dataProvider.connectList(this.list);\n this.list.classList.add(\"anchor-list\");\n this.list.tabIndex = 0;\n this.list.selectionType = SelectionType.TriggerOnly;\n this.list.addEventListener(\"selection\", this.handleListSelection);\n this.list.addEventListener(\"keydown\", (e) => {\n if (e.key == \"Escape\") {\n this.hideAnchors();\n this.focus();\n }\n });\n this.list.addEventListener(\"focusout\", () => {\n this.hideAnchors();\n });\n this.list.setAttribute(\"slot\", \"anchors\");\n this.list.itemHeight = 50;\n Object.assign(this.list.style, {\n zIndex: \"21000\",\n boxShadow: `rgba(0, 0, 0, 0.14) 0px 2px 2px 0px,\n rgba(0, 0, 0, 0.12) 0px 1px 5px 0px,\n rgba(0, 0, 0, 0.2) 0px 3px 1px -2px`,\n background: \"white\",\n overflowY: \"auto\",\n });\n }\n\n hideAnchors(): void {\n if (this.anchorsShown) {\n this.anchorsShown = false;\n this.root.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n if (this.list) {\n this.list.focusIndex = -1;\n this.list.parentElement.removeChild(this.list);\n }\n }\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n private get hasAnchors(): boolean {\n return !!(this.anchors && this.anchors.length);\n }\n\n private get root(): HTMLElement {\n if (this.shadowRoot) {\n return this.shadowRoot.querySelector(\".root\");\n }\n return null;\n }\n}\n\nVirtualList.ensureDefined();\nif (!customElements.get(Tab.ID)) {\n customElements.define(Tab.ID, Tab);\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport \"./tab\";\nimport Tab from \"./tab\";\nexport { default as Tab } from \"./tab\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TabBar.ID]: TabBar;\n }\n}\nimport style from \"./tab-bar-style.scss?inline\";\n\nconst SCROLL_STEP = 40;\n\nexport interface ISelectionEvent {\n selectedTab: {\n index: number;\n tabElement: Tab;\n };\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface TabBar {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class TabBar extends LitElement {\n public static readonly ID = \"sd-tab-bar\";\n\n @property({ type: Boolean, reflect: true, attribute: \"no-bar\" })\n public noBar: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"no-slide\" })\n public noSlide: boolean;\n @property({ type: Boolean, reflect: true })\n public vertical: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"show-counter\" })\n public showCounter: boolean;\n\n public tabElements: Tab[];\n\n @property()\n private showLeftScrollButton: boolean;\n @property()\n private showRightScrollButton: boolean;\n\n private _focusedIndex: number;\n private _selectedIndex: number;\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _tabButtonContainer: HTMLElement;\n\n static shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n public connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.debounce(\"update-scroll-button-visibility\", () => {\n if (this.lastKnownWidth !== this.offsetWidth) {\n this.lastKnownWidth = this.offsetWidth;\n this.updateScrollButtonVisibility();\n }\n });\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n const slot = this.shadowRoot.querySelector(\"slot\");\n slot.addEventListener(\"slotchange\", this.handleSlotChange);\n\n this.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.tabButtonContainer.addEventListener(\"wheel\", (e) => {\n if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {\n const oldTab = document.elementsFromPoint(e.x, e.y)[0];\n\n this.tabButtonContainer.scrollLeft += e.deltaY;\n\n const newTab = document.elementsFromPoint(e.x, e.y)[0];\n\n if (oldTab != newTab) {\n if (oldTab instanceof Tab) {\n oldTab.hideAnchors();\n }\n if (newTab instanceof Tab) {\n newTab.showAnchors();\n }\n }\n\n e.preventDefault();\n }\n });\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n // prettier-ignore\n public render() {\n return html`\n <div class=\"root\">\n ${!this.vertical && this.showLeftScrollButton ? html`\n <div class=\"scroll-button left\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft -= SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path></g></svg>\n </div>` : \"\"}\n <div class=\"tab-button-container\" @scroll=\"${this.updateScrollButtonVisibility}\">\n <slot></slot>\n ${this.noBar ? \"\" : html` <div class=\"slider\"></div>`}\n </div>\n ${!this.vertical && this.showRightScrollButton ? html`\n <div class=\"scroll-button right\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft += SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path></g></svg>\n </div>` : \"\"}\n </div>\n `;\n }\n\n public set selectedIndex(newValue: number) {\n if (this._selectedIndex !== newValue) {\n this.focusedIndex = newValue;\n this._selectedIndex = newValue;\n this.updateSelectionState();\n }\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n private updateSelectionState(): void {\n if (this.tabElements) {\n this.tabElements.forEach((node: HTMLElement, ind: number) => {\n if (ind === this._selectedIndex) {\n (node as Tab).selected = true;\n if (this.slider) {\n window.requestAnimationFrame(() => {\n let offsetLeft = node.offsetLeft;\n let offsetTop = node.offsetTop;\n\n if (node.offsetParent != this._tabButtonContainer) {\n offsetLeft -= this._tabButtonContainer.offsetLeft;\n offsetTop -= this._tabButtonContainer.offsetTop;\n }\n\n const slider = this.slider;\n if (this.vertical) {\n slider.style.height = node.offsetHeight + \"px\";\n slider.style.transform = `translateY(${offsetTop}px)`;\n } else {\n slider.style.width = node.offsetWidth + \"px\";\n slider.style.transform = `translateX(${offsetLeft}px)`;\n }\n });\n }\n } else {\n (node as Tab).selected = false;\n }\n });\n }\n }\n\n public set focusedIndex(newValue: number) {\n if (this._focusedIndex !== newValue) {\n this._focusedIndex = newValue;\n this.updateFocusedState();\n }\n }\n\n public get focusedIndex(): number {\n return this._focusedIndex;\n }\n\n private updateFocusedState() {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n this.scrollToFocusedIfNeeded();\n this.tabElements[this.focusedIndex].focus();\n }\n }\n\n private get slider(): HTMLElement {\n return this.shadowRoot.querySelector(\".slider\");\n }\n\n private get tabButtonContainer(): HTMLElement {\n if (!this._tabButtonContainer) {\n this._tabButtonContainer = this.shadowRoot.querySelector(\".tab-button-container\");\n }\n return this._tabButtonContainer;\n }\n\n private scrollToFocusedIfNeeded(): void {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n const selectedNode = this.tabElements[this.focusedIndex] as HTMLElement;\n let nodeLeft: number = selectedNode.offsetLeft;\n if (selectedNode.offsetParent != this._tabButtonContainer) {\n nodeLeft -= this._tabButtonContainer.offsetLeft;\n }\n const nodeWidth: number = selectedNode.offsetWidth;\n const nodeRight: number = nodeLeft + nodeWidth;\n if (\n nodeLeft > this.tabButtonContainer.scrollLeft &&\n nodeRight < this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth\n ) {\n return;\n }\n if (this.tabButtonContainer.scrollLeft < nodeLeft) {\n this.tabButtonContainer.scrollLeft = nodeRight - this.tabButtonContainer.offsetWidth;\n } else if (this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth > nodeRight) {\n this.tabButtonContainer.scrollLeft = nodeLeft;\n }\n }\n }\n\n private handleSlotChange = () => {\n this.tabElements = this.shadowRoot\n .querySelector(\"slot\")\n .assignedNodes()\n .filter((node) => node instanceof Tab) as Tab[];\n let index = 0;\n this.tabElements.forEach((tab) => {\n tab.vertical = this.vertical;\n tab.showCounter = this.showCounter;\n tab.index = index++;\n tab.addEventListener(\"focus\", this.handleTabFocus);\n tab.addEventListener(\"selection\", this.handleTabSelection);\n });\n this.updateScrollButtonVisibility();\n if (this.selectedIndex == null) {\n this._focusedIndex = 0;\n this._selectedIndex = 0;\n }\n this.updateSelectionState();\n };\n\n private handleTabFocus = (event: FocusEvent) => {\n const index = (event.target as Tab).index;\n if (this.focusedIndex !== index) {\n this._focusedIndex = index;\n this.scrollToFocusedIfNeeded();\n }\n };\n\n private handleTabSelection = (event: CustomEvent) => {\n this.selectedIndex = (event.target as Tab).index;\n this.dispatchSelectionEvent(event.detail.anchor);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"Up\":\n case \"ArrowUp\":\n case \"Left\":\n case \"ArrowLeft\":\n event.preventDefault();\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n break;\n case \"Down\":\n case \"ArrowDown\":\n case \"Right\":\n case \"ArrowRight\":\n event.preventDefault();\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.tabElements.length - 1);\n break;\n }\n };\n\n private updateScrollButtonVisibility(): void {\n this.showLeftScrollButton = this.tabButtonContainer.scrollLeft !== 0;\n this.showRightScrollButton =\n this.tabButtonContainer.scrollLeft <\n this.tabButtonContainer.scrollWidth - this.tabButtonContainer.offsetWidth;\n }\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"selection\", {\n detail: {\n selectedTab: {\n index: this.selectedIndex,\n tabElement: this.tabElements[this.selectedIndex],\n },\n anchor: selectedAnchor,\n },\n }),\n );\n }\n\n private debounced = {};\n private debounce(id: string, actor: () => void) {\n if (this.debounced[id]) {\n return;\n }\n this.debounced[id] = true;\n requestAnimationFrame(() => {\n delete this.debounced[id];\n actor();\n });\n }\n}\n\nif (!customElements.get(TabBar.ID)) {\n customElements.define(TabBar.ID, TabBar);\n}\n"],"names":["isIE11","_Tab","LitElement","event","newValue","rippleElement","changedProperties","supportsCSS","ownerDocument","rect","css","unsafeCSS","style","html","overlayMaxHeight","selectedAnchor","element","anchor","index","createPopper","state","VirtualList","ListDataProvider","SelectionType","e","Tab","__decorateClass","property","SCROLL_STEP","_TabBar","node","tab","oldTab","newTab","ind","offsetLeft","offsetTop","slider","selectedNode","nodeLeft","nodeWidth","nodeRight","id","actor","TabBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab-bar.mjs","sources":["../tab.ts","../tab-bar.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { createPopper, Instance as Popper } from \"@popperjs/core\";\nimport \"@cas-smartdesign/virtual-list\";\nimport VirtualList, { ListDataProvider, SelectionType } from \"@cas-smartdesign/virtual-list\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Tab.ID]: Tab;\n }\n}\nimport style from \"./tab-style.scss?inline\";\n\nconst isIE11 = navigator.userAgent.indexOf(\"Trident\") !== -1;\n\nexport interface ISelectionEvent {\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface Tab {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Tab extends LitElement {\n public static readonly ID = \"sd-tab\";\n\n @property({ type: String })\n public text: string;\n @property({ type: Array })\n public anchors: string[];\n @property()\n public index: number;\n @property()\n public showCounter: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: \"anchors-shown\" })\n private anchorsShown: boolean;\n\n public noInk: boolean;\n public vertical: boolean;\n\n public minimumOverlayWidth = 150;\n\n private showRipple: boolean;\n private popper: Popper;\n private list: VirtualList;\n private dataProvider: ListDataProvider;\n private _cssMathMaxSupported: boolean;\n\n get selected(): boolean {\n return this.hasAttribute(\"selected\");\n }\n\n set selected(newValue: boolean) {\n if (newValue) {\n this.setAttribute(\"selected\", \"\");\n } else {\n this.removeAttribute(\"selected\");\n if (this.shadowRoot && this.showRipple) {\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n }\n }\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n const supportsCSS = window.CSS && window.CSS.supports;\n this._cssMathMaxSupported = supportsCSS && CSS.supports(\"max-width\", \"max(50vw)\");\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n this.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n if (!this.noInk && !this.showRipple) {\n this.showRipple = true;\n const rect: DOMRect = this.getBoundingClientRect();\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.left = `${event.clientX - rect.left}px`;\n rippleElement.style.top = `${event.clientY - rect.top}px`;\n rippleElement.style.display = \"\";\n rippleElement.addEventListener(\n \"animationend\",\n () => {\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n },\n { once: true },\n );\n }\n });\n this.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.list) === -1) {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n this.addEventListener(\"keydown\", this.handleKeyDown);\n if (!this.hasAttribute(\"tabindex\")) {\n this.setAttribute(\"tabindex\", \"0\");\n }\n }\n\n public disconnectedCallback(): void {\n super.disconnectedCallback();\n this.hideAnchors();\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render() {\n return html`\n <div class=\"root\" @pointerover=${this.showAnchors} @pointerdown=${this.showAnchors}>\n ${this.showCounter ? html` <span class=\"counter\">${this.index + 1}</span> ` : \"\"}\n <div class=\"text\">${this.text}</div>\n <div class=\"ripple\" style=\"display: none\"></div>\n ${this.hasAnchors\n ? html`\n <svg class=\"down-arrow\" tabindex=\"-1\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path d=\"M13 4v2l-5 5-5-5v-2l5 5z\"></path>\n </svg>\n `\n : \"\"}\n </div>\n `;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.hasAnchors) {\n const anchorTriggerKeys = this.vertical\n ? [\"Left\", \"ArrowLeft\", \"Right\", \"ArrowRight\", \"Enter\"]\n : [\"Down\", \"ArrowDown\", \"Up\", \"ArrowUp\", \"Enter\"];\n if (anchorTriggerKeys.indexOf(event.key) === -1) {\n this.hideAnchors();\n this.focus();\n } else {\n if (!this.anchorsShown) {\n this.showAnchors();\n window.requestAnimationFrame(() => {\n // IE would scroll down to bottom because the anchor list has not yet positioned there.\n this.list.focusIndex = 0;\n this.list.focus();\n\n this.updateDropdownSizes();\n });\n }\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.key === \"Enter\") {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private updateDropdownSizes(): void {\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const overlayMaxHeight = (viewportHeight - this.offsetHeight) * 0.5;\n Object.assign(this.list.style, {\n maxHeight: `${overlayMaxHeight}px`,\n minWidth: `${Math.max(this.offsetWidth, this.minimumOverlayWidth)}px`,\n maxWidth: this._cssMathMaxSupported\n ? `max(50vw, ${this.offsetWidth}px)`\n : Math.max((window.innerWidth || document.documentElement.clientWidth) / 2, this.offsetWidth) + \"px\",\n });\n }\n\n private handleListSelection = (event: CustomEvent) => {\n this.hideAnchors();\n event.stopPropagation();\n this.dispatchSelectionEvent(this.anchors[event.detail.index]);\n this.focus();\n };\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(new CustomEvent<ISelectionEvent>(\"selection\", { detail: { anchor: selectedAnchor } }));\n }\n\n private handlePointerLeave = (event: PointerEvent) => {\n if (isIE11 || (this.list && !this.list.contains(event.target as HTMLElement))) {\n window.addEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (!this.isPointerAbove(event, this) && !this.isPointerAbove(event, this.list)) {\n this.hideAnchors();\n window.removeEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private isPointerAbove(event: PointerEvent, element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.left <= event.clientX &&\n rect.right >= event.clientX &&\n rect.top <= event.clientY &&\n rect.bottom >= event.clientY\n );\n }\n\n public showAnchors() {\n if (!this.anchorsShown && this.hasAnchors) {\n this.root.addEventListener(\"pointerleave\", this.handlePointerLeave);\n if (!this.list) {\n this.createList();\n }\n this.dataProvider.items = this.anchors.map((anchor, index) => {\n return {\n caption: anchor,\n index,\n };\n });\n\n this.updateDropdownSizes();\n this.ownerDocument.body.appendChild(this.list);\n if (!this.popper) {\n this.popper = createPopper(this, this.list, {\n placement: this.vertical ? \"right-start\" : \"bottom-start\",\n modifiers: [\n {\n name: \"computeStyles\",\n options: {\n gpuAcceleration: !isIE11,\n },\n },\n {\n name: \"hide\",\n enabled: false,\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 0,\n },\n },\n {\n name: \"adjustWidthIfNeeded\",\n enabled: true,\n phase: \"read\",\n fn({ state }) {\n const list = state.elements.popper as VirtualList;\n list.increaseWidthOnNextRenderIfNeeded();\n },\n },\n ],\n });\n }\n\n window.requestAnimationFrame(() => {\n if (this.popper) {\n this.popper.update();\n }\n });\n\n this.anchorsShown = true;\n }\n }\n\n private createList(): void {\n this.list = document.createElement(VirtualList.ID) as VirtualList;\n this.dataProvider = new ListDataProvider();\n this.dataProvider.finalSizeIsKnown = true;\n this.dataProvider.connectList(this.list);\n this.list.classList.add(\"anchor-list\");\n this.list.tabIndex = 0;\n this.list.selectionType = SelectionType.TriggerOnly;\n this.list.addEventListener(\"selection\", this.handleListSelection);\n this.list.addEventListener(\"keydown\", (e) => {\n if (e.key == \"Escape\") {\n this.hideAnchors();\n this.focus();\n }\n });\n this.list.addEventListener(\"focusout\", () => {\n this.hideAnchors();\n });\n this.list.setAttribute(\"slot\", \"anchors\");\n this.list.itemHeight = 50;\n Object.assign(this.list.style, {\n zIndex: \"21000\",\n boxShadow: `rgba(0, 0, 0, 0.14) 0px 2px 2px 0px,\n rgba(0, 0, 0, 0.12) 0px 1px 5px 0px,\n rgba(0, 0, 0, 0.2) 0px 3px 1px -2px`,\n background: \"white\",\n overflowY: \"auto\",\n });\n }\n\n hideAnchors(): void {\n if (this.anchorsShown) {\n this.anchorsShown = false;\n this.root.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n if (this.list) {\n this.list.focusIndex = -1;\n this.list.parentElement.removeChild(this.list);\n }\n }\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n private get hasAnchors(): boolean {\n return !!(this.anchors && this.anchors.length);\n }\n\n private get root(): HTMLElement {\n if (this.shadowRoot) {\n return this.shadowRoot.querySelector(\".root\");\n }\n return null;\n }\n}\n\nVirtualList.ensureDefined();\nif (!customElements.get(Tab.ID)) {\n customElements.define(Tab.ID, Tab);\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport \"./tab\";\nimport Tab from \"./tab\";\nexport { default as Tab } from \"./tab\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TabBar.ID]: TabBar;\n }\n}\nimport style from \"./tab-bar-style.scss?inline\";\n\nconst SCROLL_STEP = 40;\n\nexport interface ISelectionEvent {\n selectedTab: {\n index: number;\n tabElement: Tab;\n };\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface TabBar {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class TabBar extends LitElement {\n public static readonly ID = \"sd-tab-bar\";\n\n @property({ type: Boolean, reflect: true, attribute: \"no-bar\" })\n public noBar: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"no-slide\" })\n public noSlide: boolean;\n @property({ type: Boolean, reflect: true })\n public vertical: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"show-counter\" })\n public showCounter: boolean;\n\n public tabElements: Tab[];\n\n @property()\n private showLeftScrollButton: boolean;\n @property()\n private showRightScrollButton: boolean;\n\n private _focusedIndex: number;\n private _selectedIndex: number;\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _tabButtonContainer: HTMLElement;\n\n static shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n public connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.debounce(\"update-scroll-button-visibility\", () => {\n if (this.lastKnownWidth !== this.offsetWidth) {\n this.lastKnownWidth = this.offsetWidth;\n this.updateScrollButtonVisibility();\n }\n });\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n const slot = this.shadowRoot.querySelector(\"slot\");\n slot.addEventListener(\"slotchange\", this.handleSlotChange);\n\n this.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.tabButtonContainer.addEventListener(\"wheel\", (e) => {\n if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {\n const oldTab = document.elementsFromPoint(e.x, e.y)[0];\n\n this.tabButtonContainer.scrollLeft += e.deltaY;\n\n const newTab = document.elementsFromPoint(e.x, e.y)[0];\n\n if (oldTab != newTab) {\n if (oldTab instanceof Tab) {\n oldTab.hideAnchors();\n }\n if (newTab instanceof Tab) {\n newTab.showAnchors();\n }\n }\n\n e.preventDefault();\n }\n });\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n // prettier-ignore\n public render() {\n return html`\n <div class=\"root\">\n ${!this.vertical && this.showLeftScrollButton ? html`\n <div class=\"scroll-button left\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft -= SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path></g></svg>\n </div>` : \"\"}\n <div class=\"tab-button-container\" @scroll=\"${this.updateScrollButtonVisibility}\">\n <slot></slot>\n ${this.noBar ? \"\" : html` <div class=\"slider\"></div>`}\n </div>\n ${!this.vertical && this.showRightScrollButton ? html`\n <div class=\"scroll-button right\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft += SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path></g></svg>\n </div>` : \"\"}\n </div>\n `;\n }\n\n public set selectedIndex(newValue: number) {\n if (this._selectedIndex !== newValue) {\n this.focusedIndex = newValue;\n this._selectedIndex = newValue;\n this.updateSelectionState();\n }\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n private updateSelectionState(): void {\n if (this.tabElements) {\n this.tabElements.forEach((node: HTMLElement, ind: number) => {\n if (ind === this._selectedIndex) {\n (node as Tab).selected = true;\n if (this.slider) {\n window.requestAnimationFrame(() => {\n let offsetLeft = node.offsetLeft;\n let offsetTop = node.offsetTop;\n\n if (node.offsetParent != this._tabButtonContainer) {\n offsetLeft -= this._tabButtonContainer.offsetLeft;\n offsetTop -= this._tabButtonContainer.offsetTop;\n }\n\n const slider = this.slider;\n if (this.vertical) {\n slider.style.height = node.offsetHeight + \"px\";\n slider.style.transform = `translateY(${offsetTop}px)`;\n } else {\n slider.style.width = node.offsetWidth + \"px\";\n slider.style.transform = `translateX(${offsetLeft}px)`;\n }\n });\n }\n } else {\n (node as Tab).selected = false;\n }\n });\n }\n }\n\n public set focusedIndex(newValue: number) {\n if (this._focusedIndex !== newValue) {\n this._focusedIndex = newValue;\n this.updateFocusedState();\n }\n }\n\n public get focusedIndex(): number {\n return this._focusedIndex;\n }\n\n private updateFocusedState() {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n this.scrollToFocusedIfNeeded();\n this.tabElements[this.focusedIndex].focus();\n }\n }\n\n private get slider(): HTMLElement {\n return this.shadowRoot.querySelector(\".slider\");\n }\n\n private get tabButtonContainer(): HTMLElement {\n if (!this._tabButtonContainer) {\n this._tabButtonContainer = this.shadowRoot.querySelector(\".tab-button-container\");\n }\n return this._tabButtonContainer;\n }\n\n private scrollToFocusedIfNeeded(): void {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n const selectedNode = this.tabElements[this.focusedIndex] as HTMLElement;\n let nodeLeft: number = selectedNode.offsetLeft;\n if (selectedNode.offsetParent != this._tabButtonContainer) {\n nodeLeft -= this._tabButtonContainer.offsetLeft;\n }\n const nodeWidth: number = selectedNode.offsetWidth;\n const nodeRight: number = nodeLeft + nodeWidth;\n if (\n nodeLeft > this.tabButtonContainer.scrollLeft &&\n nodeRight < this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth\n ) {\n return;\n }\n if (this.tabButtonContainer.scrollLeft < nodeLeft) {\n this.tabButtonContainer.scrollLeft = nodeRight - this.tabButtonContainer.offsetWidth;\n } else if (this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth > nodeRight) {\n this.tabButtonContainer.scrollLeft = nodeLeft;\n }\n }\n }\n\n private handleSlotChange = () => {\n this.tabElements = this.shadowRoot\n .querySelector(\"slot\")\n .assignedNodes()\n .filter((node) => node instanceof Tab) as Tab[];\n let index = 0;\n this.tabElements.forEach((tab) => {\n tab.vertical = this.vertical;\n tab.showCounter = this.showCounter;\n tab.index = index++;\n tab.addEventListener(\"focus\", this.handleTabFocus);\n tab.addEventListener(\"selection\", this.handleTabSelection);\n });\n this.updateScrollButtonVisibility();\n if (this.selectedIndex == null) {\n this._focusedIndex = 0;\n this._selectedIndex = 0;\n }\n this.updateSelectionState();\n };\n\n private handleTabFocus = (event: FocusEvent) => {\n const index = (event.target as Tab).index;\n if (this.focusedIndex !== index) {\n this._focusedIndex = index;\n this.scrollToFocusedIfNeeded();\n }\n };\n\n private handleTabSelection = (event: CustomEvent) => {\n this.selectedIndex = (event.target as Tab).index;\n this.dispatchSelectionEvent(event.detail.anchor);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"Up\":\n case \"ArrowUp\":\n case \"Left\":\n case \"ArrowLeft\":\n event.preventDefault();\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n break;\n case \"Down\":\n case \"ArrowDown\":\n case \"Right\":\n case \"ArrowRight\":\n event.preventDefault();\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.tabElements.length - 1);\n break;\n }\n };\n\n private updateScrollButtonVisibility(): void {\n this.showLeftScrollButton = this.tabButtonContainer.scrollLeft !== 0;\n this.showRightScrollButton =\n this.tabButtonContainer.scrollLeft <\n this.tabButtonContainer.scrollWidth - this.tabButtonContainer.offsetWidth;\n }\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"selection\", {\n detail: {\n selectedTab: {\n index: this.selectedIndex,\n tabElement: this.tabElements[this.selectedIndex],\n },\n anchor: selectedAnchor,\n },\n }),\n );\n }\n\n private debounced = {};\n private debounce(id: string, actor: () => void) {\n if (this.debounced[id]) {\n return;\n }\n this.debounced[id] = true;\n requestAnimationFrame(() => {\n delete this.debounced[id];\n actor();\n });\n }\n}\n\nif (!customElements.get(TabBar.ID)) {\n customElements.define(TabBar.ID, TabBar);\n}\n"],"names":["isIE11","_Tab","LitElement","event","newValue","rippleElement","changedProperties","supportsCSS","ownerDocument","rect","css","unsafeCSS","style","html","overlayMaxHeight","selectedAnchor","element","anchor","index","createPopper","state","VirtualList","ListDataProvider","SelectionType","e","Tab","__decorateClass","property","SCROLL_STEP","_TabBar","node","tab","oldTab","newTab","ind","offsetLeft","offsetTop","slider","selectedNode","nodeLeft","nodeWidth","nodeRight","id","actor","TabBar"],"mappings":"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"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"@cypress/vite-dev-server@
|
|
2
|
+
"@cypress/vite-dev-server@7.0.0": {
|
|
3
3
|
"licenses": "MIT",
|
|
4
4
|
"repository": "https://github.com/cypress-io/cypress",
|
|
5
5
|
"licenseUrl": "https://github.com/cypress-io/cypress/tree/develop/npm/vite-dev-server#readme"
|
|
6
6
|
},
|
|
7
|
+
"@eslint/js@9.34.0": {
|
|
8
|
+
"licenses": "MIT",
|
|
9
|
+
"repository": "https://github.com/eslint/eslint",
|
|
10
|
+
"licenseUrl": "https://github.com/eslint/eslint/raw/HEAD/LICENSE"
|
|
11
|
+
},
|
|
7
12
|
"@popperjs/core@2.11.8": {
|
|
8
13
|
"licenses": "MIT",
|
|
9
14
|
"repository": "https://github.com/popperjs/popper-core",
|
|
10
15
|
"licenseUrl": "https://github.com/popperjs/popper-core/raw/HEAD/LICENSE.md"
|
|
11
16
|
},
|
|
12
|
-
"@rollup/plugin-node-resolve@
|
|
17
|
+
"@rollup/plugin-node-resolve@16.0.1": {
|
|
13
18
|
"licenses": "MIT",
|
|
14
19
|
"repository": "https://github.com/rollup/plugins",
|
|
15
20
|
"licenseUrl": "https://github.com/rollup/plugins/raw/HEAD/LICENSE"
|
|
16
21
|
},
|
|
17
|
-
"@types/node@
|
|
22
|
+
"@types/node@24.3.0": {
|
|
18
23
|
"licenses": "MIT",
|
|
19
24
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
20
25
|
"licenseUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped/raw/HEAD/LICENSE"
|
|
@@ -24,47 +29,47 @@
|
|
|
24
29
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
25
30
|
"licenseUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped/raw/HEAD/LICENSE"
|
|
26
31
|
},
|
|
27
|
-
"@typescript-eslint/eslint-plugin@
|
|
32
|
+
"@typescript-eslint/eslint-plugin@8.41.0": {
|
|
28
33
|
"licenses": "MIT",
|
|
29
34
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
30
35
|
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
31
36
|
},
|
|
32
|
-
"@typescript-eslint/parser@
|
|
33
|
-
"licenses": "
|
|
37
|
+
"@typescript-eslint/parser@8.41.0": {
|
|
38
|
+
"licenses": "MIT",
|
|
34
39
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
35
40
|
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
36
41
|
},
|
|
37
|
-
"@vitest/coverage-v8@
|
|
42
|
+
"@vitest/coverage-v8@3.2.4": {
|
|
38
43
|
"licenses": "MIT",
|
|
39
44
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
40
45
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE"
|
|
41
46
|
},
|
|
42
|
-
"@vitest/ui@
|
|
47
|
+
"@vitest/ui@3.2.4": {
|
|
43
48
|
"licenses": "MIT",
|
|
44
49
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
45
50
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE"
|
|
46
51
|
},
|
|
47
|
-
"axe-core@4.
|
|
52
|
+
"axe-core@4.10.3": {
|
|
48
53
|
"licenses": "MPL-2.0",
|
|
49
54
|
"repository": "https://github.com/dequelabs/axe-core",
|
|
50
55
|
"licenseUrl": "https://github.com/dequelabs/axe-core/raw/HEAD/LICENSE"
|
|
51
56
|
},
|
|
52
|
-
"cypress-axe@1.
|
|
57
|
+
"cypress-axe@1.7.0": {
|
|
53
58
|
"licenses": "MIT",
|
|
54
59
|
"repository": "https://github.com/component-driven/cypress-axe",
|
|
55
60
|
"licenseUrl": "https://github.com/component-driven/cypress-axe/raw/HEAD/License.md"
|
|
56
61
|
},
|
|
57
|
-
"cypress
|
|
58
|
-
"licenses": "MIT",
|
|
59
|
-
"repository": "https://github.com/dmtrKovalenko/cypress-real-events",
|
|
60
|
-
"licenseUrl": "https://github.com/dmtrKovalenko/cypress-real-events"
|
|
61
|
-
},
|
|
62
|
-
"cypress@13.6.2": {
|
|
62
|
+
"cypress@15.0.0": {
|
|
63
63
|
"licenses": "MIT",
|
|
64
64
|
"repository": "https://github.com/cypress-io/cypress",
|
|
65
65
|
"licenseUrl": "https://cypress.io"
|
|
66
66
|
},
|
|
67
|
-
"
|
|
67
|
+
"d3-color@3.1.0": {
|
|
68
|
+
"licenses": "ISC",
|
|
69
|
+
"repository": "https://github.com/d3/d3-color",
|
|
70
|
+
"licenseUrl": "https://github.com/d3/d3-color/raw/HEAD/LICENSE"
|
|
71
|
+
},
|
|
72
|
+
"esbuild@0.25.9": {
|
|
68
73
|
"licenses": "MIT",
|
|
69
74
|
"repository": "https://github.com/evanw/esbuild",
|
|
70
75
|
"licenseUrl": "https://github.com/evanw/esbuild/raw/HEAD/LICENSE.md"
|
|
@@ -74,57 +79,62 @@
|
|
|
74
79
|
"repository": "https://github.com/google/eslint-config-google",
|
|
75
80
|
"licenseUrl": "https://github.com/google/eslint-config-google/raw/HEAD/LICENSE"
|
|
76
81
|
},
|
|
77
|
-
"eslint-config-prettier@
|
|
82
|
+
"eslint-config-prettier@10.1.8": {
|
|
78
83
|
"licenses": "MIT",
|
|
79
84
|
"repository": "https://github.com/prettier/eslint-config-prettier",
|
|
80
85
|
"licenseUrl": "https://github.com/prettier/eslint-config-prettier/raw/HEAD/LICENSE"
|
|
81
86
|
},
|
|
82
|
-
"eslint@
|
|
87
|
+
"eslint@9.34.0": {
|
|
83
88
|
"licenses": "MIT",
|
|
84
89
|
"repository": "https://github.com/eslint/eslint",
|
|
85
90
|
"licenseUrl": "https://github.com/eslint/eslint/raw/HEAD/LICENSE"
|
|
86
91
|
},
|
|
87
|
-
"github-markdown-css@5.
|
|
92
|
+
"github-markdown-css@5.8.1": {
|
|
88
93
|
"licenses": "MIT",
|
|
89
94
|
"repository": "https://github.com/sindresorhus/github-markdown-css",
|
|
90
95
|
"licenseUrl": "https://github.com/sindresorhus/github-markdown-css/raw/HEAD/license"
|
|
91
96
|
},
|
|
92
|
-
"highlight.js@11.
|
|
97
|
+
"highlight.js@11.11.1": {
|
|
93
98
|
"licenses": "BSD-3-Clause",
|
|
94
99
|
"repository": "https://github.com/highlightjs/highlight.js",
|
|
95
100
|
"licenseUrl": "https://github.com/highlightjs/highlight.js/raw/HEAD/LICENSE"
|
|
96
101
|
},
|
|
97
|
-
"junit-report-builder@
|
|
102
|
+
"junit-report-builder@5.1.1": {
|
|
98
103
|
"licenses": "MIT",
|
|
99
104
|
"repository": "https://github.com/davidparsson/junit-report-builder",
|
|
100
105
|
"licenseUrl": "https://github.com/davidparsson/junit-report-builder/raw/HEAD/LICENSE"
|
|
101
106
|
},
|
|
102
|
-
"lint-staged@
|
|
107
|
+
"lint-staged@16.1.5": {
|
|
103
108
|
"licenses": "MIT",
|
|
104
|
-
"repository": "https://github.com/
|
|
105
|
-
"licenseUrl": "https://github.com/
|
|
109
|
+
"repository": "https://github.com/lint-staged/lint-staged",
|
|
110
|
+
"licenseUrl": "https://github.com/lint-staged/lint-staged/raw/HEAD/LICENSE"
|
|
111
|
+
},
|
|
112
|
+
"lit-html@3.3.1": {
|
|
113
|
+
"licenses": "BSD-3-Clause",
|
|
114
|
+
"repository": "https://github.com/lit/lit",
|
|
115
|
+
"licenseUrl": "https://github.com/lit/lit/raw/HEAD/LICENSE"
|
|
106
116
|
},
|
|
107
|
-
"lit@
|
|
117
|
+
"lit@3.3.1": {
|
|
108
118
|
"licenses": "BSD-3-Clause",
|
|
109
119
|
"repository": "https://github.com/lit/lit",
|
|
110
120
|
"licenseUrl": "https://github.com/lit/lit/raw/HEAD/LICENSE"
|
|
111
121
|
},
|
|
112
|
-
"marked@
|
|
122
|
+
"marked@16.2.1": {
|
|
113
123
|
"licenses": "MIT",
|
|
114
124
|
"repository": "https://github.com/markedjs/marked",
|
|
115
125
|
"licenseUrl": "https://github.com/markedjs/marked/raw/HEAD/LICENSE.md"
|
|
116
126
|
},
|
|
117
|
-
"postcss-prefix-selector@1.
|
|
127
|
+
"postcss-prefix-selector@2.1.1": {
|
|
118
128
|
"licenses": "MIT",
|
|
119
129
|
"repository": "https://github.com/RadValentin/postcss-prefix-selector",
|
|
120
130
|
"licenseUrl": "https://github.com/RadValentin/postcss-prefix-selector/raw/HEAD/LICENSE"
|
|
121
131
|
},
|
|
122
|
-
"postcss@8.
|
|
132
|
+
"postcss@8.5.6": {
|
|
123
133
|
"licenses": "MIT",
|
|
124
134
|
"repository": "https://github.com/postcss/postcss",
|
|
125
135
|
"licenseUrl": "https://github.com/postcss/postcss/raw/HEAD/LICENSE"
|
|
126
136
|
},
|
|
127
|
-
"prettier@3.
|
|
137
|
+
"prettier@3.6.2": {
|
|
128
138
|
"licenses": "MIT",
|
|
129
139
|
"repository": "https://github.com/prettier/prettier",
|
|
130
140
|
"licenseUrl": "https://github.com/prettier/prettier/raw/HEAD/LICENSE"
|
|
@@ -134,62 +144,67 @@
|
|
|
134
144
|
"repository": "https://github.com/sindresorhus/resolve-pkg",
|
|
135
145
|
"licenseUrl": "https://github.com/sindresorhus/resolve-pkg/raw/HEAD/license"
|
|
136
146
|
},
|
|
137
|
-
"sass@1.
|
|
147
|
+
"sass@1.91.0": {
|
|
138
148
|
"licenses": "MIT",
|
|
139
149
|
"repository": "https://github.com/sass/dart-sass",
|
|
140
150
|
"licenseUrl": "https://github.com/sass/dart-sass/raw/HEAD/LICENSE"
|
|
141
151
|
},
|
|
142
|
-
"stylelint-config-recommended-scss@
|
|
152
|
+
"stylelint-config-recommended-scss@16.0.0": {
|
|
143
153
|
"licenses": "MIT",
|
|
144
154
|
"repository": "https://github.com/stylelint-scss/stylelint-config-recommended-scss",
|
|
145
155
|
"licenseUrl": "https://github.com/stylelint-scss/stylelint-config-recommended-scss/raw/HEAD/LICENSE"
|
|
146
156
|
},
|
|
147
|
-
"stylelint-config-standard@
|
|
157
|
+
"stylelint-config-standard@39.0.0": {
|
|
148
158
|
"licenses": "MIT",
|
|
149
159
|
"repository": "https://github.com/stylelint/stylelint-config-standard",
|
|
150
160
|
"licenseUrl": "https://github.com/stylelint/stylelint-config-standard/raw/HEAD/LICENSE"
|
|
151
161
|
},
|
|
152
|
-
"stylelint-scss@6.
|
|
162
|
+
"stylelint-scss@6.12.1": {
|
|
153
163
|
"licenses": "MIT",
|
|
154
164
|
"repository": "https://github.com/stylelint-scss/stylelint-scss",
|
|
155
165
|
"licenseUrl": "https://github.com/stylelint-scss/stylelint-scss/raw/HEAD/LICENSE"
|
|
156
166
|
},
|
|
157
|
-
"stylelint@16.1
|
|
167
|
+
"stylelint@16.23.1": {
|
|
158
168
|
"licenses": "MIT",
|
|
159
169
|
"repository": "https://github.com/stylelint/stylelint",
|
|
160
170
|
"licenseUrl": "https://github.com/stylelint/stylelint/raw/HEAD/LICENSE"
|
|
161
171
|
},
|
|
162
|
-
"tsup@8.0
|
|
172
|
+
"tsup@8.5.0": {
|
|
163
173
|
"licenses": "MIT",
|
|
164
174
|
"repository": "https://github.com/egoist/tsup",
|
|
165
175
|
"licenseUrl": "https://github.com/egoist/tsup/raw/HEAD/LICENSE"
|
|
166
176
|
},
|
|
167
|
-
"turbo@
|
|
168
|
-
"licenses": "
|
|
169
|
-
"repository": "https://github.com/vercel/
|
|
170
|
-
"licenseUrl": "https://github.com/vercel/
|
|
177
|
+
"turbo@2.5.6": {
|
|
178
|
+
"licenses": "MIT",
|
|
179
|
+
"repository": "https://github.com/vercel/turborepo",
|
|
180
|
+
"licenseUrl": "https://github.com/vercel/turborepo/raw/HEAD/LICENSE"
|
|
181
|
+
},
|
|
182
|
+
"typescript-eslint@8.41.0": {
|
|
183
|
+
"licenses": "MIT",
|
|
184
|
+
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
185
|
+
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
171
186
|
},
|
|
172
|
-
"typescript@5.
|
|
187
|
+
"typescript@5.9.2": {
|
|
173
188
|
"licenses": "Apache-2.0",
|
|
174
|
-
"repository": "https://github.com/
|
|
175
|
-
"licenseUrl": "https://github.com/
|
|
189
|
+
"repository": "https://github.com/microsoft/TypeScript",
|
|
190
|
+
"licenseUrl": "https://github.com/microsoft/TypeScript/raw/HEAD/LICENSE.txt"
|
|
176
191
|
},
|
|
177
|
-
"vite-tsconfig-paths@
|
|
192
|
+
"vite-tsconfig-paths@5.1.4": {
|
|
178
193
|
"licenses": "MIT",
|
|
179
194
|
"repository": "https://github.com/aleclarson/vite-tsconfig-paths",
|
|
180
195
|
"licenseUrl": "https://github.com/aleclarson/vite-tsconfig-paths/raw/HEAD/LICENSE"
|
|
181
196
|
},
|
|
182
|
-
"vite@
|
|
197
|
+
"vite@7.1.3": {
|
|
183
198
|
"licenses": "MIT",
|
|
184
199
|
"repository": "https://github.com/vitejs/vite",
|
|
185
200
|
"licenseUrl": "https://github.com/vitejs/vite/raw/HEAD/LICENSE.md"
|
|
186
201
|
},
|
|
187
|
-
"vitest@
|
|
202
|
+
"vitest@3.2.4": {
|
|
188
203
|
"licenses": "MIT",
|
|
189
204
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
190
205
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE.md"
|
|
191
206
|
},
|
|
192
|
-
"yargs@
|
|
207
|
+
"yargs@18.0.0": {
|
|
193
208
|
"licenses": "MIT",
|
|
194
209
|
"repository": "https://github.com/yargs/yargs",
|
|
195
210
|
"licenseUrl": "https://github.com/yargs/yargs/raw/HEAD/LICENSE"
|