@linktr.ee/linkapp 0.0.36 → 0.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dev-server/preview/main.tsx +8 -8
- package/dev-server/preview/preview.tsx +417 -0
- package/dist/lib/deploy/generate-manifest-files.d.ts.map +1 -1
- package/dist/lib/deploy/generate-manifest-files.js +9 -0
- package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
- package/dist/lib/utils/setup-runtime.js +16 -1
- package/dist/lib/utils/setup-runtime.js.map +1 -1
- package/dist/schema/config.schema.d.ts +33 -2
- package/dist/schema/config.schema.d.ts.map +1 -1
- package/dist/schema/config.schema.js +18 -1
- package/dist/schema/config.schema.js.map +1 -1
- package/dist/types.d.ts +7 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/runtime/index.html +45 -0
- package/dev-server/preview/Preview.tsx +0 -276
- /package/dev-server/components/{SettingsPreview.tsx → settings-preview.tsx} +0 -0
package/README.md
CHANGED
|
@@ -190,6 +190,9 @@ export default defineConfig({
|
|
|
190
190
|
title: 'My LinkApp Settings',
|
|
191
191
|
uses_url: true,
|
|
192
192
|
featured_chin_position: 'below',
|
|
193
|
+
featured_head_allow_unlocked_aspect_ratio: true,
|
|
194
|
+
sheet_behavior: 'expandGeneric',
|
|
195
|
+
featured_head_click_behavior: 'expand',
|
|
193
196
|
elements: [
|
|
194
197
|
{
|
|
195
198
|
type: 'text',
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { StrictMode } from
|
|
2
|
-
import { createRoot } from
|
|
3
|
-
import Preview from
|
|
4
|
-
import
|
|
1
|
+
import { StrictMode } from "react";
|
|
2
|
+
import { createRoot } from "react-dom/client";
|
|
3
|
+
import Preview from "./preview";
|
|
4
|
+
import "./preview.css";
|
|
5
5
|
|
|
6
|
-
const rootElement = document.getElementById(
|
|
6
|
+
const rootElement = document.getElementById("root");
|
|
7
7
|
if (!rootElement) {
|
|
8
|
-
throw new Error(
|
|
8
|
+
throw new Error("Root element not found");
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
createRoot(rootElement).render(
|
|
12
12
|
<StrictMode>
|
|
13
13
|
<Preview />
|
|
14
|
-
</StrictMode
|
|
15
|
-
)
|
|
14
|
+
</StrictMode>,
|
|
15
|
+
);
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { Portal } from "@radix-ui/react-portal";
|
|
2
|
+
import IframeResizer, { type IFrameComponent } from "iframe-resizer-react";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { SettingsPreview } from "../components/settings-preview";
|
|
5
|
+
import {
|
|
6
|
+
Dialog,
|
|
7
|
+
DialogContent,
|
|
8
|
+
DialogHeader,
|
|
9
|
+
DialogOverlay,
|
|
10
|
+
DialogTitle,
|
|
11
|
+
} from "../components/ui/dialog";
|
|
12
|
+
import {
|
|
13
|
+
Tabs,
|
|
14
|
+
TabsContent,
|
|
15
|
+
TabsList,
|
|
16
|
+
TabsTrigger,
|
|
17
|
+
} from "../components/ui/tabs";
|
|
18
|
+
import { cn, renderCssVariables } from "../lib/utils";
|
|
19
|
+
import { THEME_PRESETS } from "../shared/theme-presets";
|
|
20
|
+
|
|
21
|
+
function Chin({ title }: { title?: string }) {
|
|
22
|
+
if (!title) return null;
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<div
|
|
26
|
+
data-testid="NewLinkChin"
|
|
27
|
+
data-animation-target="link-chin"
|
|
28
|
+
className="relative flex min-h-16 flex-col justify-center gap-[1px] py-2 tracking-[-0.2px] items-center px-8"
|
|
29
|
+
>
|
|
30
|
+
<div className="w-full overflow-hidden overflow-ellipsis text-balance text-[14px] font-medium leading-[1.2] text-[var(--button-style-text)] sm:text-[16px] line-clamp-2 text-center">
|
|
31
|
+
{title}
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default function Preview() {
|
|
38
|
+
// Initialize state from localStorage
|
|
39
|
+
const [selectedTab, setSelectedTab] = useState<
|
|
40
|
+
"sheet" | "featured" | "settings"
|
|
41
|
+
>(() => {
|
|
42
|
+
const saved = localStorage.getItem("linkapp-preview-tab");
|
|
43
|
+
return (saved as "sheet" | "featured" | "settings") || "sheet";
|
|
44
|
+
});
|
|
45
|
+
const [selectedTheme, setSelectedTheme] = useState<
|
|
46
|
+
keyof typeof THEME_PRESETS
|
|
47
|
+
>(() => {
|
|
48
|
+
const saved = localStorage.getItem("linkapp-preview-theme");
|
|
49
|
+
return (saved as keyof typeof THEME_PRESETS) || "default";
|
|
50
|
+
});
|
|
51
|
+
const [selectedGroupLayoutOption, setSelectedGroupLayoutOption] = useState<
|
|
52
|
+
string | undefined
|
|
53
|
+
>(() => {
|
|
54
|
+
const saved = localStorage.getItem("linkapp-preview-groupLayoutOption");
|
|
55
|
+
return saved || undefined;
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Chin configuration
|
|
59
|
+
const chinPosition = __SETTINGS_CONFIG__?.featured_chin_position;
|
|
60
|
+
const chinTitle = __PREVIEW_PROPS__?.linkTitle as string | undefined;
|
|
61
|
+
const isOverlay =
|
|
62
|
+
chinPosition === "overlayAbove" || chinPosition === "overlayBelow";
|
|
63
|
+
|
|
64
|
+
// Popup dialog state
|
|
65
|
+
const [isPopupOpen, setIsPopupOpen] = useState(false);
|
|
66
|
+
|
|
67
|
+
// Generate unique IDs for iframes using timestamp
|
|
68
|
+
const sheetIframeId = useMemo(() => `preview-iframe-sheet-${Date.now()}`, []);
|
|
69
|
+
const featuredIframeId = useMemo(
|
|
70
|
+
() => `preview-iframe-featured-${Date.now()}`,
|
|
71
|
+
[],
|
|
72
|
+
);
|
|
73
|
+
const popupIframeId = useMemo(() => `preview-iframe-popup-${Date.now()}`, []);
|
|
74
|
+
|
|
75
|
+
// Save selected tab to localStorage
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
localStorage.setItem("linkapp-preview-tab", selectedTab);
|
|
78
|
+
}, [selectedTab]);
|
|
79
|
+
|
|
80
|
+
// Save selected theme to localStorage
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
localStorage.setItem("linkapp-preview-theme", selectedTheme);
|
|
83
|
+
}, [selectedTheme]);
|
|
84
|
+
|
|
85
|
+
// Save selected groupLayoutOption to localStorage
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
if (selectedGroupLayoutOption) {
|
|
88
|
+
localStorage.setItem(
|
|
89
|
+
"linkapp-preview-groupLayoutOption",
|
|
90
|
+
selectedGroupLayoutOption,
|
|
91
|
+
);
|
|
92
|
+
} else {
|
|
93
|
+
localStorage.removeItem("linkapp-preview-groupLayoutOption");
|
|
94
|
+
}
|
|
95
|
+
}, [selectedGroupLayoutOption]);
|
|
96
|
+
|
|
97
|
+
// Handle iframe resize events
|
|
98
|
+
const handleResized = useCallback(
|
|
99
|
+
(ev: {
|
|
100
|
+
iframe: IFrameComponent;
|
|
101
|
+
height: number;
|
|
102
|
+
width: number;
|
|
103
|
+
type: string;
|
|
104
|
+
}): void => {
|
|
105
|
+
// IframeResizer automatically handles height adjustments
|
|
106
|
+
// This callback is available for debugging if needed
|
|
107
|
+
},
|
|
108
|
+
[],
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
// Handle postMessage from featured iframe for EXPAND_LINK_APP
|
|
112
|
+
const handleMessage = useCallback((event: MessageEvent) => {
|
|
113
|
+
if (
|
|
114
|
+
event.data &&
|
|
115
|
+
typeof event.data === "object" &&
|
|
116
|
+
event.data.source === "linkapp" &&
|
|
117
|
+
event.data.type === "EXPAND_LINK_APP"
|
|
118
|
+
) {
|
|
119
|
+
setIsPopupOpen(true);
|
|
120
|
+
}
|
|
121
|
+
}, []);
|
|
122
|
+
|
|
123
|
+
// Add message listener
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
window.addEventListener("message", handleMessage);
|
|
126
|
+
return () => window.removeEventListener("message", handleMessage);
|
|
127
|
+
}, [handleMessage]);
|
|
128
|
+
|
|
129
|
+
const renderedCssVariables = useMemo(() => {
|
|
130
|
+
const themeVariables =
|
|
131
|
+
THEME_PRESETS[selectedTheme] || THEME_PRESETS.default;
|
|
132
|
+
return renderCssVariables(themeVariables.variables);
|
|
133
|
+
}, [selectedTheme]);
|
|
134
|
+
|
|
135
|
+
return (
|
|
136
|
+
<>
|
|
137
|
+
<style>{`:root {
|
|
138
|
+
${renderedCssVariables}
|
|
139
|
+
}`}</style>
|
|
140
|
+
|
|
141
|
+
<div
|
|
142
|
+
className={cn("min-h-screen", {
|
|
143
|
+
"bg-black/50": selectedTab === "sheet",
|
|
144
|
+
"bg-linktree-frame": selectedTab === "featured",
|
|
145
|
+
})}
|
|
146
|
+
id="preview"
|
|
147
|
+
>
|
|
148
|
+
<Tabs
|
|
149
|
+
value={selectedTab}
|
|
150
|
+
onValueChange={(value) =>
|
|
151
|
+
setSelectedTab(value as "sheet" | "featured" | "settings")
|
|
152
|
+
}
|
|
153
|
+
>
|
|
154
|
+
<Portal>
|
|
155
|
+
<div
|
|
156
|
+
className="fixed top-0 left-0 right-0 p-4 flex justify-center gap-4 bg-background border-b"
|
|
157
|
+
style={{ zIndex: 1000000 }}
|
|
158
|
+
>
|
|
159
|
+
<TabsList>
|
|
160
|
+
<TabsTrigger value="sheet">Sheet</TabsTrigger>
|
|
161
|
+
<TabsTrigger value="featured">Featured</TabsTrigger>
|
|
162
|
+
<TabsTrigger value="settings">Settings</TabsTrigger>
|
|
163
|
+
</TabsList>
|
|
164
|
+
|
|
165
|
+
{/* Theme Switcher */}
|
|
166
|
+
<div className="flex items-center gap-2">
|
|
167
|
+
<label htmlFor="theme-select" className="text-sm font-medium">
|
|
168
|
+
Theme:
|
|
169
|
+
</label>
|
|
170
|
+
<select
|
|
171
|
+
id="theme-select"
|
|
172
|
+
value={selectedTheme}
|
|
173
|
+
onChange={(e) =>
|
|
174
|
+
setSelectedTheme(
|
|
175
|
+
e.target.value as keyof typeof THEME_PRESETS,
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
className="h-9 px-3 py-1 text-sm border border-input bg-background rounded-md focus:outline-none focus:ring-2 focus:ring-ring"
|
|
179
|
+
>
|
|
180
|
+
{Object.entries(THEME_PRESETS).map(([key, theme]) => (
|
|
181
|
+
<option key={key} value={key}>
|
|
182
|
+
{theme.name}
|
|
183
|
+
</option>
|
|
184
|
+
))}
|
|
185
|
+
</select>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
{/* Group Layout Option Switcher - Only show for Featured tab */}
|
|
189
|
+
{/*{selectedTab === "featured" && (
|
|
190
|
+
<div className="flex items-center gap-2">
|
|
191
|
+
<label htmlFor="groupLayoutOption-select" className="text-sm font-medium">
|
|
192
|
+
Layout:
|
|
193
|
+
</label>
|
|
194
|
+
<select
|
|
195
|
+
id="groupLayoutOption-select"
|
|
196
|
+
value={selectedGroupLayoutOption || "default"}
|
|
197
|
+
onChange={(e) =>
|
|
198
|
+
setSelectedGroupLayoutOption(e.target.value === "default" ? undefined : e.target.value)
|
|
199
|
+
}
|
|
200
|
+
className="h-9 px-3 py-1 text-sm border border-input bg-background rounded-md focus:outline-none focus:ring-2 focus:ring-ring"
|
|
201
|
+
>
|
|
202
|
+
<option value="default">Default</option>
|
|
203
|
+
<option value="carousel">Carousel</option>
|
|
204
|
+
</select>
|
|
205
|
+
</div>
|
|
206
|
+
)}*/}
|
|
207
|
+
</div>
|
|
208
|
+
</Portal>
|
|
209
|
+
|
|
210
|
+
{/* Main Content with Padding for Fixed Tabs */}
|
|
211
|
+
<div className="pt-20">
|
|
212
|
+
<TabsContent value="sheet" className="m-0">
|
|
213
|
+
{/* Sheet Modal - Always Open */}
|
|
214
|
+
<Dialog open={true} modal={false}>
|
|
215
|
+
<DialogOverlay />
|
|
216
|
+
<DialogContent
|
|
217
|
+
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
218
|
+
showCloseButton={false}
|
|
219
|
+
>
|
|
220
|
+
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
221
|
+
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
222
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
223
|
+
<svg
|
|
224
|
+
width="16"
|
|
225
|
+
height="16"
|
|
226
|
+
viewBox="0 0 16 16"
|
|
227
|
+
fill="none"
|
|
228
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
229
|
+
className=" "
|
|
230
|
+
role="img"
|
|
231
|
+
aria-hidden="true"
|
|
232
|
+
>
|
|
233
|
+
<path
|
|
234
|
+
fill="currentColor"
|
|
235
|
+
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"
|
|
236
|
+
></path>
|
|
237
|
+
</svg>
|
|
238
|
+
</button>
|
|
239
|
+
|
|
240
|
+
<DialogTitle className="self-center truncate py-3 text-center">
|
|
241
|
+
Sheet
|
|
242
|
+
</DialogTitle>
|
|
243
|
+
|
|
244
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
245
|
+
<svg
|
|
246
|
+
width="16"
|
|
247
|
+
height="16"
|
|
248
|
+
viewBox="0 0 16 16"
|
|
249
|
+
fill="none"
|
|
250
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
251
|
+
className=" "
|
|
252
|
+
role="img"
|
|
253
|
+
aria-hidden="true"
|
|
254
|
+
>
|
|
255
|
+
<path
|
|
256
|
+
fill="currentColor"
|
|
257
|
+
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"
|
|
258
|
+
></path>
|
|
259
|
+
</svg>
|
|
260
|
+
</button>
|
|
261
|
+
</div>
|
|
262
|
+
</DialogHeader>
|
|
263
|
+
|
|
264
|
+
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
265
|
+
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
266
|
+
<IframeResizer
|
|
267
|
+
key={`sheet-${selectedTheme}`}
|
|
268
|
+
id={sheetIframeId}
|
|
269
|
+
src={`/sheet?theme=${selectedTheme}`}
|
|
270
|
+
style={{
|
|
271
|
+
height: "0px",
|
|
272
|
+
width: "1px",
|
|
273
|
+
minWidth: "100%",
|
|
274
|
+
border: 0,
|
|
275
|
+
}}
|
|
276
|
+
checkOrigin={false}
|
|
277
|
+
onResized={handleResized}
|
|
278
|
+
heightCalculationMethod="max"
|
|
279
|
+
/>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
</DialogContent>
|
|
283
|
+
</Dialog>
|
|
284
|
+
</TabsContent>
|
|
285
|
+
|
|
286
|
+
<TabsContent
|
|
287
|
+
value="featured"
|
|
288
|
+
className="m-0 flex justify-center p-8"
|
|
289
|
+
>
|
|
290
|
+
<div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
|
|
291
|
+
<div className="w-full max-w-[524px]">
|
|
292
|
+
{chinPosition === "above" && <Chin title={chinTitle} />}
|
|
293
|
+
|
|
294
|
+
<div
|
|
295
|
+
className={cn(
|
|
296
|
+
"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",
|
|
297
|
+
isOverlay && "relative",
|
|
298
|
+
)}
|
|
299
|
+
style={
|
|
300
|
+
!__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
|
|
301
|
+
? { aspectRatio: "16 / 9" }
|
|
302
|
+
: undefined
|
|
303
|
+
}
|
|
304
|
+
>
|
|
305
|
+
{chinPosition === "overlay_above" && (
|
|
306
|
+
<div className="absolute top-0 left-0 right-0 z-10">
|
|
307
|
+
<Chin title={chinTitle} />
|
|
308
|
+
</div>
|
|
309
|
+
)}
|
|
310
|
+
|
|
311
|
+
<IframeResizer
|
|
312
|
+
key={`featured-${selectedTheme}-${selectedGroupLayoutOption || "default"}`}
|
|
313
|
+
id={featuredIframeId}
|
|
314
|
+
src={`/featured?theme=${selectedTheme}${selectedGroupLayoutOption ? `&groupLayoutOption=${selectedGroupLayoutOption}` : ""}`}
|
|
315
|
+
style={{
|
|
316
|
+
height: "0px",
|
|
317
|
+
width: "1px",
|
|
318
|
+
minWidth: "100%",
|
|
319
|
+
border: 0,
|
|
320
|
+
}}
|
|
321
|
+
checkOrigin={false}
|
|
322
|
+
onResized={handleResized}
|
|
323
|
+
heightCalculationMethod="max"
|
|
324
|
+
/>
|
|
325
|
+
|
|
326
|
+
{chinPosition === "overlayBelow" && (
|
|
327
|
+
<div className="absolute bottom-0 left-0 right-0 z-10">
|
|
328
|
+
<Chin title={chinTitle} />
|
|
329
|
+
</div>
|
|
330
|
+
)}
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
{chinPosition === "below" && <Chin title={chinTitle} />}
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
</TabsContent>
|
|
337
|
+
|
|
338
|
+
<TabsContent value="settings" className="m-0">
|
|
339
|
+
<SettingsPreview settings={__SETTINGS_CONFIG__} />
|
|
340
|
+
</TabsContent>
|
|
341
|
+
</div>
|
|
342
|
+
</Tabs>
|
|
343
|
+
|
|
344
|
+
{/* Popup Dialog for EXPAND_LINK_APP message */}
|
|
345
|
+
<Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
|
|
346
|
+
<DialogContent
|
|
347
|
+
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
348
|
+
showCloseButton={false}
|
|
349
|
+
>
|
|
350
|
+
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
351
|
+
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
352
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
353
|
+
<svg
|
|
354
|
+
width="16"
|
|
355
|
+
height="16"
|
|
356
|
+
viewBox="0 0 16 16"
|
|
357
|
+
fill="none"
|
|
358
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
359
|
+
className=" "
|
|
360
|
+
role="img"
|
|
361
|
+
aria-hidden="true"
|
|
362
|
+
>
|
|
363
|
+
<path
|
|
364
|
+
fill="currentColor"
|
|
365
|
+
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"
|
|
366
|
+
></path>
|
|
367
|
+
</svg>
|
|
368
|
+
</button>
|
|
369
|
+
|
|
370
|
+
<DialogTitle className="self-center truncate py-3 text-center">
|
|
371
|
+
Sheet
|
|
372
|
+
</DialogTitle>
|
|
373
|
+
|
|
374
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
375
|
+
<svg
|
|
376
|
+
width="16"
|
|
377
|
+
height="16"
|
|
378
|
+
viewBox="0 0 16 16"
|
|
379
|
+
fill="none"
|
|
380
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
381
|
+
className=" "
|
|
382
|
+
role="img"
|
|
383
|
+
aria-hidden="true"
|
|
384
|
+
>
|
|
385
|
+
<path
|
|
386
|
+
fill="currentColor"
|
|
387
|
+
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"
|
|
388
|
+
></path>
|
|
389
|
+
</svg>
|
|
390
|
+
</button>
|
|
391
|
+
</div>
|
|
392
|
+
</DialogHeader>
|
|
393
|
+
|
|
394
|
+
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
395
|
+
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
396
|
+
<IframeResizer
|
|
397
|
+
key={`popup-${selectedTheme}`}
|
|
398
|
+
id={popupIframeId}
|
|
399
|
+
src={`/sheet?theme=${selectedTheme}`}
|
|
400
|
+
style={{
|
|
401
|
+
height: "0px",
|
|
402
|
+
width: "1px",
|
|
403
|
+
minWidth: "100%",
|
|
404
|
+
border: 0,
|
|
405
|
+
}}
|
|
406
|
+
checkOrigin={false}
|
|
407
|
+
onResized={handleResized}
|
|
408
|
+
heightCalculationMethod="max"
|
|
409
|
+
/>
|
|
410
|
+
</div>
|
|
411
|
+
</div>
|
|
412
|
+
</DialogContent>
|
|
413
|
+
</Dialog>
|
|
414
|
+
</div>
|
|
415
|
+
</>
|
|
416
|
+
);
|
|
417
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-manifest-files.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"AAMA,wBAAsB,qBAAqB,CACzC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generate-manifest-files.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"AAMA,wBAAsB,qBAAqB,CACzC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
|
|
@@ -68,6 +68,15 @@ export async function generateManifestFiles(projectPath = process.cwd()) {
|
|
|
68
68
|
...(config.settings.featured_chin_position !== undefined && {
|
|
69
69
|
featured_chin_position: config.settings.featured_chin_position,
|
|
70
70
|
}),
|
|
71
|
+
...(config.settings.featured_head_allow_unlocked_aspect_ratio !== undefined && {
|
|
72
|
+
featured_head_allow_unlocked_aspect_ratio: config.settings.featured_head_allow_unlocked_aspect_ratio,
|
|
73
|
+
}),
|
|
74
|
+
...(config.settings.sheet_behavior !== undefined && {
|
|
75
|
+
sheet_behavior: config.settings.sheet_behavior,
|
|
76
|
+
}),
|
|
77
|
+
...(config.settings.featured_head_click_behavior !== undefined && {
|
|
78
|
+
featured_head_click_behavior: config.settings.featured_head_click_behavior,
|
|
79
|
+
}),
|
|
71
80
|
};
|
|
72
81
|
writeFileSync(join(linkappDir, "settings.json"), JSON.stringify(settings, null, 2), "utf-8");
|
|
73
82
|
// Generate url_match_rules.json if present
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-manifest-files.js","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-manifest-files.js","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AA0PA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAyBtD"}
|
|
@@ -54,15 +54,25 @@ type ExtensionData = {
|
|
|
54
54
|
groupLayoutOption?: string
|
|
55
55
|
__theme?: {
|
|
56
56
|
cssVariables: Record<string, string>
|
|
57
|
+
font?: {
|
|
58
|
+
fontFamily: string
|
|
59
|
+
fontStyle?: string
|
|
60
|
+
cssUrl?: string
|
|
61
|
+
}
|
|
57
62
|
}
|
|
58
63
|
displayType?: string
|
|
59
64
|
[key: string]: any
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
// Declare global window
|
|
67
|
+
// Declare global window properties for theme and font application
|
|
63
68
|
declare global {
|
|
64
69
|
interface Window {
|
|
65
70
|
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
71
|
+
__linkapp_applyFont?: (fontData: {
|
|
72
|
+
fontFamily: string
|
|
73
|
+
fontStyle?: string
|
|
74
|
+
cssUrl?: string
|
|
75
|
+
}) => void
|
|
66
76
|
}
|
|
67
77
|
}
|
|
68
78
|
|
|
@@ -178,6 +188,11 @@ const renderApp = (data: ExtensionData) => {
|
|
|
178
188
|
window.__linkapp_applyTheme(data.__theme.cssVariables)
|
|
179
189
|
}
|
|
180
190
|
|
|
191
|
+
// Apply font if provided
|
|
192
|
+
if (data.__theme?.font && window.__linkapp_applyFont) {
|
|
193
|
+
window.__linkapp_applyFont(data.__theme.font)
|
|
194
|
+
}
|
|
195
|
+
|
|
181
196
|
root.render(
|
|
182
197
|
<StrictMode>
|
|
183
198
|
<App data={data} />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-runtime.js","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;GAEG;AACH,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IAEtC,6CAA6C;IAC7C,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,MAAM,CAAC,WAAW,iBAAiB,MAAM,CAAC,QAAQ,GAAG,CAClE;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,2CAA2C;IAC3C,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,wCAAwC;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,kCAAkC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACzE,OAAO,KAAK,GAAG,KAAK,MAAM,CAAC,WAAW,GAAG,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,kFAAkF;IAClF,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC;;gBAEU;QACZ,CAAC,CAAC,qCAAqC,CAAC;IAE1C,OAAO;;EAEP,YAAY;EACZ,OAAO;;;;;EAKP,UAAU
|
|
1
|
+
{"version":3,"file":"setup-runtime.js","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,21 @@ declare const featuredChinPositionSchema: z.ZodEnum<{
|
|
|
3
3
|
none: "none";
|
|
4
4
|
above: "above";
|
|
5
5
|
below: "below";
|
|
6
|
-
|
|
6
|
+
overlayBelow: "overlayBelow";
|
|
7
|
+
overlayAbove: "overlayAbove";
|
|
8
|
+
}>;
|
|
9
|
+
declare const sheetBehaviorSchema: z.ZodEnum<{
|
|
10
|
+
default: "default";
|
|
11
|
+
none: "none";
|
|
12
|
+
expandGeneric: "expandGeneric";
|
|
13
|
+
expandVideo: "expandVideo";
|
|
14
|
+
}>;
|
|
15
|
+
declare const featuredHeadClickBehaviorSchema: z.ZodEnum<{
|
|
16
|
+
default: "default";
|
|
17
|
+
custom: "custom";
|
|
18
|
+
linkOff: "linkOff";
|
|
19
|
+
expand: "expand";
|
|
20
|
+
inlineVideoPlayer: "inlineVideoPlayer";
|
|
7
21
|
}>;
|
|
8
22
|
declare const themeSchema: z.ZodObject<{
|
|
9
23
|
isOutlineStyle: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -127,7 +141,22 @@ declare const linkAppConfigSchema: z.ZodObject<{
|
|
|
127
141
|
none: "none";
|
|
128
142
|
above: "above";
|
|
129
143
|
below: "below";
|
|
130
|
-
|
|
144
|
+
overlayBelow: "overlayBelow";
|
|
145
|
+
overlayAbove: "overlayAbove";
|
|
146
|
+
}>>;
|
|
147
|
+
featured_head_allow_unlocked_aspect_ratio: z.ZodOptional<z.ZodBoolean>;
|
|
148
|
+
sheet_behavior: z.ZodOptional<z.ZodEnum<{
|
|
149
|
+
default: "default";
|
|
150
|
+
none: "none";
|
|
151
|
+
expandGeneric: "expandGeneric";
|
|
152
|
+
expandVideo: "expandVideo";
|
|
153
|
+
}>>;
|
|
154
|
+
featured_head_click_behavior: z.ZodOptional<z.ZodEnum<{
|
|
155
|
+
default: "default";
|
|
156
|
+
custom: "custom";
|
|
157
|
+
linkOff: "linkOff";
|
|
158
|
+
expand: "expand";
|
|
159
|
+
inlineVideoPlayer: "inlineVideoPlayer";
|
|
131
160
|
}>>;
|
|
132
161
|
}, z.core.$strip>;
|
|
133
162
|
url_match_rules: z.ZodOptional<z.ZodObject<{
|
|
@@ -194,5 +223,7 @@ export type LinkAppTheme = z.infer<typeof themeSchema>;
|
|
|
194
223
|
export type Viewport = z.infer<typeof viewportSchema>;
|
|
195
224
|
export type Position = z.infer<typeof positionSchema>;
|
|
196
225
|
export type FeaturedChinPosition = z.infer<typeof featuredChinPositionSchema>;
|
|
226
|
+
export type SheetBehavior = z.infer<typeof sheetBehaviorSchema>;
|
|
227
|
+
export type FeaturedHeadClickBehavior = z.infer<typeof featuredHeadClickBehaviorSchema>;
|
|
197
228
|
export {};
|
|
198
229
|
//# sourceMappingURL=config.schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqExB,QAAA,MAAM,0BAA0B;;;;;
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqExB,QAAA,MAAM,0BAA0B;;;;;;EAM9B,CAAC;AAEH,QAAA,MAAM,mBAAmB;;;;;EAKvB,CAAC;AAEH,QAAA,MAAM,+BAA+B;;;;;;EAMnC,CAAC;AAkJH,QAAA,MAAM,WAAW;;;;;;;;;;iBAWf,CAAC;AAEH,QAAA,MAAM,cAAc;;;iBAGlB,CAAC;AAEH,QAAA,MAAM,cAAc;;;iBAGlB,CAAC;AAGH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAkCF,CAAC;AAGzB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKvB,CAAC;AAGH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC"}
|
|
@@ -62,7 +62,21 @@ const featuredChinPositionSchema = z.enum([
|
|
|
62
62
|
"none",
|
|
63
63
|
"above",
|
|
64
64
|
"below",
|
|
65
|
-
"
|
|
65
|
+
"overlayBelow",
|
|
66
|
+
"overlayAbove",
|
|
67
|
+
]);
|
|
68
|
+
const sheetBehaviorSchema = z.enum([
|
|
69
|
+
"none",
|
|
70
|
+
"expandGeneric",
|
|
71
|
+
"expandVideo",
|
|
72
|
+
"default",
|
|
73
|
+
]);
|
|
74
|
+
const featuredHeadClickBehaviorSchema = z.enum([
|
|
75
|
+
"linkOff",
|
|
76
|
+
"expand",
|
|
77
|
+
"custom",
|
|
78
|
+
"inlineVideoPlayer",
|
|
79
|
+
"default",
|
|
66
80
|
]);
|
|
67
81
|
const settingsElementInputSchema = z.enum([
|
|
68
82
|
"button",
|
|
@@ -170,6 +184,9 @@ const settingsSchema = z.object({
|
|
|
170
184
|
// supports_featured_layout is auto-detected based on app/featured.tsx presence
|
|
171
185
|
supports_featured_layout: z.boolean().optional(),
|
|
172
186
|
featured_chin_position: featuredChinPositionSchema.optional(),
|
|
187
|
+
featured_head_allow_unlocked_aspect_ratio: z.boolean().optional(),
|
|
188
|
+
sheet_behavior: sheetBehaviorSchema.optional(),
|
|
189
|
+
featured_head_click_behavior: featuredHeadClickBehaviorSchema.optional(),
|
|
173
190
|
});
|
|
174
191
|
// URL Match Rules Schema
|
|
175
192
|
const urlMatchRulesSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AACnC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACvC,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,KAAK,CAAC,iBAAiB,EAAE,qCAAqC,CAAC,CAAC;AAEnE,0BAA0B;AAC1B,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACvE,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACnE,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC5E,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACjE,CAAC,CAAC;AAEH,gBAAgB;AAChB,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,WAAW;KACnB,CAAC;CACH,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;SAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;SAC7C,QAAQ,CACP,4EAA4E,CAC7E;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,uCAAuC,CAAC;SAC/C,GAAG,CAAC,GAAG,EAAE,wCAAwC,CAAC;SAClD,QAAQ,CAAC,mCAAmC,CAAC;IAChD,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,gDAAgD,CAAC;SACxD,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC7D,gBAAgB,EAAE,uBAAuB;IACzC,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SACxC,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;IACjD,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,mCAAmC;AACnC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IAChC,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC;IACxC,MAAM;IACN,OAAO;IACP,OAAO;IACP,eAAe;
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* Type definitions for LinkApp
|
|
3
3
|
* Note: Uses snake_case for API-facing types to match API requirements
|
|
4
4
|
*/
|
|
5
|
-
export type { PreviewProps, LinkAppTheme, Viewport, Position, FeaturedChinPosition, LinkAppConfig, } from "./schema/config.schema.js";
|
|
5
|
+
export type { PreviewProps, LinkAppTheme, Viewport, Position, FeaturedChinPosition, SheetBehavior, FeaturedHeadClickBehavior, LinkAppConfig, } from "./schema/config.schema.js";
|
|
6
|
+
import type { PreviewProps } from "./schema/config.schema.js";
|
|
6
7
|
export type Environment = "production" | "qa";
|
|
7
8
|
/**
|
|
8
9
|
* Props available to layout components
|
|
9
10
|
* Extend with custom settings from your config
|
|
10
11
|
*/
|
|
11
|
-
export type AppProps<TSettings = Record<string, unknown>> =
|
|
12
|
+
export type AppProps<TSettings = Record<string, unknown>> = PreviewProps & TSettings;
|
|
12
13
|
export interface LinkAppManifest {
|
|
13
14
|
name: string;
|
|
14
15
|
tagline: string;
|
|
@@ -121,7 +122,10 @@ export interface LinkAppSettings {
|
|
|
121
122
|
elements: SettingsElement[];
|
|
122
123
|
has_settings?: boolean;
|
|
123
124
|
supports_featured_layout?: boolean;
|
|
124
|
-
featured_chin_position?: "none" | "above" | "below" | "
|
|
125
|
+
featured_chin_position?: "none" | "above" | "below" | "overlayBelow" | "overlayAbove";
|
|
126
|
+
featured_head_allow_unlocked_aspect_ratio?: boolean;
|
|
127
|
+
sheet_behavior?: "none" | "expandGeneric" | "expandVideo" | "default";
|
|
128
|
+
featured_head_click_behavior?: "linkOff" | "expand" | "custom" | "inlineVideoPlayer" | "default";
|
|
125
129
|
}
|
|
126
130
|
export interface SettingsElement {
|
|
127
131
|
id: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiDH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,qCAAqB,CAAA;IACrB,iDAAiC,CAAA;IACjC,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,qCAAa,CAAA;IACb,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,uCAAe,CAAA;IACf,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,qDAA6B,CAAA;IAC7B,qCAAa,CAAA;IACb,mCAAW,CAAA;IACX,mDAA2B,CAAA;IAC3B,mDAA2B,CAAA;IAC3B,uCAAe,CAAA;AACjB,CAAC,EAhBW,oBAAoB,KAApB,oBAAoB,QAgB/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,8EAAqD,CAAA;AACvD,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,yCAA6B,CAAA;AAC/B,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB"}
|
package/package.json
CHANGED
package/runtime/index.html
CHANGED
|
@@ -62,6 +62,51 @@
|
|
|
62
62
|
|
|
63
63
|
// Export applyTheme to be used by main.tsx when receiving extension-data
|
|
64
64
|
window.__linkapp_applyTheme = applyTheme
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Apply font to iframe by injecting font CSS or external stylesheet
|
|
68
|
+
* Called once on mount when extension-data message is received
|
|
69
|
+
* @param {Object} fontData - Font configuration from parent
|
|
70
|
+
* @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
|
|
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
|
|
73
|
+
*/
|
|
74
|
+
function applyFont(fontData) {
|
|
75
|
+
if (!fontData || typeof fontData !== 'object') {
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Remove existing font style/link if present to avoid duplicates
|
|
80
|
+
const existingFontElement = document.getElementById('linktree-font')
|
|
81
|
+
if (existingFontElement) {
|
|
82
|
+
existingFontElement.remove()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
|
|
86
|
+
if (fontData.cssUrl) {
|
|
87
|
+
const link = document.createElement('link')
|
|
88
|
+
link.id = 'linktree-font'
|
|
89
|
+
link.rel = 'stylesheet'
|
|
90
|
+
link.href = fontData.cssUrl
|
|
91
|
+
link.crossOrigin = 'anonymous'
|
|
92
|
+
document.head.appendChild(link)
|
|
93
|
+
}
|
|
94
|
+
// Option 2: Inline @font-face definitions
|
|
95
|
+
else if (fontData.style) {
|
|
96
|
+
const style = document.createElement('style')
|
|
97
|
+
style.id = 'linktree-font'
|
|
98
|
+
style.textContent = fontData.style
|
|
99
|
+
document.head.appendChild(style)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Apply font-family to body element so all content inherits it
|
|
103
|
+
if (fontData.fontFamily) {
|
|
104
|
+
document.body.style.fontFamily = fontData.fontFamily
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Export applyFont to be used by main.tsx when receiving extension-data
|
|
109
|
+
window.__linkapp_applyFont = applyFont
|
|
65
110
|
</script>
|
|
66
111
|
</head>
|
|
67
112
|
<body>
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
import { Portal } from "@radix-ui/react-portal";
|
|
2
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
-
import IframeResizer, { IFrameComponent } from "iframe-resizer-react";
|
|
4
|
-
import {
|
|
5
|
-
Dialog,
|
|
6
|
-
DialogContent,
|
|
7
|
-
DialogHeader,
|
|
8
|
-
DialogTitle,
|
|
9
|
-
} from "../components/ui/dialog";
|
|
10
|
-
import {
|
|
11
|
-
Tabs,
|
|
12
|
-
TabsContent,
|
|
13
|
-
TabsList,
|
|
14
|
-
TabsTrigger,
|
|
15
|
-
} from "../components/ui/tabs";
|
|
16
|
-
import { cn, renderCssVariables } from "../lib/utils";
|
|
17
|
-
import { SettingsPreview } from "../components/SettingsPreview";
|
|
18
|
-
import { THEME_PRESETS } from "../shared/theme-presets";
|
|
19
|
-
|
|
20
|
-
export default function Preview() {
|
|
21
|
-
// Initialize state from localStorage
|
|
22
|
-
const [selectedTab, setSelectedTab] = useState<"sheet" | "featured" | "settings">(() => {
|
|
23
|
-
const saved = localStorage.getItem("linkapp-preview-tab");
|
|
24
|
-
return (saved as "sheet" | "featured" | "settings") || "sheet";
|
|
25
|
-
});
|
|
26
|
-
const [selectedTheme, setSelectedTheme] = useState<keyof typeof THEME_PRESETS>(() => {
|
|
27
|
-
const saved = localStorage.getItem("linkapp-preview-theme");
|
|
28
|
-
return (saved as keyof typeof THEME_PRESETS) || "default";
|
|
29
|
-
});
|
|
30
|
-
const [selectedGroupLayoutOption, setSelectedGroupLayoutOption] = useState<string | undefined>(() => {
|
|
31
|
-
const saved = localStorage.getItem("linkapp-preview-groupLayoutOption");
|
|
32
|
-
return saved || undefined;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
// Popup dialog state
|
|
36
|
-
const [isPopupOpen, setIsPopupOpen] = useState(false);
|
|
37
|
-
|
|
38
|
-
// Generate unique IDs for iframes using timestamp
|
|
39
|
-
const sheetIframeId = useMemo(() => `preview-iframe-sheet-${Date.now()}`, []);
|
|
40
|
-
const featuredIframeId = useMemo(() => `preview-iframe-featured-${Date.now()}`, []);
|
|
41
|
-
const popupIframeId = useMemo(() => `preview-iframe-popup-${Date.now()}`, []);
|
|
42
|
-
|
|
43
|
-
// Save selected tab to localStorage
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
localStorage.setItem("linkapp-preview-tab", selectedTab);
|
|
46
|
-
}, [selectedTab]);
|
|
47
|
-
|
|
48
|
-
// Save selected theme to localStorage
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
localStorage.setItem("linkapp-preview-theme", selectedTheme);
|
|
51
|
-
}, [selectedTheme]);
|
|
52
|
-
|
|
53
|
-
// Save selected groupLayoutOption to localStorage
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
if (selectedGroupLayoutOption) {
|
|
56
|
-
localStorage.setItem("linkapp-preview-groupLayoutOption", selectedGroupLayoutOption);
|
|
57
|
-
} else {
|
|
58
|
-
localStorage.removeItem("linkapp-preview-groupLayoutOption");
|
|
59
|
-
}
|
|
60
|
-
}, [selectedGroupLayoutOption]);
|
|
61
|
-
|
|
62
|
-
// Handle iframe resize events
|
|
63
|
-
const handleResized = useCallback(
|
|
64
|
-
(ev: { iframe: IFrameComponent; height: number; width: number; type: string }): void => {
|
|
65
|
-
// IframeResizer automatically handles height adjustments
|
|
66
|
-
// This callback is available for debugging if needed
|
|
67
|
-
},
|
|
68
|
-
[]
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
// Handle postMessage from featured iframe for EXPAND_LINK_APP
|
|
72
|
-
const handleMessage = useCallback((event: MessageEvent) => {
|
|
73
|
-
if (
|
|
74
|
-
event.data &&
|
|
75
|
-
typeof event.data === 'object' &&
|
|
76
|
-
event.data.source === 'linkapp' &&
|
|
77
|
-
event.data.type === 'EXPAND_LINK_APP'
|
|
78
|
-
) {
|
|
79
|
-
setIsPopupOpen(true);
|
|
80
|
-
}
|
|
81
|
-
}, []);
|
|
82
|
-
|
|
83
|
-
// Add message listener
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
window.addEventListener('message', handleMessage);
|
|
86
|
-
return () => window.removeEventListener('message', handleMessage);
|
|
87
|
-
}, [handleMessage]);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const renderedCssVariables = useMemo(() => {
|
|
91
|
-
const themeVariables = THEME_PRESETS[selectedTheme] || THEME_PRESETS.default
|
|
92
|
-
return renderCssVariables(themeVariables.variables);
|
|
93
|
-
}, [selectedTheme])
|
|
94
|
-
|
|
95
|
-
return (
|
|
96
|
-
<>
|
|
97
|
-
<style>{`:root {
|
|
98
|
-
${renderedCssVariables}
|
|
99
|
-
}`}</style>
|
|
100
|
-
|
|
101
|
-
<div
|
|
102
|
-
className={cn("min-h-screen", {
|
|
103
|
-
"bg-black/50": selectedTab === "classic",
|
|
104
|
-
"bg-linktree-frame": selectedTab === "featured",
|
|
105
|
-
})}
|
|
106
|
-
id="preview"
|
|
107
|
-
>
|
|
108
|
-
<Tabs
|
|
109
|
-
value={selectedTab}
|
|
110
|
-
onValueChange={(value) =>
|
|
111
|
-
setSelectedTab(value as "sheet" | "featured" | "settings")
|
|
112
|
-
}
|
|
113
|
-
>
|
|
114
|
-
<Portal>
|
|
115
|
-
<div
|
|
116
|
-
className="fixed top-0 left-0 right-0 p-4 flex justify-center gap-4 bg-background border-b"
|
|
117
|
-
style={{ zIndex: 1000000 }}
|
|
118
|
-
>
|
|
119
|
-
<TabsList>
|
|
120
|
-
<TabsTrigger value="sheet">Sheet</TabsTrigger>
|
|
121
|
-
<TabsTrigger value="featured">Featured</TabsTrigger>
|
|
122
|
-
<TabsTrigger value="settings">Settings</TabsTrigger>
|
|
123
|
-
</TabsList>
|
|
124
|
-
|
|
125
|
-
{/* Theme Switcher */}
|
|
126
|
-
<div className="flex items-center gap-2">
|
|
127
|
-
<label htmlFor="theme-select" className="text-sm font-medium">
|
|
128
|
-
Theme:
|
|
129
|
-
</label>
|
|
130
|
-
<select
|
|
131
|
-
id="theme-select"
|
|
132
|
-
value={selectedTheme}
|
|
133
|
-
onChange={(e) =>
|
|
134
|
-
setSelectedTheme(e.target.value as keyof typeof THEME_PRESETS)
|
|
135
|
-
}
|
|
136
|
-
className="h-9 px-3 py-1 text-sm border border-input bg-background rounded-md focus:outline-none focus:ring-2 focus:ring-ring"
|
|
137
|
-
>
|
|
138
|
-
{Object.entries(THEME_PRESETS).map(([key, theme]) => (
|
|
139
|
-
<option key={key} value={key}>
|
|
140
|
-
{theme.name}
|
|
141
|
-
</option>
|
|
142
|
-
))}
|
|
143
|
-
</select>
|
|
144
|
-
</div>
|
|
145
|
-
|
|
146
|
-
{/* Group Layout Option Switcher - Only show for Featured tab */}
|
|
147
|
-
{selectedTab === "featured" && (
|
|
148
|
-
<div className="flex items-center gap-2">
|
|
149
|
-
<label htmlFor="groupLayoutOption-select" className="text-sm font-medium">
|
|
150
|
-
Layout:
|
|
151
|
-
</label>
|
|
152
|
-
<select
|
|
153
|
-
id="groupLayoutOption-select"
|
|
154
|
-
value={selectedGroupLayoutOption || "default"}
|
|
155
|
-
onChange={(e) =>
|
|
156
|
-
setSelectedGroupLayoutOption(e.target.value === "default" ? undefined : e.target.value)
|
|
157
|
-
}
|
|
158
|
-
className="h-9 px-3 py-1 text-sm border border-input bg-background rounded-md focus:outline-none focus:ring-2 focus:ring-ring"
|
|
159
|
-
>
|
|
160
|
-
<option value="default">Default</option>
|
|
161
|
-
<option value="carousel">Carousel</option>
|
|
162
|
-
</select>
|
|
163
|
-
</div>
|
|
164
|
-
)}
|
|
165
|
-
</div>
|
|
166
|
-
</Portal>
|
|
167
|
-
|
|
168
|
-
{/* Main Content with Padding for Fixed Tabs */}
|
|
169
|
-
<div className="pt-20">
|
|
170
|
-
<TabsContent value="sheet" className="m-0">
|
|
171
|
-
{/* Sheet Modal - Always Open */}
|
|
172
|
-
<Dialog open={true} modal={false}>
|
|
173
|
-
<DialogContent
|
|
174
|
-
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
175
|
-
showCloseButton={false}
|
|
176
|
-
>
|
|
177
|
-
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
178
|
-
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
179
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
180
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
|
|
181
|
-
</button>
|
|
182
|
-
|
|
183
|
-
<DialogTitle className="self-center truncate py-3 text-center">
|
|
184
|
-
Sheet
|
|
185
|
-
</DialogTitle>
|
|
186
|
-
|
|
187
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
188
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
|
|
189
|
-
</button>
|
|
190
|
-
</div>
|
|
191
|
-
</DialogHeader>
|
|
192
|
-
|
|
193
|
-
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
194
|
-
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
195
|
-
<IframeResizer
|
|
196
|
-
key={`sheet-${selectedTheme}`}
|
|
197
|
-
id={sheetIframeId}
|
|
198
|
-
src={`/sheet?theme=${selectedTheme}`}
|
|
199
|
-
style={{ height: '0px', width: '1px', minWidth: '100%', border: 0 }}
|
|
200
|
-
checkOrigin={false}
|
|
201
|
-
onResized={handleResized}
|
|
202
|
-
heightCalculationMethod="max"
|
|
203
|
-
/>
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
</DialogContent>
|
|
207
|
-
</Dialog>
|
|
208
|
-
</TabsContent>
|
|
209
|
-
|
|
210
|
-
<TabsContent value="featured" className="m-0 flex justify-center p-8">
|
|
211
|
-
{/* Featured Iframe - Max Width 524px */}
|
|
212
|
-
<div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-linktree-profile-bg">
|
|
213
|
-
|
|
214
|
-
<div className="w-full max-w-[524px]">
|
|
215
|
-
<div className="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">
|
|
216
|
-
<IframeResizer
|
|
217
|
-
key={`featured-${selectedTheme}-${selectedGroupLayoutOption || 'default'}`}
|
|
218
|
-
id={featuredIframeId}
|
|
219
|
-
src={`/featured?theme=${selectedTheme}${selectedGroupLayoutOption ? `&groupLayoutOption=${selectedGroupLayoutOption}` : ''}`}
|
|
220
|
-
style={{ height: '0px', width: '1px', minWidth: '100%', border: 0 }}
|
|
221
|
-
checkOrigin={false}
|
|
222
|
-
onResized={handleResized}
|
|
223
|
-
heightCalculationMethod="max"
|
|
224
|
-
/>
|
|
225
|
-
</div>
|
|
226
|
-
</div>
|
|
227
|
-
</div>
|
|
228
|
-
</TabsContent>
|
|
229
|
-
|
|
230
|
-
<TabsContent value="settings" className="m-0">
|
|
231
|
-
<SettingsPreview settings={__SETTINGS_CONFIG__} />
|
|
232
|
-
</TabsContent>
|
|
233
|
-
</div>
|
|
234
|
-
</Tabs>
|
|
235
|
-
|
|
236
|
-
{/* Popup Dialog for EXPAND_LINK_APP message */}
|
|
237
|
-
<Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
|
|
238
|
-
<DialogContent
|
|
239
|
-
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
240
|
-
showCloseButton={false}
|
|
241
|
-
>
|
|
242
|
-
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
243
|
-
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
244
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
245
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
|
|
246
|
-
</button>
|
|
247
|
-
|
|
248
|
-
<DialogTitle className="self-center truncate py-3 text-center">
|
|
249
|
-
Sheet
|
|
250
|
-
</DialogTitle>
|
|
251
|
-
|
|
252
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
253
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
|
|
254
|
-
</button>
|
|
255
|
-
</div>
|
|
256
|
-
</DialogHeader>
|
|
257
|
-
|
|
258
|
-
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
259
|
-
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
260
|
-
<IframeResizer
|
|
261
|
-
key={`popup-${selectedTheme}`}
|
|
262
|
-
id={popupIframeId}
|
|
263
|
-
src={`/sheet?theme=${selectedTheme}`}
|
|
264
|
-
style={{ height: '0px', width: '1px', minWidth: '100%', border: 0 }}
|
|
265
|
-
checkOrigin={false}
|
|
266
|
-
onResized={handleResized}
|
|
267
|
-
heightCalculationMethod="max"
|
|
268
|
-
/>
|
|
269
|
-
</div>
|
|
270
|
-
</div>
|
|
271
|
-
</DialogContent>
|
|
272
|
-
</Dialog>
|
|
273
|
-
</div>
|
|
274
|
-
</>
|
|
275
|
-
);
|
|
276
|
-
}
|
|
File without changes
|