@duskmoon-dev/el-breadcrumbs 0.4.0
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/cjs/index.js +198 -0
- package/dist/cjs/index.js.map +11 -0
- package/dist/cjs/register.js +201 -0
- package/dist/cjs/register.js.map +12 -0
- package/dist/esm/index.js +166 -0
- package/dist/esm/index.js.map +11 -0
- package/dist/esm/register.js +165 -0
- package/dist/esm/register.js.map +12 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/el-dm-breadcrumbs.d.ts +74 -0
- package/dist/types/el-dm-breadcrumbs.d.ts.map +1 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/register.d.ts +2 -0
- package/dist/types/register.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var exports_src = {};
|
|
31
|
+
__export(exports_src, {
|
|
32
|
+
register: () => register,
|
|
33
|
+
ElDmBreadcrumbs: () => ElDmBreadcrumbs
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exports_src);
|
|
36
|
+
|
|
37
|
+
// src/el-dm-breadcrumbs.ts
|
|
38
|
+
var import_el_core = require("@duskmoon-dev/el-core");
|
|
39
|
+
var styles = import_el_core.css`
|
|
40
|
+
:host {
|
|
41
|
+
display: block;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:host([hidden]) {
|
|
45
|
+
display: none !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.breadcrumbs-nav {
|
|
49
|
+
font-family: inherit;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.breadcrumbs-list {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-wrap: wrap;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 0.5rem;
|
|
57
|
+
list-style: none;
|
|
58
|
+
margin: 0;
|
|
59
|
+
padding: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.breadcrumbs-item {
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
gap: 0.5rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.breadcrumbs-link {
|
|
69
|
+
color: var(--color-primary);
|
|
70
|
+
text-decoration: none;
|
|
71
|
+
font-size: 0.875rem;
|
|
72
|
+
line-height: 1.25rem;
|
|
73
|
+
transition: color 150ms ease;
|
|
74
|
+
cursor: pointer;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.breadcrumbs-link:hover {
|
|
78
|
+
color: var(--color-primary-dark, var(--color-primary));
|
|
79
|
+
text-decoration: underline;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.breadcrumbs-link:focus {
|
|
83
|
+
outline: 2px solid var(--color-primary);
|
|
84
|
+
outline-offset: 2px;
|
|
85
|
+
border-radius: 2px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.breadcrumbs-current {
|
|
89
|
+
color: var(--color-on-surface);
|
|
90
|
+
font-size: 0.875rem;
|
|
91
|
+
line-height: 1.25rem;
|
|
92
|
+
font-weight: 500;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.breadcrumbs-separator {
|
|
96
|
+
color: var(--color-on-surface-variant, var(--color-outline));
|
|
97
|
+
font-size: 0.875rem;
|
|
98
|
+
user-select: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Hide slotted separator template */
|
|
102
|
+
::slotted([slot='separator']) {
|
|
103
|
+
display: none;
|
|
104
|
+
}
|
|
105
|
+
`;
|
|
106
|
+
|
|
107
|
+
class ElDmBreadcrumbs extends import_el_core.BaseElement {
|
|
108
|
+
static properties = {
|
|
109
|
+
items: { type: Array, reflect: false },
|
|
110
|
+
separator: { type: String, reflect: true, default: "/" }
|
|
111
|
+
};
|
|
112
|
+
constructor() {
|
|
113
|
+
super();
|
|
114
|
+
this.attachStyles(styles);
|
|
115
|
+
this.items = [];
|
|
116
|
+
}
|
|
117
|
+
_handleClick(event, item, index) {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
const notCancelled = this.emit("navigate", {
|
|
120
|
+
item,
|
|
121
|
+
index
|
|
122
|
+
});
|
|
123
|
+
if (notCancelled && item.href) {
|
|
124
|
+
window.location.href = item.href;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
_getSeparatorHtml() {
|
|
128
|
+
const slottedSeparator = this.querySelector('[slot="separator"]');
|
|
129
|
+
if (slottedSeparator) {
|
|
130
|
+
return slottedSeparator.outerHTML.replace('slot="separator"', "");
|
|
131
|
+
}
|
|
132
|
+
return this.separator || "/";
|
|
133
|
+
}
|
|
134
|
+
_escapeHtml(text) {
|
|
135
|
+
const div = document.createElement("div");
|
|
136
|
+
div.textContent = text;
|
|
137
|
+
return div.innerHTML;
|
|
138
|
+
}
|
|
139
|
+
render() {
|
|
140
|
+
const itemsArray = Array.isArray(this.items) ? this.items : [];
|
|
141
|
+
const separatorHtml = this._getSeparatorHtml();
|
|
142
|
+
const itemsHtml = itemsArray.map((item, index) => {
|
|
143
|
+
const isLast = index === itemsArray.length - 1;
|
|
144
|
+
const escapedLabel = this._escapeHtml(item.label);
|
|
145
|
+
if (isLast) {
|
|
146
|
+
return `
|
|
147
|
+
<li class="breadcrumbs-item" part="item">
|
|
148
|
+
<span
|
|
149
|
+
class="breadcrumbs-current"
|
|
150
|
+
part="current"
|
|
151
|
+
aria-current="page"
|
|
152
|
+
>${escapedLabel}</span>
|
|
153
|
+
</li>
|
|
154
|
+
`;
|
|
155
|
+
}
|
|
156
|
+
return `
|
|
157
|
+
<li class="breadcrumbs-item" part="item">
|
|
158
|
+
<a
|
|
159
|
+
class="breadcrumbs-link"
|
|
160
|
+
part="link"
|
|
161
|
+
href="${item.href || "#"}"
|
|
162
|
+
data-index="${index}"
|
|
163
|
+
>${escapedLabel}</a>
|
|
164
|
+
<span class="breadcrumbs-separator" part="separator" aria-hidden="true">${separatorHtml}</span>
|
|
165
|
+
</li>
|
|
166
|
+
`;
|
|
167
|
+
}).join("");
|
|
168
|
+
return `
|
|
169
|
+
<nav class="breadcrumbs-nav" part="nav" aria-label="Breadcrumb">
|
|
170
|
+
<ol class="breadcrumbs-list" part="list">
|
|
171
|
+
${itemsHtml}
|
|
172
|
+
</ol>
|
|
173
|
+
<slot name="separator"></slot>
|
|
174
|
+
</nav>
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
update() {
|
|
178
|
+
super.update();
|
|
179
|
+
const links = this.shadowRoot?.querySelectorAll(".breadcrumbs-link");
|
|
180
|
+
links?.forEach((link) => {
|
|
181
|
+
const index = parseInt(link.getAttribute("data-index") || "0", 10);
|
|
182
|
+
const item = this.items[index];
|
|
183
|
+
if (item) {
|
|
184
|
+
link.addEventListener("click", (e) => this._handleClick(e, item, index));
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// src/index.ts
|
|
191
|
+
function register() {
|
|
192
|
+
if (!customElements.get("el-dm-breadcrumbs")) {
|
|
193
|
+
customElements.define("el-dm-breadcrumbs", ElDmBreadcrumbs);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
//# debugId=16C0709E0DAF4F8164756E2164756E21
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-breadcrumbs.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Breadcrumbs Element\n *\n * A hierarchical navigation breadcrumbs component for displaying the user's\n * current location within a site structure.\n *\n * @element el-dm-breadcrumbs\n *\n * @attr {string} items - JSON array of breadcrumb items [{label, href}]\n * @attr {string} separator - Separator character between items (default '/')\n *\n * @slot separator - Custom separator element to use between items\n *\n * @csspart nav - The navigation container\n * @csspart list - The ordered list element\n * @csspart item - Individual breadcrumb item container\n * @csspart link - Breadcrumb link element\n * @csspart current - Current page text (last item)\n * @csspart separator - Separator element between items\n *\n * @fires navigate - Fired when a breadcrumb link is clicked. Detail: { item, index }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\n\n/**\n * Represents a single breadcrumb item\n */\nexport interface BreadcrumbItem {\n /** Display label for the breadcrumb */\n label: string;\n /** URL for the breadcrumb link (optional for last item) */\n href?: string;\n}\n\n/**\n * Event detail for the navigate event\n */\nexport interface NavigateEventDetail {\n /** The breadcrumb item that was clicked */\n item: BreadcrumbItem;\n /** The index of the clicked item */\n index: number;\n}\n\nconst styles = css`\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .breadcrumbs-nav {\n font-family: inherit;\n }\n\n .breadcrumbs-list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .breadcrumbs-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .breadcrumbs-link {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition: color 150ms ease;\n cursor: pointer;\n }\n\n .breadcrumbs-link:hover {\n color: var(--color-primary-dark, var(--color-primary));\n text-decoration: underline;\n }\n\n .breadcrumbs-link:focus {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n .breadcrumbs-current {\n color: var(--color-on-surface);\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n }\n\n .breadcrumbs-separator {\n color: var(--color-on-surface-variant, var(--color-outline));\n font-size: 0.875rem;\n user-select: none;\n }\n\n /* Hide slotted separator template */\n ::slotted([slot='separator']) {\n display: none;\n }\n`;\n\nexport class ElDmBreadcrumbs extends BaseElement {\n static properties = {\n items: { type: Array, reflect: false },\n separator: { type: String, reflect: true, default: '/' },\n };\n\n /** Array of breadcrumb items */\n declare items: BreadcrumbItem[];\n\n /** Separator character between items */\n declare separator: string;\n\n constructor() {\n super();\n this.attachStyles(styles);\n this.items = [];\n }\n\n /**\n * Handle click on a breadcrumb link\n */\n private _handleClick(event: Event, item: BreadcrumbItem, index: number): void {\n event.preventDefault();\n\n // emit returns true if event was not cancelled\n const notCancelled = this.emit<NavigateEventDetail>('navigate', {\n item,\n index,\n });\n\n // If event was not prevented, navigate to the href\n if (notCancelled && item.href) {\n window.location.href = item.href;\n }\n }\n\n /**\n * Get the separator HTML - either from slot or default\n */\n private _getSeparatorHtml(): string {\n const slottedSeparator = this.querySelector('[slot=\"separator\"]');\n if (slottedSeparator) {\n return slottedSeparator.outerHTML.replace('slot=\"separator\"', '');\n }\n return this.separator || '/';\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n private _escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n render(): string {\n const itemsArray = Array.isArray(this.items) ? this.items : [];\n const separatorHtml = this._getSeparatorHtml();\n\n const itemsHtml = itemsArray\n .map((item, index) => {\n const isLast = index === itemsArray.length - 1;\n const escapedLabel = this._escapeHtml(item.label);\n\n if (isLast) {\n // Last item is current page - not clickable\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <span\n class=\"breadcrumbs-current\"\n part=\"current\"\n aria-current=\"page\"\n >${escapedLabel}</span>\n </li>\n `;\n }\n\n // Regular breadcrumb link\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <a\n class=\"breadcrumbs-link\"\n part=\"link\"\n href=\"${item.href || '#'}\"\n data-index=\"${index}\"\n >${escapedLabel}</a>\n <span class=\"breadcrumbs-separator\" part=\"separator\" aria-hidden=\"true\">${separatorHtml}</span>\n </li>\n `;\n })\n .join('');\n\n return `\n <nav class=\"breadcrumbs-nav\" part=\"nav\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumbs-list\" part=\"list\">\n ${itemsHtml}\n </ol>\n <slot name=\"separator\"></slot>\n </nav>\n `;\n }\n\n update(): void {\n super.update();\n\n // Attach click handlers to all breadcrumb links\n const links = this.shadowRoot?.querySelectorAll('.breadcrumbs-link');\n links?.forEach((link) => {\n const index = parseInt(link.getAttribute('data-index') || '0', 10);\n const item = this.items[index];\n if (item) {\n link.addEventListener('click', (e) => this._handleClick(e, item, index));\n }\n });\n }\n}\n",
|
|
6
|
+
"/**\n * @duskmoon-dev/el-breadcrumbs\n *\n * DuskMoon Breadcrumbs custom element\n */\n\nimport { ElDmBreadcrumbs } from './el-dm-breadcrumbs.js';\n\nexport { ElDmBreadcrumbs };\nexport type { BreadcrumbItem, NavigateEventDetail } from './el-dm-breadcrumbs.js';\n\n/**\n * Register the el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-breadcrumbs';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-breadcrumbs')) {\n customElements.define('el-dm-breadcrumbs', ElDmBreadcrumbs);\n }\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "16C0709E0DAF4F8164756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var exports_src = {};
|
|
31
|
+
__export(exports_src, {
|
|
32
|
+
register: () => register,
|
|
33
|
+
ElDmBreadcrumbs: () => ElDmBreadcrumbs
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exports_src);
|
|
36
|
+
|
|
37
|
+
// src/el-dm-breadcrumbs.ts
|
|
38
|
+
var import_el_core = require("@duskmoon-dev/el-core");
|
|
39
|
+
var styles = import_el_core.css`
|
|
40
|
+
:host {
|
|
41
|
+
display: block;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:host([hidden]) {
|
|
45
|
+
display: none !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.breadcrumbs-nav {
|
|
49
|
+
font-family: inherit;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.breadcrumbs-list {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-wrap: wrap;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 0.5rem;
|
|
57
|
+
list-style: none;
|
|
58
|
+
margin: 0;
|
|
59
|
+
padding: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.breadcrumbs-item {
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
gap: 0.5rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.breadcrumbs-link {
|
|
69
|
+
color: var(--color-primary);
|
|
70
|
+
text-decoration: none;
|
|
71
|
+
font-size: 0.875rem;
|
|
72
|
+
line-height: 1.25rem;
|
|
73
|
+
transition: color 150ms ease;
|
|
74
|
+
cursor: pointer;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.breadcrumbs-link:hover {
|
|
78
|
+
color: var(--color-primary-dark, var(--color-primary));
|
|
79
|
+
text-decoration: underline;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.breadcrumbs-link:focus {
|
|
83
|
+
outline: 2px solid var(--color-primary);
|
|
84
|
+
outline-offset: 2px;
|
|
85
|
+
border-radius: 2px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.breadcrumbs-current {
|
|
89
|
+
color: var(--color-on-surface);
|
|
90
|
+
font-size: 0.875rem;
|
|
91
|
+
line-height: 1.25rem;
|
|
92
|
+
font-weight: 500;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.breadcrumbs-separator {
|
|
96
|
+
color: var(--color-on-surface-variant, var(--color-outline));
|
|
97
|
+
font-size: 0.875rem;
|
|
98
|
+
user-select: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Hide slotted separator template */
|
|
102
|
+
::slotted([slot='separator']) {
|
|
103
|
+
display: none;
|
|
104
|
+
}
|
|
105
|
+
`;
|
|
106
|
+
|
|
107
|
+
class ElDmBreadcrumbs extends import_el_core.BaseElement {
|
|
108
|
+
static properties = {
|
|
109
|
+
items: { type: Array, reflect: false },
|
|
110
|
+
separator: { type: String, reflect: true, default: "/" }
|
|
111
|
+
};
|
|
112
|
+
constructor() {
|
|
113
|
+
super();
|
|
114
|
+
this.attachStyles(styles);
|
|
115
|
+
this.items = [];
|
|
116
|
+
}
|
|
117
|
+
_handleClick(event, item, index) {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
const notCancelled = this.emit("navigate", {
|
|
120
|
+
item,
|
|
121
|
+
index
|
|
122
|
+
});
|
|
123
|
+
if (notCancelled && item.href) {
|
|
124
|
+
window.location.href = item.href;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
_getSeparatorHtml() {
|
|
128
|
+
const slottedSeparator = this.querySelector('[slot="separator"]');
|
|
129
|
+
if (slottedSeparator) {
|
|
130
|
+
return slottedSeparator.outerHTML.replace('slot="separator"', "");
|
|
131
|
+
}
|
|
132
|
+
return this.separator || "/";
|
|
133
|
+
}
|
|
134
|
+
_escapeHtml(text) {
|
|
135
|
+
const div = document.createElement("div");
|
|
136
|
+
div.textContent = text;
|
|
137
|
+
return div.innerHTML;
|
|
138
|
+
}
|
|
139
|
+
render() {
|
|
140
|
+
const itemsArray = Array.isArray(this.items) ? this.items : [];
|
|
141
|
+
const separatorHtml = this._getSeparatorHtml();
|
|
142
|
+
const itemsHtml = itemsArray.map((item, index) => {
|
|
143
|
+
const isLast = index === itemsArray.length - 1;
|
|
144
|
+
const escapedLabel = this._escapeHtml(item.label);
|
|
145
|
+
if (isLast) {
|
|
146
|
+
return `
|
|
147
|
+
<li class="breadcrumbs-item" part="item">
|
|
148
|
+
<span
|
|
149
|
+
class="breadcrumbs-current"
|
|
150
|
+
part="current"
|
|
151
|
+
aria-current="page"
|
|
152
|
+
>${escapedLabel}</span>
|
|
153
|
+
</li>
|
|
154
|
+
`;
|
|
155
|
+
}
|
|
156
|
+
return `
|
|
157
|
+
<li class="breadcrumbs-item" part="item">
|
|
158
|
+
<a
|
|
159
|
+
class="breadcrumbs-link"
|
|
160
|
+
part="link"
|
|
161
|
+
href="${item.href || "#"}"
|
|
162
|
+
data-index="${index}"
|
|
163
|
+
>${escapedLabel}</a>
|
|
164
|
+
<span class="breadcrumbs-separator" part="separator" aria-hidden="true">${separatorHtml}</span>
|
|
165
|
+
</li>
|
|
166
|
+
`;
|
|
167
|
+
}).join("");
|
|
168
|
+
return `
|
|
169
|
+
<nav class="breadcrumbs-nav" part="nav" aria-label="Breadcrumb">
|
|
170
|
+
<ol class="breadcrumbs-list" part="list">
|
|
171
|
+
${itemsHtml}
|
|
172
|
+
</ol>
|
|
173
|
+
<slot name="separator"></slot>
|
|
174
|
+
</nav>
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
update() {
|
|
178
|
+
super.update();
|
|
179
|
+
const links = this.shadowRoot?.querySelectorAll(".breadcrumbs-link");
|
|
180
|
+
links?.forEach((link) => {
|
|
181
|
+
const index = parseInt(link.getAttribute("data-index") || "0", 10);
|
|
182
|
+
const item = this.items[index];
|
|
183
|
+
if (item) {
|
|
184
|
+
link.addEventListener("click", (e) => this._handleClick(e, item, index));
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// src/index.ts
|
|
191
|
+
function register() {
|
|
192
|
+
if (!customElements.get("el-dm-breadcrumbs")) {
|
|
193
|
+
customElements.define("el-dm-breadcrumbs", ElDmBreadcrumbs);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// src/register.ts
|
|
198
|
+
register();
|
|
199
|
+
|
|
200
|
+
//# debugId=AA0E432E4F1405F164756E2164756E21
|
|
201
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-breadcrumbs.ts", "../../src/index.ts", "../../src/register.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Breadcrumbs Element\n *\n * A hierarchical navigation breadcrumbs component for displaying the user's\n * current location within a site structure.\n *\n * @element el-dm-breadcrumbs\n *\n * @attr {string} items - JSON array of breadcrumb items [{label, href}]\n * @attr {string} separator - Separator character between items (default '/')\n *\n * @slot separator - Custom separator element to use between items\n *\n * @csspart nav - The navigation container\n * @csspart list - The ordered list element\n * @csspart item - Individual breadcrumb item container\n * @csspart link - Breadcrumb link element\n * @csspart current - Current page text (last item)\n * @csspart separator - Separator element between items\n *\n * @fires navigate - Fired when a breadcrumb link is clicked. Detail: { item, index }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\n\n/**\n * Represents a single breadcrumb item\n */\nexport interface BreadcrumbItem {\n /** Display label for the breadcrumb */\n label: string;\n /** URL for the breadcrumb link (optional for last item) */\n href?: string;\n}\n\n/**\n * Event detail for the navigate event\n */\nexport interface NavigateEventDetail {\n /** The breadcrumb item that was clicked */\n item: BreadcrumbItem;\n /** The index of the clicked item */\n index: number;\n}\n\nconst styles = css`\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .breadcrumbs-nav {\n font-family: inherit;\n }\n\n .breadcrumbs-list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .breadcrumbs-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .breadcrumbs-link {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition: color 150ms ease;\n cursor: pointer;\n }\n\n .breadcrumbs-link:hover {\n color: var(--color-primary-dark, var(--color-primary));\n text-decoration: underline;\n }\n\n .breadcrumbs-link:focus {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n .breadcrumbs-current {\n color: var(--color-on-surface);\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n }\n\n .breadcrumbs-separator {\n color: var(--color-on-surface-variant, var(--color-outline));\n font-size: 0.875rem;\n user-select: none;\n }\n\n /* Hide slotted separator template */\n ::slotted([slot='separator']) {\n display: none;\n }\n`;\n\nexport class ElDmBreadcrumbs extends BaseElement {\n static properties = {\n items: { type: Array, reflect: false },\n separator: { type: String, reflect: true, default: '/' },\n };\n\n /** Array of breadcrumb items */\n declare items: BreadcrumbItem[];\n\n /** Separator character between items */\n declare separator: string;\n\n constructor() {\n super();\n this.attachStyles(styles);\n this.items = [];\n }\n\n /**\n * Handle click on a breadcrumb link\n */\n private _handleClick(event: Event, item: BreadcrumbItem, index: number): void {\n event.preventDefault();\n\n // emit returns true if event was not cancelled\n const notCancelled = this.emit<NavigateEventDetail>('navigate', {\n item,\n index,\n });\n\n // If event was not prevented, navigate to the href\n if (notCancelled && item.href) {\n window.location.href = item.href;\n }\n }\n\n /**\n * Get the separator HTML - either from slot or default\n */\n private _getSeparatorHtml(): string {\n const slottedSeparator = this.querySelector('[slot=\"separator\"]');\n if (slottedSeparator) {\n return slottedSeparator.outerHTML.replace('slot=\"separator\"', '');\n }\n return this.separator || '/';\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n private _escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n render(): string {\n const itemsArray = Array.isArray(this.items) ? this.items : [];\n const separatorHtml = this._getSeparatorHtml();\n\n const itemsHtml = itemsArray\n .map((item, index) => {\n const isLast = index === itemsArray.length - 1;\n const escapedLabel = this._escapeHtml(item.label);\n\n if (isLast) {\n // Last item is current page - not clickable\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <span\n class=\"breadcrumbs-current\"\n part=\"current\"\n aria-current=\"page\"\n >${escapedLabel}</span>\n </li>\n `;\n }\n\n // Regular breadcrumb link\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <a\n class=\"breadcrumbs-link\"\n part=\"link\"\n href=\"${item.href || '#'}\"\n data-index=\"${index}\"\n >${escapedLabel}</a>\n <span class=\"breadcrumbs-separator\" part=\"separator\" aria-hidden=\"true\">${separatorHtml}</span>\n </li>\n `;\n })\n .join('');\n\n return `\n <nav class=\"breadcrumbs-nav\" part=\"nav\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumbs-list\" part=\"list\">\n ${itemsHtml}\n </ol>\n <slot name=\"separator\"></slot>\n </nav>\n `;\n }\n\n update(): void {\n super.update();\n\n // Attach click handlers to all breadcrumb links\n const links = this.shadowRoot?.querySelectorAll('.breadcrumbs-link');\n links?.forEach((link) => {\n const index = parseInt(link.getAttribute('data-index') || '0', 10);\n const item = this.items[index];\n if (item) {\n link.addEventListener('click', (e) => this._handleClick(e, item, index));\n }\n });\n }\n}\n",
|
|
6
|
+
"/**\n * @duskmoon-dev/el-breadcrumbs\n *\n * DuskMoon Breadcrumbs custom element\n */\n\nimport { ElDmBreadcrumbs } from './el-dm-breadcrumbs.js';\n\nexport { ElDmBreadcrumbs };\nexport type { BreadcrumbItem, NavigateEventDetail } from './el-dm-breadcrumbs.js';\n\n/**\n * Register the el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-breadcrumbs';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-breadcrumbs')) {\n customElements.define('el-dm-breadcrumbs', ElDmBreadcrumbs);\n }\n}\n",
|
|
7
|
+
"/**\n * Auto-register el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import '@duskmoon-dev/el-breadcrumbs/register';\n *\n * // Now you can use <el-dm-breadcrumbs> in HTML\n * ```\n */\nimport { register } from './index.js';\n\nregister();\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "AA0E432E4F1405F164756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// src/el-dm-breadcrumbs.ts
|
|
2
|
+
import { BaseElement, css } from "@duskmoon-dev/el-core";
|
|
3
|
+
var styles = css`
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
:host([hidden]) {
|
|
9
|
+
display: none !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.breadcrumbs-nav {
|
|
13
|
+
font-family: inherit;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.breadcrumbs-list {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: 0.5rem;
|
|
21
|
+
list-style: none;
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.breadcrumbs-item {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 0.5rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.breadcrumbs-link {
|
|
33
|
+
color: var(--color-primary);
|
|
34
|
+
text-decoration: none;
|
|
35
|
+
font-size: 0.875rem;
|
|
36
|
+
line-height: 1.25rem;
|
|
37
|
+
transition: color 150ms ease;
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.breadcrumbs-link:hover {
|
|
42
|
+
color: var(--color-primary-dark, var(--color-primary));
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.breadcrumbs-link:focus {
|
|
47
|
+
outline: 2px solid var(--color-primary);
|
|
48
|
+
outline-offset: 2px;
|
|
49
|
+
border-radius: 2px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.breadcrumbs-current {
|
|
53
|
+
color: var(--color-on-surface);
|
|
54
|
+
font-size: 0.875rem;
|
|
55
|
+
line-height: 1.25rem;
|
|
56
|
+
font-weight: 500;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.breadcrumbs-separator {
|
|
60
|
+
color: var(--color-on-surface-variant, var(--color-outline));
|
|
61
|
+
font-size: 0.875rem;
|
|
62
|
+
user-select: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Hide slotted separator template */
|
|
66
|
+
::slotted([slot='separator']) {
|
|
67
|
+
display: none;
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
|
|
71
|
+
class ElDmBreadcrumbs extends BaseElement {
|
|
72
|
+
static properties = {
|
|
73
|
+
items: { type: Array, reflect: false },
|
|
74
|
+
separator: { type: String, reflect: true, default: "/" }
|
|
75
|
+
};
|
|
76
|
+
constructor() {
|
|
77
|
+
super();
|
|
78
|
+
this.attachStyles(styles);
|
|
79
|
+
this.items = [];
|
|
80
|
+
}
|
|
81
|
+
_handleClick(event, item, index) {
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
const notCancelled = this.emit("navigate", {
|
|
84
|
+
item,
|
|
85
|
+
index
|
|
86
|
+
});
|
|
87
|
+
if (notCancelled && item.href) {
|
|
88
|
+
window.location.href = item.href;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_getSeparatorHtml() {
|
|
92
|
+
const slottedSeparator = this.querySelector('[slot="separator"]');
|
|
93
|
+
if (slottedSeparator) {
|
|
94
|
+
return slottedSeparator.outerHTML.replace('slot="separator"', "");
|
|
95
|
+
}
|
|
96
|
+
return this.separator || "/";
|
|
97
|
+
}
|
|
98
|
+
_escapeHtml(text) {
|
|
99
|
+
const div = document.createElement("div");
|
|
100
|
+
div.textContent = text;
|
|
101
|
+
return div.innerHTML;
|
|
102
|
+
}
|
|
103
|
+
render() {
|
|
104
|
+
const itemsArray = Array.isArray(this.items) ? this.items : [];
|
|
105
|
+
const separatorHtml = this._getSeparatorHtml();
|
|
106
|
+
const itemsHtml = itemsArray.map((item, index) => {
|
|
107
|
+
const isLast = index === itemsArray.length - 1;
|
|
108
|
+
const escapedLabel = this._escapeHtml(item.label);
|
|
109
|
+
if (isLast) {
|
|
110
|
+
return `
|
|
111
|
+
<li class="breadcrumbs-item" part="item">
|
|
112
|
+
<span
|
|
113
|
+
class="breadcrumbs-current"
|
|
114
|
+
part="current"
|
|
115
|
+
aria-current="page"
|
|
116
|
+
>${escapedLabel}</span>
|
|
117
|
+
</li>
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
return `
|
|
121
|
+
<li class="breadcrumbs-item" part="item">
|
|
122
|
+
<a
|
|
123
|
+
class="breadcrumbs-link"
|
|
124
|
+
part="link"
|
|
125
|
+
href="${item.href || "#"}"
|
|
126
|
+
data-index="${index}"
|
|
127
|
+
>${escapedLabel}</a>
|
|
128
|
+
<span class="breadcrumbs-separator" part="separator" aria-hidden="true">${separatorHtml}</span>
|
|
129
|
+
</li>
|
|
130
|
+
`;
|
|
131
|
+
}).join("");
|
|
132
|
+
return `
|
|
133
|
+
<nav class="breadcrumbs-nav" part="nav" aria-label="Breadcrumb">
|
|
134
|
+
<ol class="breadcrumbs-list" part="list">
|
|
135
|
+
${itemsHtml}
|
|
136
|
+
</ol>
|
|
137
|
+
<slot name="separator"></slot>
|
|
138
|
+
</nav>
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
update() {
|
|
142
|
+
super.update();
|
|
143
|
+
const links = this.shadowRoot?.querySelectorAll(".breadcrumbs-link");
|
|
144
|
+
links?.forEach((link) => {
|
|
145
|
+
const index = parseInt(link.getAttribute("data-index") || "0", 10);
|
|
146
|
+
const item = this.items[index];
|
|
147
|
+
if (item) {
|
|
148
|
+
link.addEventListener("click", (e) => this._handleClick(e, item, index));
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// src/index.ts
|
|
155
|
+
function register() {
|
|
156
|
+
if (!customElements.get("el-dm-breadcrumbs")) {
|
|
157
|
+
customElements.define("el-dm-breadcrumbs", ElDmBreadcrumbs);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export {
|
|
161
|
+
register,
|
|
162
|
+
ElDmBreadcrumbs
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
//# debugId=1AED640BB06BA80764756E2164756E21
|
|
166
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-breadcrumbs.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Breadcrumbs Element\n *\n * A hierarchical navigation breadcrumbs component for displaying the user's\n * current location within a site structure.\n *\n * @element el-dm-breadcrumbs\n *\n * @attr {string} items - JSON array of breadcrumb items [{label, href}]\n * @attr {string} separator - Separator character between items (default '/')\n *\n * @slot separator - Custom separator element to use between items\n *\n * @csspart nav - The navigation container\n * @csspart list - The ordered list element\n * @csspart item - Individual breadcrumb item container\n * @csspart link - Breadcrumb link element\n * @csspart current - Current page text (last item)\n * @csspart separator - Separator element between items\n *\n * @fires navigate - Fired when a breadcrumb link is clicked. Detail: { item, index }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\n\n/**\n * Represents a single breadcrumb item\n */\nexport interface BreadcrumbItem {\n /** Display label for the breadcrumb */\n label: string;\n /** URL for the breadcrumb link (optional for last item) */\n href?: string;\n}\n\n/**\n * Event detail for the navigate event\n */\nexport interface NavigateEventDetail {\n /** The breadcrumb item that was clicked */\n item: BreadcrumbItem;\n /** The index of the clicked item */\n index: number;\n}\n\nconst styles = css`\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .breadcrumbs-nav {\n font-family: inherit;\n }\n\n .breadcrumbs-list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .breadcrumbs-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .breadcrumbs-link {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition: color 150ms ease;\n cursor: pointer;\n }\n\n .breadcrumbs-link:hover {\n color: var(--color-primary-dark, var(--color-primary));\n text-decoration: underline;\n }\n\n .breadcrumbs-link:focus {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n .breadcrumbs-current {\n color: var(--color-on-surface);\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n }\n\n .breadcrumbs-separator {\n color: var(--color-on-surface-variant, var(--color-outline));\n font-size: 0.875rem;\n user-select: none;\n }\n\n /* Hide slotted separator template */\n ::slotted([slot='separator']) {\n display: none;\n }\n`;\n\nexport class ElDmBreadcrumbs extends BaseElement {\n static properties = {\n items: { type: Array, reflect: false },\n separator: { type: String, reflect: true, default: '/' },\n };\n\n /** Array of breadcrumb items */\n declare items: BreadcrumbItem[];\n\n /** Separator character between items */\n declare separator: string;\n\n constructor() {\n super();\n this.attachStyles(styles);\n this.items = [];\n }\n\n /**\n * Handle click on a breadcrumb link\n */\n private _handleClick(event: Event, item: BreadcrumbItem, index: number): void {\n event.preventDefault();\n\n // emit returns true if event was not cancelled\n const notCancelled = this.emit<NavigateEventDetail>('navigate', {\n item,\n index,\n });\n\n // If event was not prevented, navigate to the href\n if (notCancelled && item.href) {\n window.location.href = item.href;\n }\n }\n\n /**\n * Get the separator HTML - either from slot or default\n */\n private _getSeparatorHtml(): string {\n const slottedSeparator = this.querySelector('[slot=\"separator\"]');\n if (slottedSeparator) {\n return slottedSeparator.outerHTML.replace('slot=\"separator\"', '');\n }\n return this.separator || '/';\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n private _escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n render(): string {\n const itemsArray = Array.isArray(this.items) ? this.items : [];\n const separatorHtml = this._getSeparatorHtml();\n\n const itemsHtml = itemsArray\n .map((item, index) => {\n const isLast = index === itemsArray.length - 1;\n const escapedLabel = this._escapeHtml(item.label);\n\n if (isLast) {\n // Last item is current page - not clickable\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <span\n class=\"breadcrumbs-current\"\n part=\"current\"\n aria-current=\"page\"\n >${escapedLabel}</span>\n </li>\n `;\n }\n\n // Regular breadcrumb link\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <a\n class=\"breadcrumbs-link\"\n part=\"link\"\n href=\"${item.href || '#'}\"\n data-index=\"${index}\"\n >${escapedLabel}</a>\n <span class=\"breadcrumbs-separator\" part=\"separator\" aria-hidden=\"true\">${separatorHtml}</span>\n </li>\n `;\n })\n .join('');\n\n return `\n <nav class=\"breadcrumbs-nav\" part=\"nav\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumbs-list\" part=\"list\">\n ${itemsHtml}\n </ol>\n <slot name=\"separator\"></slot>\n </nav>\n `;\n }\n\n update(): void {\n super.update();\n\n // Attach click handlers to all breadcrumb links\n const links = this.shadowRoot?.querySelectorAll('.breadcrumbs-link');\n links?.forEach((link) => {\n const index = parseInt(link.getAttribute('data-index') || '0', 10);\n const item = this.items[index];\n if (item) {\n link.addEventListener('click', (e) => this._handleClick(e, item, index));\n }\n });\n }\n}\n",
|
|
6
|
+
"/**\n * @duskmoon-dev/el-breadcrumbs\n *\n * DuskMoon Breadcrumbs custom element\n */\n\nimport { ElDmBreadcrumbs } from './el-dm-breadcrumbs.js';\n\nexport { ElDmBreadcrumbs };\nexport type { BreadcrumbItem, NavigateEventDetail } from './el-dm-breadcrumbs.js';\n\n/**\n * Register the el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-breadcrumbs';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-breadcrumbs')) {\n customElements.define('el-dm-breadcrumbs', ElDmBreadcrumbs);\n }\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "1AED640BB06BA80764756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// src/el-dm-breadcrumbs.ts
|
|
2
|
+
import { BaseElement, css } from "@duskmoon-dev/el-core";
|
|
3
|
+
var styles = css`
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
:host([hidden]) {
|
|
9
|
+
display: none !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.breadcrumbs-nav {
|
|
13
|
+
font-family: inherit;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.breadcrumbs-list {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: 0.5rem;
|
|
21
|
+
list-style: none;
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.breadcrumbs-item {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 0.5rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.breadcrumbs-link {
|
|
33
|
+
color: var(--color-primary);
|
|
34
|
+
text-decoration: none;
|
|
35
|
+
font-size: 0.875rem;
|
|
36
|
+
line-height: 1.25rem;
|
|
37
|
+
transition: color 150ms ease;
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.breadcrumbs-link:hover {
|
|
42
|
+
color: var(--color-primary-dark, var(--color-primary));
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.breadcrumbs-link:focus {
|
|
47
|
+
outline: 2px solid var(--color-primary);
|
|
48
|
+
outline-offset: 2px;
|
|
49
|
+
border-radius: 2px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.breadcrumbs-current {
|
|
53
|
+
color: var(--color-on-surface);
|
|
54
|
+
font-size: 0.875rem;
|
|
55
|
+
line-height: 1.25rem;
|
|
56
|
+
font-weight: 500;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.breadcrumbs-separator {
|
|
60
|
+
color: var(--color-on-surface-variant, var(--color-outline));
|
|
61
|
+
font-size: 0.875rem;
|
|
62
|
+
user-select: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Hide slotted separator template */
|
|
66
|
+
::slotted([slot='separator']) {
|
|
67
|
+
display: none;
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
|
|
71
|
+
class ElDmBreadcrumbs extends BaseElement {
|
|
72
|
+
static properties = {
|
|
73
|
+
items: { type: Array, reflect: false },
|
|
74
|
+
separator: { type: String, reflect: true, default: "/" }
|
|
75
|
+
};
|
|
76
|
+
constructor() {
|
|
77
|
+
super();
|
|
78
|
+
this.attachStyles(styles);
|
|
79
|
+
this.items = [];
|
|
80
|
+
}
|
|
81
|
+
_handleClick(event, item, index) {
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
const notCancelled = this.emit("navigate", {
|
|
84
|
+
item,
|
|
85
|
+
index
|
|
86
|
+
});
|
|
87
|
+
if (notCancelled && item.href) {
|
|
88
|
+
window.location.href = item.href;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_getSeparatorHtml() {
|
|
92
|
+
const slottedSeparator = this.querySelector('[slot="separator"]');
|
|
93
|
+
if (slottedSeparator) {
|
|
94
|
+
return slottedSeparator.outerHTML.replace('slot="separator"', "");
|
|
95
|
+
}
|
|
96
|
+
return this.separator || "/";
|
|
97
|
+
}
|
|
98
|
+
_escapeHtml(text) {
|
|
99
|
+
const div = document.createElement("div");
|
|
100
|
+
div.textContent = text;
|
|
101
|
+
return div.innerHTML;
|
|
102
|
+
}
|
|
103
|
+
render() {
|
|
104
|
+
const itemsArray = Array.isArray(this.items) ? this.items : [];
|
|
105
|
+
const separatorHtml = this._getSeparatorHtml();
|
|
106
|
+
const itemsHtml = itemsArray.map((item, index) => {
|
|
107
|
+
const isLast = index === itemsArray.length - 1;
|
|
108
|
+
const escapedLabel = this._escapeHtml(item.label);
|
|
109
|
+
if (isLast) {
|
|
110
|
+
return `
|
|
111
|
+
<li class="breadcrumbs-item" part="item">
|
|
112
|
+
<span
|
|
113
|
+
class="breadcrumbs-current"
|
|
114
|
+
part="current"
|
|
115
|
+
aria-current="page"
|
|
116
|
+
>${escapedLabel}</span>
|
|
117
|
+
</li>
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
return `
|
|
121
|
+
<li class="breadcrumbs-item" part="item">
|
|
122
|
+
<a
|
|
123
|
+
class="breadcrumbs-link"
|
|
124
|
+
part="link"
|
|
125
|
+
href="${item.href || "#"}"
|
|
126
|
+
data-index="${index}"
|
|
127
|
+
>${escapedLabel}</a>
|
|
128
|
+
<span class="breadcrumbs-separator" part="separator" aria-hidden="true">${separatorHtml}</span>
|
|
129
|
+
</li>
|
|
130
|
+
`;
|
|
131
|
+
}).join("");
|
|
132
|
+
return `
|
|
133
|
+
<nav class="breadcrumbs-nav" part="nav" aria-label="Breadcrumb">
|
|
134
|
+
<ol class="breadcrumbs-list" part="list">
|
|
135
|
+
${itemsHtml}
|
|
136
|
+
</ol>
|
|
137
|
+
<slot name="separator"></slot>
|
|
138
|
+
</nav>
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
update() {
|
|
142
|
+
super.update();
|
|
143
|
+
const links = this.shadowRoot?.querySelectorAll(".breadcrumbs-link");
|
|
144
|
+
links?.forEach((link) => {
|
|
145
|
+
const index = parseInt(link.getAttribute("data-index") || "0", 10);
|
|
146
|
+
const item = this.items[index];
|
|
147
|
+
if (item) {
|
|
148
|
+
link.addEventListener("click", (e) => this._handleClick(e, item, index));
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// src/index.ts
|
|
155
|
+
function register() {
|
|
156
|
+
if (!customElements.get("el-dm-breadcrumbs")) {
|
|
157
|
+
customElements.define("el-dm-breadcrumbs", ElDmBreadcrumbs);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// src/register.ts
|
|
162
|
+
register();
|
|
163
|
+
|
|
164
|
+
//# debugId=D6AFA3E27BA0968164756E2164756E21
|
|
165
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-breadcrumbs.ts", "../../src/index.ts", "../../src/register.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Breadcrumbs Element\n *\n * A hierarchical navigation breadcrumbs component for displaying the user's\n * current location within a site structure.\n *\n * @element el-dm-breadcrumbs\n *\n * @attr {string} items - JSON array of breadcrumb items [{label, href}]\n * @attr {string} separator - Separator character between items (default '/')\n *\n * @slot separator - Custom separator element to use between items\n *\n * @csspart nav - The navigation container\n * @csspart list - The ordered list element\n * @csspart item - Individual breadcrumb item container\n * @csspart link - Breadcrumb link element\n * @csspart current - Current page text (last item)\n * @csspart separator - Separator element between items\n *\n * @fires navigate - Fired when a breadcrumb link is clicked. Detail: { item, index }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\n\n/**\n * Represents a single breadcrumb item\n */\nexport interface BreadcrumbItem {\n /** Display label for the breadcrumb */\n label: string;\n /** URL for the breadcrumb link (optional for last item) */\n href?: string;\n}\n\n/**\n * Event detail for the navigate event\n */\nexport interface NavigateEventDetail {\n /** The breadcrumb item that was clicked */\n item: BreadcrumbItem;\n /** The index of the clicked item */\n index: number;\n}\n\nconst styles = css`\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .breadcrumbs-nav {\n font-family: inherit;\n }\n\n .breadcrumbs-list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .breadcrumbs-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .breadcrumbs-link {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition: color 150ms ease;\n cursor: pointer;\n }\n\n .breadcrumbs-link:hover {\n color: var(--color-primary-dark, var(--color-primary));\n text-decoration: underline;\n }\n\n .breadcrumbs-link:focus {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n .breadcrumbs-current {\n color: var(--color-on-surface);\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n }\n\n .breadcrumbs-separator {\n color: var(--color-on-surface-variant, var(--color-outline));\n font-size: 0.875rem;\n user-select: none;\n }\n\n /* Hide slotted separator template */\n ::slotted([slot='separator']) {\n display: none;\n }\n`;\n\nexport class ElDmBreadcrumbs extends BaseElement {\n static properties = {\n items: { type: Array, reflect: false },\n separator: { type: String, reflect: true, default: '/' },\n };\n\n /** Array of breadcrumb items */\n declare items: BreadcrumbItem[];\n\n /** Separator character between items */\n declare separator: string;\n\n constructor() {\n super();\n this.attachStyles(styles);\n this.items = [];\n }\n\n /**\n * Handle click on a breadcrumb link\n */\n private _handleClick(event: Event, item: BreadcrumbItem, index: number): void {\n event.preventDefault();\n\n // emit returns true if event was not cancelled\n const notCancelled = this.emit<NavigateEventDetail>('navigate', {\n item,\n index,\n });\n\n // If event was not prevented, navigate to the href\n if (notCancelled && item.href) {\n window.location.href = item.href;\n }\n }\n\n /**\n * Get the separator HTML - either from slot or default\n */\n private _getSeparatorHtml(): string {\n const slottedSeparator = this.querySelector('[slot=\"separator\"]');\n if (slottedSeparator) {\n return slottedSeparator.outerHTML.replace('slot=\"separator\"', '');\n }\n return this.separator || '/';\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n private _escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n render(): string {\n const itemsArray = Array.isArray(this.items) ? this.items : [];\n const separatorHtml = this._getSeparatorHtml();\n\n const itemsHtml = itemsArray\n .map((item, index) => {\n const isLast = index === itemsArray.length - 1;\n const escapedLabel = this._escapeHtml(item.label);\n\n if (isLast) {\n // Last item is current page - not clickable\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <span\n class=\"breadcrumbs-current\"\n part=\"current\"\n aria-current=\"page\"\n >${escapedLabel}</span>\n </li>\n `;\n }\n\n // Regular breadcrumb link\n return `\n <li class=\"breadcrumbs-item\" part=\"item\">\n <a\n class=\"breadcrumbs-link\"\n part=\"link\"\n href=\"${item.href || '#'}\"\n data-index=\"${index}\"\n >${escapedLabel}</a>\n <span class=\"breadcrumbs-separator\" part=\"separator\" aria-hidden=\"true\">${separatorHtml}</span>\n </li>\n `;\n })\n .join('');\n\n return `\n <nav class=\"breadcrumbs-nav\" part=\"nav\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumbs-list\" part=\"list\">\n ${itemsHtml}\n </ol>\n <slot name=\"separator\"></slot>\n </nav>\n `;\n }\n\n update(): void {\n super.update();\n\n // Attach click handlers to all breadcrumb links\n const links = this.shadowRoot?.querySelectorAll('.breadcrumbs-link');\n links?.forEach((link) => {\n const index = parseInt(link.getAttribute('data-index') || '0', 10);\n const item = this.items[index];\n if (item) {\n link.addEventListener('click', (e) => this._handleClick(e, item, index));\n }\n });\n }\n}\n",
|
|
6
|
+
"/**\n * @duskmoon-dev/el-breadcrumbs\n *\n * DuskMoon Breadcrumbs custom element\n */\n\nimport { ElDmBreadcrumbs } from './el-dm-breadcrumbs.js';\n\nexport { ElDmBreadcrumbs };\nexport type { BreadcrumbItem, NavigateEventDetail } from './el-dm-breadcrumbs.js';\n\n/**\n * Register the el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-breadcrumbs';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-breadcrumbs')) {\n customElements.define('el-dm-breadcrumbs', ElDmBreadcrumbs);\n }\n}\n",
|
|
7
|
+
"/**\n * Auto-register el-dm-breadcrumbs custom element\n *\n * @example\n * ```ts\n * import '@duskmoon-dev/el-breadcrumbs/register';\n *\n * // Now you can use <el-dm-breadcrumbs> in HTML\n * ```\n */\nimport { register } from './index.js';\n\nregister();\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "D6AFA3E27BA0968164756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/duskmoon-core.d.ts","../../../packages/core/dist/types/base-element.d.ts","../../../packages/core/dist/types/styles.d.ts","../../../packages/core/dist/types/types.d.ts","../../../packages/core/dist/types/index.d.ts","../src/el-dm-breadcrumbs.ts","../src/index.ts","../src/register.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/globals.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/assert.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/buffer.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/child_process.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/cluster.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/console.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/constants.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/crypto.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/dgram.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/dns.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/domain.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/events.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/fs.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/http.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/http2.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/https.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/module.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/net.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/os.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/path.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/process.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/punycode.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/querystring.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/readline.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/repl.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/sea.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/stream.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/test.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/timers.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/tls.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/tty.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/url.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/util.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/v8.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/vm.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/wasi.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/zlib.d.ts","../../../node_modules/.bun/@types+node@20.19.28/node_modules/@types/node/index.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.bun/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/globals.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/s3.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/fetch.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bun.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/extensions.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/devserver.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/ffi.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/html-rewriter.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/jsc.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/sqlite.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/utils.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/overloads.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/branding.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/messages.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/index.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/test.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/wasm.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/overrides.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/deprecated.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/redis.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/shell.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/serve.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/sql.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/security.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bundle.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bun.ns.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/index.d.ts","../../../node_modules/.bun/@types+bun@1.3.5/node_modules/@types/bun/index.d.ts"],"fileIdsList":[[75,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[64,75,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[65,75,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[66,75,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,184,185,186,187,188,189,190,191,194],[75,81,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,83,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[84,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,89,117,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,85,90,95,103,114,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,85,86,95,103,168,169,170,171,173,184,185,186,187,188,189,190,191],[70,71,72,75,84,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,87,126,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,88,89,96,104,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,89,114,122,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,90,92,95,103,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,83,84,91,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,92,93,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,94,95,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,83,84,95,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,96,97,114,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,96,97,110,114,117,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,92,95,98,103,114,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,96,98,99,103,114,122,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,98,100,114,122,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,101,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,102,125,130,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,92,95,103,114,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,104,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,105,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,83,84,106,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,108,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,109,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,110,111,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,110,112,126,128,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,114,115,117,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,116,117,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,114,115,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,117,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,118,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,81,84,114,119,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,120,121,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,120,121,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,89,103,114,122,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,123,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,103,124,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,98,109,125,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,89,126,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,114,127,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,102,128,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,129,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,167,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,95,97,106,114,117,125,128,130,167,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,114,131,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,89,96,98,122,126,130,167,168,169,170,173,174,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,184,185,187,188,189,190,191],[75,84,168,169,170,171,184,185,186,187,188,189,190,191],[75,84,167,168,169,171,173,184,185,186,187,188,189,190,191],[75,84,89,106,114,117,122,126,130,167,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,132,168,169,170,171,172,173,174,175,176,177,183,184,185,186,187,188,189,190,191,192,193],[10,75,76,84,87,89,96,97,104,117,122,125,131,168,169,170,171,173,184,186,187,188,189,190,191],[75,84,168,169,170,171,173,184,185,186,188,189,190,191],[75,84,96,168,170,171,173,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,184,185,186,187,188,189,190],[75,84,168,169,170,171,173,184,185,186,187,188,190,191],[75,84,168,169,170,171,173,184,185,186,187,189,190,191],[75,84,168,169,170,171,173,177,184,185,186,187,188,189,191],[75,84,168,169,170,171,173,182,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,178,179,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,178,179,180,181,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,178,180,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,178,184,185,186,187,188,189,190,191],[75,84,168,169,170,171,173,185,186,187,188,189,190,191],[75,84,125,139,143,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,114,125,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,134,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,122,125,136,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,103,122,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,132,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,132,134,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,103,125,136,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[68,69,75,84,95,114,125,135,138,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,146,168,169,170,171,173,184,185,186,187,188,189,190,191],[68,75,84,137,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,160,161,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,117,125,132,135,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,132,160,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,132,133,134,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,154,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,146,147,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,137,139,147,148,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,138,168,169,170,171,173,184,185,186,187,188,189,190,191],[68,75,84,134,139,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,139,143,147,148,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,143,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,125,137,139,142,168,169,170,171,173,184,185,186,187,188,189,190,191],[68,75,84,136,139,146,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,114,168,169,170,171,173,184,185,186,187,188,189,190,191],[75,84,130,132,134,139,160,168,169,170,171,173,184,185,186,187,188,189,190,191],[61,62,63,75,84,168,169,170,171,173,184,185,186,187,188,189,190,191]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"089e5f6343a272f3dc70f597665b75c8574b02ac052fdf962ccea821459d7aa8","d4a48751b4227ab81b82552c7d5efcfc4810bcca247298010215d874c3ab5191","1b77b52c5de36eb33a7bb39a224c60217f5902221575dc73e891b1f3038a2a38","d3a328c0eccf652bc8b6c14515a8b848a558b9d684e15a7c0c2e15de5016df57","3d80d8bcd5166b8b8b5c5e1c7d6261fdacfcbf7c876412610dc7b1742bb39df3",{"version":"1385f71ccc244eda61338eb205da9a98d401dcfd4d132b1d9a215a03737a9352","signature":"bff192bb87dfb56fbaab20343e2b3a34d28cbd4f51a4a13775f52d59987e8040"},{"version":"f99a79385a98123cab90100ca7b831c910fa655b8dc8a8ecada7ced1c98dde7d","signature":"00e9e25d6ce75973373834f8a4ea6cb9e175869f88126eef20eca3b5fe230e8e"},{"version":"887c5201c509f0e4b8d6c51f90704f510fb72388f0bf7c950a302dd83c214d07","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"d9e971bba9cf977c7774abbd4d2e3413a231af8a06a2e8b16af2a606bc91ddd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"6e215dac8b234548d91b718f9c07d5b09473cd5cabb29053fcd8be0af190acb6","affectsGlobalScope":true,"impliedFormat":1},{"version":"0da1adb8d70eba31791b5f9203a384a628f9a1b03162bc68306838e842eff203","impliedFormat":1},{"version":"f3d3e999a323c85c8a63ce90c6e4624ff89fe137a0e2508fddc08e0556d08abf","impliedFormat":1},{"version":"a1fdda024d346cd1906d4a1f66c2804217ef88b554946ac7d9b7bcbadcc75f11","impliedFormat":1},{"version":"49ae37a1b5de16f762c8a151eeaec6b558ce3c27251052ef7a361144af42cad4","impliedFormat":1},{"version":"fc9e630f9302d0414ccd6c8ed2706659cff5ae454a56560c6122fa4a3fac5bbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa0a44af370a2d7c1aac988a17836f57910a6c52689f52f5b3ac1d4c6cadcb23","impliedFormat":1},{"version":"0ac74c7586880e26b6a599c710b59284a284e084a2bbc82cd40fb3fbfdea71ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce12357dadbb8efc4e4ec4dab709c8071bf992722fc9adfea2fe0bd5b50923f","impliedFormat":1},{"version":"31bd1a31f935276adf90384a35edbd4614018ff008f57d62ffb57ac538e94e51","impliedFormat":1},{"version":"ffd344731abee98a0a85a735b19052817afd2156d97d1410819cd9bcd1bd575e","impliedFormat":1},{"version":"475e07c959f4766f90678425b45cf58ac9b95e50de78367759c1e5118e85d5c3","impliedFormat":1},{"version":"a524ae401b30a1b0814f1bbcdae459da97fa30ae6e22476e506bb3f82e3d9456","impliedFormat":1},{"version":"7375e803c033425e27cb33bae21917c106cb37b508fd242cccd978ef2ee244c7","impliedFormat":1},{"version":"eeb890c7e9218afdad2f30ad8a76b0b0b5161d11ce13b6723879de408e6bc47a","impliedFormat":1},{"version":"561c795984d06b91091780cebeac616e9e41d83240770e1af14e6ec083b713d5","impliedFormat":1},{"version":"dfbcc400ac6d20b941ccc7bd9031b9d9f54e4d495dd79117334e771959df4805","affectsGlobalScope":true,"impliedFormat":1},{"version":"944d65951e33a13068be5cd525ec42bf9bc180263ba0b723fa236970aa21f611","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b386c7b6ce6f369d18246904fa5eac73566167c88fb6508feba74fa7501a384","affectsGlobalScope":true,"impliedFormat":1},{"version":"592a109e67b907ffd2078cd6f727d5c326e06eaada169eef8fb18546d96f6797","impliedFormat":1},{"version":"f2eb1e35cae499d57e34b4ac3650248776fe7dbd9a3ec34b23754cfd8c22fceb","impliedFormat":1},{"version":"fbed43a6fcf5b675f5ec6fc960328114777862b58a2bb19c109e8fc1906caa09","impliedFormat":1},{"version":"9e98bd421e71f70c75dae7029e316745c89fa7b8bc8b43a91adf9b82c206099c","impliedFormat":1},{"version":"fc803e6b01f4365f71f51f9ce13f71396766848204d4f7a1b2b6154434b84b15","impliedFormat":1},{"version":"f3afcc0d6f77a9ca2d2c5c92eb4b89cd38d6fa4bdc1410d626bd701760a977ec","impliedFormat":1},{"version":"c8109fe76467db6e801d0edfbc50e6826934686467c9418ce6b246232ce7f109","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6f803e4e45915d58e721c04ec17830c6e6678d1e3e00e28edf3d52720909cea","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","impliedFormat":1}],"root":[60,[65,67]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[60,1],[65,2],[66,3],[67,4],[195,5],[81,6],[82,6],[83,7],[75,8],[84,9],[85,10],[86,11],[70,1],[73,12],[71,1],[72,1],[87,13],[88,14],[89,15],[90,16],[91,17],[92,18],[93,18],[94,19],[95,20],[96,21],[97,22],[76,1],[74,1],[98,23],[99,24],[100,25],[132,26],[101,27],[102,28],[103,29],[104,30],[105,31],[106,32],[107,33],[108,34],[109,35],[110,36],[111,36],[112,37],[113,1],[114,38],[116,39],[115,40],[117,41],[118,42],[119,43],[120,44],[121,45],[122,46],[123,47],[124,48],[125,49],[126,50],[127,51],[128,52],[129,53],[77,1],[78,1],[79,1],[80,54],[130,55],[131,56],[171,57],[193,1],[192,1],[186,58],[173,59],[172,1],[170,60],[174,1],[168,61],[175,1],[194,62],[176,1],[185,63],[187,64],[169,65],[191,66],[189,67],[188,68],[190,69],[177,1],[183,70],[180,71],[182,72],[181,73],[179,74],[178,1],[184,75],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[146,76],[156,77],[145,76],[166,78],[137,79],[136,80],[165,81],[159,82],[164,83],[139,84],[153,85],[138,86],[162,87],[134,88],[133,81],[163,89],[135,90],[140,91],[141,1],[144,91],[68,1],[167,92],[157,93],[148,94],[149,95],[151,96],[147,97],[150,98],[160,81],[142,99],[143,100],[152,101],[69,102],[155,93],[154,91],[158,1],[161,103],[61,1],[64,104],[62,1],[63,1]],"latestChangedDtsFile":"./types/register.d.ts","version":"5.9.3"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DuskMoon Breadcrumbs Element
|
|
3
|
+
*
|
|
4
|
+
* A hierarchical navigation breadcrumbs component for displaying the user's
|
|
5
|
+
* current location within a site structure.
|
|
6
|
+
*
|
|
7
|
+
* @element el-dm-breadcrumbs
|
|
8
|
+
*
|
|
9
|
+
* @attr {string} items - JSON array of breadcrumb items [{label, href}]
|
|
10
|
+
* @attr {string} separator - Separator character between items (default '/')
|
|
11
|
+
*
|
|
12
|
+
* @slot separator - Custom separator element to use between items
|
|
13
|
+
*
|
|
14
|
+
* @csspart nav - The navigation container
|
|
15
|
+
* @csspart list - The ordered list element
|
|
16
|
+
* @csspart item - Individual breadcrumb item container
|
|
17
|
+
* @csspart link - Breadcrumb link element
|
|
18
|
+
* @csspart current - Current page text (last item)
|
|
19
|
+
* @csspart separator - Separator element between items
|
|
20
|
+
*
|
|
21
|
+
* @fires navigate - Fired when a breadcrumb link is clicked. Detail: { item, index }
|
|
22
|
+
*/
|
|
23
|
+
import { BaseElement } from '@duskmoon-dev/el-core';
|
|
24
|
+
/**
|
|
25
|
+
* Represents a single breadcrumb item
|
|
26
|
+
*/
|
|
27
|
+
export interface BreadcrumbItem {
|
|
28
|
+
/** Display label for the breadcrumb */
|
|
29
|
+
label: string;
|
|
30
|
+
/** URL for the breadcrumb link (optional for last item) */
|
|
31
|
+
href?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Event detail for the navigate event
|
|
35
|
+
*/
|
|
36
|
+
export interface NavigateEventDetail {
|
|
37
|
+
/** The breadcrumb item that was clicked */
|
|
38
|
+
item: BreadcrumbItem;
|
|
39
|
+
/** The index of the clicked item */
|
|
40
|
+
index: number;
|
|
41
|
+
}
|
|
42
|
+
export declare class ElDmBreadcrumbs extends BaseElement {
|
|
43
|
+
static properties: {
|
|
44
|
+
items: {
|
|
45
|
+
type: ArrayConstructor;
|
|
46
|
+
reflect: boolean;
|
|
47
|
+
};
|
|
48
|
+
separator: {
|
|
49
|
+
type: StringConstructor;
|
|
50
|
+
reflect: boolean;
|
|
51
|
+
default: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/** Array of breadcrumb items */
|
|
55
|
+
items: BreadcrumbItem[];
|
|
56
|
+
/** Separator character between items */
|
|
57
|
+
separator: string;
|
|
58
|
+
constructor();
|
|
59
|
+
/**
|
|
60
|
+
* Handle click on a breadcrumb link
|
|
61
|
+
*/
|
|
62
|
+
private _handleClick;
|
|
63
|
+
/**
|
|
64
|
+
* Get the separator HTML - either from slot or default
|
|
65
|
+
*/
|
|
66
|
+
private _getSeparatorHtml;
|
|
67
|
+
/**
|
|
68
|
+
* Escape HTML special characters to prevent XSS
|
|
69
|
+
*/
|
|
70
|
+
private _escapeHtml;
|
|
71
|
+
render(): string;
|
|
72
|
+
update(): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=el-dm-breadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"el-dm-breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/el-dm-breadcrumbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAO,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,IAAI,EAAE,cAAc,CAAC;IACrB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAsED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAC,UAAU;;;;;;;;;;MAGf;IAEF,gCAAgC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IAEhC,wCAAwC;IAChC,SAAS,EAAE,MAAM,CAAC;;IAQ1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB,MAAM,IAAI,MAAM;IA+ChB,MAAM,IAAI,IAAI;CAaf"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @duskmoon-dev/el-breadcrumbs
|
|
3
|
+
*
|
|
4
|
+
* DuskMoon Breadcrumbs custom element
|
|
5
|
+
*/
|
|
6
|
+
import { ElDmBreadcrumbs } from './el-dm-breadcrumbs.js';
|
|
7
|
+
export { ElDmBreadcrumbs };
|
|
8
|
+
export type { BreadcrumbItem, NavigateEventDetail } from './el-dm-breadcrumbs.js';
|
|
9
|
+
/**
|
|
10
|
+
* Register the el-dm-breadcrumbs custom element
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { register } from '@duskmoon-dev/el-breadcrumbs';
|
|
15
|
+
* register();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function register(): void;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElF;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@duskmoon-dev/el-breadcrumbs",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/cjs/index.js",
|
|
6
|
+
"module": "./dist/esm/index.js",
|
|
7
|
+
"types": "./dist/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/types/index.d.ts",
|
|
11
|
+
"import": "./dist/esm/index.js",
|
|
12
|
+
"require": "./dist/cjs/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./register": {
|
|
15
|
+
"types": "./dist/types/register.d.ts",
|
|
16
|
+
"import": "./dist/esm/register.js",
|
|
17
|
+
"require": "./dist/cjs/register.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"prebuild": "bun run clean",
|
|
25
|
+
"build": "bun run build:esm && bun run build:cjs && bun run build:types",
|
|
26
|
+
"build:esm": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-core --external @duskmoon-dev/core",
|
|
27
|
+
"build:cjs": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/cjs --format cjs --sourcemap --external @duskmoon-dev/el-core --external @duskmoon-dev/core",
|
|
28
|
+
"build:types": "tsc --emitDeclarationOnly --outDir ./dist/types",
|
|
29
|
+
"dev": "bun build ./src/index.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-core --watch",
|
|
30
|
+
"clean": "del-cli dist",
|
|
31
|
+
"test": "bun test",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"format": "prettier --write 'src/**/*.ts' '*.json'",
|
|
34
|
+
"format:check": "prettier --check 'src/**/*.ts' '*.json'",
|
|
35
|
+
"lint": "eslint src",
|
|
36
|
+
"lint:check": "eslint src --max-warnings 0",
|
|
37
|
+
"lint:fix": "eslint src --fix",
|
|
38
|
+
"release": "bun publish",
|
|
39
|
+
"release:dry-run": "bun publish --dry-run"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@duskmoon-dev/el-core": "0.3.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"typescript": "^5.7.2"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
},
|
|
50
|
+
"customElements": "custom-elements.json",
|
|
51
|
+
"keywords": [
|
|
52
|
+
"duskmoon-dev",
|
|
53
|
+
"duskmoon",
|
|
54
|
+
"custom-elements",
|
|
55
|
+
"customelements",
|
|
56
|
+
"web-components",
|
|
57
|
+
"webcomponents",
|
|
58
|
+
"html",
|
|
59
|
+
"breadcrumbs",
|
|
60
|
+
"navigation"
|
|
61
|
+
]
|
|
62
|
+
}
|