@ssejal8/recipe-ui-kit 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +108 -277
  2. package/dist/cjs/index-BEr8BsSA.js +1712 -0
  3. package/dist/cjs/index-BEr8BsSA.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +5 -0
  5. package/dist/cjs/index.cjs.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +15 -0
  7. package/dist/cjs/loader.cjs.js.map +1 -0
  8. package/dist/cjs/recipe-kit.cjs.js +27 -0
  9. package/dist/cjs/recipe-kit.cjs.js.map +1 -0
  10. package/dist/cjs/rk-badge_10.cjs.entry.js +638 -0
  11. package/dist/cjs/rk-badge_10.cjs.entry.js.map +1 -0
  12. package/dist/collection/collection-manifest.json +22 -0
  13. package/dist/collection/components/rk-badge/rk-badge.js +97 -0
  14. package/dist/collection/components/rk-badge/rk-badge.js.map +1 -0
  15. package/dist/collection/components/rk-chip/rk-chip.js +245 -0
  16. package/dist/collection/components/rk-chip/rk-chip.js.map +1 -0
  17. package/dist/collection/components/rk-empty-state/rk-empty-state.js +138 -0
  18. package/dist/collection/components/rk-empty-state/rk-empty-state.js.map +1 -0
  19. package/dist/collection/components/rk-meal-slot/rk-meal-slot.js +312 -0
  20. package/dist/collection/components/rk-meal-slot/rk-meal-slot.js.map +1 -0
  21. package/dist/collection/components/rk-modal/rk-modal.js +256 -0
  22. package/dist/collection/components/rk-modal/rk-modal.js.map +1 -0
  23. package/dist/collection/components/rk-rating/rk-rating.js +228 -0
  24. package/dist/collection/components/rk-rating/rk-rating.js.map +1 -0
  25. package/dist/collection/components/rk-recipe-card/rk-recipe-card.js +366 -0
  26. package/dist/collection/components/rk-recipe-card/rk-recipe-card.js.map +1 -0
  27. package/dist/collection/components/rk-search-bar/rk-search-bar.js +291 -0
  28. package/dist/collection/components/rk-search-bar/rk-search-bar.js.map +1 -0
  29. package/dist/collection/components/rk-segmented-control/rk-segmented-control.js +196 -0
  30. package/dist/collection/components/rk-segmented-control/rk-segmented-control.js.map +1 -0
  31. package/dist/collection/components/rk-tag-input/rk-tag-input.js +264 -0
  32. package/dist/collection/components/rk-tag-input/rk-tag-input.js.map +1 -0
  33. package/dist/collection/index.js +2 -0
  34. package/dist/collection/index.js.map +1 -0
  35. package/dist/components/index.d.ts +35 -0
  36. package/dist/components/index.js +2 -0
  37. package/dist/components/index.js.map +1 -0
  38. package/dist/components/rk-badge.d.ts +11 -0
  39. package/dist/components/rk-badge.js +2 -0
  40. package/dist/components/rk-badge.js.map +1 -0
  41. package/dist/components/rk-chip.d.ts +11 -0
  42. package/dist/components/rk-chip.js +2 -0
  43. package/dist/components/rk-chip.js.map +1 -0
  44. package/dist/components/rk-empty-state.d.ts +11 -0
  45. package/dist/components/rk-empty-state.js +2 -0
  46. package/dist/components/rk-empty-state.js.map +1 -0
  47. package/dist/components/rk-meal-slot.d.ts +11 -0
  48. package/dist/components/rk-meal-slot.js +2 -0
  49. package/dist/components/rk-meal-slot.js.map +1 -0
  50. package/dist/components/rk-modal.d.ts +11 -0
  51. package/dist/components/rk-modal.js +2 -0
  52. package/dist/components/rk-modal.js.map +1 -0
  53. package/dist/components/rk-rating.d.ts +11 -0
  54. package/dist/components/rk-rating.js +2 -0
  55. package/dist/components/rk-rating.js.map +1 -0
  56. package/dist/components/rk-recipe-card.d.ts +11 -0
  57. package/dist/components/rk-recipe-card.js +2 -0
  58. package/dist/components/rk-recipe-card.js.map +1 -0
  59. package/dist/components/rk-search-bar.d.ts +11 -0
  60. package/dist/components/rk-search-bar.js +2 -0
  61. package/dist/components/rk-search-bar.js.map +1 -0
  62. package/dist/components/rk-segmented-control.d.ts +11 -0
  63. package/dist/components/rk-segmented-control.js +2 -0
  64. package/dist/components/rk-segmented-control.js.map +1 -0
  65. package/dist/components/rk-tag-input.d.ts +11 -0
  66. package/dist/components/rk-tag-input.js +2 -0
  67. package/dist/components/rk-tag-input.js.map +1 -0
  68. package/dist/esm/index-Bxo0C8lB.js +1684 -0
  69. package/dist/esm/index-Bxo0C8lB.js.map +1 -0
  70. package/dist/esm/index.js +4 -0
  71. package/dist/esm/index.js.map +1 -0
  72. package/dist/esm/loader.js +13 -0
  73. package/dist/esm/loader.js.map +1 -0
  74. package/dist/esm/recipe-kit.js +23 -0
  75. package/dist/esm/recipe-kit.js.map +1 -0
  76. package/dist/esm/rk-badge_10.entry.js +627 -0
  77. package/dist/esm/rk-badge_10.entry.js.map +1 -0
  78. package/dist/index.cjs.js +1 -0
  79. package/dist/index.js +1 -0
  80. package/dist/recipe-kit/index.esm.js +2 -0
  81. package/dist/recipe-kit/index.esm.js.map +1 -0
  82. package/dist/recipe-kit/p-Bxo0C8lB.js +3 -0
  83. package/dist/recipe-kit/p-Bxo0C8lB.js.map +1 -0
  84. package/dist/recipe-kit/p-fcb955c7.entry.js +2 -0
  85. package/dist/recipe-kit/p-fcb955c7.entry.js.map +1 -0
  86. package/dist/recipe-kit/recipe-kit.css +1 -0
  87. package/dist/recipe-kit/recipe-kit.esm.js +2 -0
  88. package/dist/recipe-kit/recipe-kit.esm.js.map +1 -0
  89. package/dist/recipe-kit/rk-global.css +104 -0
  90. package/dist/types/components/rk-badge/rk-badge.d.ts +15 -0
  91. package/dist/types/components/rk-chip/rk-chip.d.ts +37 -0
  92. package/dist/types/components/rk-empty-state/rk-empty-state.d.ts +19 -0
  93. package/dist/types/components/rk-meal-slot/rk-meal-slot.d.ts +53 -0
  94. package/dist/types/components/rk-modal/rk-modal.d.ts +41 -0
  95. package/dist/types/components/rk-rating/rk-rating.d.ts +26 -0
  96. package/dist/types/components/rk-recipe-card/rk-recipe-card.d.ts +67 -0
  97. package/dist/types/components/rk-search-bar/rk-search-bar.d.ts +39 -0
  98. package/dist/types/components/rk-segmented-control/rk-segmented-control.d.ts +37 -0
  99. package/dist/types/components/rk-tag-input/rk-tag-input.d.ts +35 -0
  100. package/{packages/recipe-kit-stencil/src → dist/types}/components.d.ts +1 -1
  101. package/{packages/recipe-kit-stencil/src/index.ts → dist/types/index.d.ts} +0 -2
  102. package/dist/types/stencil-public-runtime.d.ts +1873 -0
  103. package/loader/cdn.js +1 -0
  104. package/loader/index.cjs.js +1 -0
  105. package/loader/index.d.ts +24 -0
  106. package/loader/index.es2017.js +1 -0
  107. package/loader/index.js +2 -0
  108. package/package.json +84 -22
  109. package/.claude/settings.local.json +0 -10
  110. package/.npmr +0 -1
  111. package/apps/recipe-web/package.json +0 -31
  112. package/apps/recipe-web/src/app.css +0 -418
  113. package/apps/recipe-web/src/app.d.ts +0 -32
  114. package/apps/recipe-web/src/app.html +0 -25
  115. package/apps/recipe-web/src/lib/api/mealdb.ts +0 -240
  116. package/apps/recipe-web/src/lib/components/AppHeader.svelte +0 -290
  117. package/apps/recipe-web/src/lib/components/ConfirmDialog.svelte +0 -46
  118. package/apps/recipe-web/src/lib/components/Modal.svelte +0 -33
  119. package/apps/recipe-web/src/lib/components/RecipeCard.svelte +0 -100
  120. package/apps/recipe-web/src/lib/components/RecipeForm.svelte +0 -560
  121. package/apps/recipe-web/src/lib/components/RecipeGrid.svelte +0 -77
  122. package/apps/recipe-web/src/lib/components/RecipePickerDialog.svelte +0 -185
  123. package/apps/recipe-web/src/lib/components/Toaster.svelte +0 -111
  124. package/apps/recipe-web/src/lib/domain/recipe.ts +0 -130
  125. package/apps/recipe-web/src/lib/domain/validation.ts +0 -189
  126. package/apps/recipe-web/src/lib/stencil/WebComponent.svelte +0 -145
  127. package/apps/recipe-web/src/lib/stencil/register.ts +0 -28
  128. package/apps/recipe-web/src/lib/stores/favorites.svelte.ts +0 -81
  129. package/apps/recipe-web/src/lib/stores/myRecipes.svelte.ts +0 -98
  130. package/apps/recipe-web/src/lib/stores/persisted.svelte.ts +0 -73
  131. package/apps/recipe-web/src/lib/stores/planner.svelte.ts +0 -275
  132. package/apps/recipe-web/src/lib/stores/theme.svelte.ts +0 -67
  133. package/apps/recipe-web/src/lib/stores/toast.svelte.ts +0 -66
  134. package/apps/recipe-web/src/routes/+error.svelte +0 -36
  135. package/apps/recipe-web/src/routes/+layout.svelte +0 -62
  136. package/apps/recipe-web/src/routes/+page.svelte +0 -352
  137. package/apps/recipe-web/src/routes/+page.ts +0 -107
  138. package/apps/recipe-web/src/routes/favorites/+page.svelte +0 -170
  139. package/apps/recipe-web/src/routes/my-recipes/+layout.ts +0 -55
  140. package/apps/recipe-web/src/routes/my-recipes/+page.svelte +0 -180
  141. package/apps/recipe-web/src/routes/my-recipes/[id]/edit/+page.svelte +0 -104
  142. package/apps/recipe-web/src/routes/my-recipes/new/+page.svelte +0 -67
  143. package/apps/recipe-web/src/routes/planner/+page.svelte +0 -422
  144. package/apps/recipe-web/src/routes/recipes/[id]/+page.svelte +0 -538
  145. package/apps/recipe-web/src/routes/recipes/[id]/+page.ts +0 -24
  146. package/apps/recipe-web/static/favicon.svg +0 -8
  147. package/apps/recipe-web/static/robots.txt +0 -2
  148. package/apps/recipe-web/svelte.config.js +0 -35
  149. package/apps/recipe-web/tsconfig.json +0 -14
  150. package/apps/recipe-web/vite.config.ts +0 -23
  151. package/packages/recipe-kit-stencil/README.md +0 -185
  152. package/packages/recipe-kit-stencil/package-lock.json +0 -4772
  153. package/packages/recipe-kit-stencil/package.json +0 -91
  154. package/packages/recipe-kit-stencil/src/components/rk-badge/readme.md +0 -38
  155. package/packages/recipe-kit-stencil/src/components/rk-badge/rk-badge.tsx +0 -31
  156. package/packages/recipe-kit-stencil/src/components/rk-chip/readme.md +0 -52
  157. package/packages/recipe-kit-stencil/src/components/rk-chip/rk-chip.tsx +0 -105
  158. package/packages/recipe-kit-stencil/src/components/rk-empty-state/readme.md +0 -44
  159. package/packages/recipe-kit-stencil/src/components/rk-empty-state/rk-empty-state.tsx +0 -50
  160. package/packages/recipe-kit-stencil/src/components/rk-meal-slot/readme.md +0 -58
  161. package/packages/recipe-kit-stencil/src/components/rk-meal-slot/rk-meal-slot.tsx +0 -182
  162. package/packages/recipe-kit-stencil/src/components/rk-modal/readme.md +0 -57
  163. package/packages/recipe-kit-stencil/src/components/rk-modal/rk-modal.tsx +0 -176
  164. package/packages/recipe-kit-stencil/src/components/rk-rating/readme.md +0 -42
  165. package/packages/recipe-kit-stencil/src/components/rk-rating/rk-rating.tsx +0 -114
  166. package/packages/recipe-kit-stencil/src/components/rk-recipe-card/readme.md +0 -66
  167. package/packages/recipe-kit-stencil/src/components/rk-recipe-card/rk-recipe-card.tsx +0 -179
  168. package/packages/recipe-kit-stencil/src/components/rk-recipe-card/test/rk-recipe-card.spec.tsx +0 -70
  169. package/packages/recipe-kit-stencil/src/components/rk-search-bar/readme.md +0 -67
  170. package/packages/recipe-kit-stencil/src/components/rk-search-bar/rk-search-bar.tsx +0 -152
  171. package/packages/recipe-kit-stencil/src/components/rk-search-bar/test/rk-search-bar.spec.tsx +0 -93
  172. package/packages/recipe-kit-stencil/src/components/rk-segmented-control/readme.md +0 -41
  173. package/packages/recipe-kit-stencil/src/components/rk-segmented-control/rk-segmented-control.tsx +0 -115
  174. package/packages/recipe-kit-stencil/src/components/rk-tag-input/readme.md +0 -47
  175. package/packages/recipe-kit-stencil/src/components/rk-tag-input/rk-tag-input.tsx +0 -181
  176. package/packages/recipe-kit-stencil/src/components/rk-tag-input/test/rk-tag-input.spec.tsx +0 -76
  177. package/packages/recipe-kit-stencil/src/index.html +0 -259
  178. package/packages/recipe-kit-stencil/stencil.config.ts +0 -41
  179. package/packages/recipe-kit-stencil/tsconfig.json +0 -24
  180. /package/{packages/recipe-kit-stencil/LICENSE → LICENSE} +0 -0
  181. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-badge/rk-badge.css +0 -0
  182. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-chip/rk-chip.css +0 -0
  183. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-empty-state/rk-empty-state.css +0 -0
  184. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-meal-slot/rk-meal-slot.css +0 -0
  185. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-modal/rk-modal.css +0 -0
  186. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-rating/rk-rating.css +0 -0
  187. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-recipe-card/rk-recipe-card.css +0 -0
  188. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-search-bar/rk-search-bar.css +0 -0
  189. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-segmented-control/rk-segmented-control.css +0 -0
  190. /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-tag-input/rk-tag-input.css +0 -0
  191. /package/{packages/recipe-kit-stencil/src/global → dist/collection}/rk-global.css +0 -0
@@ -0,0 +1,264 @@
1
+ import { h, Host } from "@stencil/core";
2
+ /**
3
+ * A tag / token editor used for recipe tags and free-form ingredient lists.
4
+ *
5
+ * `values` is an array property — the SvelteKit app assigns it as a DOM
6
+ * property. A JSON-encoded or comma-separated string attribute also works.
7
+ */
8
+ export class RkTagInput {
9
+ constructor() {
10
+ /** Current tags. Array, JSON string, or comma-separated string. */
11
+ this.values = [];
12
+ /** Placeholder for the entry field. */
13
+ this.placeholder = 'Add a tag and press Enter';
14
+ /** Maximum number of tags. `0` means unlimited. */
15
+ this.maxTags = 0;
16
+ /** Prevent editing. */
17
+ this.disabled = false;
18
+ this.draft = '';
19
+ this.tags = [];
20
+ this.handleKeyDown = (event) => {
21
+ if (event.key === 'Enter' || event.key === ',') {
22
+ event.preventDefault();
23
+ this.addDraft();
24
+ }
25
+ else if (event.key === 'Backspace' && this.draft === '' && this.tags.length > 0) {
26
+ event.preventDefault();
27
+ this.removeAt(this.tags.length - 1);
28
+ }
29
+ };
30
+ }
31
+ onValuesChange() {
32
+ this.syncTags();
33
+ }
34
+ componentWillLoad() {
35
+ this.syncTags();
36
+ }
37
+ syncTags() {
38
+ const incoming = this.values;
39
+ if (Array.isArray(incoming)) {
40
+ this.tags = incoming.filter(tag => typeof tag === 'string');
41
+ return;
42
+ }
43
+ if (typeof incoming === 'string' && incoming.trim()) {
44
+ const trimmed = incoming.trim();
45
+ if (trimmed.startsWith('[')) {
46
+ try {
47
+ const decoded = JSON.parse(trimmed);
48
+ this.tags = Array.isArray(decoded) ? decoded.map(String) : [];
49
+ return;
50
+ }
51
+ catch {
52
+ /* fall through to comma parsing */
53
+ }
54
+ }
55
+ this.tags = trimmed
56
+ .split(',')
57
+ .map(tag => tag.trim())
58
+ .filter(Boolean);
59
+ return;
60
+ }
61
+ this.tags = [];
62
+ }
63
+ get atCapacity() {
64
+ return this.maxTags > 0 && this.tags.length >= this.maxTags;
65
+ }
66
+ commit(next) {
67
+ this.tags = next;
68
+ this.rkTagsChange.emit([...next]);
69
+ }
70
+ addDraft() {
71
+ const candidates = this.draft
72
+ .split(',')
73
+ .map(tag => tag.trim())
74
+ .filter(Boolean);
75
+ if (candidates.length === 0)
76
+ return;
77
+ const next = [...this.tags];
78
+ for (const candidate of candidates) {
79
+ if (this.maxTags > 0 && next.length >= this.maxTags)
80
+ break;
81
+ // Case-insensitive de-duplication keeps "Vegan" and "vegan" from coexisting.
82
+ if (next.some(tag => tag.toLowerCase() === candidate.toLowerCase()))
83
+ continue;
84
+ next.push(candidate);
85
+ }
86
+ this.draft = '';
87
+ if (next.length !== this.tags.length)
88
+ this.commit(next);
89
+ }
90
+ removeAt(index) {
91
+ this.commit(this.tags.filter((_, position) => position !== index));
92
+ }
93
+ render() {
94
+ return (h(Host, { key: '446657dc603ffa9e4d14ee5c54c947aef90bab4f' }, this.label && (h("label", { key: '37575fae490ba8e1a03a3aa6e25ba46d2b364d9e', class: "label", part: "label", onClick: () => this.inputEl?.focus() }, this.label, this.maxTags > 0 && (h("span", { key: 'e29c5d1fd9038cee4707c310adfb88ce7cc75308', class: "counter" }, this.tags.length, "/", this.maxTags)))), h("div", { key: '13d171bce0dd090bd3034e0150e2def80f493960', class: { shell: true, 'is-disabled': this.disabled, 'has-error': !!this.error }, part: "shell", onClick: () => !this.disabled && this.inputEl?.focus() }, this.tags.map((tag, index) => (h("span", { class: "tag", part: "tag", key: `${tag}-${index}` }, h("span", { class: "tag-text" }, tag), h("button", { class: "tag-remove", type: "button", "aria-label": `Remove ${tag}`, disabled: this.disabled, onClick: event => {
95
+ event.stopPropagation();
96
+ this.removeAt(index);
97
+ } }, h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2.6", "stroke-linecap": "round", "aria-hidden": "true" }, h("path", { d: "M6 6l12 12M18 6 6 18" })))))), h("input", { key: '8ccdc5e12bd89f7c6b7b8d3c0f5bf80ec7473224', ref: el => (this.inputEl = el), class: "entry", part: "input", type: "text", value: this.draft, placeholder: this.tags.length === 0 ? this.placeholder : this.atCapacity ? '' : 'Add another…', "aria-label": this.label ?? 'Add a tag', disabled: this.disabled || this.atCapacity, autocomplete: "off", onInput: event => (this.draft = event.target.value), onKeyDown: this.handleKeyDown, onBlur: () => this.addDraft() })), this.error && (h("p", { key: '31e84622ac580903e7ebb6af7f57b1842572ce9f', class: "error", part: "error", role: "alert" }, this.error))));
98
+ }
99
+ static get is() { return "rk-tag-input"; }
100
+ static get encapsulation() { return "shadow"; }
101
+ static get originalStyleUrls() {
102
+ return {
103
+ "$": ["rk-tag-input.css"]
104
+ };
105
+ }
106
+ static get styleUrls() {
107
+ return {
108
+ "$": ["rk-tag-input.css"]
109
+ };
110
+ }
111
+ static get properties() {
112
+ return {
113
+ "values": {
114
+ "type": "string",
115
+ "mutable": false,
116
+ "complexType": {
117
+ "original": "string[] | string",
118
+ "resolved": "string | string[]",
119
+ "references": {}
120
+ },
121
+ "required": false,
122
+ "optional": false,
123
+ "docs": {
124
+ "tags": [],
125
+ "text": "Current tags. Array, JSON string, or comma-separated string."
126
+ },
127
+ "getter": false,
128
+ "setter": false,
129
+ "reflect": false,
130
+ "attribute": "values",
131
+ "defaultValue": "[]"
132
+ },
133
+ "placeholder": {
134
+ "type": "string",
135
+ "mutable": false,
136
+ "complexType": {
137
+ "original": "string",
138
+ "resolved": "string",
139
+ "references": {}
140
+ },
141
+ "required": false,
142
+ "optional": false,
143
+ "docs": {
144
+ "tags": [],
145
+ "text": "Placeholder for the entry field."
146
+ },
147
+ "getter": false,
148
+ "setter": false,
149
+ "reflect": false,
150
+ "attribute": "placeholder",
151
+ "defaultValue": "'Add a tag and press Enter'"
152
+ },
153
+ "label": {
154
+ "type": "string",
155
+ "mutable": false,
156
+ "complexType": {
157
+ "original": "string",
158
+ "resolved": "string",
159
+ "references": {}
160
+ },
161
+ "required": false,
162
+ "optional": true,
163
+ "docs": {
164
+ "tags": [],
165
+ "text": "Visible field label."
166
+ },
167
+ "getter": false,
168
+ "setter": false,
169
+ "reflect": false,
170
+ "attribute": "label"
171
+ },
172
+ "maxTags": {
173
+ "type": "number",
174
+ "mutable": false,
175
+ "complexType": {
176
+ "original": "number",
177
+ "resolved": "number",
178
+ "references": {}
179
+ },
180
+ "required": false,
181
+ "optional": false,
182
+ "docs": {
183
+ "tags": [],
184
+ "text": "Maximum number of tags. `0` means unlimited."
185
+ },
186
+ "getter": false,
187
+ "setter": false,
188
+ "reflect": false,
189
+ "attribute": "max-tags",
190
+ "defaultValue": "0"
191
+ },
192
+ "disabled": {
193
+ "type": "boolean",
194
+ "mutable": false,
195
+ "complexType": {
196
+ "original": "boolean",
197
+ "resolved": "boolean",
198
+ "references": {}
199
+ },
200
+ "required": false,
201
+ "optional": false,
202
+ "docs": {
203
+ "tags": [],
204
+ "text": "Prevent editing."
205
+ },
206
+ "getter": false,
207
+ "setter": false,
208
+ "reflect": false,
209
+ "attribute": "disabled",
210
+ "defaultValue": "false"
211
+ },
212
+ "error": {
213
+ "type": "string",
214
+ "mutable": false,
215
+ "complexType": {
216
+ "original": "string",
217
+ "resolved": "string",
218
+ "references": {}
219
+ },
220
+ "required": false,
221
+ "optional": true,
222
+ "docs": {
223
+ "tags": [],
224
+ "text": "Validation message rendered under the field."
225
+ },
226
+ "getter": false,
227
+ "setter": false,
228
+ "reflect": false,
229
+ "attribute": "error"
230
+ }
231
+ };
232
+ }
233
+ static get states() {
234
+ return {
235
+ "draft": {},
236
+ "tags": {}
237
+ };
238
+ }
239
+ static get events() {
240
+ return [{
241
+ "method": "rkTagsChange",
242
+ "name": "rkTagsChange",
243
+ "bubbles": true,
244
+ "cancelable": true,
245
+ "composed": true,
246
+ "docs": {
247
+ "tags": [],
248
+ "text": "Emitted with the full, updated list whenever tags change."
249
+ },
250
+ "complexType": {
251
+ "original": "string[]",
252
+ "resolved": "string[]",
253
+ "references": {}
254
+ }
255
+ }];
256
+ }
257
+ static get watchers() {
258
+ return [{
259
+ "propName": "values",
260
+ "methodName": "onValuesChange"
261
+ }];
262
+ }
263
+ }
264
+ //# sourceMappingURL=rk-tag-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rk-tag-input.js","sourceRoot":"","sources":["../../../src/components/rk-tag-input/rk-tag-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\n/**\n * A tag / token editor used for recipe tags and free-form ingredient lists.\n *\n * `values` is an array property — the SvelteKit app assigns it as a DOM\n * property. A JSON-encoded or comma-separated string attribute also works.\n */\n@Component({\n tag: 'rk-tag-input',\n styleUrl: 'rk-tag-input.css',\n shadow: true,\n})\nexport class RkTagInput {\n /** Current tags. Array, JSON string, or comma-separated string. */\n @Prop() values: string[] | string = [];\n\n /** Placeholder for the entry field. */\n @Prop() placeholder = 'Add a tag and press Enter';\n\n /** Visible field label. */\n @Prop() label?: string;\n\n /** Maximum number of tags. `0` means unlimited. */\n @Prop() maxTags = 0;\n\n /** Prevent editing. */\n @Prop() disabled = false;\n\n /** Validation message rendered under the field. */\n @Prop() error?: string;\n\n /** Emitted with the full, updated list whenever tags change. */\n @Event({ eventName: 'rkTagsChange' }) rkTagsChange!: EventEmitter<string[]>;\n\n @State() private draft = '';\n @State() private tags: string[] = [];\n\n private inputEl?: HTMLInputElement;\n\n @Watch('values')\n protected onValuesChange() {\n this.syncTags();\n }\n\n componentWillLoad() {\n this.syncTags();\n }\n\n private syncTags() {\n const incoming = this.values;\n if (Array.isArray(incoming)) {\n this.tags = incoming.filter(tag => typeof tag === 'string');\n return;\n }\n if (typeof incoming === 'string' && incoming.trim()) {\n const trimmed = incoming.trim();\n if (trimmed.startsWith('[')) {\n try {\n const decoded = JSON.parse(trimmed);\n this.tags = Array.isArray(decoded) ? decoded.map(String) : [];\n return;\n } catch {\n /* fall through to comma parsing */\n }\n }\n this.tags = trimmed\n .split(',')\n .map(tag => tag.trim())\n .filter(Boolean);\n return;\n }\n this.tags = [];\n }\n\n private get atCapacity() {\n return this.maxTags > 0 && this.tags.length >= this.maxTags;\n }\n\n private commit(next: string[]) {\n this.tags = next;\n this.rkTagsChange.emit([...next]);\n }\n\n private addDraft() {\n const candidates = this.draft\n .split(',')\n .map(tag => tag.trim())\n .filter(Boolean);\n if (candidates.length === 0) return;\n\n const next = [...this.tags];\n for (const candidate of candidates) {\n if (this.maxTags > 0 && next.length >= this.maxTags) break;\n // Case-insensitive de-duplication keeps \"Vegan\" and \"vegan\" from coexisting.\n if (next.some(tag => tag.toLowerCase() === candidate.toLowerCase())) continue;\n next.push(candidate);\n }\n\n this.draft = '';\n if (next.length !== this.tags.length) this.commit(next);\n }\n\n private removeAt(index: number) {\n this.commit(this.tags.filter((_, position) => position !== index));\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ',') {\n event.preventDefault();\n this.addDraft();\n } else if (event.key === 'Backspace' && this.draft === '' && this.tags.length > 0) {\n event.preventDefault();\n this.removeAt(this.tags.length - 1);\n }\n };\n\n render() {\n return (\n <Host>\n {this.label && (\n <label class=\"label\" part=\"label\" onClick={() => this.inputEl?.focus()}>\n {this.label}\n {this.maxTags > 0 && (\n <span class=\"counter\">\n {this.tags.length}/{this.maxTags}\n </span>\n )}\n </label>\n )}\n\n <div\n class={{ shell: true, 'is-disabled': this.disabled, 'has-error': !!this.error }}\n part=\"shell\"\n onClick={() => !this.disabled && this.inputEl?.focus()}\n >\n {this.tags.map((tag, index) => (\n <span class=\"tag\" part=\"tag\" key={`${tag}-${index}`}>\n <span class=\"tag-text\">{tag}</span>\n <button\n class=\"tag-remove\"\n type=\"button\"\n aria-label={`Remove ${tag}`}\n disabled={this.disabled}\n onClick={event => {\n event.stopPropagation();\n this.removeAt(index);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n </span>\n ))}\n\n <input\n ref={el => (this.inputEl = el)}\n class=\"entry\"\n part=\"input\"\n type=\"text\"\n value={this.draft}\n placeholder={this.tags.length === 0 ? this.placeholder : this.atCapacity ? '' : 'Add another…'}\n aria-label={this.label ?? 'Add a tag'}\n disabled={this.disabled || this.atCapacity}\n autocomplete=\"off\"\n onInput={event => (this.draft = (event.target as HTMLInputElement).value)}\n onKeyDown={this.handleKeyDown}\n onBlur={() => this.addDraft()}\n />\n </div>\n\n {this.error && (\n <p class=\"error\" part=\"error\" role=\"alert\">\n {this.error}\n </p>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"","sourcesContent":["export { Components, JSX } from './components';\n\n// Event payload contracts, re-exported so consumers can type their handlers.\nexport type { RkRecipeCardSelectDetail, RkFavoriteToggleDetail } from './components/rk-recipe-card/rk-recipe-card';\nexport type { RkSegmentOption } from './components/rk-segmented-control/rk-segmented-control';\nexport type { RkMealSlotDetail, RkMealRecipeDetail, RkMealDropDetail } from './components/rk-meal-slot/rk-meal-slot';\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Get the base path to where the assets can be found. Use "setAssetPath(path)"
3
+ * if the path needs to be customized.
4
+ */
5
+ export declare const getAssetPath: (path: string) => string;
6
+
7
+ /**
8
+ * Used to manually set the base path where assets can be found.
9
+ * If the script is used as "module", it's recommended to use "import.meta.url",
10
+ * such as "setAssetPath(import.meta.url)". Other options include
11
+ * "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
12
+ * dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
13
+ * But do note that this configuration depends on how your script is bundled, or lack of
14
+ * bundling, and where your assets can be loaded from. Additionally custom bundling
15
+ * will have to ensure the static assets are copied to its build directory.
16
+ */
17
+ export declare const setAssetPath: (path: string) => void;
18
+
19
+ /**
20
+ * Used to specify a nonce value that corresponds with an application's CSP.
21
+ * When set, the nonce will be added to all dynamically created script and style tags at runtime.
22
+ * Alternatively, the nonce value can be set on a meta tag in the DOM head
23
+ * (<meta name="csp-nonce" content="{ nonce value here }" />) which
24
+ * will result in the same behavior.
25
+ */
26
+ export declare const setNonce: (nonce: string) => void
27
+
28
+ export interface SetPlatformOptions {
29
+ raf?: (c: FrameRequestCallback) => number;
30
+ ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
31
+ rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
32
+ }
33
+ export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
34
+
35
+ export * from '../types';
@@ -0,0 +1,2 @@
1
+ const e=':root,:host{--rk-primary:#d94f1b;--rk-primary-strong:#b23c11;--rk-primary-soft:#fdeee6;--rk-accent:#0f766e;--rk-accent-soft:#e2f3f1;--rk-bg:#fffaf6;--rk-surface:#ffffff;--rk-surface-2:#fdf5ef;--rk-ink:#211a16;--rk-ink-2:#52443c;--rk-muted:#857166;--rk-border:#ecdfd4;--rk-border-strong:#d9c6b8;--rk-danger:#c2410c;--rk-danger-soft:#fdeae1;--rk-success:#15803d;--rk-success-soft:#e6f5eb;--rk-warning:#a16207;--rk-warning-soft:#fdf3d8;--rk-radius-sm:8px;--rk-radius:14px;--rk-radius-lg:20px;--rk-radius-pill:999px;--rk-shadow-sm:0 1px 2px rgba(33, 26, 22, 0.06), 0 1px 3px rgba(33, 26, 22, 0.04);--rk-shadow:0 4px 12px rgba(33, 26, 22, 0.08), 0 1px 3px rgba(33, 26, 22, 0.05);--rk-shadow-lg:0 18px 42px rgba(33, 26, 22, 0.16);--rk-font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--rk-font-display:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--rk-font-size:15px;--rk-transition:160ms cubic-bezier(0.2, 0, 0.2, 1);--rk-focus-ring:0 0 0 3px rgba(217, 79, 27, 0.32);--rk-z-modal:1000}:root[data-rk-theme=\'dark\'],:root[data-theme=\'dark\']{--rk-primary:#ff7a45;--rk-primary-strong:#ff9469;--rk-primary-soft:#3a2118;--rk-accent:#5eead4;--rk-accent-soft:#10312e;--rk-bg:#16110e;--rk-surface:#201814;--rk-surface-2:#2a201a;--rk-ink:#f7ece5;--rk-ink-2:#d9c8bd;--rk-muted:#a89387;--rk-border:#38291f;--rk-border-strong:#4b382c;--rk-danger:#ff8f66;--rk-danger-soft:#3a1d14;--rk-success:#6ee7a0;--rk-success-soft:#12301f;--rk-warning:#fbbf5b;--rk-warning-soft:#33260d;--rk-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.4);--rk-shadow:0 4px 14px rgba(0, 0, 0, 0.45);--rk-shadow-lg:0 20px 48px rgba(0, 0, 0, 0.6);--rk-focus-ring:0 0 0 3px rgba(255, 122, 69, 0.4)}.rk-sr-only{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}';const t="recipe-kit";const r={hotModuleReplacement:false,hydratedSelectorName:"hydrated",lazyLoad:false,state:true,updatable:true};var n="http://www.w3.org/2000/svg";var s="http://www.w3.org/1999/xhtml";function i(e,t,r){const n=typeof HTMLElement!=="undefined"?HTMLElement.prototype:null;while(e&&e!==n){const n=Object.getOwnPropertyDescriptor(e,t);if(n&&(!r||n.get))return n;e=Object.getPrototypeOf(e)}return void 0}var o=(e,t)=>{var r;const n=t.t;const s=Object.entries((r=n.i)!=null?r:{});s.map((([r,[n]])=>{if(n&31||n&32){const n=e[r];const s=i(Object.getPrototypeOf(e),r,true)||Object.getOwnPropertyDescriptor(e,r);if(s){Object.defineProperty(e,r,{get(){return s.get.call(this)},set(e){s.set.call(this,e)},configurable:true,enumerable:true})}if(t.o.has(r)){e[r]=t.o.get(r)}else if(n!==void 0){e[r]=n}}}))};var l=e=>{if(e.__stencil__getHostRef){return e.__stencil__getHostRef()}return void 0};var f=(e,t)=>{const n={l:0,$hostElement$:e,t,o:new Map,u:new Map};{n.v=new Promise((e=>n.p=e));e["s-p"]=[];e["s-rc"]=[]}const s=n;e.__stencil__getHostRef=()=>s;if(t.l&512&&r.state){o(e,n)}return s};var a=(e,t)=>t in e;var c=(e,t)=>(0,console.error)(e,t);var u=new Map;var v="slot-fb{display:contents}slot-fb[hidden]{display:none}";var d=1e3;var p=typeof window!=="undefined"?window:{};var h=p.HTMLElement||class{};var b={l:0,h:"",jmp:e=>e(),raf:e=>requestAnimationFrame(e),ael:(e,t,r,n)=>e.addEventListener(t,r,n),rel:(e,t,r,n)=>e.removeEventListener(t,r,n),ce:(e,t)=>new CustomEvent(e,t)};var m=e=>Promise.resolve(e);var g=(()=>{try{if(!p.document.adoptedStyleSheets){return false}new CSSStyleSheet;return typeof(new CSSStyleSheet).replaceSync==="function"}catch(e){}return false})();var k=g?(()=>!!p.document&&Object.getOwnPropertyDescriptor(p.document.adoptedStyleSheets,"length").writable)():false;var y=false;var w=[];var $=[];var x=()=>{var e;return((e=p.document)==null?void 0:e.hidden)?M(O):b.raf(O)};var j=(e,t)=>r=>{e.push(r);if(!y){y=true;if(t&&b.l&4){M(O)}else{x()}}};var S=e=>{for(let t=0;t<e.length;t++){try{e[t](performance.now())}catch(e){c(e)}}e.length=0};var O=()=>{S(w);{S($);if(y=w.length>0){x()}}};var M=e=>m().then(e);var E=j($,true);var C=e=>{const t=new URL(e,b.h);return t.origin!==p.location.origin?t.href:t.pathname};var A=e=>b.h=e;function N(e){if(!g)return void 0;const t=new CSSStyleSheet;t.replaceSync(e);return t}var L;function U(t){var r;const n={mode:"open"};const s=this.attachShadow(n);if(L===void 0)L=(r=N(e))!=null?r:null;if(L){if(k){s.adoptedStyleSheets.push(L)}else{s.adoptedStyleSheets=[...s.adoptedStyleSheets,L]}}else if(!g){const t=document.createElement("style");t.innerHTML=e;s.prepend(t)}}var P=(e,t="")=>{{return()=>{}}};function R(e){var t,r,n;return(n=(r=(t=e.head)==null?void 0:t.querySelector('meta[name="csp-nonce"]'))==null?void 0:r.getAttribute("content"))!=null?n:void 0}var z=new WeakMap;var H=(e,t,r)=>{let n=u.get(e);if(g&&r){n=n||new CSSStyleSheet;if(typeof n==="string"){n=t}else{n.replaceSync(t)}}else{n=t}u.set(e,n)};var _=(e,t,r)=>{var n,s,i;const o=W(t);const l=u.get(o);if(!p.document){return o}e=e.nodeType===11?e:p.document;if(l){if(typeof l==="string"){e=e.head||e;let r=z.get(e);let i;if(!r){z.set(e,r=new Set)}if(!r.has(o)){i=p.document.createElement("style");i.textContent=l;const f=(n=b.m)!=null?n:R(p.document);if(f!=null){i.setAttribute("nonce",f)}if(!(t.l&1)){if(e.nodeName==="HEAD"){const t=e.querySelectorAll("link[rel=preconnect]");const r=t.length>0?t[t.length-1].nextSibling:e.querySelector("style");e.insertBefore(i,(r==null?void 0:r.parentNode)===e?r:null)}else if("host"in e){if(g){const t=(s=e.defaultView)!=null?s:e.ownerDocument.defaultView;const r=new t.CSSStyleSheet;r.replaceSync(l);if(k){e.adoptedStyleSheets.unshift(r)}else{e.adoptedStyleSheets=[r,...e.adoptedStyleSheets]}}else{const t=e.querySelector("style");if(t&&true){t.textContent=l+t.textContent}else{e.prepend(i)}}}else{e.append(i)}}if(t.l&1){e.insertBefore(i,null)}if(t.l&4){i.textContent+=v}if(r){r.add(o)}}}else{let t=z.get(e);if(!t){z.set(e,t=new Set)}if(!t.has(o)){const r=(i=e.defaultView)!=null?i:e.ownerDocument.defaultView;let n;if(l.constructor===r.CSSStyleSheet){n=l}else{n=new r.CSSStyleSheet;for(let e=0;e<l.cssRules.length;e++){n.insertRule(l.cssRules[e].cssText,e)}}if(k){e.adoptedStyleSheets.push(n)}else{e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]}t.add(o)}}}return o};var D=e=>{const t=e.t;const r=e.$hostElement$;const n=t.l;const s=P("attachStyles",t.k);const i=_(r.shadowRoot?r.shadowRoot:r.getRootNode(),t);if(n&10){r["s-sc"]=i;r.classList.add(i+"-h")}s()};var W=(e,t)=>"sc-"+e.k;var F=e=>{e=typeof e;return e==="object"||e==="function"};var I=(e,t,...r)=>{if(typeof e==="string"){e=Ge(e)}let n=null;let s=null;let i=false;let o=false;const l=[];const f=t=>{for(let r=0;r<t.length;r++){n=t[r];if(Array.isArray(n)){f(n)}else if(n!=null&&typeof n!=="boolean"){if(i=typeof e!=="function"&&!F(n)){n=String(n)}else if(typeof e!=="function"&&n.l===void 0){{c("Invalid vNode child")}continue}if(i&&o){l[l.length-1].$+=n}else{l.push(i?T(null,n):n)}o=i}}};f(r);if(t){if(t.key){s=t.key}{const e=t.className||t.class;if(e){t.class=typeof e!=="object"?e:Object.keys(e).filter((t=>e[t])).join(" ")}}}const a=T(e,null);a.j=t;if(l.length>0){a.S=l}{a.O=s}return a};var T=(e,t)=>{const r={l:0,M:e,$:t!=null?t:null,C:null,S:null};{r.j=null}{r.O=null}return r};var V={};var q=e=>e&&e.M===V;var G=e=>{if(!e)return void 0;const t=Object.keys(e);if(t.length===0)return void 0;let r=false;for(const n of t){if(r)break;for(const t of e[n]){if(typeof t==="string"){r=true;break}}}if(!r)return e;const n={};for(const r of t){n[r]=e[r].map((e=>typeof e==="string"?{[e]:0}:e))}return n};var Y=(e,t,r)=>{if(e!=null&&!F(e)){if(t&4){{return e==="false"?false:e===""||!!e}}if(t&2){return typeof e==="string"?parseFloat(e):typeof e==="number"?e:NaN}if(t&1){return String(e)}return e}return e};var Z=e=>e;var B=(e,t,r)=>{const n=Z(e);return{emit:e=>J(n,t,{bubbles:true,composed:true,cancelable:true,detail:e})}};var J=(e,t,r)=>{const n=b.ce(t,r);e.dispatchEvent(n);return n};var K=(e,t,r,n,s,i,o)=>{if(r===n){return}let f=a(e,t);let c=t.toLowerCase();if(t==="class"){const t=e.classList;const s=te(r);let i=te(n);{t.remove(...s.filter((e=>e&&!i.includes(e))));t.add(...i.filter((e=>e&&!s.includes(e))))}}else if(t==="style"){{for(const t in r){if(!n||n[t]==null){if(t.includes("-")){e.style.removeProperty(t)}else{e.style[t]=""}}}}for(const t in n){if(!r||n[t]!==r[t]){if(t.includes("-")){e.style.setProperty(t,n[t])}else{e.style[t]=n[t]}}}}else if(t==="key");else if(t==="ref"){if(n){ke(n,e)}}else if(!e.__lookupSetter__(t)&&t[0]==="o"&&t[1]==="n"){if(t[2]==="-"){t=t.slice(3)}else if(a(p,c)){t=c.slice(2)}else{t=c[2]+t.slice(3)}if(r||n){const s=t.endsWith(re);t=t.replace(ne,"");if(r){b.rel(e,t,r,s)}if(n){b.ael(e,t,n,s)}}}else if(t[0]==="a"&&t.startsWith("attr:")){const r=t.slice(5);let s;{const t=l(e);if(t&&t.t&&t.t.i){const e=t.t.i[r];if(e&&e[1]){s=e[1]}}}if(!s){s=r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}if(n==null||n===false){if(n!==false||e.getAttribute(s)===""){e.removeAttribute(s)}}else{e.setAttribute(s,n===true?"":n)}return}else if(t[0]==="p"&&t.startsWith("prop:")){const r=t.slice(5);try{e[r]=n}catch(e){}return}else{const o=F(n);if((f||o&&n!==null)&&!s){try{if(!e.tagName.includes("-")){const s=n==null?"":n;if(t==="list"){f=false}else if(r==null||e[t]!==s){if(typeof e.__lookupSetter__(t)==="function"){e[t]=s}else{e.setAttribute(t,s)}}}else if(e[t]!==n){e[t]=n}}catch(e){}}if(n==null||n===false){if(n!==false||e.getAttribute(t)===""||i&4&&!X(t)){{e.removeAttribute(t)}}}else if((!f||i&4||s)&&!o&&e.nodeType===1){n=n===true?"":n;{e.setAttribute(t,n)}}}};var Q=new Set(["draggable","contenteditable","spellcheck"]);var X=e=>Q.has(e)||e.startsWith("aria-");var ee=/\s/;var te=e=>{if(typeof e==="object"&&e&&"baseVal"in e){e=e.baseVal}if(!e||typeof e!=="string"){return[]}return e.split(ee)};var re="Capture";var ne=new RegExp(re+"$");var se=(e,t,r,n)=>{const s=t.C.nodeType===11&&t.C.host?t.C.host:t.C;const i=e&&e.j||{};const o=t.j||{};{for(const e of ie(Object.keys(i))){if(!(e in o)){K(s,e,i[e],void 0,r,t.l)}}}for(const e of ie(Object.keys(o))){K(s,e,i[e],o[e],r,t.l)}};function ie(e){return e.includes("ref")?[...e.filter((e=>e!=="ref")),"ref"]:e}var oe;var le=false;var fe=false;var ae=[];var ce=[];var ue=(e,t,r)=>{const i=t.S[r];let o=0;let l;let f;if(i.$!=null){l=i.C=p.document.createTextNode(i.$)}else{if(!fe){fe=i.M==="svg"}if(!p.document){throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.")}l=i.C=p.document.createElementNS(fe?n:s,i.M);if(fe&&i.M==="foreignObject"){fe=false}{se(null,i,fe)}if(i.S){const t=i.M==="template"?l.content:l;for(o=0;o<i.S.length;++o){f=ue(e,i,o);if(f){t.appendChild(f)}}}{if(i.M==="svg"){fe=false}else if(l.tagName==="foreignObject"){fe=true}}}l["s-hn"]=oe;return l};var ve=e=>{b.l|=1;const t=e.closest(oe.toLowerCase());if(t!=null){const r=Array.from(t.__childNodes||t.childNodes).find((e=>e["s-cr"]));const n=Array.from(e.__childNodes||e.childNodes);for(const e of r?n.reverse():n){if(e["s-sh"]!=null){we(t,e,r!=null?r:null);e["s-sh"]=void 0}}}b.l&=-2};var de=(e,t,r,n,s,i)=>{let o=e;let l;if(o.shadowRoot&&o.tagName===oe){o=o.shadowRoot}if(r.M==="template"){o=o.content}for(;s<=i;++s){if(n[s]){l=ue(null,r,s);if(l){n[s].C=l;we(o,l,t)}}}};var pe=(e,t,r)=>{for(let n=t;n<=r;++n){const t=e[n];if(t){const e=t.C;ge(t);if(e){e.remove()}}}};var he=(e,t,r,n,s=false)=>{let i=0;let o=0;let l=0;let f=0;let a=t.length-1;let c=t[0];let u=t[a];let v=n.length-1;let d=n[0];let p=n[v];let h;let b;const m=r.M==="template"?e.content:e;while(i<=a&&o<=v){if(c==null){c=t[++i]}else if(u==null){u=t[--a]}else if(d==null){d=n[++o]}else if(p==null){p=n[--v]}else if(be(c,d,s)){me(c,d,s);c=t[++i];d=n[++o]}else if(be(u,p,s)){me(u,p,s);u=t[--a];p=n[--v]}else if(be(c,p,s)){me(c,p,s);we(m,c.C,u.C.nextSibling);c=t[++i];p=n[--v]}else if(be(u,d,s)){me(u,d,s);we(m,u.C,c.C);u=t[--a];d=n[++o]}else{l=-1;{for(f=i;f<=a;++f){if(t[f]&&t[f].O!==null&&t[f].O===d.O){l=f;break}}}if(l>=0){b=t[l];if(b.M!==d.M){h=ue(t&&t[o],r,l)}else{me(b,d,s);t[l]=void 0;h=b.C}d=n[++o]}else{h=ue(t&&t[o],r,o);d=n[++o]}if(h){{we(c.C.parentNode,h,c.C)}}}}if(i>a){de(e,n[v+1]==null?null:n[v+1].C,r,n,o,v)}else if(o>v){pe(t,i,a)}};var be=(e,t,r=false)=>{if(e.M===t.M){if(!r){return e.O===t.O}if(r&&!e.O&&t.O){e.O=t.O}return true}return false};var me=(e,t,n=false)=>{const s=t.C=e.C;const i=e.S;const o=t.S;const l=t.M;const f=t.$;if(f==null){{fe=l==="svg"?true:l==="foreignObject"?false:fe}{if(l==="slot"&&!le){if(e.A!==t.A){t.C["s-sn"]=t.A||"";ve(t.C.parentElement)}}se(e,t,fe)}if(i!==null&&o!==null){he(s,i,t,o,n)}else if(o!==null){if(e.$!==null){s.textContent=""}de(s,null,t,o,0,o.length-1)}else if(!n&&r.updatable&&i!==null){pe(i,0,i.length-1)}else;if(fe&&l==="svg"){fe=false}}else if(e.$!==f){s.data=f}};var ge=e=>{{if(e.j&&e.j.ref){ae.push((()=>e.j.ref(null)))}e.S&&e.S.map(ge)}};var ke=(e,t)=>{{ce.push((()=>e(t)))}};var ye=()=>{{ae.forEach((e=>e()));ae.length=0;ce.forEach((e=>e()));ce.length=0}};var we=(e,t,r,n)=>{{return e==null?void 0:e.insertBefore(t,r)}};var $e=(e,t,r=false)=>{const n=e.$hostElement$;const s=e.t;const i=e.N||T(null,null);const o=q(t);const l=o?t:I(null,null,t);oe=n.tagName;if(r&&l.j){for(const e of Object.keys(l.j)){if(n.hasAttribute(e)&&!["key","ref","style","class"].includes(e)){l.j[e]=n[e]}}}l.M=null;l.l|=4;e.N=l;l.C=i.C=n.shadowRoot||n;le=!!(s.l&1)&&!(s.l&128);me(i,l,r);ye()};var xe=(e,t)=>{if(t&&!e.L&&t["s-p"]){const r=t["s-p"].push(new Promise((n=>e.L=()=>{t["s-p"].splice(r-1,1);n()})))}};var je=(e,t)=>{{e.l|=16}if(e.l&4){e.l|=512;return}xe(e,e.U);const r=()=>Se(e,t);if(t){queueMicrotask((()=>{r()}));return}return E(r)};var Se=(e,t)=>{const r=e.$hostElement$;const n=P("scheduleUpdate",e.t.k);const s=r;if(!s){throw new Error(`Can't render component <${r.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`)}let i;if(t){i=Le(s,"componentWillLoad",void 0,r)}else{i=Le(s,"componentWillUpdate",void 0,r)}i=Oe(i,(()=>Le(s,"componentWillRender",void 0,r)));n();return Oe(i,(()=>Ee(e,s,t)))};var Oe=(e,t)=>Me(e)?e.then(t).catch((e=>{console.error(e);t()})):t();var Me=e=>e instanceof Promise||e&&e.then&&typeof e.then==="function";var Ee=async(e,t,r)=>{var n;const s=e.$hostElement$;const i=P("update",e.t.k);const o=s["s-rc"];if(r){D(e)}const l=P("render",e.t.k);{Ce(e,t,s,r)}if(o){o.map((e=>e()));s["s-rc"]=void 0}l();i();{const t=(n=s["s-p"])!=null?n:[];const r=()=>Ae(e);if(t.length===0){r()}else{Promise.all(t).then(r).catch(r);e.l|=4;t.length=0}}};var Ce=(e,t,r,n)=>{try{t=t.render();{e.l&=-17}{e.l|=2}{{{$e(e,t,n)}}}}catch(t){c(t,e.$hostElement$)}return null};var Ae=e=>{const t=e.t.k;const r=e.$hostElement$;const n=P("postUpdate",t);const s=r;const i=e.U;Le(s,"componentDidRender",void 0,r);if(!(e.l&64)){e.l|=64;{Ue(r)}Le(s,"componentDidLoad",void 0,r);n();{e.p(r);if(!i){Ne()}}}else{Le(s,"componentDidUpdate",void 0,r);n()}{if(e.L){e.L();e.L=void 0}if(e.l&512){M((()=>je(e,false)))}e.l&=-517}};var Ne=e=>{M((()=>J(p,"appload",{detail:{namespace:t}})))};var Le=(e,t,r,n)=>{if(e&&e[t]){try{return e[t](r)}catch(e){c(e,n)}}return void 0};var Ue=e=>{var t;return e.classList.add((t=r.hydratedSelectorName)!=null?t:"hydrated")};var Pe=(e,t)=>l(e).o.get(t);var Re=(e,t,r,n)=>{const s=l(e);if(!s){return}const i=e;const o=s.o.get(t);const f=s.l;const a=i;r=Y(r,n.i[t][0]);const u=Number.isNaN(o)&&Number.isNaN(r);const v=r!==o&&!u;if(v){s.o.set(t,r);if(n.P){const e=n.P[t];if(e){e.map((e=>{try{const[[n,i]]=Object.entries(e);if(f&128||i&1){if(!a){s.R.push((()=>{s.H[n](r,o,t)}))}else{a[n](r,o,t)}}}catch(e){c(e,i)}}))}}if(f&2){if(a.componentShouldUpdate){const e=a.componentShouldUpdate(r,o,t);if(e===false&&!(f&16)){return}}if(!(f&16)){je(s,false)}}}};var ze=(e,t,n)=>{var s,o;const f=e.prototype;{{if(e.watchers&&!t.P){t.P=G(e.watchers)}if(e.deserializers&&!t._){t._=e.deserializers}if(e.serializers&&!t.D){t.D=e.serializers}}const n=Object.entries((s=t.i)!=null?s:{});n.map((([e,[r]])=>{if(r&31||r&32){const{get:n,set:s}=i(f,e)||{};if(n)t.i[e][0]|=2048;if(s)t.i[e][0]|=4096;{Object.defineProperty(f,e,{get(){{return n?n.apply(this):Pe(this,e)}},configurable:true,enumerable:true})}Object.defineProperty(f,e,{set(n){const i=l(this);if(!i){return}if(s){const o=r&32?this[e]:i.$hostElement$[e];if(typeof o==="undefined"&&i.o.get(e)){n=i.o.get(e)}s.apply(this,[Y(n,r)]);n=r&32?this[e]:i.$hostElement$[e];Re(this,e,n,t);return}{Re(this,e,n,t);return}}})}}));{const s=new Map;f.attributeChangedCallback=function(e,i,o){b.jmp((()=>{var a;const c=s.get(e);const u=l(this);if(this.hasOwnProperty(c)&&r.lazyLoad);if(f.hasOwnProperty(c)&&typeof this[c]==="number"&&this[c]==o){return}else if(c==null){const r=u==null?void 0:u.l;if(u&&r&&!(r&8)&&o!==i){const n=this;const s=n;const l=(a=t.P)==null?void 0:a[e];l==null?void 0:l.forEach((t=>{const[[n,l]]=Object.entries(t);if(s[n]!=null&&(r&128||l&1)){s[n].call(s,o,i,e)}}))}return}const v=n.find((([e])=>e===c));const d=v&&v[1][0]&4;const p=d&&o===null&&this[c]===void 0;if(d){o=o===null||o==="false"?false:true}const h=Object.getOwnPropertyDescriptor(f,c);if(!p&&o!=this[c]&&(!h.get||!!h.set)){this[c]=o}}))};e.observedAttributes=Array.from(new Set([...Object.keys((o=t.P)!=null?o:{}),...n.filter((([e,t])=>t[0]&31)).map((([e,t])=>{const r=t[1]||e;s.set(r,e);return r}))]))}}return e};var He=async(e,t,n,s)=>{let i;try{if((t.l&32)===0){t.l|=32;t.l&=-1025;{i=e.constructor;const r=e.localName;customElements.whenDefined(r).then((()=>t.l|=128))}if(i&&i.style){let e;if(typeof i.style==="string"){e=i.style}const t=W(n);if(!u.has(t)||r.hotModuleReplacement){const r=P("registerStyles",n.k);H(t,e,!!(n.l&1));r()}}}const s=t.U;const o=()=>je(t,true);if(s&&s["s-rc"]){s["s-rc"].push(o)}else{o()}}catch(r){c(r,e);if(t.L){t.L();t.L=void 0}if(t.p&&!(t.l&1024)){t.p(e)}}};var _e=(e,t)=>{};var De=e=>{if((b.l&1)===0){const t=l(e);if(!t){return}const r=t.t;const n=P("connectedCallback",r.k);if(!(t.l&1)){t.l|=1;{let r=e;while(r=r.parentNode||r.host){if(r["s-p"]){xe(t,t.U=r);break}}}if(r.i){Object.entries(r.i).map((([t,[r]])=>{if(r&31&&Object.prototype.hasOwnProperty.call(e,t)){const r=e[t];delete e[t];e[t]=r}}))}{He(e,t,r)}}else{if(t==null?void 0:t.H);else if(t.l&1024){setTimeout((()=>He(e,t,r)),d)}else if(t==null?void 0:t.v){t.v.then((()=>_e()))}}n()}};var We=async e=>{if((b.l&1)===0){l(e)}if(z.has(e)){z.delete(e)}if(e.shadowRoot&&z.has(e.shadowRoot)){z.delete(e.shadowRoot)}};var Fe=(e,t)=>{const r={l:t[0],k:t[1]};try{{r.i=t[2]}{r.P=G(e.P);r._=e._;r.D=e.D}const n=e.prototype.connectedCallback;const s=e.prototype.disconnectedCallback;Object.assign(e.prototype,{__hasHostListenerAttached:false,__registerHost(){f(this,r)},connectedCallback(){if(!this.__hasHostListenerAttached){const e=l(this);if(!e){return}this.__hasHostListenerAttached=true}De(this);if(n){n.call(this)}},disconnectedCallback(){We(this);if(s){s.call(this)}},__attachShadow(){{if(!this.shadowRoot){U.call(this,r)}else{if(this.shadowRoot.mode!=="open"){throw new Error(`Unable to re-use existing shadow root for ${r.k}! Mode is set to ${this.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}}}});Object.defineProperty(e,"is",{value:r.k,configurable:true});return ze(e,r)}catch(t){c(t);return e}};var Ie=e=>b.m=e;var Te=e=>Object.assign(b,e);var Ve=new WeakMap;function qe(e,t){let r=Ve.get(t);if(!r){const e={l:0,k:t.tagName};r={l:0,t:e,$hostElement$:t};Ve.set(t,r)}$e(r,e)}function Ge(e){return e}export{h as H,V as a,B as c,C as getAssetPath,I as h,Fe as p,qe as render,A as setAssetPath,Ie as setNonce,Te as setPlatformOptions,Ge as t};
2
+ //# sourceMappingURL=index.js.map