@parhelia/page-wizard 0.1.11640 → 0.1.11652

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/dist/PageWizard.d.ts +78 -0
  2. package/dist/dist/PageWizard.js +57 -0
  3. package/dist/dist/PageWizard.js.map +1 -0
  4. package/dist/dist/SplashScreen.d.ts +1 -0
  5. package/dist/dist/SplashScreen.js +110 -0
  6. package/dist/dist/SplashScreen.js.map +1 -0
  7. package/dist/dist/WizardBoxConnector.d.ts +4 -0
  8. package/dist/dist/WizardBoxConnector.js +6 -0
  9. package/dist/dist/WizardBoxConnector.js.map +1 -0
  10. package/dist/dist/WizardSteps.d.ts +8 -0
  11. package/dist/dist/WizardSteps.js +174 -0
  12. package/dist/dist/WizardSteps.js.map +1 -0
  13. package/dist/dist/config.d.ts +2 -0
  14. package/dist/dist/config.js +86 -0
  15. package/dist/dist/config.js.map +1 -0
  16. package/dist/dist/index.d.ts +2 -0
  17. package/dist/dist/index.js +2 -0
  18. package/dist/dist/index.js.map +1 -0
  19. package/dist/dist/service.d.ts +15 -0
  20. package/dist/dist/service.js +29 -0
  21. package/dist/dist/service.js.map +1 -0
  22. package/dist/dist/startPageWizardCommand.d.ts +13 -0
  23. package/dist/dist/startPageWizardCommand.js +31 -0
  24. package/dist/dist/startPageWizardCommand.js.map +1 -0
  25. package/dist/dist/steps/BuildPageStep.d.ts +2 -0
  26. package/dist/dist/steps/BuildPageStep.js +138 -0
  27. package/dist/dist/steps/BuildPageStep.js.map +1 -0
  28. package/dist/dist/steps/CollectStep.d.ts +2 -0
  29. package/dist/dist/steps/CollectStep.js +115 -0
  30. package/dist/dist/steps/CollectStep.js.map +1 -0
  31. package/dist/dist/steps/ComponentTypesSelector.d.ts +13 -0
  32. package/dist/dist/steps/ComponentTypesSelector.js +155 -0
  33. package/dist/dist/steps/ComponentTypesSelector.js.map +1 -0
  34. package/dist/dist/steps/Components.d.ts +9 -0
  35. package/dist/dist/steps/Components.js +89 -0
  36. package/dist/dist/steps/Components.js.map +1 -0
  37. package/dist/dist/steps/ContentStep.d.ts +2 -0
  38. package/dist/dist/steps/ContentStep.js +808 -0
  39. package/dist/dist/steps/ContentStep.js.map +1 -0
  40. package/dist/dist/steps/EditButton.d.ts +8 -0
  41. package/dist/dist/steps/EditButton.js +5 -0
  42. package/dist/dist/steps/EditButton.js.map +1 -0
  43. package/dist/dist/steps/FieldEditor.d.ts +5 -0
  44. package/dist/dist/steps/FieldEditor.js +27 -0
  45. package/dist/dist/steps/FieldEditor.js.map +1 -0
  46. package/dist/dist/steps/FindItemsStep.d.ts +2 -0
  47. package/dist/dist/steps/FindItemsStep.js +294 -0
  48. package/dist/dist/steps/FindItemsStep.js.map +1 -0
  49. package/dist/dist/steps/Generate.d.ts +6 -0
  50. package/dist/dist/steps/Generate.js +31 -0
  51. package/dist/dist/steps/Generate.js.map +1 -0
  52. package/dist/dist/steps/ImagesStep.d.ts +2 -0
  53. package/dist/dist/steps/ImagesStep.js +178 -0
  54. package/dist/dist/steps/ImagesStep.js.map +1 -0
  55. package/dist/dist/steps/LayoutStep.d.ts +2 -0
  56. package/dist/dist/steps/LayoutStep.js +128 -0
  57. package/dist/dist/steps/LayoutStep.js.map +1 -0
  58. package/dist/dist/steps/MetaDataStep.d.ts +2 -0
  59. package/dist/dist/steps/MetaDataStep.js +112 -0
  60. package/dist/dist/steps/MetaDataStep.js.map +1 -0
  61. package/dist/dist/steps/SchottSelectImagesStep.d.ts +2 -0
  62. package/dist/dist/steps/SchottSelectImagesStep.js +55 -0
  63. package/dist/dist/steps/SchottSelectImagesStep.js.map +1 -0
  64. package/dist/dist/steps/SelectStep.d.ts +2 -0
  65. package/dist/dist/steps/SelectStep.js +151 -0
  66. package/dist/dist/steps/SelectStep.js.map +1 -0
  67. package/dist/dist/steps/StructureStep.d.ts +2 -0
  68. package/dist/dist/steps/StructureStep.js +205 -0
  69. package/dist/dist/steps/StructureStep.js.map +1 -0
  70. package/dist/dist/steps/TranslateStep.d.ts +2 -0
  71. package/dist/dist/steps/TranslateStep.js +613 -0
  72. package/dist/dist/steps/TranslateStep.js.map +1 -0
  73. package/dist/dist/steps/schema.d.ts +13 -0
  74. package/dist/dist/steps/schema.js +139 -0
  75. package/dist/dist/steps/schema.js.map +1 -0
  76. package/dist/dist/steps/usePageCreator.d.ts +7 -0
  77. package/dist/dist/steps/usePageCreator.js +285 -0
  78. package/dist/dist/steps/usePageCreator.js.map +1 -0
  79. package/dist/dist/types.d.ts +27 -0
  80. package/dist/dist/types.js +2 -0
  81. package/dist/dist/types.js.map +1 -0
  82. package/dist/dist/usePageWizard.d.ts +22 -0
  83. package/dist/dist/usePageWizard.js +69 -0
  84. package/dist/dist/usePageWizard.js.map +1 -0
  85. package/dist/dist/utils/dataAccessor.d.ts +57 -0
  86. package/dist/dist/utils/dataAccessor.js +323 -0
  87. package/dist/dist/utils/dataAccessor.js.map +1 -0
  88. package/package.json +1 -1
@@ -0,0 +1,29 @@
1
+ import { post } from "@parhelia/core";
2
+ export async function getWizards(parentItem) {
3
+ const result = await post("/parhelia/page-wizard/wizards", parentItem);
4
+ return result.data;
5
+ }
6
+ export async function getWizard(wizardId, parentItem) {
7
+ const result = await post("/parhelia/page-wizard/getWizard", {
8
+ wizardId,
9
+ parentItem,
10
+ });
11
+ return result.data;
12
+ }
13
+ export function createWizardAiContext({ editContext, }) {
14
+ const aiPromptUrl = "/parhelia/page-wizard/prompt";
15
+ return {
16
+ // configuration.services.editorService.baseUrl +
17
+ endpoint: aiPromptUrl,
18
+ promptData: {
19
+ itemid: editContext.currentItemDescriptor?.id,
20
+ language: editContext.currentItemDescriptor?.language,
21
+ version: editContext.currentItemDescriptor?.version,
22
+ },
23
+ };
24
+ }
25
+ export async function wipeComponents(pageItem) {
26
+ const result = await post("/parhelia/page-wizard/wipePage", pageItem);
27
+ return result;
28
+ }
29
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAwC,MAAM,gBAAgB,CAAC;AAI5E,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,IAAqB,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,UAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iCAAiC,EAAE;QAC3D,QAAQ;QACR,UAAU;KACX,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAc,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,WAAW,GAGZ;IACC,MAAM,WAAW,GAAG,8BAA8B,CAAC;IAEnD,OAAO;QACL,iDAAiD;QACjD,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE;YACV,MAAM,EAAE,WAAW,CAAC,qBAAqB,EAAE,EAAE;YAC7C,QAAQ,EAAE,WAAW,CAAC,qBAAqB,EAAE,QAAQ;YACrD,OAAO,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO;SACpD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAwB;IAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { CommandContext, ItemDescriptor } from "@parhelia/core";
2
+ import { Wizard } from "./PageWizard";
3
+ export declare const startPageWizardCommand: {
4
+ id: string;
5
+ label: string;
6
+ icon: string;
7
+ execute: (context: CommandContext<{
8
+ wizard?: Wizard;
9
+ wizardId?: string;
10
+ item: ItemDescriptor;
11
+ }>) => Promise<void>;
12
+ disabled: () => boolean;
13
+ };
@@ -0,0 +1,31 @@
1
+ export const startPageWizardCommand = {
2
+ id: "startPageWizard",
3
+ label: "Start Wizard",
4
+ icon: "pi pi-magic",
5
+ execute: async (context) => {
6
+ console.log("startPageWizardCommand");
7
+ if (!context.data?.item)
8
+ return;
9
+ await context.editContext.loadItem(context.data.item);
10
+ // Prefer fast navigation: set wizard id immediately and let the view load details
11
+ const wizardId = context.data?.wizard?.id || context.data?.wizardId;
12
+ if (wizardId) {
13
+ context.editContext.setCurrentWizardId(wizardId);
14
+ context.editContext.switchView("page-wizard");
15
+ return;
16
+ }
17
+ // Backward compatibility: if neither provided, attempt to fetch via service (best effort)
18
+ try {
19
+ if (context.data?.wizard) {
20
+ context.editContext.setCurrentWizardId(context.data.wizard.id);
21
+ context.editContext.switchView("page-wizard");
22
+ return;
23
+ }
24
+ }
25
+ catch { }
26
+ },
27
+ disabled: () => {
28
+ return false;
29
+ },
30
+ };
31
+ //# sourceMappingURL=startPageWizardCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startPageWizardCommand.js","sourceRoot":"","sources":["../src/startPageWizardCommand.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,KAAK,EACZ,OAAqF,EACrF,EAAE;QACF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YAAE,OAAO;QAEhC,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,kFAAkF;QAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,0FAA0F;QAC1F,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE;QACb,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { StepComponentProps } from "../types";
2
+ export declare function BuildPageStep({ data, setData, parentItem, wizard, setStepCompleted, }: StepComponentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,138 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Splitter, PageViewer, getChildren, ActionButton, useEditContext } from "@parhelia/core";
3
+ import { useEffect, useState } from "react";
4
+ import { useDebouncedCallback } from "use-debounce";
5
+ import Generate from "./Generate";
6
+ import { usePageCreator } from "./usePageCreator";
7
+ export function BuildPageStep({ data, setData, parentItem, wizard, setStepCompleted, }) {
8
+ const editContext = useEditContext();
9
+ const [createdPageDescriptor, setCreatedPageDescriptor] = useState();
10
+ const [pageLoaded, setPageLoaded] = useState(false);
11
+ const [fullParentItem, setFullParentItem] = useState();
12
+ const [isBuilding, setIsBuilding] = useState(false);
13
+ const [validationMessage, setValidationMessage] = useState();
14
+ useEffect(() => {
15
+ if (createdPageDescriptor &&
16
+ createdPageDescriptor.id === editContext?.page?.item?.descriptor.id)
17
+ setPageLoaded(true);
18
+ }, [editContext?.page]);
19
+ useEffect(() => {
20
+ const loadParentItem = async () => {
21
+ if (!parentItem)
22
+ return;
23
+ const item = await editContext?.itemsRepository.getItem(parentItem);
24
+ setFullParentItem(item);
25
+ };
26
+ loadParentItem();
27
+ }, [parentItem]);
28
+ useEffect(() => {
29
+ const buildComponents = async () => {
30
+ try {
31
+ console.log("Building components", createdPageDescriptor, editContext?.page);
32
+ // Recursively create components from page model
33
+ if (pageModel.components && pageModel.components.length > 0) {
34
+ await pageCreator.createComponentsRecursively(pageModel.components, "root");
35
+ }
36
+ editContext?.requestRefresh();
37
+ console.log("Components built", createdPageDescriptor, editContext?.page);
38
+ }
39
+ finally {
40
+ setIsBuilding(false);
41
+ }
42
+ };
43
+ if (pageLoaded) {
44
+ buildComponents();
45
+ }
46
+ }, [pageLoaded]);
47
+ // Initialize pageModel if it doesn't exist
48
+ const pageModel = data.pageModel || {
49
+ components: [],
50
+ name: "",
51
+ metaDescription: "",
52
+ };
53
+ // Handle input changes
54
+ const handleInputChange = (field, value) => {
55
+ const updatedPageModel = {
56
+ ...pageModel,
57
+ [field]: value,
58
+ };
59
+ setData({
60
+ ...data,
61
+ pageModel: updatedPageModel,
62
+ });
63
+ };
64
+ const checkName = async () => {
65
+ if (!parentItem)
66
+ return;
67
+ let valid = !!wizard.templateId && pageModel.name.trim().length >= 3;
68
+ if (valid) {
69
+ const children = await getChildren(parentItem.id, editContext?.sessionId ?? "", [], false, editContext?.contentEditorItem?.language || "en");
70
+ if (children.find((x) => x.name.toLocaleLowerCase() ===
71
+ pageModel.name.trim().toLocaleLowerCase())) {
72
+ valid = false;
73
+ setValidationMessage("A page with this name already exists.");
74
+ }
75
+ }
76
+ else {
77
+ if (pageModel.name.trim().length > 0 && pageModel.name.trim().length < 3)
78
+ setValidationMessage("Name is too short.");
79
+ else
80
+ setValidationMessage(undefined);
81
+ }
82
+ if (valid)
83
+ setValidationMessage(undefined);
84
+ return valid;
85
+ };
86
+ const checkNameValidDebounced = useDebouncedCallback(async () => checkName(), 500);
87
+ useEffect(() => {
88
+ checkNameValidDebounced();
89
+ }, [pageModel.name]);
90
+ const createPage = () => {
91
+ setTimeout(async () => {
92
+ if (!editContext || !parentItem)
93
+ return;
94
+ try {
95
+ if (!(await checkName()))
96
+ return;
97
+ setIsBuilding(true);
98
+ const result = await editContext.operations.createItem({
99
+ ...parentItem,
100
+ language: data.language || parentItem.language || "en",
101
+ }, wizard.templateId, pageModel.name);
102
+ if (!result)
103
+ return;
104
+ // Ensure the result has the correct language
105
+ const resultWithLanguage = {
106
+ ...result,
107
+ language: data.language || parentItem.language || "en",
108
+ version: 0,
109
+ };
110
+ editContext?.loadItem(resultWithLanguage, { addToBrowseHistory: true });
111
+ setCreatedPageDescriptor(resultWithLanguage);
112
+ console.log("Page created", result, "Page model", pageModel);
113
+ setStepCompleted(true);
114
+ }
115
+ catch (error) {
116
+ console.error("Error creating page", error);
117
+ setIsBuilding(false);
118
+ }
119
+ }, 1);
120
+ };
121
+ const pageCreator = usePageCreator(createdPageDescriptor, wizard, (pageModel) => setData({ ...data, pageModel }));
122
+ const settingsPanel = {
123
+ name: "settings",
124
+ defaultSize: 450,
125
+ collapsible: false,
126
+ content: (_jsxs("div", { className: "pr-6", children: [_jsxs("div", { className: "mb-4", children: [_jsx("div", { className: "mb-1 text-sm font-medium", children: "Target Parent Item" }), _jsx("div", { className: "mb-4 break-after-all text-xs", children: fullParentItem?.path })] }), _jsxs("div", { className: "mb-4", children: [_jsx("label", { htmlFor: "pageName", className: "mb-1 block text-sm font-medium", children: "Page Name" }), _jsx("input", { id: "pageName", type: "text", className: "w-full rounded border p-2 text-sm", value: pageModel.name, onChange: (e) => handleInputChange("name", e.target.value), placeholder: "Enter page name" }), validationMessage && (_jsx("div", { className: "mt-2 text-sm text-red-500", children: validationMessage }))] }), _jsxs("div", { className: "mb-4", children: [_jsx("label", { htmlFor: "metaDescription", className: "mb-1 block text-sm font-medium", children: "Meta Description" }), _jsx("textarea", { id: "metaDescription", className: "min-h-[100px] w-full rounded border p-2 text-sm", value: pageModel.metaDescription, onChange: (e) => handleInputChange("metaDescription", e.target.value), placeholder: "Enter meta description" })] }), _jsx(ActionButton, { disabled: isBuilding || !!validationMessage, className: "w-full flex-1", onClick: () => {
127
+ createPage();
128
+ }, isLoading: isBuilding, loadingText: "Working", children: "Create Page" })] })),
129
+ };
130
+ const contentPanel = {
131
+ name: "content",
132
+ defaultSize: "auto",
133
+ collapsible: false,
134
+ content: (_jsxs(_Fragment, { children: [_jsx("div", { className: pageLoaded ? "h-full" : "h-0", children: _jsx(PageViewer, { name: "single", compareView: false, showFormEditor: false, followEditsDefault: true, pageViewContext: editContext.pageView }) }), isBuilding && !pageLoaded && (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsx(Generate, { title: "Building page..." }) }))] })),
135
+ };
136
+ return _jsx(Splitter, { panels: [settingsPanel, contentPanel] });
137
+ }
138
+ //# sourceMappingURL=BuildPageStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildPageStep.js","sourceRoot":"","sources":["../../src/steps/BuildPageStep.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StepComponentProps } from "../types";
2
+ export declare function CollectStep({ step, data, setData, setStepCompleted, }: StepComponentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,115 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Input } from "@parhelia/core";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { ActionButton, UploadIcon, DocumentIcon, Spinner, Card, Button, Textarea } from "@parhelia/core";
5
+ import { LinkIcon } from "lucide-react";
6
+ import { evaluateDataExpression, setDataProperty } from "../utils/dataAccessor";
7
+ export function CollectStep({ step, data, setData, setStepCompleted, }) {
8
+ const [isUploading, setIsUploading] = useState(false);
9
+ const [isScraping, setIsScraping] = useState(false);
10
+ const [error, setError] = useState(null);
11
+ const [scrapeError, setScrapeError] = useState(null);
12
+ const [scrapeUrl, setScrapeUrl] = useState(null);
13
+ const fileInputRef = useRef(null);
14
+ // Get the property name from the step configuration
15
+ const propertyName = step?.fields.propertyName || "htmlContent";
16
+ // Extract configuration from step
17
+ const enableUpload = step?.fields.enableUpload === "1";
18
+ const enableScrape = step?.fields.enableScrape === "1";
19
+ const enableText = step?.fields.enableText === "1";
20
+ const uploadTitle = step?.fields.uploadTitle || "Upload a file (optional)";
21
+ const uploadDescription = step?.fields.uploadDescription || "Upload a file to the page";
22
+ const scrapeTitle = step?.fields.scrapeTitle || "Scrape page from URL (optional)";
23
+ const scrapeDescription = step?.fields.scrapeDescription ||
24
+ "Only scrape websites you have permission to access. You are responsible for complying with the website's terms of service and all applicable laws.";
25
+ const textTitle = step?.fields.textTitle || "Text";
26
+ const textDescription = step?.fields.textDescription ||
27
+ "Provide the text you want to use for the page";
28
+ const handleDrop = (e) => {
29
+ e.preventDefault();
30
+ e.stopPropagation();
31
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
32
+ uploadFile(e.dataTransfer.files[0]);
33
+ setError(null);
34
+ }
35
+ };
36
+ useEffect(() => {
37
+ const { value: currentContent } = evaluateDataExpression(propertyName, data);
38
+ if (currentContent) {
39
+ setStepCompleted(true);
40
+ }
41
+ }, [data, propertyName]);
42
+ const uploadFile = async (file) => {
43
+ if (!file) {
44
+ setError("Please select a file first");
45
+ return;
46
+ }
47
+ try {
48
+ setIsUploading(true);
49
+ setError(null);
50
+ const formData = new FormData();
51
+ formData.append("uploadedFile", file);
52
+ const response = await fetch("/parhelia/page-wizard/convertFile", {
53
+ method: "POST",
54
+ body: formData,
55
+ });
56
+ if (!response.ok) {
57
+ throw new Error(`Upload failed: ${response.status} ${response.statusText}`);
58
+ }
59
+ const htmlContent = await response.text();
60
+ setData((prev) => setDataProperty(propertyName, htmlContent, prev));
61
+ }
62
+ catch (err) {
63
+ setError(err instanceof Error ? err.message : "Unknown error occurred");
64
+ }
65
+ finally {
66
+ setIsUploading(false);
67
+ }
68
+ };
69
+ const triggerFileInput = () => {
70
+ fileInputRef.current ? (fileInputRef.current.value = "") : "";
71
+ fileInputRef.current?.click();
72
+ };
73
+ const handleScrape = async (e) => {
74
+ e.preventDefault();
75
+ try {
76
+ setScrapeError(null);
77
+ if (!scrapeUrl) {
78
+ setScrapeError("Please enter a URL first");
79
+ return;
80
+ }
81
+ setIsScraping(true);
82
+ const response = await fetch("/parhelia/page-wizard/scrape", {
83
+ method: "POST",
84
+ body: JSON.stringify({ url: scrapeUrl }),
85
+ headers: {
86
+ "Content-Type": "application/json",
87
+ },
88
+ });
89
+ if (!response.ok) {
90
+ throw new Error(`Scraping failed: ${response.status} ${response.statusText}`);
91
+ }
92
+ const htmlContent = await response.text();
93
+ setData((prev) => setDataProperty(propertyName, htmlContent, prev));
94
+ }
95
+ catch (err) {
96
+ setScrapeError(err instanceof Error ? err.message : "Unknown error occurred");
97
+ }
98
+ finally {
99
+ setIsScraping(false);
100
+ }
101
+ };
102
+ // Get current content value
103
+ const { value: currentContent } = evaluateDataExpression(propertyName, data);
104
+ return (_jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [enableUpload && (_jsxs(Card, { icon: _jsx(UploadIcon, { className: "text-theme-secondary" }), title: uploadTitle, description: uploadDescription, children: [error && _jsx("div", { className: "mt-2 text-sm text-red-500", children: error }), _jsx("div", { className: `border-theme-secondary flex flex-col items-center justify-center border border-dashed p-8 ${isUploading ? "" : "bg-white"}`, onDrop: handleDrop, onDragOver: (e) => e.preventDefault(), children: _jsxs("div", { className: "flex flex-col items-center justify-center gap-1 text-center text-sm", children: [!isUploading && (_jsxs("svg", { width: "49", height: "48", viewBox: "0 0 49 48", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("rect", { x: "0.666992", width: "48", height: "48", rx: "24", fill: "#F6EEFF" }), _jsx("path", { d: "M32.604 20.68C32.594 20.648 32.583 20.6167 32.571 20.586C32.5235 20.4775 32.4572 20.3783 32.375 20.293L26.375 14.293C26.2897 14.2108 26.1905 14.1445 26.082 14.097C26.052 14.083 26.02 14.075 25.988 14.064C25.9043 14.0356 25.8172 14.0185 25.729 14.013C25.707 14.011 25.688 14 25.667 14H18.667C17.564 14 16.667 14.897 16.667 16V32C16.667 33.103 17.564 34 18.667 34H30.667C31.77 34 32.667 33.103 32.667 32V21C32.667 20.979 32.656 20.96 32.654 20.938C32.6487 20.8502 32.6319 20.7634 32.604 20.68ZM29.253 20H26.667V17.414L29.253 20ZM18.667 32V16H24.667V21C24.667 21.2652 24.7723 21.5196 24.9599 21.7071C25.1474 21.8946 25.4018 22 25.667 22H30.667L30.669 32H18.667Z", fill: "#9650FB" })] })), isUploading && _jsx(Spinner, {}), !isUploading && (_jsxs(_Fragment, { children: [_jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: ".pdf,.doc,.docx", style: { display: "none" }, onChange: (e) => {
105
+ const file = e.target.files?.[0];
106
+ if (file) {
107
+ uploadFile(file);
108
+ }
109
+ }, onDrop: handleDrop, disabled: isUploading }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: `text-sm font-medium ${isUploading
110
+ ? "text-gray-500"
111
+ : "text-theme-secondary cursor-pointer underline"} `, onClick: triggerFileInput, children: "Click" }), "or drag & drop to upload"] })] }))] }) })] })), enableScrape && (_jsx(Card, { icon: _jsx(LinkIcon, { className: "text-theme-secondary" }), title: scrapeTitle, description: scrapeDescription, collapsible: "mobileOnly", defaultCollapsed: "mobileOnly", children: _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Input, { type: "text", className: "rounded-md border border-gray-300 px-3 py-2", onChange: (e) => setScrapeUrl(e.target.value) }), scrapeError && (_jsx("div", { className: "mt-2 text-sm text-red-500", children: scrapeError })), _jsx("div", { className: "flex gap-2", children: _jsx(ActionButton, { type: "submit", isLoading: isScraping, onClick: handleScrape, loadingText: "Scraping...", children: "Scrape" }) })] }) })), enableText && (_jsxs(Card, { icon: _jsx(DocumentIcon, { className: "text-theme-secondary" }), title: textTitle, description: textDescription, className: `${!enableUpload && !enableScrape ? "md:col-span-2" : enableUpload && enableScrape ? "md:col-span-2" : ""}`, children: [_jsx(Textarea, { className: "border-theme-secondary max-h-full w-full text-sm", value: currentContent || "", rows: 20, onChange: (e) => setData((prev) => setDataProperty(propertyName, e.target.value || "", prev)) }), step.children && step.children.length > 0 && (_jsxs("div", { children: [_jsx("div", { className: "mt-2 mb-1 text-sm font-semibold", children: "Examples:" }), _jsx("div", { className: "flex flex-wrap gap-2", children: step.children.map((child) => (_jsx(Button, { variant: "outline", onClick: () => {
112
+ setData((prev) => setDataProperty(propertyName, child.fields.text, prev));
113
+ }, children: child.fields.title }, child.id))) })] }))] }))] }));
114
+ }
115
+ //# sourceMappingURL=CollectStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectStep.js","sourceRoot":"","sources":["../../src/steps/CollectStep.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Dispatch, SetStateAction } from "react";
2
+ import { WizardStep } from "../PageWizard";
3
+ import { PageSchema, WizardData } from "../PageWizard";
4
+ export declare function ComponentTypeSelector({ selectedComponentTypes, setSelectedComponentTypes, schema, data, setData, step, availableComponentTypes, }: {
5
+ selectedComponentTypes?: string[];
6
+ setSelectedComponentTypes: Dispatch<SetStateAction<string[]>>;
7
+ schema: PageSchema | string;
8
+ data: WizardData;
9
+ setData: (data: WizardData) => void;
10
+ step: WizardStep;
11
+ availableComponentTypes?: string[];
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function getComponentTypeSelectorSummary(selectedComponentTypes?: string[], availableComponentTypes?: string[]): string;
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ // Component Type and Placeholder Selection UI
4
+ export function ComponentTypeSelector({ selectedComponentTypes, setSelectedComponentTypes, schema, data, setData, step, availableComponentTypes, }) {
5
+ const [preselectedTypes, setPreselectedTypes] = useState([]);
6
+ const [searchFilter, setSearchFilter] = useState("");
7
+ // Ensure selectedComponentTypes is always an array
8
+ useEffect(() => {
9
+ if (!selectedComponentTypes || !Array.isArray(selectedComponentTypes)) {
10
+ setSelectedComponentTypes([]);
11
+ }
12
+ }, [selectedComponentTypes]);
13
+ // Handle select all component types
14
+ const handleSelectAllComponents = () => {
15
+ if (availableComponentTypes) {
16
+ setSelectedComponentTypes(availableComponentTypes);
17
+ setData({
18
+ ...data,
19
+ selectedComponentTypes: availableComponentTypes,
20
+ });
21
+ }
22
+ };
23
+ // Handle clear all component types
24
+ const handleClearAllComponents = () => {
25
+ setSelectedComponentTypes([]);
26
+ setData({
27
+ ...data,
28
+ selectedComponentTypes: [],
29
+ });
30
+ };
31
+ // Toggle component type selection
32
+ const toggleComponentType = (type) => {
33
+ if (!setSelectedComponentTypes) {
34
+ console.error("setSelectedComponentTypes is not defined");
35
+ return;
36
+ }
37
+ try {
38
+ // Get the current selected types safely
39
+ const currentSelected = Array.isArray(selectedComponentTypes)
40
+ ? selectedComponentTypes
41
+ : [];
42
+ // Calculate the new selection
43
+ const newSelected = currentSelected.includes(type)
44
+ ? currentSelected.filter((t) => t !== type)
45
+ : [...currentSelected, type];
46
+ // Update the state
47
+ setSelectedComponentTypes(newSelected);
48
+ // Save selected types to wizard data
49
+ setData({
50
+ ...data,
51
+ selectedComponentTypes: newSelected,
52
+ });
53
+ }
54
+ catch (error) {
55
+ console.error("Error in toggleComponentType:", error);
56
+ }
57
+ };
58
+ // Filter available components by search term
59
+ const filteredComponentTypes = availableComponentTypes?.filter((type) => type.toLowerCase().includes(searchFilter.toLowerCase())) || [];
60
+ // Helper function to extract placeholders from the schema
61
+ const extractPlaceholders = (items) => {
62
+ if (!items)
63
+ return [];
64
+ if (items && "placeholders" in items) {
65
+ return items.placeholders.map((placeholder) => placeholder.name);
66
+ }
67
+ if (!Array.isArray(items))
68
+ return [];
69
+ let placeholders = [];
70
+ for (const item of items) {
71
+ // Add the current placeholder name if it exists
72
+ if ("name" in item && typeof item.name === "string") {
73
+ placeholders.push(item.name);
74
+ }
75
+ // Handle SchemaComponent objects
76
+ if ("placeholders" in item && Array.isArray(item.placeholders)) {
77
+ // Extract names from each placeholder
78
+ item.placeholders.forEach((placeholder) => {
79
+ placeholders.push(placeholder.name);
80
+ // Recursively process components in this placeholder
81
+ if (placeholder.components && Array.isArray(placeholder.components)) {
82
+ placeholders = [
83
+ ...placeholders,
84
+ ...extractPlaceholders(placeholder.components),
85
+ ];
86
+ }
87
+ });
88
+ }
89
+ // Handle SchemaPlaceholder objects
90
+ if ("components" in item && Array.isArray(item.components)) {
91
+ placeholders = [
92
+ ...placeholders,
93
+ ...extractPlaceholders(item.components),
94
+ ];
95
+ }
96
+ }
97
+ return placeholders;
98
+ };
99
+ // Initialize preselected types from step configuration
100
+ useEffect(() => {
101
+ if (availableComponentTypes && step.fields["preselectedComponents"]) {
102
+ // Parse preselected components from step if available
103
+ const stepPreselectedTypes = step.fields["preselectedComponents"]
104
+ .split(/[,\n\r]+/)
105
+ .map((type) => type.trim())
106
+ .filter((type) => type && availableComponentTypes.includes(type));
107
+ setPreselectedTypes(stepPreselectedTypes);
108
+ }
109
+ }, [availableComponentTypes, step]);
110
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "mb-2", children: _jsx("input", { type: "text", value: searchFilter, onChange: (e) => setSearchFilter(e.target.value), placeholder: "Search components...", className: "focus:ring-theme-secondary w-full rounded border border-gray-300 px-3 py-1 text-sm focus:ring-1 focus:outline-none" }) }), _jsx("div", { className: "mb-3 flex flex-col gap-3 py-2", children: _jsxs("div", { className: "min-w-0 flex-1 rounded", children: [_jsx("div", { className: "mb-2 flex items-center justify-between", children: _jsx("h4", { className: "text-sm", children: "Component Types" }) }), _jsx("div", { className: `mb-2 max-h-96 space-y-2 overflow-y-auto ${filteredComponentTypes.length === 0
111
+ ? "flex items-center justify-center"
112
+ : ""}`, children: filteredComponentTypes.length > 0 ? (filteredComponentTypes.map((type) => {
113
+ const isSelected = selectedComponentTypes &&
114
+ Array.isArray(selectedComponentTypes) &&
115
+ selectedComponentTypes.includes(type);
116
+ const isPreselected = preselectedTypes.includes(type);
117
+ // Generate a description for each component type
118
+ const getComponentDescription = (componentType) => {
119
+ return `${componentType} component for your page layout`;
120
+ };
121
+ return (_jsx("div", { className: `relative cursor-pointer rounded-lg border p-2 transition-all ${isSelected
122
+ ? "border-theme-secondary bg-theme-secondary-50"
123
+ : "border-gray-200 bg-white hover:border-gray-300 hover:bg-gray-50"}`, onClick: () => toggleComponentType(type), children: _jsxs("div", { className: "flex items-start justify-between", children: [_jsx("div", { className: "min-w-0 flex-1", children: _jsx("div", { className: "mb-1 flex items-center gap-2", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h3", { className: "text-sm text-gray-900", children: type }), isPreselected && (_jsx("span", { className: "text-theme-secondary text-sm", title: "Recommended by template", children: "\u2605" }))] }) }) }), _jsx("div", { className: "ml-4 flex-shrink-0", children: _jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-full border-2 ${isSelected
124
+ ? "border-theme-secondary bg-theme-secondary"
125
+ : "border-gray-300 bg-white"}`, children: isSelected && (_jsx("svg", { className: "h-3 w-3 text-white", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" }) })) }) })] }) }, type));
126
+ })) : (_jsx("div", { className: "p-8 text-center text-sm text-gray-500", children: searchFilter
127
+ ? "No matching component types found"
128
+ : "No component types available" })) }), _jsxs("div", { className: "flex gap-1", children: [_jsx("button", { onClick: handleSelectAllComponents, disabled: selectedComponentTypes &&
129
+ Array.isArray(selectedComponentTypes) &&
130
+ availableComponentTypes &&
131
+ selectedComponentTypes.length === availableComponentTypes.length, className: "flex-1 rounded bg-gray-200 px-2 py-1 text-xs text-gray-700 hover:bg-gray-300 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400", children: "Select All" }), _jsx("button", { onClick: handleClearAllComponents, disabled: !selectedComponentTypes ||
132
+ !Array.isArray(selectedComponentTypes) ||
133
+ selectedComponentTypes.length === 0, className: "flex-1 rounded bg-gray-200 px-2 py-1 text-xs text-gray-700 hover:bg-gray-300 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400", children: "Clear All" })] }), preselectedTypes.length > 0 && (_jsx("div", { className: "mt-2", children: _jsx("button", { onClick: () => {
134
+ setSelectedComponentTypes(preselectedTypes);
135
+ setData({
136
+ ...data,
137
+ selectedComponentTypes: preselectedTypes,
138
+ });
139
+ }, disabled: selectedComponentTypes &&
140
+ Array.isArray(selectedComponentTypes) &&
141
+ preselectedTypes.length === selectedComponentTypes.length &&
142
+ preselectedTypes.every((type) => selectedComponentTypes.includes(type)), className: "w-full rounded bg-green-500 px-2 py-1 text-xs text-white hover:bg-green-600 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400", children: "Use Recommended Components" }) }))] }) })] }));
143
+ }
144
+ // Helper function to get summary for parent card
145
+ export function getComponentTypeSelectorSummary(selectedComponentTypes, availableComponentTypes) {
146
+ if (!selectedComponentTypes || !Array.isArray(selectedComponentTypes)) {
147
+ return "Configure what the AI will use to generate the layout";
148
+ }
149
+ if (selectedComponentTypes.length === 0) {
150
+ return "No component types selected";
151
+ }
152
+ const total = availableComponentTypes?.length || 0;
153
+ return `${selectedComponentTypes.length} of ${total} component types selected`;
154
+ }
155
+ //# sourceMappingURL=ComponentTypesSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentTypesSelector.js","sourceRoot":"","sources":["../../src/steps/ComponentTypesSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAU,MAAM,OAAO,CAAC;AAS9E,8CAA8C;AAC9C,MAAM,UAAU,qBAAqB,CAAC,EACpC,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,uBAAuB,GASxB;IACC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE7D,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtE,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7B,oCAAoC;IACpC,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACrC,IAAI,uBAAuB,EAAE,CAAC;YAC5B,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;YACnD,OAAO,CAAC;gBACN,GAAG,IAAI;gBACP,sBAAsB,EAAE,uBAAuB;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,mCAAmC;IACnC,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACpC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC;YACN,GAAG,IAAI;YACP,sBAAsB,EAAE,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,kCAAkC;IAClC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBAC3D,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,EAAE,CAAC;YAEP,8BAA8B;YAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;gBACnD,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,CAAC;YAE/B,mBAAmB;YACnB,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAEvC,qCAAqC;YACrC,OAAO,CAAC;gBACN,GAAG,IAAI;gBACP,sBAAsB,EAAE,WAAW;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,sBAAsB,GAC1B,uBAAuB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACvC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CACxD,IAAI,EAAE,CAAC;IAEV,0DAA0D;IAC1D,MAAM,mBAAmB,GAAG,CAC1B,KAAqC,EAC3B,EAAE;QACZ,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,IAAI,YAAY,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,gDAAgD;YAChD,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAED,iCAAiC;YACjC,IAAI,cAAc,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/D,sCAAsC;gBACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAA8B,EAAE,EAAE;oBAC3D,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAEpC,qDAAqD;oBACrD,IAAI,WAAW,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;wBACpE,YAAY,GAAG;4BACb,GAAG,YAAY;4BACf,GAAG,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC;yBAC/C,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,mCAAmC;YACnC,IAAI,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,YAAY,GAAG;oBACb,GAAG,YAAY;oBACf,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACxC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,uDAAuD;IACvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACpE,sDAAsD;YACtD,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC;iBAC9D,KAAK,CAAC,UAAU,CAAC;iBACjB,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAClC,MAAM,CACL,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACjE,CAAC;YAEJ,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,MAAM,YACnB,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,WAAW,EAAC,sBAAsB,EAClC,SAAS,EAAC,oHAAoH,GAC9H,GACE,EAEN,cAAK,SAAS,EAAC,+BAA+B,YAE5C,eAAK,SAAS,EAAC,wBAAwB,aACrC,cAAK,SAAS,EAAC,wCAAwC,YACrD,aAAI,SAAS,EAAC,SAAS,gCAAqB,GACxC,EAwCN,cACE,SAAS,EAAE,2CACT,sBAAsB,CAAC,MAAM,KAAK,CAAC;gCACjC,CAAC,CAAC,kCAAkC;gCACpC,CAAC,CAAC,EACN,EAAE,YAED,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gCAClC,MAAM,UAAU,GACd,sBAAsB;oCACtB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;oCACrC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gCACxC,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gCAEtD,iDAAiD;gCACjD,MAAM,uBAAuB,GAAG,CAAC,aAAqB,EAAE,EAAE;oCACxD,OAAO,GAAG,aAAa,iCAAiC,CAAC;gCAC3D,CAAC,CAAC;gCAEF,OAAO,CACL,cAEE,SAAS,EAAE,gEACT,UAAU;wCACR,CAAC,CAAC,8CAA8C;wCAChD,CAAC,CAAC,iEACN,EAAE,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAExC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gBAAgB,YAC7B,cAAK,SAAS,EAAC,8BAA8B,YAC3C,eAAK,SAAS,EAAC,yBAAyB,aACtC,aAAI,SAAS,EAAC,uBAAuB,YAAE,IAAI,GAAM,EAChD,aAAa,IAAI,CAChB,eACE,SAAS,EAAC,8BAA8B,EACxC,KAAK,EAAC,yBAAyB,uBAG1B,CACR,IACG,GACF,GAIF,EACN,cAAK,SAAS,EAAC,oBAAoB,YACjC,cACE,SAAS,EAAE,kEACT,UAAU;wDACR,CAAC,CAAC,2CAA2C;wDAC7C,CAAC,CAAC,0BACN,EAAE,YAED,UAAU,IAAI,CACb,cACE,SAAS,EAAC,oBAAoB,EAC9B,IAAI,EAAC,cAAc,EACnB,OAAO,EAAC,WAAW,YAEnB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,oHAAoH,EACtH,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,GACG,GACF,IACF,IAlDD,IAAI,CAmDL,CACP,CAAC;4BACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,uCAAuC,YACnD,YAAY;oCACX,CAAC,CAAC,mCAAmC;oCACrC,CAAC,CAAC,8BAA8B,GAC9B,CACP,GACG,EAGN,eAAK,SAAS,EAAC,YAAY,aACzB,iBACE,OAAO,EAAE,yBAAyB,EAClC,QAAQ,EACN,sBAAsB;wCACtB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;wCACrC,uBAAuB;wCACvB,sBAAsB,CAAC,MAAM,KAAK,uBAAuB,CAAC,MAAM,EAElE,SAAS,EAAC,sJAAsJ,2BAGzJ,EACT,iBACE,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EACN,CAAC,sBAAsB;wCACvB,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;wCACtC,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAErC,SAAS,EAAC,sJAAsJ,0BAGzJ,IACL,EAGL,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,cAAK,SAAS,EAAC,MAAM,YACnB,iBACE,OAAO,EAAE,GAAG,EAAE;oCACZ,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;oCAC5C,OAAO,CAAC;wCACN,GAAG,IAAI;wCACP,sBAAsB,EAAE,gBAAgB;qCACzC,CAAC,CAAC;gCACL,CAAC,EACD,QAAQ,EACN,sBAAsB;oCACtB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;oCACrC,gBAAgB,CAAC,MAAM,KAAK,sBAAsB,CAAC,MAAM;oCACzD,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9B,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACtC,EAEH,SAAS,EAAC,qJAAqJ,2CAGxJ,GACL,CACP,IACG,GACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,+BAA+B,CAC7C,sBAAiC,EACjC,uBAAkC;IAElC,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtE,OAAO,uDAAuD,CAAC;IACjE,CAAC;IAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,uBAAuB,EAAE,MAAM,IAAI,CAAC,CAAC;IACnD,OAAO,GAAG,sBAAsB,CAAC,MAAM,OAAO,KAAK,2BAA2B,CAAC;AACjF,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Thumbnail } from "@parhelia/core";
2
+ import { WizardPageComponent, WizardPageModel } from "../PageWizard";
3
+ export declare function Components({ pageModel, onFieldEdited, onComponentRemoved, thumbnails, setInternalState, }: {
4
+ pageModel?: WizardPageModel;
5
+ onFieldEdited: () => void;
6
+ onComponentRemoved: (component: WizardPageComponent) => void;
7
+ thumbnails: Thumbnail[];
8
+ setInternalState: (state: any) => void;
9
+ }): import("react/jsx-runtime").JSX.Element;