@linktr.ee/linkapp 0.0.42 → 0.0.43

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.
@@ -13,10 +13,15 @@ try {
13
13
  // featured-carousel.tsx doesn't exist, that's ok
14
14
  }
15
15
 
16
- // Declare global window property for theme application
16
+ // Declare global window properties for theme and font application
17
17
  declare global {
18
18
  interface Window {
19
- __linkapp_applyTheme?: (variables: Record<string, string>) => void
19
+ __linkapp_applyTheme?: (variables: Record<string, string>) => void;
20
+ __linkapp_applyFont?: (fontData: {
21
+ fontFamily: string;
22
+ fontStyle?: string;
23
+ cssUrl?: string;
24
+ }) => void;
20
25
  }
21
26
  }
22
27
 
@@ -25,14 +30,20 @@ declare const __PREVIEW_PROPS__: Record<string, unknown>;
25
30
 
26
31
  // Extract just the variables from THEME_PRESETS for theme lookups
27
32
  const THEME_VARS = Object.fromEntries(
28
- Object.entries(THEME_PRESETS).map(([key, { variables }]) => [key, variables])
33
+ Object.entries(THEME_PRESETS).map(([key, { variables }]) => [key, variables]),
29
34
  );
30
35
 
31
36
  // Get theme variables and groupLayoutOption from URL
32
37
  const params = new URLSearchParams(window.location.search);
33
- const groupLayoutOptionParam = params.get('groupLayoutOption');
38
+ const groupLayoutOptionParam = params.get("groupLayoutOption");
34
39
  const themeVariables = getThemeFromUrl(THEME_VARS);
35
40
 
41
+ // Get the selected theme for font application
42
+ const themeKey = params.get("theme") || "default";
43
+ const selectedTheme =
44
+ THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] ||
45
+ THEME_PRESETS.default;
46
+
36
47
  // Merge with preview props and add groupLayoutOption
37
48
  const previewProps = __PREVIEW_PROPS__ || {};
38
49
  const mergedProps = mergeThemeProps(themeVariables, previewProps, {
@@ -44,21 +55,21 @@ if (themeVariables && window.__linkapp_applyTheme) {
44
55
  window.__linkapp_applyTheme(themeVariables);
45
56
  }
46
57
 
58
+ // Apply font on mount
59
+ if (selectedTheme.font && window.__linkapp_applyFont) {
60
+ window.__linkapp_applyFont(selectedTheme.font);
61
+ }
62
+
47
63
  const rootElement = document.getElementById("root");
48
64
  if (!rootElement) {
49
65
  throw new Error("Root element not found");
50
66
  }
51
67
 
52
68
  // Select the appropriate component based on groupLayoutOption parameter
53
- const LayoutComponent = (groupLayoutOptionParam === 'carousel' && FeaturedCarousel)
54
- ? FeaturedCarousel
55
- : Featured;
56
-
57
- console.log('[Featured Dev Server] Rendering:', {
58
- groupLayoutOption: groupLayoutOptionParam,
59
- component: groupLayoutOptionParam === 'carousel' && FeaturedCarousel ? 'FeaturedCarousel' : 'Featured',
60
- hasFeaturedCarousel: !!FeaturedCarousel,
61
- });
69
+ const LayoutComponent =
70
+ groupLayoutOptionParam === "carousel" && FeaturedCarousel
71
+ ? FeaturedCarousel
72
+ : Featured;
62
73
 
63
74
  createRoot(rootElement).render(
64
75
  <StrictMode>
@@ -47,6 +47,60 @@
47
47
 
48
48
  // Export applyTheme to be used by main.tsx
49
49
  window.__linkapp_applyTheme = applyTheme
50
+
51
+ /**
52
+ * Apply font to iframe by injecting font CSS or external stylesheet
53
+ * Called once on mount from main.tsx
54
+ * @param {Object} fontData - Font configuration from parent
55
+ * @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
56
+ * @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
57
+ * @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
58
+ */
59
+ function applyFont(fontData) {
60
+ console.log('[applyFont] Called with:', fontData)
61
+
62
+ if (!fontData || typeof fontData !== 'object') {
63
+ console.warn('[applyFont] Invalid fontData')
64
+ return
65
+ }
66
+
67
+ // Remove existing font style/link if present to avoid duplicates
68
+ const existingFontElement = document.getElementById('linktree-font')
69
+ if (existingFontElement) {
70
+ console.log('[applyFont] Removing existing font element')
71
+ existingFontElement.remove()
72
+ }
73
+
74
+ // Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
75
+ if (fontData.cssUrl) {
76
+ console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
77
+ const link = document.createElement('link')
78
+ link.id = 'linktree-font'
79
+ link.rel = 'stylesheet'
80
+ link.href = fontData.cssUrl
81
+ link.crossOrigin = 'anonymous'
82
+ link.onload = () => console.log('[applyFont] CSS loaded successfully')
83
+ link.onerror = () => console.error('[applyFont] CSS failed to load')
84
+ document.head.appendChild(link)
85
+ }
86
+ // Option 2: Inline @font-face definitions
87
+ else if (fontData.fontStyle) {
88
+ console.log('[applyFont] Using inline @font-face')
89
+ const style = document.createElement('style')
90
+ style.id = 'linktree-font'
91
+ style.textContent = fontData.fontStyle
92
+ document.head.appendChild(style)
93
+ }
94
+
95
+ // Apply font-family to body element so all content inherits it
96
+ if (fontData.fontFamily) {
97
+ console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
98
+ document.body.style.fontFamily = fontData.fontFamily
99
+ }
100
+ }
101
+
102
+ // Export applyFont to be used by main.tsx
103
+ window.__linkapp_applyFont = applyFont
50
104
  </script>
51
105
  </head>
52
106
  <body>
@@ -47,6 +47,60 @@
47
47
 
48
48
  // Export applyTheme to be used by main.tsx
49
49
  window.__linkapp_applyTheme = applyTheme
50
+
51
+ /**
52
+ * Apply font to iframe by injecting font CSS or external stylesheet
53
+ * Called once on mount from main.tsx
54
+ * @param {Object} fontData - Font configuration from parent
55
+ * @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
56
+ * @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
57
+ * @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
58
+ */
59
+ function applyFont(fontData) {
60
+ console.log('[applyFont] Called with:', fontData)
61
+
62
+ if (!fontData || typeof fontData !== 'object') {
63
+ console.warn('[applyFont] Invalid fontData')
64
+ return
65
+ }
66
+
67
+ // Remove existing font style/link if present to avoid duplicates
68
+ const existingFontElement = document.getElementById('linktree-font')
69
+ if (existingFontElement) {
70
+ console.log('[applyFont] Removing existing font element')
71
+ existingFontElement.remove()
72
+ }
73
+
74
+ // Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
75
+ if (fontData.cssUrl) {
76
+ console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
77
+ const link = document.createElement('link')
78
+ link.id = 'linktree-font'
79
+ link.rel = 'stylesheet'
80
+ link.href = fontData.cssUrl
81
+ link.crossOrigin = 'anonymous'
82
+ link.onload = () => console.log('[applyFont] CSS loaded successfully')
83
+ link.onerror = () => console.error('[applyFont] CSS failed to load')
84
+ document.head.appendChild(link)
85
+ }
86
+ // Option 2: Inline @font-face definitions
87
+ else if (fontData.fontStyle) {
88
+ console.log('[applyFont] Using inline @font-face')
89
+ const style = document.createElement('style')
90
+ style.id = 'linktree-font'
91
+ style.textContent = fontData.fontStyle
92
+ document.head.appendChild(style)
93
+ }
94
+
95
+ // Apply font-family to body element so all content inherits it
96
+ if (fontData.fontFamily) {
97
+ console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
98
+ document.body.style.fontFamily = fontData.fontFamily
99
+ }
100
+ }
101
+
102
+ // Export applyFont to be used by main.tsx
103
+ window.__linkapp_applyFont = applyFont
50
104
  </script>
51
105
  </head>
52
106
  <body>
@@ -35,13 +35,26 @@ function Chin({ title }: { title?: string }) {
35
35
  }
36
36
 
37
37
  export default function Preview() {
38
- // Initialize state from localStorage
38
+ // These are injected by the dev server
39
+ // @ts-expect-error - injected by dev server
40
+ const hasFeatured = typeof __HAS_FEATURED__ !== "undefined" && __HAS_FEATURED__;
41
+ // @ts-expect-error - injected by dev server
42
+ const hasCarousel =
43
+ typeof __HAS_CAROUSEL__ !== "undefined" && __HAS_CAROUSEL__;
44
+
45
+ // Initialize state from localStorage
39
46
  const [selectedTab, setSelectedTab] = useState<
40
- "sheet" | "featured" | "carousel" | "settings"
41
- >(() => {
42
- const saved = localStorage.getItem("linkapp-preview-tab");
43
- return (saved as "sheet" | "featured" | "carousel" | "settings") || "sheet";
44
- });
47
+ "sheet" | "featured" | "carousel" | "settings"
48
+ >(() => {
49
+ const saved = localStorage.getItem("linkapp-preview-tab");
50
+ if (saved === "featured" && !hasFeatured) {
51
+ return "sheet";
52
+ }
53
+ if (saved === "carousel" && !hasCarousel) {
54
+ return "sheet";
55
+ }
56
+ return (saved as "sheet" | "featured" | "carousel" | "settings") || "sheet";
57
+ });
45
58
  const [selectedTheme, setSelectedTheme] = useState<
46
59
  keyof typeof THEME_PRESETS
47
60
  >(() => {
@@ -143,11 +156,13 @@ export default function Preview() {
143
156
  style={{ zIndex: 1000000 }}
144
157
  >
145
158
  <TabsList>
146
- <TabsTrigger value="sheet">Sheet</TabsTrigger>
147
- <TabsTrigger value="featured">Featured</TabsTrigger>
148
- <TabsTrigger value="carousel">Carousel</TabsTrigger>
149
- <TabsTrigger value="settings">Settings</TabsTrigger>
150
- </TabsList>
159
+ <TabsTrigger value="sheet">Sheet</TabsTrigger>
160
+ {hasFeatured && <TabsTrigger value="featured">Featured</TabsTrigger>}
161
+ {hasCarousel && (
162
+ <TabsTrigger value="carousel">Carousel</TabsTrigger>
163
+ )}
164
+ <TabsTrigger value="settings">Settings</TabsTrigger>
165
+ </TabsList>
151
166
 
152
167
  {/* Theme Switcher */}
153
168
  <div className="flex items-center gap-2">
@@ -225,212 +240,216 @@ export default function Preview() {
225
240
  ></path>
226
241
  </svg>
227
242
  </button>
228
- </div>
229
- </DialogHeader>
230
-
231
- <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
232
- <div className="h-full overflow-y-auto overflow-x-hidden">
233
- <IframeResizer
234
- key={`sheet-${selectedTheme}`}
235
- id={sheetIframeId}
236
- src={`/sheet?theme=${selectedTheme}`}
237
- style={{
238
- height: "0px",
239
- width: "1px",
240
- minWidth: "100%",
241
- border: 0,
242
- }}
243
- checkOrigin={false}
244
- onResized={handleResized}
245
- heightCalculationMethod="max"
246
- />
247
- </div>
248
- </div>
249
- </DialogContent>
250
- </Dialog>
251
- </TabsContent>
252
-
253
- <TabsContent
254
- value="featured"
255
- className="m-0 flex justify-center p-8"
256
- >
257
- <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
258
- <div className="w-full max-w-[524px]">
259
- {chinPosition === "above" && <Chin title={chinTitle} />}
260
-
261
- <div
262
- className={cn(
263
- "bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
264
- isOverlay && "relative",
265
- )}
266
- style={
267
- !__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
268
- ? { aspectRatio: "16 / 9" }
269
- : undefined
243
+ </div>
244
+ </DialogHeader>
245
+
246
+ <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
247
+ <div className="h-full overflow-y-auto overflow-x-hidden">
248
+ <IframeResizer
249
+ key={`sheet-${selectedTheme}`}
250
+ id={sheetIframeId}
251
+ src={`/sheet?theme=${selectedTheme}`}
252
+ style={{
253
+ height: "0px",
254
+ width: "1px",
255
+ minWidth: "100%",
256
+ border: 0,
257
+ }}
258
+ checkOrigin={false}
259
+ onResized={handleResized}
260
+ heightCalculationMethod="max"
261
+ />
262
+ </div>
263
+ </div>
264
+ </DialogContent>
265
+ </Dialog>
266
+ </TabsContent>
267
+
268
+ {hasFeatured && (
269
+ <TabsContent
270
+ value="featured"
271
+ className="m-0 flex justify-center p-8"
272
+ >
273
+ <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
274
+ <div className="w-full max-w-[524px]">
275
+ {chinPosition === "above" && <Chin title={chinTitle} />}
276
+
277
+ <div
278
+ className={cn(
279
+ "bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
280
+ isOverlay && "relative",
281
+ )}
282
+ style={
283
+ !__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
284
+ ? { aspectRatio: "16 / 9" }
285
+ : undefined
286
+ }
287
+ >
288
+ {chinPosition === "overlay_above" && (
289
+ <div className="absolute top-0 left-0 right-0 z-10">
290
+ <Chin title={chinTitle} />
291
+ </div>
292
+ )}
293
+
294
+ <IframeResizer
295
+ key={`featured-${selectedTheme}`}
296
+ id={featuredIframeId}
297
+ src={`/featured?theme=${selectedTheme}`}
298
+ style={{
299
+ height: "0px",
300
+ width: "1px",
301
+ minWidth: "100%",
302
+ border: 0,
303
+ }}
304
+ checkOrigin={false}
305
+ onResized={handleResized}
306
+ heightCalculationMethod="max"
307
+ />
308
+
309
+ {chinPosition === "overlayBelow" && (
310
+ <div className="absolute bottom-0 left-0 right-0 z-10">
311
+ <Chin title={chinTitle} />
312
+ </div>
313
+ )}
314
+ </div>
315
+
316
+ {chinPosition === "below" && <Chin title={chinTitle} />}
317
+ </div>
318
+ </div>
319
+ </TabsContent>
320
+ )}
321
+
322
+ {hasCarousel && (
323
+ <TabsContent
324
+ value="carousel"
325
+ className="m-0 flex justify-center p-8"
326
+ >
327
+ <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
328
+ <div className="w-full max-w-[524px]">
329
+ {chinPosition === "above" && <Chin title={chinTitle} />}
330
+
331
+ <div
332
+ className={cn(
333
+ "bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
334
+ isOverlay && "relative",
335
+ )}
336
+ style={
337
+ !__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
338
+ ? { aspectRatio: "11 / 8" }
339
+ : undefined
340
+ }
341
+ >
342
+ {chinPosition === "overlay_above" && (
343
+ <div className="absolute top-0 left-0 right-0 z-10">
344
+ <Chin title={chinTitle} />
345
+ </div>
346
+ )}
347
+
348
+ <IframeResizer
349
+ key={`carousel-${selectedTheme}`}
350
+ id={carouselIframeId}
351
+ src={`/featured-carousel?theme=${selectedTheme}`}
352
+ style={{
353
+ height: "0px",
354
+ width: "1px",
355
+ minWidth: "100%",
356
+ border: 0,
357
+ }}
358
+ checkOrigin={false}
359
+ onResized={handleResized}
360
+ heightCalculationMethod="max"
361
+ />
362
+
363
+ {chinPosition === "overlayBelow" && (
364
+ <div className="absolute bottom-0 left-0 right-0 z-10">
365
+ <Chin title={chinTitle} />
366
+ </div>
367
+ )}
368
+ </div>
369
+
370
+ {chinPosition === "below" && <Chin title={chinTitle} />}
371
+ </div>
372
+ </div>
373
+ </TabsContent>
374
+ )}
375
+
376
+ <TabsContent value="settings" className="m-0">
377
+ <SettingsPreview settings={__SETTINGS_CONFIG__} />
378
+ </TabsContent>
379
+ </div>
380
+ </Tabs>
381
+
382
+ {/* Popup Dialog for EXPAND_LINK_APP message */}
383
+ <Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
384
+ <DialogContent
385
+ className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
386
+ showCloseButton={false}
387
+ >
388
+ <DialogHeader className="sticky top-0 bg-white px-4">
389
+ <div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
390
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
391
+ <svg
392
+ width="16"
393
+ height="16"
394
+ viewBox="0 0 16 16"
395
+ fill="none"
396
+ xmlns="http://www.w3.org/2000/svg"
397
+ className=" "
398
+ role="img"
399
+ aria-hidden="true"
400
+ >
401
+ <path
402
+ fill="currentColor"
403
+ d="m10.65 3.85.35.36.7-.71-.35-.35-3-3h-.7l-3 3-.36.35.71.7.35-.35L7.5 1.71V10h1V1.7l2.15 2.15ZM1 5.5l.5-.5H4v1H2v9h12V6h-2V5h2.5l.5.5v10l-.5.5h-13l-.5-.5v-10Z"
404
+ ></path>
405
+ </svg>
406
+ </button>
407
+
408
+ <DialogTitle className="self-center truncate py-3 text-center">
409
+ Sheet
410
+ </DialogTitle>
411
+
412
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
413
+ <svg
414
+ width="16"
415
+ height="16"
416
+ viewBox="0 0 16 16"
417
+ fill="none"
418
+ xmlns="http://www.w3.org/2000/svg"
419
+ className=" "
420
+ role="img"
421
+ aria-hidden="true"
422
+ >
423
+ <path
424
+ fill="currentColor"
425
+ d="m13.63 3.12.37-.38-.74-.74-.38.37.75.75ZM2.37 12.89l-.37.37.74.74.38-.37-.75-.75Zm.75-10.52L2.74 2 2 2.74l.37.38.75-.75Zm9.76 11.26.38.37.74-.74-.37-.38-.75.75Zm0-11.26L2.38 12.9l.74.74 10.5-10.51-.74-.75Zm-10.5.75 10.5 10.5.75-.73L3.12 2.37l-.75.75Z"
426
+ ></path>
427
+ </svg>
428
+ </button>
429
+ </div>
430
+ </DialogHeader>
431
+
432
+ <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
433
+ <div className="h-full overflow-y-auto overflow-x-hidden">
434
+ <IframeResizer
435
+ key={`popup-${selectedTheme}`}
436
+ id={popupIframeId}
437
+ src={`/sheet?theme=${selectedTheme}`}
438
+ style={{
439
+ height: "0px",
440
+ width: "1px",
441
+ minWidth: "100%",
442
+ border: 0,
443
+ }}
444
+ checkOrigin={false}
445
+ onResized={handleResized}
446
+ heightCalculationMethod="max"
447
+ />
448
+ </div>
449
+ </div>
450
+ </DialogContent>
451
+ </Dialog>
452
+ </div>
453
+ </>
454
+ );
270
455
  }
271
- >
272
- {chinPosition === "overlay_above" && (
273
- <div className="absolute top-0 left-0 right-0 z-10">
274
- <Chin title={chinTitle} />
275
- </div>
276
- )}
277
-
278
- <IframeResizer
279
- key={`featured-${selectedTheme}`}
280
- id={featuredIframeId}
281
- src={`/featured?theme=${selectedTheme}`}
282
- style={{
283
- height: "0px",
284
- width: "1px",
285
- minWidth: "100%",
286
- border: 0,
287
- }}
288
- checkOrigin={false}
289
- onResized={handleResized}
290
- heightCalculationMethod="max"
291
- />
292
-
293
- {chinPosition === "overlayBelow" && (
294
- <div className="absolute bottom-0 left-0 right-0 z-10">
295
- <Chin title={chinTitle} />
296
- </div>
297
- )}
298
- </div>
299
-
300
- {chinPosition === "below" && <Chin title={chinTitle} />}
301
- </div>
302
- </div>
303
- </TabsContent>
304
-
305
- <TabsContent
306
- value="carousel"
307
- className="m-0 flex justify-center p-8"
308
- >
309
- <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
310
- <div className="w-full max-w-[524px]">
311
- {chinPosition === "above" && <Chin title={chinTitle} />}
312
-
313
- <div
314
- className={cn(
315
- "bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
316
- isOverlay && "relative",
317
- )}
318
- style={
319
- !__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
320
- ? { aspectRatio: "11 / 8" }
321
- : undefined
322
- }
323
- >
324
- {chinPosition === "overlay_above" && (
325
- <div className="absolute top-0 left-0 right-0 z-10">
326
- <Chin title={chinTitle} />
327
- </div>
328
- )}
329
-
330
- <IframeResizer
331
- key={`carousel-${selectedTheme}`}
332
- id={carouselIframeId}
333
- src={`/featured-carousel?theme=${selectedTheme}`}
334
- style={{
335
- height: "0px",
336
- width: "1px",
337
- minWidth: "100%",
338
- border: 0,
339
- }}
340
- checkOrigin={false}
341
- onResized={handleResized}
342
- heightCalculationMethod="max"
343
- />
344
-
345
- {chinPosition === "overlayBelow" && (
346
- <div className="absolute bottom-0 left-0 right-0 z-10">
347
- <Chin title={chinTitle} />
348
- </div>
349
- )}
350
- </div>
351
-
352
- {chinPosition === "below" && <Chin title={chinTitle} />}
353
- </div>
354
- </div>
355
- </TabsContent>
356
-
357
- <TabsContent value="settings" className="m-0">
358
- <SettingsPreview settings={__SETTINGS_CONFIG__} />
359
- </TabsContent>
360
- </div>
361
- </Tabs>
362
-
363
- {/* Popup Dialog for EXPAND_LINK_APP message */}
364
- <Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
365
- <DialogContent
366
- className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
367
- showCloseButton={false}
368
- >
369
- <DialogHeader className="sticky top-0 bg-white px-4">
370
- <div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
371
- <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
372
- <svg
373
- width="16"
374
- height="16"
375
- viewBox="0 0 16 16"
376
- fill="none"
377
- xmlns="http://www.w3.org/2000/svg"
378
- className=" "
379
- role="img"
380
- aria-hidden="true"
381
- >
382
- <path
383
- fill="currentColor"
384
- d="m10.65 3.85.35.36.7-.71-.35-.35-3-3h-.7l-3 3-.36.35.71.7.35-.35L7.5 1.71V10h1V1.7l2.15 2.15ZM1 5.5l.5-.5H4v1H2v9h12V6h-2V5h2.5l.5.5v10l-.5.5h-13l-.5-.5v-10Z"
385
- ></path>
386
- </svg>
387
- </button>
388
-
389
- <DialogTitle className="self-center truncate py-3 text-center">
390
- Sheet
391
- </DialogTitle>
392
-
393
- <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
394
- <svg
395
- width="16"
396
- height="16"
397
- viewBox="0 0 16 16"
398
- fill="none"
399
- xmlns="http://www.w3.org/2000/svg"
400
- className=" "
401
- role="img"
402
- aria-hidden="true"
403
- >
404
- <path
405
- fill="currentColor"
406
- d="m13.63 3.12.37-.38-.74-.74-.38.37.75.75ZM2.37 12.89l-.37.37.74.74.38-.37-.75-.75Zm.75-10.52L2.74 2 2 2.74l.37.38.75-.75Zm9.76 11.26.38.37.74-.74-.37-.38-.75.75Zm0-11.26L2.38 12.9l.74.74 10.5-10.51-.74-.75Zm-10.5.75 10.5 10.5.75-.73L3.12 2.37l-.75.75Z"
407
- ></path>
408
- </svg>
409
- </button>
410
- </div>
411
- </DialogHeader>
412
-
413
- <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
414
- <div className="h-full overflow-y-auto overflow-x-hidden">
415
- <IframeResizer
416
- key={`popup-${selectedTheme}`}
417
- id={popupIframeId}
418
- src={`/sheet?theme=${selectedTheme}`}
419
- style={{
420
- height: "0px",
421
- width: "1px",
422
- minWidth: "100%",
423
- border: 0,
424
- }}
425
- checkOrigin={false}
426
- onResized={handleResized}
427
- heightCalculationMethod="max"
428
- />
429
- </div>
430
- </div>
431
- </DialogContent>
432
- </Dialog>
433
- </div>
434
- </>
435
- );
436
- }
@@ -2,7 +2,20 @@
2
2
  * Theme presets for testing LinkApps in dev mode
3
3
  * Based on actual CSS variables from live Linktree profiles
4
4
  */
5
- export const THEME_PRESETS = {
5
+
6
+ export type FontData = {
7
+ fontFamily: string
8
+ cssUrl?: string
9
+ fontStyle?: string
10
+ }
11
+
12
+ export type ThemePreset = {
13
+ name: string
14
+ variables: Record<string, string>
15
+ font?: FontData
16
+ }
17
+
18
+ export const THEME_PRESETS: Record<string, ThemePreset> = {
6
19
  default: {
7
20
  name: "Default (Light)",
8
21
  variables: {
@@ -19,6 +32,10 @@ export const THEME_PRESETS = {
19
32
  "--button-style-inner-radius": "min(8px, max(4px, calc(8px - 8px)))",
20
33
  "--button-style-skeleton-color": "rgba(0, 0, 0, 0.05)",
21
34
  },
35
+ font: {
36
+ fontFamily: "Inter, sans-serif",
37
+ cssUrl: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
38
+ },
22
39
  },
23
40
  dark: {
24
41
  name: "Dark",
@@ -36,6 +53,10 @@ export const THEME_PRESETS = {
36
53
  "--button-style-inner-radius": "min(8px, max(4px, calc(8px - 8px)))",
37
54
  "--button-style-skeleton-color": "rgba(255, 255, 255, 0.1)",
38
55
  },
56
+ font: {
57
+ fontFamily: "Roboto, sans-serif",
58
+ cssUrl: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap",
59
+ },
39
60
  },
40
61
  purple: {
41
62
  name: "Purple",
@@ -53,6 +74,10 @@ export const THEME_PRESETS = {
53
74
  "--button-style-inner-radius": "min(16px, max(4px, calc(16px - 8px)))",
54
75
  "--button-style-skeleton-color": "rgba(124, 58, 237, 0.1)",
55
76
  },
77
+ font: {
78
+ fontFamily: "Poppins, sans-serif",
79
+ cssUrl: "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
80
+ },
56
81
  },
57
82
  outline: {
58
83
  name: "Outline Style",
@@ -69,6 +94,10 @@ export const THEME_PRESETS = {
69
94
  "--button-style-inner-radius": "min(24px, max(4px, calc(24px - 8px)))",
70
95
  "--button-style-skeleton-color": "rgba(0, 0, 0, 0.05)",
71
96
  },
97
+ font: {
98
+ fontFamily: "Montserrat, sans-serif",
99
+ cssUrl: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
100
+ },
72
101
  },
73
102
  rounded: {
74
103
  name: "Fully Rounded",
@@ -86,5 +115,9 @@ export const THEME_PRESETS = {
86
115
  "--button-style-inner-radius": "28px",
87
116
  "--button-style-skeleton-color": "rgba(5, 150, 105, 0.1)",
88
117
  },
118
+ font: {
119
+ fontFamily: "Nunito, sans-serif",
120
+ cssUrl: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap",
121
+ },
89
122
  },
90
123
  };
@@ -5,10 +5,15 @@ import "@/app/globals.css";
5
5
  import { THEME_PRESETS } from "../shared/theme-presets";
6
6
  import { getThemeFromUrl, mergeThemeProps } from "../shared/theme-utils";
7
7
 
8
- // Declare global window property for theme application
8
+ // Declare global window properties for theme and font application
9
9
  declare global {
10
10
  interface Window {
11
11
  __linkapp_applyTheme?: (variables: Record<string, string>) => void
12
+ __linkapp_applyFont?: (fontData: {
13
+ fontFamily: string
14
+ fontStyle?: string
15
+ cssUrl?: string
16
+ }) => void
12
17
  }
13
18
  }
14
19
 
@@ -23,6 +28,14 @@ const THEME_VARS = Object.fromEntries(
23
28
  // Get theme variables from URL
24
29
  const themeVariables = getThemeFromUrl(THEME_VARS);
25
30
 
31
+ // Get the selected theme key from URL or default to "default"
32
+ const urlParams = new URLSearchParams(window.location.search);
33
+ const themeKey = urlParams.get("theme") || "default";
34
+ const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
35
+
36
+ console.log('[Sheet Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
37
+ console.log('[Sheet Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
38
+
26
39
  // Merge with preview props
27
40
  const previewProps = __PREVIEW_PROPS__ || {};
28
41
  const mergedProps = mergeThemeProps(themeVariables, previewProps);
@@ -32,6 +45,14 @@ if (themeVariables && window.__linkapp_applyTheme) {
32
45
  window.__linkapp_applyTheme(themeVariables);
33
46
  }
34
47
 
48
+ // Apply font on mount
49
+ if (selectedTheme.font && window.__linkapp_applyFont) {
50
+ console.log('[Sheet Dev] Applying font:', selectedTheme.font);
51
+ window.__linkapp_applyFont(selectedTheme.font);
52
+ } else {
53
+ console.warn('[Sheet Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
54
+ }
55
+
35
56
  const rootElement = document.getElementById("root");
36
57
  if (!rootElement) {
37
58
  throw new Error("Root element not found");
@@ -47,6 +47,60 @@
47
47
 
48
48
  // Export applyTheme to be used by main.tsx
49
49
  window.__linkapp_applyTheme = applyTheme
50
+
51
+ /**
52
+ * Apply font to iframe by injecting font CSS or external stylesheet
53
+ * Called once on mount from main.tsx
54
+ * @param {Object} fontData - Font configuration from parent
55
+ * @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
56
+ * @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
57
+ * @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
58
+ */
59
+ function applyFont(fontData) {
60
+ console.log('[applyFont] Called with:', fontData)
61
+
62
+ if (!fontData || typeof fontData !== 'object') {
63
+ console.warn('[applyFont] Invalid fontData')
64
+ return
65
+ }
66
+
67
+ // Remove existing font style/link if present to avoid duplicates
68
+ const existingFontElement = document.getElementById('linktree-font')
69
+ if (existingFontElement) {
70
+ console.log('[applyFont] Removing existing font element')
71
+ existingFontElement.remove()
72
+ }
73
+
74
+ // Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
75
+ if (fontData.cssUrl) {
76
+ console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
77
+ const link = document.createElement('link')
78
+ link.id = 'linktree-font'
79
+ link.rel = 'stylesheet'
80
+ link.href = fontData.cssUrl
81
+ link.crossOrigin = 'anonymous'
82
+ link.onload = () => console.log('[applyFont] CSS loaded successfully')
83
+ link.onerror = () => console.error('[applyFont] CSS failed to load')
84
+ document.head.appendChild(link)
85
+ }
86
+ // Option 2: Inline @font-face definitions
87
+ else if (fontData.fontStyle) {
88
+ console.log('[applyFont] Using inline @font-face')
89
+ const style = document.createElement('style')
90
+ style.id = 'linktree-font'
91
+ style.textContent = fontData.fontStyle
92
+ document.head.appendChild(style)
93
+ }
94
+
95
+ // Apply font-family to body element so all content inherits it
96
+ if (fontData.fontFamily) {
97
+ console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
98
+ document.body.style.fontFamily = fontData.fontFamily
99
+ }
100
+ }
101
+
102
+ // Export applyFont to be used by main.tsx
103
+ window.__linkapp_applyFont = applyFont
50
104
  </script>
51
105
  </head>
52
106
  <body>
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AA4VD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBA8UnD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAqYD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAkWnD"}
@@ -152,10 +152,15 @@ import "@/app/globals.css";
152
152
  import { THEME_PRESETS } from "${themePresetsPath}";
153
153
  import { getThemeFromUrl, mergeThemeProps } from "${themeUtilsPath}";
154
154
 
155
- // Declare global window property for theme application
155
+ // Declare global window properties for theme and font application
156
156
  declare global {
157
157
  interface Window {
158
158
  __linkapp_applyTheme?: (variables: Record<string, string>) => void
159
+ __linkapp_applyFont?: (fontData: {
160
+ fontFamily: string
161
+ fontStyle?: string
162
+ cssUrl?: string
163
+ }) => void
159
164
  }
160
165
  }
161
166
 
@@ -170,6 +175,14 @@ const THEME_VARS = Object.fromEntries(
170
175
  // Get theme variables from URL (defaults to 'default' theme)
171
176
  const themeVariables = getThemeFromUrl(THEME_VARS) || THEME_PRESETS.default.variables;
172
177
 
178
+ // Get the selected theme key from URL or default to "default"
179
+ const urlParams = new URLSearchParams(window.location.search);
180
+ const themeKey = urlParams.get("theme") || "default";
181
+ const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
182
+
183
+ console.log('[Sheet Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
184
+ console.log('[Sheet Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
185
+
173
186
  // Merge with preview props
174
187
  const previewProps = __PREVIEW_PROPS__ || {};
175
188
  const mergedProps = mergeThemeProps(themeVariables, previewProps);
@@ -179,6 +192,14 @@ if (window.__linkapp_applyTheme) {
179
192
  window.__linkapp_applyTheme(themeVariables);
180
193
  }
181
194
 
195
+ // Apply font on mount
196
+ if (selectedTheme.font && window.__linkapp_applyFont) {
197
+ console.log('[Sheet Dev] Applying font:', selectedTheme.font);
198
+ window.__linkapp_applyFont(selectedTheme.font);
199
+ } else {
200
+ console.warn('[Sheet Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
201
+ }
202
+
182
203
  const rootElement = document.getElementById("root");
183
204
  if (!rootElement) {
184
205
  throw new Error("Root element not found");
@@ -283,10 +304,15 @@ import "@/app/globals.css";
283
304
  import { THEME_PRESETS } from "${themePresetsPath}";
284
305
  import { getThemeFromUrl, mergeThemeProps } from "${themeUtilsPath}";
285
306
 
286
- // Declare global window property for theme application
307
+ // Declare global window properties for theme and font application
287
308
  declare global {
288
309
  interface Window {
289
310
  __linkapp_applyTheme?: (variables: Record<string, string>) => void
311
+ __linkapp_applyFont?: (fontData: {
312
+ fontFamily: string
313
+ fontStyle?: string
314
+ cssUrl?: string
315
+ }) => void
290
316
  }
291
317
  }
292
318
 
@@ -303,6 +329,13 @@ const params = new URLSearchParams(window.location.search);
303
329
  const groupLayoutOptionParam = params.get('groupLayoutOption');
304
330
  const themeVariables = getThemeFromUrl(THEME_VARS) || THEME_PRESETS.default.variables;
305
331
 
332
+ // Get the selected theme for font application
333
+ const themeKey = params.get("theme") || "default";
334
+ const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
335
+
336
+ console.log('[Featured Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
337
+ console.log('[Featured Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
338
+
306
339
  // Merge with preview props and add groupLayoutOption
307
340
  const previewProps = __PREVIEW_PROPS__ || {};
308
341
  const mergedProps = mergeThemeProps(themeVariables, previewProps, {
@@ -314,6 +347,14 @@ if (window.__linkapp_applyTheme) {
314
347
  window.__linkapp_applyTheme(themeVariables);
315
348
  }
316
349
 
350
+ // Apply font on mount
351
+ if (selectedTheme.font && window.__linkapp_applyFont) {
352
+ console.log('[Featured Dev] Applying font:', selectedTheme.font);
353
+ window.__linkapp_applyFont(selectedTheme.font);
354
+ } else {
355
+ console.warn('[Featured Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
356
+ }
357
+
317
358
  const rootElement = document.getElementById("root");
318
359
  if (!rootElement) {
319
360
  throw new Error("Root element not found");
@@ -351,20 +392,24 @@ export async function devCommand(options) {
351
392
  const devServerPath = resolve(__dirname, '../../dev-server');
352
393
  // Detect available layouts for dynamic entry generation
353
394
  const layoutDetection = detectLayouts(userProjectPath);
395
+ const hasFeatured = layoutDetection.layouts.some(l => l.name === 'featured');
354
396
  const hasFeaturedCarousel = layoutDetection.layouts.some(l => l.name === 'featured-carousel');
355
397
  // Generate dynamic entry points in .linkapp directory
356
- const linkappDir = join(userProjectPath, '.linkapp');
398
+ const linkappDir = join(userProjectPath, ".linkapp");
357
399
  if (!existsSync(linkappDir)) {
358
400
  mkdirSync(linkappDir, { recursive: true });
359
401
  }
360
- const sheetEntryPath = join(linkappDir, 'dev-sheet-main.tsx');
361
- const featuredEntryPath = join(linkappDir, 'dev-featured-main.tsx');
362
- const featuredCarouselEntryPath = join(linkappDir, 'dev-featured-carousel-main.tsx');
363
- writeFileSync(sheetEntryPath, generateSheetEntryPoint(devServerPath), 'utf-8');
364
- writeFileSync(featuredEntryPath, generateFeaturedEntryPoint(devServerPath, hasFeaturedCarousel), 'utf-8');
402
+ const sheetEntryPath = join(linkappDir, "dev-sheet-main.tsx");
403
+ const featuredEntryPath = join(linkappDir, "dev-featured-main.tsx");
404
+ const featuredCarouselEntryPath = join(linkappDir, "dev-featured-carousel-main.tsx");
405
+ writeFileSync(sheetEntryPath, generateSheetEntryPoint(devServerPath), "utf-8");
406
+ // Only generate featured entry if the layout exists
407
+ if (hasFeatured) {
408
+ writeFileSync(featuredEntryPath, generateFeaturedEntryPoint(devServerPath, hasFeaturedCarousel), "utf-8");
409
+ }
365
410
  // Only generate featured-carousel entry if the layout exists
366
411
  if (hasFeaturedCarousel) {
367
- writeFileSync(featuredCarouselEntryPath, generateFeaturedCarouselEntryPoint(devServerPath), 'utf-8');
412
+ writeFileSync(featuredCarouselEntryPath, generateFeaturedCarouselEntryPoint(devServerPath), "utf-8");
368
413
  }
369
414
  // Helper to load config (called on initial start and on config changes)
370
415
  const loadProjectConfig = () => {
@@ -465,14 +510,18 @@ export async function devCommand(options) {
465
510
  ],
466
511
  source: {
467
512
  entry: {
468
- index: resolve(devServerPath, 'preview/main.tsx'),
513
+ index: resolve(devServerPath, "preview/main.tsx"),
469
514
  sheet: sheetEntryPath,
470
- featured: featuredEntryPath,
471
- ...(hasFeaturedCarousel ? { 'featured-carousel': featuredCarouselEntryPath } : {}),
515
+ ...(hasFeatured ? { featured: featuredEntryPath } : {}),
516
+ ...(hasFeaturedCarousel
517
+ ? { "featured-carousel": featuredCarouselEntryPath }
518
+ : {}),
472
519
  },
473
520
  define: {
474
521
  __PREVIEW_PROPS__: JSON.stringify(previewProps),
475
522
  __SETTINGS_CONFIG__: JSON.stringify(settingsConfig),
523
+ __HAS_FEATURED__: JSON.stringify(hasFeatured),
524
+ __HAS_CAROUSEL__: JSON.stringify(hasFeaturedCarousel),
476
525
  },
477
526
  },
478
527
  resolve: {
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtF,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAQ,EAAE;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAMrC;;;GAGG;AACH,SAAS,yBAAyB,CAChC,eAAuB,EACvB,cAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,KAAK,CAAC,GAAG;YACP,IAAI,OAAsD,CAAA;YAE1D,GAAG,CAAC,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACpC,MAAM,WAAW,GAAG;oBAClB,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC;oBAC7C,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC;iBACzD,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;gBAEpC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAM;gBAEpC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;oBACpC,aAAa,EAAE,IAAI;oBACnB,sBAAsB,EAAE,IAAI;iBAC7B,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;oBAC1C,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAA;oBACtG,MAAM,cAAc,EAAE,CAAA;gBACxB,CAAC,CAAA;gBAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBAC9B,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,aAAqB;IAClD,MAAM,YAAY,GAA2B;QAC3C,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,YAAY;KACnB,CAAA;IAED,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,OAAM;gBACR,CAAC;gBAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;gBAE5C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBACxC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;wBACb,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAA;oBAClC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBAC1C,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACpC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;wBAClD,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,WAAmB,CAAA;oBACvB,IAAI,CAAC;wBACH,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;oBAC3C,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAA;oBACpF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,cAAc,EAAE,CAAC,CAAA;oBAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;oBAExD,IACE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC7B,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;wBACjC,UAAU,KAAK,aAAa,EAC5B,CAAC;wBACD,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,KAAK,CAAA;oBACT,IAAI,CAAC;wBACH,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBACpB,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;oBAC5D,MAAM,WAAW,GAAG,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,0BAA0B,CAAA;oBAExF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;oBAC1C,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;oBAE1C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACtB,GAAG,CAAC,GAAG,EAAE,CAAA;wBACT,OAAM;oBACR,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;wBACxC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAClB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAc,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,aAAqB;IACpD,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,OAAO;;;;iCAIwB,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCjE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kCAAkC,CAAC,aAAqB;IAC/D,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,OAAO;;;;iCAIwB,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,aAAqB,EAAE,mBAA4B;IACrF,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,MAAM,sBAAsB,GAAG,mBAAmB;QAChD,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,kBAAkB,GAAG,mBAAmB;QAC5C,CAAC,CAAC;;;;;;;;;IASF;QACA,CAAC,CAAC;;;;;;;IAOF,CAAC;IAEH,OAAO;EACP,sBAAsB;;;;iCAIS,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsChE,kBAAkB;;;;;;;CAOnB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,eAAe,CAAA;IAEvD,+CAA+C;IAC/C,MAAM,CAAC,QAAQ,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,6CAA6C;QAC9D,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,wCAAwC;KAC1D,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,yBAAyB;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;YAChD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,wFAAwF;QACxF,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAE5D,wDAAwD;QACxD,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;QACtD,MAAM,mBAAmB,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAA;QAE7F,sDAAsD;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;QACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;QAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;QACnE,MAAM,yBAAyB,GAAG,IAAI,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAA;QAEpF,aAAa,CAAC,cAAc,EAAE,uBAAuB,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;QAC9E,aAAa,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,aAAa,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAA;QAEzG,6DAA6D;QAC7D,IAAI,mBAAmB,EAAE,CAAC;YACxB,aAAa,CAAC,yBAAyB,EAAE,kCAAkC,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;QACtG,CAAC;QAED,wEAAwE;QACxE,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;gBAC1C,OAAO;oBACL,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;oBACxC,cAAc,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;iBACtC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAA;gBACrF,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACxE,OAAO;oBACL,YAAY,EAAE,EAAE;oBAChB,cAAc,EAAE,EAAE;iBACnB,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QAED,wBAAwB;QACxB,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAE1D,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;QAC1C,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAEjD,kDAAkD;QAClD,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,aAAa,qBAAqB,aAAa,UAAU,CAAC,CAAC,CAAA;YAC3F,SAAS,EAAE,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAA;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QAErD,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,IAAc,EAAE,EAAE;YAC9D,SAAS,EAAE,CAAA;YACX,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC3D,SAAS,EAAE,CAAA;YACX,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC7E,CAAC;YACD,SAAS,EAAE,CAAA;YACX,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC,CAAA;QAED,MAAM,sBAAsB,GAAG,CAAC,QAK/B,EAAE,EAAE;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;gBAClC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;oBACpB,OAAM;gBACR,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;gBACrC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;oBACf,OAAM;gBACR,CAAC;gBAED,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,GAAG;wBACN,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAA;wBACvB,MAAK;oBACP,KAAK,GAAG;wBACN,QAAQ,CAAC,QAAQ,EAAE,CAAA;wBACnB,MAAK;oBACP,KAAK,GAAG;wBACN,QAAQ,CAAC,KAAK,EAAE,CAAA;wBAChB,MAAK;oBACP,KAAK,GAAG;wBACN,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;wBACpB,MAAK;oBACP;wBACE,MAAK;gBACT,CAAC;YACH,CAAC,CAAA;YAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;YACtB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAEpC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;gBACrC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjC,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YACvB,CAAC,CAAA;QACH,CAAC,CAAA;QAED,wFAAwF;QACxF,IAAI,eAAkD,CAAA;QAEtD,+DAA+D;QAC/D,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;YACvC,OAAO,MAAM,aAAa,CAAC;gBACzB,aAAa,EAAE;oBACb,GAAG,EAAE;wBACH,WAAW,EAAE,KAAK;qBACnB;oBACD,OAAO,EAAE;wBACP,WAAW,EAAE;wBACb,qBAAqB,CAAC,aAAa,CAAC;wBACpC,yBAAyB,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;4BACpD,MAAM,eAAe,EAAE,EAAE,CAAA;wBAC3B,CAAC,CAAC;qBACH;oBACD,MAAM,EAAE;wBACN,KAAK,EAAE;4BACL,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC;4BACjD,KAAK,EAAE,cAAc;4BACrB,QAAQ,EAAE,iBAAiB;4BAC3B,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACnF;wBACD,MAAM,EAAE;4BACN,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;4BAC/C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;yBACpD;qBACF;oBACD,OAAO,EAAE;wBACP,KAAK,EAAE;4BACL,GAAG,EAAE,eAAe;yBACrB;wBACD,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;qBAC/B;oBACD,IAAI,EAAE;wBACJ,QAAQ,CAAC,EAAE,SAAS,EAAE;4BACpB,MAAM,SAAS,GAA2B;gCACxC,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gCAC3C,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gCAC3C,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;gCACjD,mBAAmB,EAAE,OAAO,CAAC,aAAa,EAAE,wBAAwB,CAAC;6BACtE,CAAA;4BACD,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;wBACrE,CAAC;qBACF;oBACD,MAAM,EAAE;wBACN,IAAI;wBACJ,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE;4BACT,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,IAAI;yBACZ;qBACF;oBACD,KAAK,EAAE;wBACL,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;4BACrB,gDAAgD;4BAChD,IAAI,CAAC,cAAc,GAAG;gCACpB,GAAG,IAAI,CAAC,cAAc;gCACtB,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;6BACrD,CAAA;4BACD,OAAO,IAAI,CAAA;wBACb,CAAC;wBACD,MAAM,EAAE,CAAC,MAAW,EAAE,EAAE;4BACtB,gEAAgE;4BAChE,8EAA8E;4BAC9E,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;4BACrC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG;gCACvB,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC;gCACxC,cAAc;6BACf,CAAA;4BACD,OAAO,MAAM,CAAA;wBACf,CAAC;qBACF;iBACF;aACF,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,kCAAkC;QAClC,IAAI,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAA;QAE3C,IAAI,aAAkF,CAAA;QACtF,IAAI,gBAA0C,CAAA;QAC9C,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,IAAI,WAAW,GAAa,EAAE,CAAA;QAC9B,IAAI,aAAa,GAAG,EAAE,CAAA;QAEtB,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;YAC7C,aAAa,GAAG,MAAM,CAAA;YACtB,WAAW,GAAG,MAAM,CAAC,IAAI,CAAA;YACzB,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC/C,CAAC,CAAA;QAED,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,IAAI,cAAc,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrD,OAAM;YACR,CAAC;YAED,YAAY,GAAG,IAAI,CAAA;YACnB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAElD,IAAI,CAAC;gBACH,uBAAuB;gBACvB,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;gBAElC,2CAA2C;gBAC3C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;gBACvC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAA;gBACvC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;gBAE3C,8CAA8C;gBAC9C,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAA;gBAEvC,mBAAmB;gBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAC/B,MAAM,WAAW,CAAC,YAAY,CAAC,CAAA;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,GAAG,SAAS,CAAA;gBACzB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;gBACnD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC1E,CAAC;oBAAS,CAAC;gBACT,YAAY,GAAG,KAAK,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,SAAS,EAAE,CAAA;YACX,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACpF,CAAC;YACD,SAAS,EAAE,CAAA;QACb,CAAC,CAAA;QAED,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAM;YACR,CAAC;YAED,cAAc,GAAG,IAAI,CAAA;YACrB,gBAAgB,EAAE,EAAE,CAAA;YAEpB,IAAI,CAAC;gBACH,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAA;gBACrD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YACzF,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC,CAAA;QAED,6CAA6C;QAC7C,eAAe,GAAG,aAAa,CAAA;QAE/B,MAAM,WAAW,CAAC,SAAS,CAAC,CAAA;QAE5B,gBAAgB,GAAG,sBAAsB,CAAC;YACxC,OAAO,EAAE,aAAa;YACtB,QAAQ;YACR,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,KAAK,QAAQ,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,aAAa;QACb,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtF,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAQ,EAAE;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAMrC;;;GAGG;AACH,SAAS,yBAAyB,CAChC,eAAuB,EACvB,cAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,KAAK,CAAC,GAAG;YACP,IAAI,OAAsD,CAAA;YAE1D,GAAG,CAAC,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACpC,MAAM,WAAW,GAAG;oBAClB,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC;oBAC7C,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC;iBACzD,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;gBAEpC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAM;gBAEpC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;oBACpC,aAAa,EAAE,IAAI;oBACnB,sBAAsB,EAAE,IAAI;iBAC7B,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;oBAC1C,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAA;oBACtG,MAAM,cAAc,EAAE,CAAA;gBACxB,CAAC,CAAA;gBAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBAC9B,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,aAAqB;IAClD,MAAM,YAAY,GAA2B;QAC3C,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,YAAY;KACnB,CAAA;IAED,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,OAAM;gBACR,CAAC;gBAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;gBAE5C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBACxC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;wBACb,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAA;oBAClC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBAC1C,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACpC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;wBAClD,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,WAAmB,CAAA;oBACvB,IAAI,CAAC;wBACH,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;oBAC3C,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAA;oBACpF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,cAAc,EAAE,CAAC,CAAA;oBAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;oBAExD,IACE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC7B,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;wBACjC,UAAU,KAAK,aAAa,EAC5B,CAAC;wBACD,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,KAAK,CAAA;oBACT,IAAI,CAAC;wBACH,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBACpB,IAAI,EAAE,CAAA;wBACN,OAAM;oBACR,CAAC;oBAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;oBAC5D,MAAM,WAAW,GAAG,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,0BAA0B,CAAA;oBAExF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;oBAC1C,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;oBAE1C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACtB,GAAG,CAAC,GAAG,EAAE,CAAA;wBACT,OAAM;oBACR,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;wBACxC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAClB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAc,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,aAAqB;IACpD,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,OAAO;;;;iCAIwB,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DjE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kCAAkC,CAAC,aAAqB;IAC/D,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,OAAO;;;;iCAIwB,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,aAAqB,EAAE,mBAA4B;IACrF,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEnE,MAAM,sBAAsB,GAAG,mBAAmB;QAChD,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,kBAAkB,GAAG,mBAAmB;QAC5C,CAAC,CAAC;;;;;;;;;IASF;QACA,CAAC,CAAC;;;;;;;IAOF,CAAC;IAEH,OAAO;EACP,sBAAsB;;;;iCAIS,gBAAgB;oDACG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DhE,kBAAkB;;;;;;;CAOnB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,eAAe,CAAA;IAEvD,+CAA+C;IAC/C,MAAM,CAAC,QAAQ,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,6CAA6C;QAC9D,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,wCAAwC;KAC1D,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,yBAAyB;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;YAChD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,wFAAwF;QACxF,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAE5D,wDAAwD;QACxD,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;QACtD,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,mBAAmB,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAA;QAE3F,sDAAsD;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QACpE,MAAM,yBAAyB,GAAG,IAAI,CACrC,UAAU,EACV,gCAAgC,CAChC,CAAC;QAEF,aAAa,CAAC,cAAc,EAAE,uBAAuB,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QAE/E,oDAAoD;QACpD,IAAI,WAAW,EAAE,CAAC;YACjB,aAAa,CACZ,iBAAiB,EACjB,0BAA0B,CAAC,aAAa,EAAE,mBAAmB,CAAC,EAC9D,OAAO,CACP,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,mBAAmB,EAAE,CAAC;YACzB,aAAa,CACZ,yBAAyB,EACzB,kCAAkC,CAAC,aAAa,CAAC,EACjD,OAAO,CACP,CAAC;QACH,CAAC;QAEC,wEAAwE;QACxE,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;gBAC1C,OAAO;oBACL,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;oBACxC,cAAc,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;iBACtC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAA;gBACrF,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACxE,OAAO;oBACL,YAAY,EAAE,EAAE;oBAChB,cAAc,EAAE,EAAE;iBACnB,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QAED,wBAAwB;QACxB,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAE1D,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;QAC1C,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAEjD,kDAAkD;QAClD,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,aAAa,qBAAqB,aAAa,UAAU,CAAC,CAAC,CAAA;YAC3F,SAAS,EAAE,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAA;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QAErD,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,IAAc,EAAE,EAAE;YAC9D,SAAS,EAAE,CAAA;YACX,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC3D,SAAS,EAAE,CAAA;YACX,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC7E,CAAC;YACD,SAAS,EAAE,CAAA;YACX,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC,CAAA;QAED,MAAM,sBAAsB,GAAG,CAAC,QAK/B,EAAE,EAAE;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;gBAClC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;oBACpB,OAAM;gBACR,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;gBACrC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;oBACf,OAAM;gBACR,CAAC;gBAED,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,GAAG;wBACN,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAA;wBACvB,MAAK;oBACP,KAAK,GAAG;wBACN,QAAQ,CAAC,QAAQ,EAAE,CAAA;wBACnB,MAAK;oBACP,KAAK,GAAG;wBACN,QAAQ,CAAC,KAAK,EAAE,CAAA;wBAChB,MAAK;oBACP,KAAK,GAAG;wBACN,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;wBACpB,MAAK;oBACP;wBACE,MAAK;gBACT,CAAC;YACH,CAAC,CAAA;YAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;YACtB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAEpC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;gBACrC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjC,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YACvB,CAAC,CAAA;QACH,CAAC,CAAA;QAED,wFAAwF;QACxF,IAAI,eAAkD,CAAA;QAEtD,+DAA+D;QAC/D,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;YACvC,OAAO,MAAM,aAAa,CAAC;gBACzB,aAAa,EAAE;oBACb,GAAG,EAAE;wBACH,WAAW,EAAE,KAAK;qBACnB;oBACD,OAAO,EAAE;wBACP,WAAW,EAAE;wBACb,qBAAqB,CAAC,aAAa,CAAC;wBACpC,yBAAyB,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;4BACpD,MAAM,eAAe,EAAE,EAAE,CAAA;wBAC3B,CAAC,CAAC;qBACH;oBACD,MAAM,EAAE;wBACN,KAAK,EAAE;4BACZ,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC;4BACjD,KAAK,EAAE,cAAc;4BACrB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACvD,GAAG,CAAC,mBAAmB;gCACtB,CAAC,CAAC,EAAE,mBAAmB,EAAE,yBAAyB,EAAE;gCACpD,CAAC,CAAC,EAAE,CAAC;yBACN;wBACK,MAAM,EAAE;4BACb,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;4BAC/C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;4BACnD,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;4BAC7C,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;yBACrD;qBACI;oBACD,OAAO,EAAE;wBACP,KAAK,EAAE;4BACL,GAAG,EAAE,eAAe;yBACrB;wBACD,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;qBAC/B;oBACD,IAAI,EAAE;wBACJ,QAAQ,CAAC,EAAE,SAAS,EAAE;4BACpB,MAAM,SAAS,GAA2B;gCACxC,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gCAC3C,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gCAC3C,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;gCACjD,mBAAmB,EAAE,OAAO,CAAC,aAAa,EAAE,wBAAwB,CAAC;6BACtE,CAAA;4BACD,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;wBACrE,CAAC;qBACF;oBACD,MAAM,EAAE;wBACN,IAAI;wBACJ,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE;4BACT,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,IAAI;yBACZ;qBACF;oBACD,KAAK,EAAE;wBACL,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;4BACrB,gDAAgD;4BAChD,IAAI,CAAC,cAAc,GAAG;gCACpB,GAAG,IAAI,CAAC,cAAc;gCACtB,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;6BACrD,CAAA;4BACD,OAAO,IAAI,CAAA;wBACb,CAAC;wBACD,MAAM,EAAE,CAAC,MAAW,EAAE,EAAE;4BACtB,gEAAgE;4BAChE,8EAA8E;4BAC9E,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;4BACrC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG;gCACvB,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC;gCACxC,cAAc;6BACf,CAAA;4BACD,OAAO,MAAM,CAAA;wBACf,CAAC;qBACF;iBACF;aACF,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,kCAAkC;QAClC,IAAI,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAA;QAE3C,IAAI,aAAkF,CAAA;QACtF,IAAI,gBAA0C,CAAA;QAC9C,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,IAAI,WAAW,GAAa,EAAE,CAAA;QAC9B,IAAI,aAAa,GAAG,EAAE,CAAA;QAEtB,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;YAC7C,aAAa,GAAG,MAAM,CAAA;YACtB,WAAW,GAAG,MAAM,CAAC,IAAI,CAAA;YACzB,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC/C,CAAC,CAAA;QAED,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,IAAI,cAAc,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrD,OAAM;YACR,CAAC;YAED,YAAY,GAAG,IAAI,CAAA;YACnB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAElD,IAAI,CAAC;gBACH,uBAAuB;gBACvB,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;gBAElC,2CAA2C;gBAC3C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;gBACvC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAA;gBACvC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;gBAE3C,8CAA8C;gBAC9C,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAA;gBAEvC,mBAAmB;gBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAC/B,MAAM,WAAW,CAAC,YAAY,CAAC,CAAA;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,GAAG,SAAS,CAAA;gBACzB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;gBACnD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC1E,CAAC;oBAAS,CAAC;gBACT,YAAY,GAAG,KAAK,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,SAAS,EAAE,CAAA;YACX,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACpF,CAAC;YACD,SAAS,EAAE,CAAA;QACb,CAAC,CAAA;QAED,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAM;YACR,CAAC;YAED,cAAc,GAAG,IAAI,CAAA;YACrB,gBAAgB,EAAE,EAAE,CAAA;YAEpB,IAAI,CAAC;gBACH,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAA;gBACrD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YACzF,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC,CAAA;QAED,6CAA6C;QAC7C,eAAe,GAAG,aAAa,CAAA;QAE/B,MAAM,WAAW,CAAC,SAAS,CAAC,CAAA;QAE5B,gBAAgB,GAAG,sBAAsB,CAAC;YACxC,OAAO,EAAE,aAAa;YACtB,QAAQ;YACR,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,KAAK,QAAQ,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,aAAa;QACb,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linktr.ee/linkapp",
3
- "version": "0.0.42",
3
+ "version": "0.0.43",
4
4
  "description": "Development, build, and deployment tooling for LinkApps",
5
5
  "type": "module",
6
6
  "bin": {
@@ -69,7 +69,7 @@
69
69
  * @param {Object} fontData - Font configuration from parent
70
70
  * @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
71
71
  * @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
72
- * @param {string} [fontData.style] - Inline @font-face CSS definitions
72
+ * @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
73
73
  */
74
74
  function applyFont(fontData) {
75
75
  if (!fontData || typeof fontData !== 'object') {
@@ -92,10 +92,10 @@
92
92
  document.head.appendChild(link)
93
93
  }
94
94
  // Option 2: Inline @font-face definitions
95
- else if (fontData.style) {
95
+ else if (fontData.fontStyle) {
96
96
  const style = document.createElement('style')
97
97
  style.id = 'linktree-font'
98
- style.textContent = fontData.style
98
+ style.textContent = fontData.fontStyle
99
99
  document.head.appendChild(style)
100
100
  }
101
101