@ostack.tech/kform-scaffolder 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ostack-kform-scaffolder.js +113 -150
- package/ostack-kform-scaffolder.js.map +1 -1
- package/package.json +3 -3
- package/types/configs/UseFileBase64SerializerConfig.d.ts +2 -1
- package/types/configs/UseTableValuesSerializerConfig.d.ts +2 -1
- package/webapp/assets/index-D6Y6lPet.js +174 -0
- package/webapp/index.html +1 -1
- package/webapp/assets/index-bY4b92vQ.js +0 -173
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ostack-kform-scaffolder.js","names":["() => (selector ? selector(getSchematic()) : getSchematic())","<button\n className=\"builder-icon-button builder-action builder-load-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const file = await fileOpen({\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n });\n latestSchematicFileHandleRef.current = file.handle ?? null;\n const content = JSON.parse(await file.text());\n setSchematic(() => content);\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to load schematic: ${err?.toString()}`);\n }\n }}\n title=\"Load schematic\"\n aria-label=\"Load schematic\"\n >\n 📂\n </button>","err","<button\n className=\"builder-icon-button builder-action builder-save-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const schematic = getSchematic();\n latestSchematicFileHandleRef.current = await fileSave(\n new Blob([JSON.stringify(schematic, null, 2)]),\n {\n fileName: `${schematic.name}-schematic.json`,\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n },\n latestSchematicFileHandleRef.current,\n );\n if (supported) {\n alert(\n `Schematic saved successfully as “${latestSchematicFileHandleRef.current?.name ?? \"unknown\"}”.`,\n );\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to save schematic: ${err?.toString()}`);\n }\n }}\n title=\"Save schematic\"\n aria-label=\"Save schematic\"\n >\n 💾\n </button>","latestSchematicFileHandleRef.current","err","() => {\n const schematic = getSchematic();\n\n let resolvedScaffolders =\n typeof scaffolders === \"function\" ? scaffolders(schematic) : scaffolders;\n const resolvedScaffoldingData =\n typeof scaffoldingData === \"function\" ? scaffoldingData(schematic) : scaffoldingData;\n\n if (resolvedScaffoldingData) {\n resolvedScaffolders = resolvedScaffolders.map((scaffolder) =>\n configScaffolder(scaffolder, resolvedScaffoldingData),\n );\n }\n\n return scaffold(schematic, resolvedScaffolders, {\n schematicKinds,\n basePath,\n basePackage,\n baseDir: typeof baseDir === \"function\" ? baseDir(schematic) : baseDir,\n });\n }","<button\n className=\"builder-input builder-action builder-scaffold-zip\"\n type=\"submit\"\n onClick={async (evt) => {\n evt.preventDefault();\n try {\n const schematic = getSchematic();\n const files = scaffold();\n const zip = new JSZip();\n for (const { path, content, base64, binary, executable } of files) {\n zip.file(path, content, {\n base64,\n binary,\n unixPermissions: executable ? \"755\" : undefined,\n });\n }\n const fileHandle = await fileSave(zip.generateAsync({ platform: \"UNIX\", type: \"blob\" }), {\n fileName: `${schematic.name}.zip`,\n extensions: [\".zip\"],\n mimeTypes: [\"application/zip\"],\n description: \"Form scaffolding\",\n id: name,\n });\n if (supported) {\n alert(`Project scaffolded successfully in “${fileHandle?.name ?? \"unknown\"}”.`);\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to scaffold project: ${err?.toString()}`);\n }\n }}\n >\n Scaffold 🏗️\n </button>","err","(schematic) => (schematic.config?.[configName] ?? defaultValue) as T","(configValue: T | ((configValue: T) => T)) =>\n store.setState((schematic) => ({\n config: {\n ...schematic.config,\n [configName]:\n typeof configValue === \"function\"\n ? (configValue as any)(schematic.config?.[configName])\n : configValue,\n },\n }))","schematic","configValue","[configValue, setConfigValue]","{ disabled }: UseFileBase64SerializerConfigProps","(evt) => setConfig(evt.target.checked)","<input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />","<code>FileBase64Serializer</code>","<div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>FileBase64Serializer</code>\n </label>\n </div>","{ disabled }: UseTableValuesSerializerConfigProps","(evt) => setConfig(evt.target.checked)","<input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />","<code>TableValuesSerializer</code>","<div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>TableValuesSerializer</code>\n </label>\n </div>","(schematic) => schematic.kind","(schematic) => schematic.collapsed","schematicKinds.get(kind)?.builder","Builder ? (\n <button\n type=\"button\"\n className=\"builder-child-marker\"\n title={collapsed ? \"Expand\" : \"Collapse\"}\n onClick={() => setSchematic((schematic) => ({ collapsed: !schematic.collapsed }))}\n {...preventDrag}\n >\n {collapsed ? \"▸\" : \"▾\"}\n </button>\n ) : (\n <span className=\"builder-child-marker\">•</span>\n )","(schematic) => ({ collapsed: !schematic.collapsed })","schematic","<button\n className=\"builder-icon-button builder-child-remove\"\n type=\"button\"\n title=\"Remove\"\n onClick={removeSchematic}\n {...preventDrag}\n >\n ×\n </button>","(schematic) => schematic.kind","(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }","{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }","`calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)`","<option>{KIND_PLACEHOLDER}</option>","Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))","(kind) => !kind.internal","(kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n )","<select\n className=\"builder-input builder-schema\"\n value={kind}\n onChange={(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }}\n required\n style={{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }}\n {...preventDrag}\n >\n <option>{KIND_PLACEHOLDER}</option>\n {Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))}\n </select>","kind","(schematic) => schematic.kind","(schematic) => !!schematic.nullable","schematicKinds.get(kind)","showInput && (\n <input\n className=\"builder-input builder-nullable\"\n type=\"checkbox\"\n title=\"Nullable?\"\n checked={nullable}\n onChange={(evt) => setSchematic({ nullable: evt.target.checked })}\n {...preventDrag}\n />\n )","schematic","(schematic) => schematic.packageSuffix","(schematic) => schematic.name","parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>","(evt) => setSchematic({ packageSuffix: evt.target.value })","{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }","`${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch`","<input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />","packageSuffix ?? \"\"","<button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>","<span className=\"builder-operator\">.</span>","(evt) => setSchematic({ name: evt.target.value })","evt","{ width: `${(name || NAME_PLACEHOLDER).length}ch` }","`${(name || NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","name ?? \"\"","<div className=\"builder-package-name\">\n {parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>}\n <input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />\n <button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>\n <span className=\"builder-operator\">.</span>\n <input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n </div>","schematic","(schematic) => schematic.id","(schematic) => schematic.packageSuffix","(schematic: Schematic) => schematic.children","draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id","{ parentId: id, sortBefore: null, ignored: shouldIgnoreDrop }","{\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n }","`${id}-append`","disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE","<PackageNameInput />","fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )","length","fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )","fields.length","schematicBuilderContext.parentPackage","schematic","f","<button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>","(schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n })","<div className=\"class-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>\n </div>","(schematic) => schematic.childName","(schematic) => schematic.kind","(schematic) => schematic.nullable","(schematic) => schematic.collapsed","schematicKinds.get(kind)?.builder","[childName, kind].filter((s) => s)","(s) => s","{\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n }","[childName, kind].filter((s) => s).join(\": \")","nullable ? \"?\" : \"\"","{\n id,\n data: {\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n },\n }","{ parentId, sortBefore: id, ignored: shouldIgnoreDrop }","{\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n }","boolDataAttr(isOver && !shouldIgnoreDrop)","isOver && !shouldIgnoreDrop","<li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />","boolDataAttr(isDragging)","boolDataAttr(Builder != null)","Builder != null","<ChildMarker />","(evt) => setSchematic({ childName: evt.target.value })","{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }","`${(childName || CHILD_NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","<span className=\"builder-operator\">∶</span>","{ ...schematicBuilderContext, parentChildName: childName }","<KindSelect />","<SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>","<NullableInput />","<ChildRemove />","<div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>","Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )","<li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>","<>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>\n </>","(schematic) => schematic.id","(schematic: Schematic) => schematic.children","draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id","{ parentId: id, sortBefore: null, ignored: shouldIgnoreDrop }","{\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n }","`${id}-append`","disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE","<PackageNameInput />","fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )","length","fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )","fields.length","schematic","f","<button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>","(schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n })","<div className=\"enum-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>\n </div>","(schematic) => schematic.childName","(schematic) => schematic.kind","schematicKinds.get(kind)?.builder","[childName, kind].filter((s) => s)","(s) => s","{ type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> }","[childName, kind].filter((s) => s).join(\": \")","{\n id,\n data: { type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> },\n }","{ parentId, sortBefore: id, ignored: shouldIgnoreDrop }","{\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n }","boolDataAttr(isOver && !shouldIgnoreDrop)","isOver && !shouldIgnoreDrop","<li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />","boolDataAttr(isDragging)","boolDataAttr(Builder != null)","Builder != null","<ChildMarker />","(evt) => setSchematic({ childName: evt.target.value })","{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }","`${(childName || CHILD_NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","<ChildRemove />","<div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>","<li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>","<>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>\n </>","{ showKindSelect = true }: ListableBuilderProps","showKindSelect = true","(schematic) => schematic.id","() => getSchematic().children![0]","(toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n }))","schematic","{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }","() => {}","<ListableItemBuilder showKindSelect={showKindSelect} />","<div className=\"listable-builder builder\">\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }}\n >\n <ListableItemBuilder showKindSelect={showKindSelect} />\n </SchematicBuilderContext>\n </div>","<ListableBuilder showKindSelect={false} />","{ showKindSelect = true }: ListableItemBuilderProps","(schematic) => schematic.kind","schematicKinds.get(kind)?.builder","showKindSelect && <KindSelect />","Builder && <Builder />","<>\n {showKindSelect && <KindSelect />}\n {Builder && <Builder />}\n </>","() => {\n if (!element) {\n setMeasurement(undefined);\n return;\n }\n\n const cb = () => setMeasurement(element.getBoundingClientRect());\n cb();\n\n const observer = new ResizeObserver(([entry]) => entry && cb());\n observer.observe(element);\n window.addEventListener(\"resize\", cb);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", cb);\n setMeasurement(undefined);\n };\n }","[element, setMeasurement]","[entry]","{ children }: SchematicBuilderConfigProps","(measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--anchor-top\", `${measurement.top}px`);\n popoverEl.style.setProperty(\"--anchor-left\", `${measurement.left}px`);\n popoverEl.style.setProperty(\"--anchor-bottom\", `${measurement.bottom}px`);\n popoverEl.style.setProperty(\"--anchor-right\", `${measurement.right}px`);\n popoverEl.style.setProperty(\"--anchor-width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--anchor-height\", `${measurement.height}px`);\n }\n }","(measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--height\", `${measurement.height}px`);\n }\n }","measurement","<button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>","<>\n <button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>\n <div popover=\"\" id=\"builder-config-popover\" ref={setPopoverEl}>\n {children}\n </div>\n </>","{\n name = \"kform\",\n title = document.title,\n basePath,\n basePackage,\n baseDir,\n defaultRootClassPackage = \"org.example\",\n defaultRootClassName = \"MyForm\",\n schematicKinds = defaultSchematicKinds,\n scaffolders = DEFAULT_SCAFFOLDERS,\n scaffoldingData = DEFAULT_SCAFFOLDING_DATA,\n actions = DEFAULT_ACTIONS,\n configs = DEFAULT_CONFIGS,\n version = DEFAULT_APP_VERSION,\n}: SchematicBuilderProps","name = \"kform\"","title = document.title","defaultRootClassPackage = \"org.example\"","defaultRootClassName = \"MyForm\"","schematicKinds = defaultSchematicKinds","scaffolders = DEFAULT_SCAFFOLDERS","scaffoldingData = DEFAULT_SCAFFOLDING_DATA","actions = DEFAULT_ACTIONS","configs = DEFAULT_CONFIGS","version = DEFAULT_APP_VERSION","() =>\n createStore(\n persist(\n () =>\n createSchematic({\n kind: classSchematicKind.kind,\n packageSuffix: defaultRootClassPackage,\n name: defaultRootClassName,\n children: [],\n }),\n { name },\n ),\n )","new Map(\n schematicKinds.sort((t1, t2) => t1.kind.localeCompare(t2.kind)).map((t) => [t.kind, t]),\n )","(t1, t2) => t1.kind.localeCompare(t2.kind)","(t) => [t.kind, t]","{ activationConstraint: { distance: 10, delay: 400, tolerance: 20 } }","() => store.getState()","(toSet) => store.setState(toSet)","{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }","() => {}","(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)","(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }","evt","<h1 className=\"builder-title\">{title}</h1>","version && <div className=\"builder-version\">{version}</div>","configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>","<div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>","<header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>","<ClassBuilder />","<form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>","draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>","<DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>","<DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>","<SchematicBuilderContext\n value={{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>\n </SchematicBuilderContext>"],"sources":["../../src/Schematic.ts","../../src/SchematicBuilderContext.ts","../../src/actions/LoadSchematic.tsx","../../src/actions/SaveSchematic.tsx","../../src/scaffolding/configScaffolder.ts","../../src/util/join.ts","../../src/scaffolding/scaffold.ts","../../src/scaffolding/useScaffolder.ts","../../src/actions/ScaffoldToZip.tsx","../../src/configs/util/useConfig.ts","../../src/configs/UseFileBase64SerializerConfig.tsx","../../src/configs/UseTableValuesSerializerConfig.tsx","../../src/scaffolding/kotlin/util/defaultImports.ts","../../src/scaffolding/kotlin/KtFile.ts","../../src/scaffolding/kotlin/util/simpleKtName.ts","../../src/scaffolding/kotlin/util/annotations.ts","../../src/scaffolding/scaffolders/scaffoldModels.ts","../../../../node_modules/change-case/dist/index.js","../../src/util/boolDataAttr.ts","../../src/util/preventDrag.ts","../../src/schematicBuilders/util/ChildMarker.tsx","../../src/schematicBuilders/util/ChildRemove.tsx","../../src/schematicBuilders/util/KindSelect.tsx","../../src/schematicBuilders/util/NullableInput.tsx","../../src/schematicBuilders/util/PackageNameInput.tsx","../../src/schematicBuilders/ClassBuilder.tsx","../../src/schematicBuilders/EnumBuilder.tsx","../../src/schematicBuilders/ListableBuilder.tsx","../../src/util/code.ts","../../src/SchematicKind.ts","../../src/scaffolding/scaffolders/scaffoldSchemas.ts","../../src/scaffolding/templating/EjsTemplateFile.ts","../../src/scaffolding/templating/util/addEjsTemplateFile.ts","../../src/scaffolding/scaffolders/scaffoldSerializer.ts","../../src/scaffolding/scaffolders/scaffoldValidator.ts","../../src/util/useSafeLayoutEffect.ts","../../src/util/useMeasure.ts","../../src/SchematicBuilderConfig.tsx","../../src/SchematicBuilder.tsx","../../src/scaffolding/templating/TemplateFile.ts","../../src/scaffolding/templating/util/addTemplateFile.ts","../../src/scaffolding/typescript/TsFile.ts"],"sourcesContent":["export interface Schematic {\n id: string;\n kind: string;\n packageSuffix?: string;\n name?: string;\n nullable?: boolean;\n collapsed?: boolean;\n children?: Schematic[];\n childName?: string;\n config?: Record<string, unknown>;\n}\n\nexport function createSchematic(schematic?: Partial<Schematic>): Schematic {\n return { id: self.crypto.randomUUID(), kind: \"\", ...schematic };\n}\n\nexport function moveSchematic(\n schematic: Schematic,\n moveId: string,\n parentId: string,\n sortBefore: string | null,\n): Schematic {\n const { schematic: schematicWithoutFrom, removed: fromSchematic } = remove(schematic, moveId);\n return add(schematicWithoutFrom!, fromSchematic!, parentId, sortBefore);\n}\n\nfunction remove(\n schematic: Schematic,\n id: string,\n): { schematic: Schematic | null; removed: Schematic | null } {\n if (schematic.id === id) {\n return { schematic: null, removed: schematic };\n }\n if (!schematic.children) {\n return { schematic, removed: null };\n }\n const newChildren = [];\n let removed: Schematic | null = null;\n for (const child of schematic.children) {\n const { schematic: newChild, removed: removedChild } = remove(child, id);\n if (newChild !== null) {\n newChildren.push(newChild);\n }\n if (removedChild !== null) {\n removed = removedChild;\n }\n }\n return { schematic: { ...schematic, children: newChildren }, removed };\n}\n\nfunction add(\n schematic: Schematic,\n toAdd: Schematic,\n parentId: string,\n sortBefore: string | null,\n): Schematic {\n if (schematic.id === parentId) {\n const oldChildren = schematic.children ?? [];\n const index =\n sortBefore === null ? oldChildren.length : oldChildren.findIndex((c) => c.id === sortBefore);\n return {\n ...schematic,\n children: [...oldChildren.slice(0, index), toAdd, ...oldChildren.slice(index)],\n };\n }\n if (!schematic.children) {\n return schematic;\n }\n return {\n ...schematic,\n children: schematic.children.map((child) => add(child, toAdd, parentId, sortBefore)),\n };\n}\n","import { createContext, type ReactNode, type RefObject, useContext } from \"react\";\nimport { useStore } from \"zustand/react\";\nimport type { StoreApi } from \"zustand/vanilla\";\n\nimport type { Scaffolder } from \"./scaffolding/scaffold.ts\";\nimport type { Schematic } from \"./Schematic.ts\";\nimport type { SchematicKind } from \"./SchematicKind.ts\";\n\nexport interface DraggedSchematic {\n id: string;\n type: string;\n node: ReactNode;\n}\n\nexport interface SchematicBuilderContextValue {\n name: string;\n basePath?: string;\n basePackage?: string;\n baseDir?: string | ((schematic: Schematic) => string);\n schematicKinds: Map<string, SchematicKind>;\n scaffolders: Scaffolder<any>[] | ((schematic: Schematic) => Scaffolder<any>[]);\n scaffoldingData?: Record<string, any> | ((schematic: Schematic) => Record<string, any>);\n store: StoreApi<Schematic>;\n getSchematic: () => Schematic;\n setSchematic: (\n toSet:\n | Schematic\n | Partial<Schematic>\n | ((schematic: Schematic) => Schematic | Partial<Schematic>),\n ) => void;\n removeSchematic: () => void;\n parentPackage?: string;\n parentId?: string;\n parentChildName?: string;\n draggedSchematic: DraggedSchematic | null;\n disableDrop?: boolean;\n ignoreDrop?: boolean;\n latestSchematicFileHandleRef: RefObject<FileSystemFileHandle | null>;\n}\n\nexport const SchematicBuilderContext = createContext<SchematicBuilderContextValue | null>(null);\n\nexport function useSchematicBuilderContext(): SchematicBuilderContextValue {\n const context = useContext(SchematicBuilderContext);\n if (context === null) {\n throw new Error(\"Schematic builder not in context.\");\n }\n return context;\n}\n\nexport function useSchematic(): Schematic;\nexport function useSchematic<T>(selector: (schematic: Schematic) => T): T;\nexport function useSchematic(selector?: (schematic: Schematic) => unknown): unknown {\n const { store, getSchematic } = useSchematicBuilderContext();\n return useStore(store, () => (selector ? selector(getSchematic()) : getSchematic()));\n}\n","import { fileOpen } from \"browser-fs-access\";\n\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function LoadSchematic() {\n const { name, setSchematic, latestSchematicFileHandleRef } = useSchematicBuilderContext();\n\n return (\n <button\n className=\"builder-icon-button builder-action builder-load-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const file = await fileOpen({\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n });\n latestSchematicFileHandleRef.current = file.handle ?? null;\n const content = JSON.parse(await file.text());\n setSchematic(() => content);\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to load schematic: ${err?.toString()}`);\n }\n }}\n title=\"Load schematic\"\n aria-label=\"Load schematic\"\n >\n 📂\n </button>\n );\n}\n","import { fileSave, supported } from \"browser-fs-access\";\n\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function SaveSchematic() {\n const { name, getSchematic, latestSchematicFileHandleRef } = useSchematicBuilderContext();\n\n return (\n <button\n className=\"builder-icon-button builder-action builder-save-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const schematic = getSchematic();\n latestSchematicFileHandleRef.current = await fileSave(\n new Blob([JSON.stringify(schematic, null, 2)]),\n {\n fileName: `${schematic.name}-schematic.json`,\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n },\n latestSchematicFileHandleRef.current,\n );\n if (supported) {\n alert(\n `Schematic saved successfully as “${latestSchematicFileHandleRef.current?.name ?? \"unknown\"}”.`,\n );\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to save schematic: ${err?.toString()}`);\n }\n }}\n title=\"Save schematic\"\n aria-label=\"Save schematic\"\n >\n 💾\n </button>\n );\n}\n","import type { Schematic } from \"../Schematic.ts\";\nimport type { Scaffolder } from \"./scaffold.ts\";\nimport type { ScaffoldingData } from \"./ScaffoldingData.ts\";\n\n/** Returns a new scaffolder with its data merged with the provided data. */\nexport function configScaffolder<TScaffoldingData extends ScaffoldingData>(\n scaffolder: Scaffolder<TScaffoldingData>,\n data: Partial<TScaffoldingData>,\n): Scaffolder<TScaffoldingData> {\n return (schematic: Schematic, originalData: TScaffoldingData) =>\n scaffolder(schematic, { ...originalData, ...data });\n}\n","function join(s1: string | undefined, s2: string | undefined, separator: string): string {\n return !s1 || !s2 ? s1 || s2 || \"\" : `${s1}${s1.endsWith(separator) ? \"\" : separator}${s2}`;\n}\n\nexport function joinPaths(path1: string | undefined, path2: string | undefined): string {\n return join(path1, path2, \"/\");\n}\n\nexport function joinPackages(pkg1: string | undefined, pkg2: string | undefined): string {\n return join(pkg1, pkg2, \".\");\n}\n","import type { Schematic } from \"../Schematic.ts\";\nimport type { SchematicKind } from \"../SchematicKind.ts\";\nimport { joinPackages } from \"../util/join.ts\";\nimport type { ScaffoldingData } from \"./ScaffoldingData.ts\";\nimport type { ScaffoldingFile, ScaffoldingFileContent } from \"./ScaffoldingFile.ts\";\n\nexport interface ScaffoldOptions {\n schematicKinds: Map<string, SchematicKind>;\n basePath?: string;\n basePackage?: string;\n baseDir?: string;\n}\n\nexport type Scaffolder<TScaffoldingData extends ScaffoldingData = ScaffoldingData> = (\n schematic: Schematic,\n data: TScaffoldingData,\n) => void;\n\nexport interface ScaffoldedFile extends Omit<ScaffoldingFile, \"getContent\"> {\n path: string;\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>;\n}\n\nexport function scaffold(\n schematic: Schematic,\n scaffolders: Scaffolder<any>[],\n options: ScaffoldOptions,\n): ScaffoldedFile[] {\n const files = new Map<string, ScaffoldingFile>();\n const data: ScaffoldingData = {\n schematicKinds: options.schematicKinds,\n rootSchematic: schematic,\n files,\n currentPath: options.basePath ?? \"/\",\n currentPackage: joinPackages(options.basePackage, schematic.packageSuffix),\n currentDir: options.baseDir,\n };\n for (const scaffolder of scaffolders) {\n scaffolder(schematic, data);\n }\n return Array.from(files).map(([path, file]) => ({\n path,\n content: file.getContent(),\n base64: file.base64,\n binary: file.binary,\n executable: file.executable,\n }));\n}\n","import { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\nimport { configScaffolder } from \"./configScaffolder.ts\";\nimport { scaffold, type ScaffoldedFile } from \"./scaffold.ts\";\n\nexport function useScaffolder(): () => ScaffoldedFile[] {\n const {\n basePath,\n basePackage,\n baseDir,\n schematicKinds,\n scaffolders,\n scaffoldingData,\n getSchematic,\n } = useSchematicBuilderContext();\n return () => {\n const schematic = getSchematic();\n\n let resolvedScaffolders =\n typeof scaffolders === \"function\" ? scaffolders(schematic) : scaffolders;\n const resolvedScaffoldingData =\n typeof scaffoldingData === \"function\" ? scaffoldingData(schematic) : scaffoldingData;\n\n if (resolvedScaffoldingData) {\n resolvedScaffolders = resolvedScaffolders.map((scaffolder) =>\n configScaffolder(scaffolder, resolvedScaffoldingData),\n );\n }\n\n return scaffold(schematic, resolvedScaffolders, {\n schematicKinds,\n basePath,\n basePackage,\n baseDir: typeof baseDir === \"function\" ? baseDir(schematic) : baseDir,\n });\n };\n}\n","import { fileSave, supported } from \"browser-fs-access\";\nimport JSZip from \"jszip\";\n\nimport { useScaffolder } from \"../scaffolding/useScaffolder.ts\";\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function ScaffoldToZip() {\n const { getSchematic, name } = useSchematicBuilderContext();\n const scaffold = useScaffolder();\n\n return (\n <button\n className=\"builder-input builder-action builder-scaffold-zip\"\n type=\"submit\"\n onClick={async (evt) => {\n evt.preventDefault();\n try {\n const schematic = getSchematic();\n const files = scaffold();\n const zip = new JSZip();\n for (const { path, content, base64, binary, executable } of files) {\n zip.file(path, content, {\n base64,\n binary,\n unixPermissions: executable ? \"755\" : undefined,\n });\n }\n const fileHandle = await fileSave(zip.generateAsync({ platform: \"UNIX\", type: \"blob\" }), {\n fileName: `${schematic.name}.zip`,\n extensions: [\".zip\"],\n mimeTypes: [\"application/zip\"],\n description: \"Form scaffolding\",\n id: name,\n });\n if (supported) {\n alert(`Project scaffolded successfully in “${fileHandle?.name ?? \"unknown\"}”.`);\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to scaffold project: ${err?.toString()}`);\n }\n }}\n >\n Scaffold 🏗️\n </button>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\n\ntype UseConfigReturnType<T = unknown> = [T, (configValue: T | ((configValue: T) => T)) => void];\n\nexport function useConfig<T = unknown>(configName: string): UseConfigReturnType<T | undefined>;\nexport function useConfig<T = unknown>(configName: string, defaultValue: T): UseConfigReturnType<T>;\nexport function useConfig<T>(configName: string, defaultValue?: T): UseConfigReturnType<T> {\n const { store } = useSchematicBuilderContext();\n const configValue = useSchematic(\n (schematic) => (schematic.config?.[configName] ?? defaultValue) as T,\n );\n const setConfigValue = (configValue: T | ((configValue: T) => T)) =>\n store.setState((schematic) => ({\n config: {\n ...schematic.config,\n [configName]:\n typeof configValue === \"function\"\n ? (configValue as any)(schematic.config?.[configName])\n : configValue,\n },\n }));\n\n return [configValue, setConfigValue];\n}\n","import { useConfig } from \"./util/useConfig.ts\";\n\nexport interface UseFileBase64SerializerConfigProps {\n disabled?: boolean;\n}\n\nexport function UseFileBase64SerializerConfig({ disabled }: UseFileBase64SerializerConfigProps) {\n const [config, setConfig] = useConfig(\"useFileBase64Serializer\", false);\n return (\n <div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>FileBase64Serializer</code>\n </label>\n </div>\n );\n}\n","import { useConfig } from \"./util/useConfig.ts\";\n\nexport interface UseTableValuesSerializerConfigProps {\n disabled?: boolean;\n}\n\nexport function UseTableValuesSerializerConfig({ disabled }: UseTableValuesSerializerConfigProps) {\n const [config, setConfig] = useConfig(\"useTableValuesSerializer\", false);\n return (\n <div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>TableValuesSerializer</code>\n </label>\n </div>\n );\n}\n","const DEFAULT_IMPORTS = [\n /^kotlin\\.[^.]+$/,\n /^kotlin\\.annotation\\.[^.]+$/,\n /^kotlin\\.collections\\.[^.]+$/,\n /^kotlin\\.comparisons\\.[^.]+$/,\n /^kotlin\\.io\\.[^.]+$/,\n /^kotlin\\.ranges\\.[^.]+$/,\n /^kotlin\\.sequences\\.[^.]+$/,\n /^kotlin\\.text\\.[^.]+$/,\n];\n\nexport function isDefaultKtImport(qualifiedName: string): boolean {\n return DEFAULT_IMPORTS.some((i) => i.test(qualifiedName));\n}\n","import type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport type { ScaffoldingFile } from \"../ScaffoldingFile.ts\";\nimport { isDefaultKtImport } from \"./util/defaultImports.ts\";\n\nexport interface KtFile extends ScaffoldingFile {\n package: string;\n imports: Set<string>;\n declarations: string[];\n}\n\nexport function ktFile(data: ScaffoldingData): KtFile {\n return {\n package: data.currentPackage ?? \"\",\n imports: new Set<string>(),\n declarations: [],\n getContent: ktFileContent,\n };\n}\n\nfunction ktFileContent(this: KtFile): string {\n return (\n [\n // Package\n this.package && `package ${this.package}`,\n\n // Imports\n Array.from(this.imports)\n .filter((i) => !isDefaultKtImport(i))\n .sort()\n .map((i) => `import ${i}`)\n .join(\"\\n\"),\n\n // Declarations\n ...this.declarations,\n ]\n .filter((s) => s)\n .join(\"\\n\\n\") + \"\\n\"\n );\n}\n","export function simpleKtName(qualifiedName: string): string {\n return qualifiedName.substring(qualifiedName.lastIndexOf(\".\") + 1);\n}\n","import type { KtData } from \"../KtData.ts\";\nimport { simpleKtName } from \"./simpleKtName.ts\";\n\nconst JS_EXPORT = \"kotlin.js.JsExport\";\nconst SERIALIZABLE = \"kotlinx.serialization.Serializable\";\n\nexport function annotate(annotations: string | string[] | undefined, code: string): string {\n if (!annotations || annotations.length === 0) {\n return code;\n }\n return [...(typeof annotations === \"string\" ? [annotations] : annotations), code].join(\"\\n\");\n}\n\nexport function jsExport(code: string, data: KtData): string {\n data.currentFile.imports.add(JS_EXPORT);\n return annotate(`@${simpleKtName(JS_EXPORT)}`, code);\n}\n\nexport function serializable(code: string, data: KtData): string {\n data.currentFile.imports.add(SERIALIZABLE);\n return annotate(`@${simpleKtName(SERIALIZABLE)}`, code);\n}\n","import type { Schematic } from \"../../Schematic.ts\";\nimport { joinPackages, joinPaths } from \"../../util/join.ts\";\nimport type { KtData } from \"../kotlin/KtData.ts\";\nimport { type KtFile, ktFile } from \"../kotlin/KtFile.ts\";\nimport { jsExport, serializable } from \"../kotlin/util/annotations.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\n\nexport function scaffoldModels(schematic: Schematic, data: ScaffoldingData): void {\n const fileName = joinPaths(data.currentDir, `${schematic.name}.kt`);\n let file = data.files.get(fileName) as KtFile | undefined;\n if (!file) {\n data.files.set(fileName, (file = ktFile(data)));\n }\n scaffoldModelDeclaration(schematic, { ...data, currentFile: file });\n}\n\nfunction scaffoldModelDeclaration(schematic: Schematic, data: KtData): void {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const nDecls = data.currentFile.declarations.length;\n data.currentFile.declarations.push(\"\");\n const decl =\n schematicKind.scaffoldModel?.(schematic, data) ??\n `typealias ${schematic.name} = ${scaffoldType(schematic, data)}`;\n data.currentFile.declarations[nDecls] = schematicKind.scaffoldModel\n ? jsExport(serializable(decl, data), data)\n : decl;\n}\n\nexport function scaffoldPropertyAnnotations(\n schematic: Schematic,\n data: KtData,\n): string | string[] | undefined {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n return typeof schematicKind.propertyAnnotations === \"function\"\n ? schematicKind.propertyAnnotations(schematic, data)\n : schematicKind.propertyAnnotations;\n}\n\nexport function scaffoldType(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const schematicPackage =\n schematicKind.package ?? joinPackages(data.currentPackage, schematic.packageSuffix);\n const schematicName = schematic.name || schematicKind.name;\n\n if (schematicPackage !== data.currentPackage) {\n data.currentFile.imports.add(joinPackages(schematicPackage, schematicName));\n }\n\n if (schematicKind.package == null && schematicPackage !== data.currentPackage) {\n scaffoldModels(schematic, {\n ...data,\n currentPackage: joinPackages(data.currentPackage, schematic.packageSuffix),\n currentDir: joinPaths(data.currentDir, schematic.packageSuffix?.replace(\".\", \"/\")),\n });\n } else if (schematicKind.scaffoldModel) {\n scaffoldModelDeclaration(schematic, data);\n }\n\n return (\n (schematicKind.scaffoldType?.(schematic, data) ?? schematicName) +\n (schematic.nullable ? \"?\" : \"\")\n );\n}\n\nexport function scaffoldDefaultValue(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n return schematic.nullable\n ? \"null\"\n : typeof schematicKind.defaultValue === \"function\"\n ? schematicKind.defaultValue(schematic, data)\n : schematicKind.defaultValue;\n}\n","// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n let result = value.trim();\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n return locale === false\n ? (input) => input.toLowerCase()\n : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return locale === false\n ? (input) => input.toUpperCase()\n : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n//# sourceMappingURL=index.js.map","/** Value for a data attribute given a condition. */\nexport function boolDataAttr(condition: boolean | null | undefined): string | undefined {\n return condition ? \"\" : undefined;\n}\n","import type { KeyboardEvent, PointerEvent } from \"react\";\n\n/** Properties used to prevent an element from being dragged. */\nexport const preventDrag = {\n onKeyDown: (evt: KeyboardEvent) => evt.stopPropagation(),\n onPointerDown: (evt: PointerEvent) => evt.stopPropagation(),\n};\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function ChildMarker() {\n const { schematicKinds, setSchematic } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const collapsed = useSchematic((schematic) => schematic.collapsed);\n const Builder = schematicKinds.get(kind)?.builder;\n\n return Builder ? (\n <button\n type=\"button\"\n className=\"builder-child-marker\"\n title={collapsed ? \"Expand\" : \"Collapse\"}\n onClick={() => setSchematic((schematic) => ({ collapsed: !schematic.collapsed }))}\n {...preventDrag}\n >\n {collapsed ? \"▸\" : \"▾\"}\n </button>\n ) : (\n <span className=\"builder-child-marker\">•</span>\n );\n}\n","import { useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function ChildRemove() {\n const { removeSchematic } = useSchematicBuilderContext();\n return (\n <button\n className=\"builder-icon-button builder-child-remove\"\n type=\"button\"\n title=\"Remove\"\n onClick={removeSchematic}\n {...preventDrag}\n >\n ×\n </button>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nconst KIND_PLACEHOLDER = \"--KIND--\";\n\nexport function KindSelect() {\n const { schematicKinds, setSchematic, parentChildName } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n\n return (\n <select\n className=\"builder-input builder-schema\"\n value={kind}\n onChange={(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }}\n required\n style={{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }}\n {...preventDrag}\n >\n <option>{KIND_PLACEHOLDER}</option>\n {Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))}\n </select>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function NullableInput() {\n const { schematicKinds, setSchematic } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const nullable = useSchematic((schematic) => !!schematic.nullable);\n const schematicKind = schematicKinds.get(kind);\n const showInput = schematicKind && schematicKind.nullable === undefined;\n\n return (\n showInput && (\n <input\n className=\"builder-input builder-nullable\"\n type=\"checkbox\"\n title=\"Nullable?\"\n checked={nullable}\n onChange={(evt) => setSchematic({ nullable: evt.target.checked })}\n {...preventDrag}\n />\n )\n );\n}\n","import { useRef } from \"react\";\n\nimport { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nconst PACKAGE_PLACEHOLDER = \"package.suffix\";\nconst NAME_PLACEHOLDER = \"ClassName\";\n\nexport function PackageNameInput() {\n const { setSchematic, parentPackage } = useSchematicBuilderContext();\n const pkgRef = useRef<HTMLInputElement | null>(null);\n const packageSuffix = useSchematic((schematic) => schematic.packageSuffix);\n const name = useSchematic((schematic) => schematic.name);\n\n return (\n <div className=\"builder-package-name\">\n {parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>}\n <input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />\n <button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>\n <span className=\"builder-operator\">.</span>\n <input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n </div>\n );\n}\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\n\nimport { createSchematic, type Schematic } from \"../Schematic.ts\";\nimport {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { boolDataAttr } from \"../util/boolDataAttr.ts\";\nimport { joinPackages } from \"../util/join.ts\";\nimport { preventDrag } from \"../util/preventDrag.ts\";\nimport { ChildMarker } from \"./util/ChildMarker.tsx\";\nimport { ChildRemove } from \"./util/ChildRemove.tsx\";\nimport { KindSelect } from \"./util/KindSelect.tsx\";\nimport { NullableInput } from \"./util/NullableInput.tsx\";\nimport { PackageNameInput } from \"./util/PackageNameInput.tsx\";\n\nexport const CLASS_DND_TYPE = \"class-field\";\n\nexport function ClassBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic, draggedSchematic, disableDrop } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const packageSuffix = useSchematic((schematic) => schematic.packageSuffix);\n const fields = useSchematic((schematic: Schematic) => schematic.children) ?? [];\n const shouldIgnoreDrop = draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n });\n\n return (\n <div className=\"class-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>\n </div>\n );\n}\n\nconst CHILD_NAME_PLACEHOLDER = \"fieldName\";\n\nexport function ClassFieldBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { schematicKinds, setSchematic, draggedSchematic, parentId, disableDrop, ignoreDrop } =\n schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const childName = useSchematic((schematic) => schematic.childName);\n const kind = useSchematic((schematic) => schematic.kind);\n const nullable = useSchematic((schematic) => schematic.nullable);\n const collapsed = useSchematic((schematic) => schematic.collapsed);\n const Builder = schematicKinds.get(kind)?.builder;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDraggableRef,\n isDragging,\n } = useDraggable({\n id,\n data: {\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n },\n });\n const shouldIgnoreDrop = isDragging || ignoreDrop;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n });\n\n return (\n <>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>\n </>\n );\n}\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\n\nimport { createSchematic, type Schematic } from \"../Schematic.ts\";\nimport {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { boolDataAttr } from \"../util/boolDataAttr.ts\";\nimport { preventDrag } from \"../util/preventDrag.ts\";\nimport { ChildMarker } from \"./util/ChildMarker.tsx\";\nimport { ChildRemove } from \"./util/ChildRemove.tsx\";\nimport { PackageNameInput } from \"./util/PackageNameInput.tsx\";\n\nexport const ENUM_DND_TYPE = \"enum-entry\";\n\nexport function EnumBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic, draggedSchematic, disableDrop } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const fields = useSchematic((schematic: Schematic) => schematic.children) ?? [];\n const shouldIgnoreDrop = draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n });\n\n return (\n <div className=\"enum-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>\n </div>\n );\n}\n\nconst CHILD_NAME_PLACEHOLDER = \"ENTRY_NAME\";\n\nexport function EnumEntryBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { schematicKinds, setSchematic, draggedSchematic, parentId, disableDrop, ignoreDrop } =\n schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const childName = useSchematic((schematic) => schematic.childName);\n const kind = useSchematic((schematic) => schematic.kind);\n const Builder = schematicKinds.get(kind)?.builder;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDraggableRef,\n isDragging,\n } = useDraggable({\n id,\n data: { type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> },\n });\n const shouldIgnoreDrop = isDragging || ignoreDrop;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n });\n\n return (\n <>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>\n </>\n );\n}\n","import {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { KindSelect } from \"./util/KindSelect.tsx\";\n\nexport interface ListableBuilderProps {\n showKindSelect?: boolean;\n}\n\nexport function ListableBuilder({ showKindSelect = true }: ListableBuilderProps) {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n\n return (\n <div className=\"listable-builder builder\">\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }}\n >\n <ListableItemBuilder showKindSelect={showKindSelect} />\n </SchematicBuilderContext>\n </div>\n );\n}\n\nexport function ListableBuilderWithoutKindSelect() {\n return <ListableBuilder showKindSelect={false} />;\n}\n\nexport type ListableItemBuilderProps = ListableBuilderProps;\n\nexport function ListableItemBuilder({ showKindSelect = true }: ListableItemBuilderProps) {\n const { schematicKinds } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const Builder = schematicKinds.get(kind)?.builder;\n\n return (\n <>\n {showKindSelect && <KindSelect />}\n {Builder && <Builder />}\n </>\n );\n}\n","const LF = /\\r?\\n/;\nconst EMPTY_LINE = /^\\s*$/;\nconst SPACE = /\\s/;\nconst LF_AFFIX = /(^\\r?\\n)|(\\r?\\n$)/g;\n\n/** Tag function used to aid in the construction of code blocks. */\nexport function code(strings: TemplateStringsArray, ...values: any[]): string {\n const minIndent = Math.min(...strings.join(\"\").split(LF).filter(isNotEmpty).map(indentWidth));\n\n let result = \"\";\n for (let i = 0; i < values.length; ++i) {\n const trimmedString = trimNoninitialLines(strings[i], minIndent);\n result += trimmedString;\n result += indentNoninitialLines(\n String(values[i]),\n indentWidth(trimmedString.split(LF).at(-1)!),\n );\n }\n result += trimNoninitialLines(strings.at(-1)!, minIndent);\n return result.replace(LF_AFFIX, \"\");\n}\n\nfunction isNotEmpty(line: string): boolean {\n return !EMPTY_LINE.test(line);\n}\n\nfunction indentWidth(line: string): number {\n let width = 0;\n for (const c of line) {\n if (!SPACE.test(c)) {\n break;\n }\n ++width;\n }\n return width;\n}\n\nfunction indentNoninitialLines(str: string, indentWidth: number): string {\n const lines = str.split(LF);\n const resultLines: string[] = [lines[0]];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n resultLines.push(line && \" \".repeat(indentWidth) + line);\n }\n return resultLines.join(\"\\n\");\n}\n\nfunction trimNoninitialLines(str: string, indentWidth: number): string {\n const lines = str.split(LF);\n const resultLines: string[] = [lines[0]];\n for (let i = 1; i < lines.length; ++i) {\n resultLines.push(lines[i].slice(indentWidth));\n }\n return resultLines.join(\"\\n\");\n}\n","import { pascalCase } from \"change-case\";\nimport type { ComponentType } from \"react\";\n\nimport type { KtData } from \"./scaffolding/kotlin/KtData.ts\";\nimport { annotate } from \"./scaffolding/kotlin/util/annotations.ts\";\nimport {\n scaffoldDefaultValue,\n scaffoldPropertyAnnotations,\n scaffoldType,\n} from \"./scaffolding/scaffolders/scaffoldModels.ts\";\nimport { scaffoldSchema } from \"./scaffolding/scaffolders/scaffoldSchemas.ts\";\nimport { createSchematic, type Schematic } from \"./Schematic.ts\";\nimport { ClassBuilder } from \"./schematicBuilders/ClassBuilder.tsx\";\nimport { EnumBuilder } from \"./schematicBuilders/EnumBuilder.tsx\";\nimport { ListableBuilder } from \"./schematicBuilders/ListableBuilder.tsx\";\nimport { code } from \"./util/code.ts\";\nimport { joinPaths } from \"./util/join.ts\";\n\nexport const NULLABLE_SCHEMA = \"tech.ostack.kform.schemas.NullableSchema\";\n\n/** Information about a kind of schematic. */\nexport interface SchematicKind {\n kind: string;\n internal?: boolean;\n schema: string;\n package?: string;\n name?: string;\n defaultNullable?: boolean;\n nullable?: boolean;\n defaultValue: string | ((schematic: Schematic, data: KtData) => string);\n propertyAnnotations?:\n | string\n | string[]\n | ((schematic: Schematic, data: KtData) => string | string[] | undefined);\n builder?: ComponentType;\n initChildren?: (childName: string) => Schematic[];\n defaultPackageSuffix?: (childName: string) => string;\n defaultName?: (childName: string) => string;\n scaffoldModel?: (schematic: Schematic, data: KtData) => string;\n scaffoldType?: (schematic: Schematic, data: KtData) => string;\n scaffoldSchema?: (schematic: Schematic, data: KtData) => string;\n}\n\nexport const anySchematicKind: SchematicKind = {\n kind: \"Any\",\n package: \"kotlin\",\n name: \"Any\",\n schema: \"tech.ostack.kform.schemas.AnySchema\",\n nullable: false,\n defaultValue: \"null\",\n scaffoldType: () => \"Any?\",\n};\nexport const bigDecimalSchematicKind: SchematicKind = {\n kind: \"BigDecimal\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"BigDecimal\",\n schema: \"tech.ostack.kform.schemas.BigDecimalSchema\",\n defaultNullable: true,\n defaultValue: \"BigDecimal.ZERO\",\n};\nexport const bigIntegerSchematicKind: SchematicKind = {\n kind: \"BigInteger\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"BigInteger\",\n schema: \"tech.ostack.kform.schemas.BigIntegerSchema\",\n defaultNullable: true,\n defaultValue: \"BigInteger.ZERO\",\n};\nexport const booleanSchematicKind: SchematicKind = {\n kind: \"Boolean\",\n package: \"kotlin\",\n name: \"Boolean\",\n schema: \"tech.ostack.kform.schemas.BooleanSchema\",\n defaultValue: \"false\",\n};\nexport const byteSchematicKind: SchematicKind = {\n kind: \"Byte\",\n package: \"kotlin\",\n name: \"Byte\",\n schema: \"tech.ostack.kform.schemas.ByteSchema\",\n defaultNullable: true,\n defaultValue: \"0.toByte()\",\n};\nexport const charSchematicKind: SchematicKind = {\n kind: \"Char\",\n package: \"kotlin\",\n name: \"Char\",\n schema: \"tech.ostack.kform.schemas.CharSchema\",\n defaultNullable: true,\n defaultValue: \"0.toChar()\",\n};\nexport const classSchematicKind: SchematicKind = {\n kind: \"Class\",\n schema: \"tech.ostack.kform.schemas.ClassSchema\",\n defaultValue: (schematic) => `${schematic.name}()`,\n builder: ClassBuilder,\n initChildren: () => [],\n defaultPackageSuffix: (childName: string) => childName.toLowerCase(),\n defaultName: (childName: string) => pascalCase(childName),\n scaffoldModel: (schematic, data) =>\n code`\n data class ${schematic.name}(\n ${schematic.children\n ?.map((childSchematic) => {\n const childData = {\n ...data,\n currentPath: joinPaths(data.currentPath, childSchematic.childName),\n };\n\n return annotate(\n scaffoldPropertyAnnotations(childSchematic, childData),\n `var ${childSchematic.childName}: ${scaffoldType(\n childSchematic,\n childData,\n )} = ${scaffoldDefaultValue(childSchematic, childData)}`,\n );\n })\n .join(\",\\n\")}\n )\n `,\n scaffoldSchema: (schematic, data) =>\n code`\n ClassSchema {\n ${schematic.children\n ?.map(\n (childSchematic) =>\n `${schematic.name}::${childSchematic.childName} { ${scaffoldSchema(childSchematic, {\n ...data,\n currentPath: joinPaths(data.currentPath, childSchematic.childName),\n })} }`,\n )\n .join(\"\\n\")}\n }\n `,\n};\nexport const doubleSchematicKind: SchematicKind = {\n kind: \"Double\",\n package: \"kotlin\",\n name: \"Double\",\n schema: \"tech.ostack.kform.schemas.DoubleSchema\",\n defaultNullable: true,\n defaultValue: \"0.0\",\n};\nexport const enumSchematicKind: SchematicKind = {\n kind: \"Enum\",\n schema: \"tech.ostack.kform.schemas.EnumSchema\",\n defaultNullable: true,\n defaultValue: (schematic) => `${schematic.name}.${schematic.children?.[0].childName}`,\n builder: EnumBuilder,\n initChildren: () => [],\n defaultName: (childName: string) => pascalCase(childName),\n scaffoldModel: (schematic) =>\n code`\n enum class ${schematic.name} {\n ${schematic.children?.map((childSchematic) => childSchematic.childName!).join(\",\\n\")}\n }\n `,\n};\nexport const fileSchematicKind: SchematicKind = {\n kind: \"File\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"File\",\n schema: \"tech.ostack.kform.schemas.FileSchema\",\n defaultNullable: true,\n defaultValue: (_schematic, data) => {\n data.currentFile.imports.add(\"tech.ostack.kform.datatypes.emptyPlaceholderFile\");\n return \"emptyPlaceholderFile()\";\n },\n propertyAnnotations: (_schematic, data) => {\n if (data.useFileBase64Serializer) {\n data.currentFile.imports.add(\"tech.ostack.kform.serializers.FileBase64Serializer\");\n return \"@Serializable(with = FileBase64Serializer::class)\";\n }\n },\n};\nexport const floatSchematicKind: SchematicKind = {\n kind: \"Float\",\n package: \"kotlin\",\n name: \"Float\",\n schema: \"tech.ostack.kform.schemas.FloatSchema\",\n defaultNullable: true,\n defaultValue: \"0f\",\n};\nexport const instantSchematicKind: SchematicKind = {\n kind: \"Instant\",\n package: \"kotlin.time\",\n name: \"Instant\",\n schema: \"tech.ostack.kform.schemas.InstantSchema\",\n defaultNullable: true,\n defaultValue: \"Instant.fromEpochMilliseconds(0)\",\n};\nexport const intSchematicKind: SchematicKind = {\n kind: \"Int\",\n package: \"kotlin\",\n name: \"Int\",\n schema: \"tech.ostack.kform.schemas.IntSchema\",\n defaultNullable: true,\n defaultValue: \"0\",\n};\nexport const listSchematicKind: SchematicKind = {\n kind: \"List\",\n package: \"kotlin.collections\",\n name: \"List\",\n schema: \"tech.ostack.kform.schemas.ListSchema\",\n defaultValue: \"emptyList()\",\n builder: ListableBuilder,\n initChildren: () => [createSchematic()],\n scaffoldType: (schematic, data) =>\n `List<${scaffoldType(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })}>`,\n scaffoldSchema: (schematic, data) =>\n `ListSchema { ${scaffoldSchema(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })} }`,\n};\nexport const localDateSchematicKind: SchematicKind = {\n kind: \"LocalDate\",\n package: \"kotlinx.datetime\",\n name: \"LocalDate\",\n schema: \"tech.ostack.kform.schemas.LocalDateSchema\",\n defaultNullable: true,\n defaultValue: \"LocalDate(1970, 1, 1)\",\n};\nexport const localDateTimeSchematicKind: SchematicKind = {\n kind: \"LocalDateTime\",\n package: \"kotlinx.datetime\",\n name: \"LocalDateTime\",\n schema: \"tech.ostack.kform.schemas.LocalDateTimeSchema\",\n defaultNullable: true,\n defaultValue: \"LocalDateTime(1970, 1, 1, 0, 0)\",\n};\nexport const longSchematicKind: SchematicKind = {\n kind: \"Long\",\n package: \"kotlin\",\n name: \"Long\",\n schema: \"tech.ostack.kform.schemas.LongSchema\",\n defaultNullable: true,\n defaultValue: \"0L\",\n};\nexport const shortSchematicKind: SchematicKind = {\n kind: \"Short\",\n package: \"kotlin\",\n name: \"Short\",\n schema: \"tech.ostack.kform.schemas.ShortSchema\",\n defaultNullable: true,\n defaultValue: \"0.toShort()\",\n};\nexport const stringSchematicKind: SchematicKind = {\n kind: \"String\",\n package: \"kotlin\",\n name: \"String\",\n schema: \"tech.ostack.kform.schemas.StringSchema\",\n defaultValue: '\"\"',\n};\nexport const tableSchematicKind: SchematicKind = {\n kind: \"Table\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"Table\",\n schema: \"tech.ostack.kform.schemas.TableSchema\",\n defaultValue: (_schematic, data) => {\n data.currentFile.imports.add(\"tech.ostack.kform.datatypes.tableOf\");\n return \"tableOf()\";\n },\n builder: ListableBuilder,\n initChildren: () => [createSchematic()],\n propertyAnnotations: (_schematic, data) => {\n if (data.useTableValuesSerializer) {\n data.currentFile.imports.add(\"tech.ostack.kform.serializers.TableValuesSerializer\");\n return \"@Serializable(with = TableValuesSerializer::class)\";\n }\n },\n scaffoldType: (schematic, data) =>\n `Table<${scaffoldType(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })}>`,\n scaffoldSchema: (schematic, data) =>\n `TableSchema { ${scaffoldSchema(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })} }`,\n};\n\nexport const defaultSchematicKinds = [\n anySchematicKind,\n bigDecimalSchematicKind,\n bigIntegerSchematicKind,\n booleanSchematicKind,\n byteSchematicKind,\n charSchematicKind,\n classSchematicKind,\n doubleSchematicKind,\n enumSchematicKind,\n fileSchematicKind,\n floatSchematicKind,\n instantSchematicKind,\n intSchematicKind,\n listSchematicKind,\n localDateSchematicKind,\n localDateTimeSchematicKind,\n longSchematicKind,\n shortSchematicKind,\n stringSchematicKind,\n tableSchematicKind,\n];\n","import type { Schematic } from \"../../Schematic.ts\";\nimport { NULLABLE_SCHEMA } from \"../../SchematicKind.ts\";\nimport { joinPackages, joinPaths } from \"../../util/join.ts\";\nimport type { KtData } from \"../kotlin/KtData.ts\";\nimport { type KtFile, ktFile } from \"../kotlin/KtFile.ts\";\nimport { jsExport } from \"../kotlin/util/annotations.ts\";\nimport { simpleKtName } from \"../kotlin/util/simpleKtName.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\n\nexport function scaffoldSchemas(schematic: Schematic, data: ScaffoldingData): void {\n const fileName = joinPaths(data.currentDir, `${schematic.name}Schema.kt`);\n let file = data.files.get(fileName) as KtFile | undefined;\n if (!file) {\n data.files.set(fileName, (file = ktFile(data)));\n data.files.set(joinPaths(data.currentDir, `${schematic.name}Validations.kt`), ktFile(data));\n }\n scaffoldSchemaDeclaration(schematic, { ...data, currentFile: file });\n}\n\nfunction scaffoldSchemaDeclaration(schematic: Schematic, data: KtData): void {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const nDecls = data.currentFile.declarations.length;\n data.currentFile.declarations.push(\"\");\n const decl = `val ${schematic.name}Schema = ${\n schematicKind.scaffoldSchema?.(schematic, data) ?? `${simpleKtName(schematicKind.schema)}()`\n }`;\n data.currentFile.imports.add(schematicKind.schema);\n data.currentFile.declarations[nDecls] = data.currentPath === \"/\" ? jsExport(decl, data) : decl;\n}\n\nexport function scaffoldSchema(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const schematicPackage =\n schematicKind.package ?? joinPackages(data.currentPackage, schematic.packageSuffix);\n\n let scaffoldedSchema: string;\n if (schematicKind.package == null && schematicPackage !== data.currentPackage) {\n scaffoldedSchema = `${schematic.name}Schema`;\n data.currentFile.imports.add(`${schematicPackage}.${scaffoldedSchema}`);\n scaffoldSchemas(schematic, {\n ...data,\n currentPackage: joinPackages(data.currentPackage, schematic.packageSuffix),\n currentDir: joinPaths(data.currentDir, schematic.packageSuffix?.replace(\".\", \"/\")),\n });\n } else {\n scaffoldedSchema =\n schematicKind.scaffoldSchema?.(schematic, data) ?? `${simpleKtName(schematicKind.schema)}()`;\n data.currentFile.imports.add(schematicKind.schema);\n }\n\n if (schematic.nullable) {\n data.currentFile.imports.add(NULLABLE_SCHEMA);\n return `${simpleKtName(NULLABLE_SCHEMA)} { ${scaffoldedSchema} }`;\n }\n return scaffoldedSchema;\n}\n","import { type Options, render } from \"ejs\";\n\nimport type { TemplateFile, TemplateFileOptions } from \"./TemplateFile.ts\";\n\nexport interface EjsTemplateFile extends TemplateFile {\n content: string;\n ejsData?: Record<string, any>;\n ejsOptions?: Omit<Options, \"_with\" | \"strict\" | \"destructuredLocals\">;\n}\n\nexport type EjsTemplateFileOptions = TemplateFileOptions & EjsTemplateFile[\"ejsOptions\"];\n\nexport function ejsTemplateFile(\n content: string,\n ejsData?: EjsTemplateFile[\"ejsData\"],\n { base64, binary, executable, ...ejsOptions }: EjsTemplateFileOptions = {},\n): EjsTemplateFile {\n return {\n content,\n ejsData,\n base64,\n binary,\n executable,\n ejsOptions,\n getContent: ejsTemplateFileContent,\n };\n}\n\nfunction ejsTemplateFileContent(this: EjsTemplateFile): string | Promise<string> {\n return render(this.content, this.ejsData, {\n strict: true,\n destructuredLocals: Object.keys(this.ejsData ?? {}),\n ...this.ejsOptions,\n });\n}\n","import { joinPaths } from \"../../../util/join.ts\";\nimport type { ScaffoldingData } from \"../../ScaffoldingData.ts\";\nimport { ejsTemplateFile, type EjsTemplateFileOptions } from \"../EjsTemplateFile.ts\";\n\nexport function addEjsTemplateFile(\n data: ScaffoldingData,\n fileName: string,\n content: string,\n ejsData?: Record<string, any>,\n options?: EjsTemplateFileOptions,\n): void {\n data.files.set(joinPaths(data.currentDir, fileName), ejsTemplateFile(content, ejsData, options));\n}\n","import { camelCase } from \"change-case\";\n\nimport type { Schematic } from \"../../Schematic.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport serializerKt from \"../templates/Serializer.kt.ejs?raw\";\nimport { addEjsTemplateFile } from \"../templating/util/addEjsTemplateFile.ts\";\n\nexport function scaffoldSerializer(schematic: Schematic, data: ScaffoldingData): void {\n addEjsTemplateFile(data, `${schematic.name}Serializer.kt`, serializerKt, {\n filePackage: data.currentPackage,\n formVar: camelCase(schematic.name!),\n formClass: schematic.name,\n });\n}\n","import { camelCase } from \"change-case\";\n\nimport type { Schematic } from \"../../Schematic.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport validatorKt from \"../templates/Validator.kt.ejs?raw\";\nimport { addEjsTemplateFile } from \"../templating/util/addEjsTemplateFile.ts\";\n\nexport function scaffoldValidator(schematic: Schematic, data: ScaffoldingData): void {\n addEjsTemplateFile(data, `${schematic.name}Validator.kt`, validatorKt, {\n filePackage: data.currentPackage,\n formVar: camelCase(schematic.name!),\n formClass: schematic.name,\n });\n}\n","import { useEffect, useLayoutEffect } from \"react\";\n\n/** `useLayoutEffect` hook which runs `useEffect` on the server. */\nexport const useSafeLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n","import { useSafeLayoutEffect } from \"./useSafeLayoutEffect.ts\";\n\n/** Hook that tracks the dimensions of an HTML element using the Resize Observer API + window resize. */\nexport function useMeasure(\n element: Element | null,\n setMeasurement: (measurement: DOMRectReadOnly | undefined) => void,\n) {\n useSafeLayoutEffect(() => {\n if (!element) {\n setMeasurement(undefined);\n return;\n }\n\n const cb = () => setMeasurement(element.getBoundingClientRect());\n cb();\n\n const observer = new ResizeObserver(([entry]) => entry && cb());\n observer.observe(element);\n window.addEventListener(\"resize\", cb);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", cb);\n setMeasurement(undefined);\n };\n }, [element, setMeasurement]);\n}\n","import { type ReactNode, useState } from \"react\";\n\nimport { useMeasure } from \"./util/useMeasure.ts\";\n\nexport interface SchematicBuilderConfigProps {\n children?: ReactNode;\n}\n\nexport function SchematicBuilderConfig({ children }: SchematicBuilderConfigProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [popoverEl, setPopoverEl] = useState<HTMLDivElement | null>(null);\n useMeasure(anchorEl, (measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--anchor-top\", `${measurement.top}px`);\n popoverEl.style.setProperty(\"--anchor-left\", `${measurement.left}px`);\n popoverEl.style.setProperty(\"--anchor-bottom\", `${measurement.bottom}px`);\n popoverEl.style.setProperty(\"--anchor-right\", `${measurement.right}px`);\n popoverEl.style.setProperty(\"--anchor-width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--anchor-height\", `${measurement.height}px`);\n }\n });\n useMeasure(popoverEl, (measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--height\", `${measurement.height}px`);\n }\n });\n\n return (\n <>\n <button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>\n <div popover=\"\" id=\"builder-config-popover\" ref={setPopoverEl}>\n {children}\n </div>\n </>\n );\n}\n","import {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { type ReactNode, useRef, useState } from \"react\";\nimport { createStore } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { LoadSchematic } from \"./actions/LoadSchematic.tsx\";\nimport { SaveSchematic } from \"./actions/SaveSchematic.tsx\";\nimport { ScaffoldToZip } from \"./actions/ScaffoldToZip.tsx\";\nimport { UseFileBase64SerializerConfig } from \"./configs/UseFileBase64SerializerConfig.tsx\";\nimport { UseTableValuesSerializerConfig } from \"./configs/UseTableValuesSerializerConfig.tsx\";\nimport { configScaffolder } from \"./scaffolding/configScaffolder.ts\";\nimport type { KtData } from \"./scaffolding/kotlin/KtData.ts\";\nimport type { Scaffolder } from \"./scaffolding/scaffold.ts\";\nimport { scaffoldModels } from \"./scaffolding/scaffolders/scaffoldModels.ts\";\nimport { scaffoldSchemas } from \"./scaffolding/scaffolders/scaffoldSchemas.ts\";\nimport { scaffoldSerializer } from \"./scaffolding/scaffolders/scaffoldSerializer.ts\";\nimport { scaffoldValidator } from \"./scaffolding/scaffolders/scaffoldValidator.ts\";\nimport { createSchematic, moveSchematic, type Schematic } from \"./Schematic.ts\";\nimport { SchematicBuilderConfig } from \"./SchematicBuilderConfig.tsx\";\nimport { type DraggedSchematic, SchematicBuilderContext } from \"./SchematicBuilderContext.ts\";\nimport { ClassBuilder } from \"./schematicBuilders/ClassBuilder.tsx\";\nimport { classSchematicKind, defaultSchematicKinds, type SchematicKind } from \"./SchematicKind.ts\";\n\nexport interface SchematicBuilderProps {\n name?: string;\n title?: ReactNode;\n basePath?: string;\n basePackage?: string;\n baseDir?: string | ((schematic: Schematic) => string);\n defaultRootClassPackage?: string;\n defaultRootClassName?: string;\n schematicKinds?: SchematicKind[];\n scaffolders?: Scaffolder<any>[] | ((schematic: Schematic) => Scaffolder<any>[]);\n scaffoldingData?: Record<string, any> | ((schematic: Schematic) => Record<string, any>);\n actions?: ReactNode;\n configs?: ReactNode;\n version?: ReactNode;\n}\n\nconst KOTLIN_MAIN_DATA: Partial<KtData> = { currentDir: \"shared/src/commonMain/kotlin\" };\nconst KOTLIN_TEST_DATA: Partial<KtData> = { currentDir: \"shared/src/commonTest/kotlin\" };\n\nconst DEFAULT_APP_VERSION = import.meta.env.VITE_APP_VERSION;\nconst DEFAULT_SCAFFOLDERS = [\n configScaffolder(scaffoldSchemas, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldModels, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldSerializer, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldValidator, KOTLIN_TEST_DATA),\n];\nconst DEFAULT_SCAFFOLDING_DATA = (schematic: Schematic) => schematic.config;\nconst DEFAULT_ACTIONS = (\n <>\n <LoadSchematic />\n <SaveSchematic />\n <ScaffoldToZip />\n </>\n);\nconst DEFAULT_CONFIGS = (\n <>\n <UseFileBase64SerializerConfig />\n <UseTableValuesSerializerConfig />\n </>\n);\n\nexport function SchematicBuilder({\n name = \"kform\",\n title = document.title,\n basePath,\n basePackage,\n baseDir,\n defaultRootClassPackage = \"org.example\",\n defaultRootClassName = \"MyForm\",\n schematicKinds = defaultSchematicKinds,\n scaffolders = DEFAULT_SCAFFOLDERS,\n scaffoldingData = DEFAULT_SCAFFOLDING_DATA,\n actions = DEFAULT_ACTIONS,\n configs = DEFAULT_CONFIGS,\n version = DEFAULT_APP_VERSION,\n}: SchematicBuilderProps) {\n const [store] = useState(() =>\n createStore(\n persist(\n () =>\n createSchematic({\n kind: classSchematicKind.kind,\n packageSuffix: defaultRootClassPackage,\n name: defaultRootClassName,\n children: [],\n }),\n { name },\n ),\n ),\n );\n const schematicKindsMap = new Map(\n schematicKinds.sort((t1, t2) => t1.kind.localeCompare(t2.kind)).map((t) => [t.kind, t]),\n );\n const latestSchematicFileHandleRef = useRef<FileSystemFileHandle | null>(null);\n\n const [draggedSchematic, setDraggedSchematic] = useState<DraggedSchematic | null>(null);\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 10, delay: 400, tolerance: 20 } }),\n useSensor(KeyboardSensor),\n );\n\n return (\n <SchematicBuilderContext\n value={{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>\n </SchematicBuilderContext>\n );\n}\n","import type { ScaffoldingFile, ScaffoldingFileContent } from \"../ScaffoldingFile.ts\";\n\nexport interface TemplateFile extends ScaffoldingFile {\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>;\n}\n\nexport type TemplateFileOptions = Omit<ScaffoldingFile, \"getContent\">;\n\nexport function templateFile(\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>,\n options?: TemplateFileOptions,\n): TemplateFile {\n return { ...options, content, getContent: templateFileContent };\n}\n\nfunction templateFileContent(\n this: TemplateFile,\n): ScaffoldingFileContent | Promise<ScaffoldingFileContent> {\n return this.content;\n}\n","import { joinPaths } from \"../../../util/join.ts\";\nimport type { ScaffoldingData } from \"../../ScaffoldingData.ts\";\nimport type { ScaffoldingFileContent } from \"../../ScaffoldingFile.ts\";\nimport { templateFile, type TemplateFileOptions } from \"../TemplateFile.ts\";\n\nexport function addTemplateFile(\n data: ScaffoldingData,\n fileName: string,\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>,\n options?: TemplateFileOptions,\n): void {\n data.files.set(joinPaths(data.currentDir, fileName), templateFile(content, options));\n}\n","import type { ScaffoldingFile } from \"../ScaffoldingFile.ts\";\nimport type { TsImport } from \"./TsImport.ts\";\n\nexport interface TsFile extends ScaffoldingFile {\n imports: TsImport[];\n declarations: string[];\n}\n\nexport function tsFile(): TsFile {\n return { imports: [], declarations: [], getContent: tsFileContent };\n}\n\ninterface TsImportStatement {\n moduleName: string;\n namedImports?: Set<string>;\n typedImports?: Set<string>;\n defaultImport?: string;\n namespaceImport?: string;\n}\n\nfunction tsFileContent(this: TsFile): string {\n const importStatements = tsImportsToStatements(this.imports);\n return (\n [\n // Imports\n importStatements\n .sort((i1, i2) => i1.moduleName.localeCompare(i2.moduleName))\n .map((i) => tsImportStatementToString(i))\n .join(\"\\n\"),\n\n // Declarations\n ...this.declarations,\n ]\n .filter((s) => s)\n .join(\"\\n\\n\") + \"\\n\"\n );\n}\n\nfunction tsImportsToStatements(imports: TsImport[]): TsImportStatement[] {\n const importsStatements = new Map<string, TsImportStatement>();\n for (const imp of imports) {\n let statement = importsStatements.get(imp.moduleName);\n if (!statement) {\n importsStatements.set(imp.moduleName, (statement = { moduleName: imp.moduleName }));\n }\n if (imp.isDefault) {\n statement.defaultImport = imp.name;\n } else if (imp.isNamespace) {\n statement.namespaceImport = imp.name;\n } else if (imp.isType) {\n (statement.typedImports ??= new Set()).add(imp.name);\n } else if (imp.name) {\n (statement.namedImports ??= new Set()).add(imp.name);\n }\n }\n return Array.from(importsStatements.values());\n}\n\nfunction tsImportStatementToString(importStatement: TsImportStatement): string {\n const namedImportsArr = [\n ...new Set([...(importStatement.namedImports ?? []), ...(importStatement.typedImports ?? [])]),\n ].sort((i1, i2) => i1.localeCompare(i2));\n const allNamedImportsAreTyped = namedImportsArr.every(\n (i) => !importStatement.namedImports?.has(i),\n );\n const namedImports =\n namedImportsArr.length > 0\n ? allNamedImportsAreTyped\n ? `type { ${namedImportsArr.join(\", \")} }`\n : `{ ${namedImportsArr\n .map((i) => (importStatement.namedImports?.has(i) ? i : `type ${i}`))\n .join(\", \")} }`\n : null;\n const defaultImport = importStatement.defaultImport || null;\n const namespaceImport = importStatement.namespaceImport\n ? `* as ${importStatement.namespaceImport}`\n : null;\n const allImports = [defaultImport, namespaceImport, namedImports].filter((s) => s).join(\", \");\n const moduleName = JSON.stringify(importStatement.moduleName);\n\n return allImports ? `import ${allImports} from ${moduleName};` : `import ${moduleName};`;\n}\n"],"x_google_ignoreList":[17],"mappings":";;;;;;;;;;;AAYA,SAAgB,gBAAgB,WAA2C;CACzE,OAAO;EAAE,IAAI,KAAK,OAAO,WAAW;EAAG,MAAM;EAAI,GAAG;CAAU;AAChE;AAEA,SAAgB,cACd,WACA,QACA,UACA,YACW;CACX,MAAM,EAAE,WAAW,sBAAsB,SAAS,kBAAkB,OAAO,WAAW,MAAM;CAC5F,OAAO,IAAI,sBAAuB,eAAgB,UAAU,UAAU;AACxE;AAEA,SAAS,OACP,WACA,IAC4D;CAC5D,IAAI,UAAU,OAAO,IACnB,OAAO;EAAE,WAAW;EAAM,SAAS;CAAU;CAE/C,IAAI,CAAC,UAAU,UACb,OAAO;EAAE;EAAW,SAAS;CAAK;CAEpC,MAAM,cAAc,CAAC;CACrB,IAAI,UAA4B;CAChC,KAAK,MAAM,SAAS,UAAU,UAAU;EACtC,MAAM,EAAE,WAAW,UAAU,SAAS,iBAAiB,OAAO,OAAO,EAAE;EACvE,IAAI,aAAa,MACf,YAAY,KAAK,QAAQ;EAE3B,IAAI,iBAAiB,MACnB,UAAU;CAEd;CACA,OAAO;EAAE,WAAW;GAAE,GAAG;GAAW,UAAU;EAAY;EAAG;CAAQ;AACvE;AAEA,SAAS,IACP,WACA,OACA,UACA,YACW;CACX,IAAI,UAAU,OAAO,UAAU;EAC7B,MAAM,cAAc,UAAU,YAAY,CAAC;EAC3C,MAAM,QACJ,eAAe,OAAO,YAAY,SAAS,YAAY,WAAW,MAAM,EAAE,OAAO,UAAU;EAC7F,OAAO;GACL,GAAG;GACH,UAAU;IAAC,GAAG,YAAY,MAAM,GAAG,KAAK;IAAG;IAAO,GAAG,YAAY,MAAM,KAAK;GAAC;EAC/E;CACF;CACA,IAAI,CAAC,UAAU,UACb,OAAO;CAET,OAAO;EACL,GAAG;EACH,UAAU,UAAU,SAAS,KAAK,UAAU,IAAI,OAAO,OAAO,UAAU,UAAU,CAAC;CACrF;AACF;;;AChCA,IAAa,0BAA0B,cAAmD,IAAI;AAE9F,SAAgB,6BAA2D;CACzE,MAAM,UAAU,WAAW,uBAAuB;CAClD,IAAI,YAAY,MACd,MAAM,IAAI,MAAM,mCAAmC;CAErD,OAAO;AACT;AAIA,SAAgB,aAAa,UAAuD;;CAClF,MAAM,EAAE,OAAO,iBAAiB,2BAA2B;CACpCA,IAAAA;CAA2B,IAAA,EAAA,OAAA,gBAAA,EAAA,OAApB,UAAA;EAAP,WAAO,WAAW,SAAS,aAAa,CAAC,IAAI,aAAa;EAA/B,EAAA,KAAA;EAApB,EAAA,KAAA;;;CAA9B,OAAO,SAAS,OAAOA,EAA4D;AACrF;;;ACnDA,SAAgB,gBAAgB;;CAC9B,MAAM,EAAE,MAAM,cAAc,iCAAiC,2BAA2B;CAGtFC,IAAAA;CAWM,IAAA,EAAA,OAAA,gCAAA,EAAA,OAFM,QAAA,EAAA,OAIN,cAAA;EAbN,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,SAAS,YAAY;IACnB,IAAI;KACF,MAAM,OAAO,MAAM,SAAS;MAC1B,YAAY,CAAC,OAAO;MACpB,WAAW,CAAC,kBAAkB;MAC9B,aAAa;MACb,IAAI;KACN,CAAC;KACD,6BAA6B,UAAU,KAAK,UAAU;KACtD,MAAM,UAAU,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;KAC5C,mBAAmB,OAAO;IAC5B,SAASC,IAAK;KAAL,MAAA,MAAA;KAEP,IAAI,eAAe,gBAAgB,IAAI,SAAS,cAC9C;KAGF,MAAM,6BAA6B,KAAK,SAAS,GAAG;IACtD;GACF;GACA,OAAM;GACN,cAAW;GAEX,UAAA;EACM,CAAA;EAhBF,EAAA,KAAA;EAFM,EAAA,KAAA;EAIN,EAAA,KAAA;;;CAdR,OACED;AA6BJ;;;ACjCA,SAAgB,gBAAgB;;CAC9B,MAAM,EAAE,MAAM,cAAc,iCAAiC,2BAA2B;CAGtFE,IAAAA;CAKwB,IAAA,EAAA,OAAA,gBAAA,EAAA,OAUhBC,gCAAAA,EAAAA,OAFM,MAAA;EAbd,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,SAAS,YAAY;IACnB,IAAI;KACF,MAAM,YAAY,aAAa;KAC/B,6BAA6B,UAAU,MAAM,SAC3C,IAAI,KAAK,CAAC,KAAK,UAAU,WAAW,MAAM,CAAC,CAAC,CAAC,GAC7C;MACE,UAAU,GAAG,UAAU,KAAK;MAC5B,YAAY,CAAC,OAAO;MACpB,WAAW,CAAC,kBAAkB;MAC9B,aAAa;MACb,IAAI;KACN,GACA,6BAA6B,OAC/B;KACA,IAAI,WACF,MACE,oCAAoC,6BAA6B,SAAS,QAAQ,UAAU,GAC9F;IAEJ,SAASC,IAAK;KAAL,MAAA,MAAA;KAEP,IAAI,eAAe,gBAAgB,IAAI,SAAS,cAC9C;KAGF,MAAM,6BAA6B,KAAK,SAAS,GAAG;IACtD;GACF;GACA,OAAM;GACN,cAAW;GAEX,UAAA;EACM,CAAA;EA9BgB,EAAA,KAAA;EAUhBD,EAAAA,KAAAA;EAFM,EAAA,KAAA;;;CAdhB,OACED;AAqCJ;;;;ACxCA,SAAgB,iBACd,YACA,MAC8B;CAC9B,QAAQ,WAAsB,iBAC5B,WAAW,WAAW;EAAE,GAAG;EAAc,GAAG;CAAK,CAAC;AACtD;;;ACXA,SAAS,KAAK,IAAwB,IAAwB,WAA2B;CACvF,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,SAAS,IAAI,KAAK,YAAY;AACzF;AAEA,SAAgB,UAAU,OAA2B,OAAmC;CACtF,OAAO,KAAK,OAAO,OAAO,GAAG;AAC/B;AAEA,SAAgB,aAAa,MAA0B,MAAkC;CACvF,OAAO,KAAK,MAAM,MAAM,GAAG;AAC7B;;;ACaA,SAAgB,SACd,WACA,aACA,SACkB;CAClB,MAAM,wBAAQ,IAAI,IAA6B;CAC/C,MAAM,OAAwB;EAC5B,gBAAgB,QAAQ;EACxB,eAAe;EACf;EACA,aAAa,QAAQ,YAAY;EACjC,gBAAgB,aAAa,QAAQ,aAAa,UAAU,aAAa;EACzE,YAAY,QAAQ;CACtB;CACA,KAAK,MAAM,cAAc,aACvB,WAAW,WAAW,IAAI;CAE5B,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW;EAC9C;EACA,SAAS,KAAK,WAAW;EACzB,QAAQ,KAAK;EACb,QAAQ,KAAK;EACb,YAAY,KAAK;CACnB,EAAE;AACJ;;;AC3CA,SAAgB,gBAAwC;;CACtD,MAAM,EACJ,UACA,aACA,SACA,gBACA,aACA,iBACA,iBACE,2BAA2B;CACxBG,IAAAA;CAkBa,IAAA,EAAA,OAAA,WAAA,EAAA,OADhB,eAAA,EAAA,OADA,YAAA,EAAA,OAfgB,gBAAA,EAAA,OAGT,eAAA,EAAA,OAEA,mBAAA,EAAA,OASP,gBAAA;EAfG,WAAM;GACX,MAAM,YAAY,aAAa;GAE/B,IAAI,sBACF,OAAO,gBAAgB,aAAa,YAAY,SAAS,IAAI;GAC/D,MAAM,0BACJ,OAAO,oBAAoB,aAAa,gBAAgB,SAAS,IAAI;GAEvE,IAAI,yBACF,sBAAsB,oBAAoB,KAAK,eAC7C,iBAAiB,YAAY,uBAAuB,CACtD;GAGF,OAAO,SAAS,WAAW,qBAAqB;IAC9C;IACA;IACA;IACA,SAAS,OAAO,YAAY,aAAa,QAAQ,SAAS,IAAI;GAChE,CAAC;EACH;EAFoB,EAAA,KAAA;EADhB,EAAA,KAAA;EADA,EAAA,KAAA;EAfgB,EAAA,KAAA;EAGT,EAAA,KAAA;EAEA,EAAA,KAAA;EASP,EAAA,KAAA;;;CAfJ,OAAOA;AAqBT;;;AC7BA,SAAgB,gBAAgB;;CAC9B,MAAM,EAAE,cAAc,SAAS,2BAA2B;CAC1D,MAAM,WAAW,cAAc;CAG7BC,IAAAA;CAMwB,IAAA,EAAA,OAAA,gBAAA,EAAA,OAeZ,QAAA,EAAA,OAdQ,UAAA;EAPpB,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,SAAS,OAAO,QAAQ;IACtB,IAAI,eAAe;IACnB,IAAI;KACF,MAAM,YAAY,aAAa;KAC/B,MAAM,QAAQ,SAAS;KACvB,MAAM,MAAM,IAAI,MAAM;KACtB,KAAK,MAAM,EAAE,MAAM,SAAS,QAAQ,QAAQ,gBAAgB,OAC1D,IAAI,KAAK,MAAM,SAAS;MACtB;MACA;MACA,iBAAiB,aAAa,QAAQ,KAAA;KACxC,CAAC;KAEH,MAAM,aAAa,MAAM,SAAS,IAAI,cAAc;MAAE,UAAU;MAAQ,MAAM;KAAO,CAAC,GAAG;MACvF,UAAU,GAAG,UAAU,KAAK;MAC5B,YAAY,CAAC,MAAM;MACnB,WAAW,CAAC,iBAAiB;MAC7B,aAAa;MACb,IAAI;KACN,CAAC;KACD,IAAI,WACF,MAAM,uCAAuC,YAAY,QAAQ,UAAU,GAAG;IAElF,SAASC,IAAK;KAAL,MAAA,MAAA;KAEP,IAAI,eAAe,gBAAgB,IAAI,SAAS,cAC9C;KAGF,MAAM,+BAA+B,KAAK,SAAS,GAAG;IACxD;GACF;GAEA,UAAA;EACM,CAAA;EA/BgB,EAAA,KAAA;EAeZ,EAAA,KAAA;EAdQ,EAAA,KAAA;;;CARtB,OACED;AAuCJ;;;AC5CA,SAAgB,UAAa,YAAoB,cAA0C;;CACzF,MAAM,EAAE,UAAU,2BAA2B;CAE3CE,IAAAA;CAAmC,IAAA,EAAA,OAAA,cAAA,EAAA,OAAe,cAAA;EAAlD,MAAC,cAAe,UAAU,SAAS,eAAe;EAAf,EAAA,KAAA;EAAe,EAAA,KAAA;;;CADpD,MAAM,cAAc,aAClBA,EACF;CACuBC,IAAAA;CAM6B,IAAA,EAAA,OAAA,cAAA,EAAA,OALlD,OAAA;EADqB,MAAC,kBACtB,MAAM,UAAU,iBAAe,EAC7B,QAAQ;GACN,GAAGC,YAAU;IACZ,aACC,OAAOC,kBAAgB,aAClBA,cAAoBD,YAAU,SAAS,WAAW,IACnDC;EACR,EACF,EAAE;EAHgD,EAAA,KAAA;EALlD,EAAA,KAAA;;;CADF,MAAM,iBAAiBF;CAWhBG,IAAAA;CAAC,IAAA,EAAA,OAAA,eAAA,EAAA,OAAa,gBAAA;EAAd,KAAA,CAAC,aAAa,cAAc;EAA3B,EAAA,KAAA;EAAa,EAAA,KAAA;;;CAArB,OAAOA;AACT;;;ACjBA,SAAgB,8BAAA,IAAgF;;CAAlD,MAAA,EAAE,aAAFC;CAC5C,MAAM,CAAC,QAAQ,aAAa,UAAU,2BAA2B,KAAK;CAOpDC,IAAAA;CAAS,IAAA,EAAA,OAAA,WAAA;EAAT,MAAC,QAAQ,UAAU,IAAI,OAAO,OAAO;EAA5B,EAAA,KAAA;;;CAHrBC,IAAAA;CAEW,IAAA,EAAA,OAAA,UAAA,EAAA,OAEC,YAAA,EAAA,OADAD,IAAAA;EAHZ,KAAA,oBAAC,SAAD;GACE,MAAK;GACL,SAAS;GACT,UAAUA;GACA;EACX,CAAA;EAHU,EAAA,KAAA;EAEC,EAAA,KAAA;EADAA,EAAAA,KAAAA;;;CAGRE,IAAAA;;EAAC,KAAA,oBAAA,QAAD,EAAA,UAAM,uBAA0B,CAAA;;;CARxCC,IAAAA;CAEIF,IAAAA,EAAAA,OAAAA,IAAAA;EAFJ,KAAA,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,qBAAC,SAAD,EAAA,UAAA;IACEA;IAMA;IAAIC;GACC,EAAA,CAAA;EACJ,CAAA;EARDD,EAAAA,KAAAA;;;CAHN,OACEE;AAYJ;;;ACfA,SAAgB,+BAAA,IAAkF;;CAAnD,MAAA,EAAE,aAAFC;CAC7C,MAAM,CAAC,QAAQ,aAAa,UAAU,4BAA4B,KAAK;CAOrDC,IAAAA;CAAS,IAAA,EAAA,OAAA,WAAA;EAAT,MAAC,QAAQ,UAAU,IAAI,OAAO,OAAO;EAA5B,EAAA,KAAA;;;CAHrBC,IAAAA;CAEW,IAAA,EAAA,OAAA,UAAA,EAAA,OAEC,YAAA,EAAA,OADAD,IAAAA;EAHZ,KAAA,oBAAC,SAAD;GACE,MAAK;GACL,SAAS;GACT,UAAUA;GACA;EACX,CAAA;EAHU,EAAA,KAAA;EAEC,EAAA,KAAA;EADAA,EAAAA,KAAAA;;;CAGRE,IAAAA;;EAAC,KAAA,oBAAA,QAAD,EAAA,UAAM,wBAA2B,CAAA;;;CARzCC,IAAAA;CAEIF,IAAAA,EAAAA,OAAAA,IAAAA;EAFJ,KAAA,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,qBAAC,SAAD,EAAA,UAAA;IACEA;IAMA;IAAIC;GACC,EAAA,CAAA;EACJ,CAAA;EARDD,EAAAA,KAAAA;;;CAHN,OACEE;AAYJ;;;ACrBA,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAgB,kBAAkB,eAAgC;CAChE,OAAO,gBAAgB,MAAM,MAAM,EAAE,KAAK,aAAa,CAAC;AAC1D;;;ACHA,SAAgB,OAAO,MAA+B;CACpD,OAAO;EACL,SAAS,KAAK,kBAAkB;EAChC,yBAAS,IAAI,IAAY;EACzB,cAAc,CAAC;EACf,YAAY;CACd;AACF;AAEA,SAAS,gBAAoC;CAC3C,OACE;EAEE,KAAK,WAAW,WAAW,KAAK;EAGhC,MAAM,KAAK,KAAK,OAAO,CAAC,CACrB,QAAQ,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACpC,KAAK,CAAC,CACN,KAAK,MAAM,UAAU,GAAG,CAAC,CACzB,KAAK,IAAI;EAGZ,GAAG,KAAK;CACV,CAAC,CACE,QAAQ,MAAM,CAAC,CAAC,CAChB,KAAK,MAAM,IAAI;AAEtB;;;ACtCA,SAAgB,aAAa,eAA+B;CAC1D,OAAO,cAAc,UAAU,cAAc,YAAY,GAAG,IAAI,CAAC;AACnE;;;ACCA,IAAM,YAAY;AAClB,IAAM,eAAe;AAErB,SAAgB,SAAS,aAA4C,MAAsB;CACzF,IAAI,CAAC,eAAe,YAAY,WAAW,GACzC,OAAO;CAET,OAAO,CAAC,GAAI,OAAO,gBAAgB,WAAW,CAAC,WAAW,IAAI,aAAc,IAAI,CAAC,CAAC,KAAK,IAAI;AAC7F;AAEA,SAAgB,SAAS,MAAc,MAAsB;CAC3D,KAAK,YAAY,QAAQ,IAAI,SAAS;CACtC,OAAO,SAAS,IAAI,aAAa,SAAS,KAAK,IAAI;AACrD;AAEA,SAAgB,aAAa,MAAc,MAAsB;CAC/D,KAAK,YAAY,QAAQ,IAAI,YAAY;CACzC,OAAO,SAAS,IAAI,aAAa,YAAY,KAAK,IAAI;AACxD;;;ACdA,SAAgB,eAAe,WAAsB,MAA6B;CAChF,MAAM,WAAW,UAAU,KAAK,YAAY,GAAG,UAAU,KAAK,IAAI;CAClE,IAAI,OAAO,KAAK,MAAM,IAAI,QAAQ;CAClC,IAAI,CAAC,MACH,KAAK,MAAM,IAAI,UAAW,OAAO,OAAO,IAAI,CAAE;CAEhD,yBAAyB,WAAW;EAAE,GAAG;EAAM,aAAa;CAAK,CAAC;AACpE;AAEA,SAAS,yBAAyB,WAAsB,MAAoB;CAC1E,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,MAAM,SAAS,KAAK,YAAY,aAAa;CAC7C,KAAK,YAAY,aAAa,KAAK,EAAE;CACrC,MAAM,OACJ,cAAc,gBAAgB,WAAW,IAAI,KAC7C,aAAa,UAAU,KAAK,KAAK,aAAa,WAAW,IAAI;CAC/D,KAAK,YAAY,aAAa,UAAU,cAAc,gBAClD,SAAS,aAAa,MAAM,IAAI,GAAG,IAAI,IACvC;AACN;AAEA,SAAgB,4BACd,WACA,MAC+B;CAC/B,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,OAAO,OAAO,cAAc,wBAAwB,aAChD,cAAc,oBAAoB,WAAW,IAAI,IACjD,cAAc;AACpB;AAEA,SAAgB,aAAa,WAAsB,MAAsB;CACvE,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,MAAM,mBACJ,cAAc,WAAW,aAAa,KAAK,gBAAgB,UAAU,aAAa;CACpF,MAAM,gBAAgB,UAAU,QAAQ,cAAc;CAEtD,IAAI,qBAAqB,KAAK,gBAC5B,KAAK,YAAY,QAAQ,IAAI,aAAa,kBAAkB,aAAa,CAAC;CAG5E,IAAI,cAAc,WAAW,QAAQ,qBAAqB,KAAK,gBAC7D,eAAe,WAAW;EACxB,GAAG;EACH,gBAAgB,aAAa,KAAK,gBAAgB,UAAU,aAAa;EACzE,YAAY,UAAU,KAAK,YAAY,UAAU,eAAe,QAAQ,KAAK,GAAG,CAAC;CACnF,CAAC;MACI,IAAI,cAAc,eACvB,yBAAyB,WAAW,IAAI;CAG1C,QACG,cAAc,eAAe,WAAW,IAAI,KAAK,kBACjD,UAAU,WAAW,MAAM;AAEhC;AAEA,SAAgB,qBAAqB,WAAsB,MAAsB;CAC/E,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,OAAO,UAAU,WACb,SACA,OAAO,cAAc,iBAAiB,aACpC,cAAc,aAAa,WAAW,IAAI,IAC1C,cAAc;AACtB;;;ACtFA,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAE7B,IAAM,2BAA2B;AAEjC,IAAM,uBAAuB;AAE7B,IAAM,sBAAsB;AAE5B,IAAM,mCAAmC;;;;AAIzC,SAAgB,MAAM,OAAO;CACzB,IAAI,SAAS,MAAM,KAAK;CACxB,SAAS,OACJ,QAAQ,sBAAsB,mBAAmB,CAAC,CAClD,QAAQ,sBAAsB,mBAAmB;CACtD,SAAS,OAAO,QAAQ,sBAAsB,IAAI;CAClD,IAAI,QAAQ;CACZ,IAAI,MAAM,OAAO;CAEjB,OAAO,OAAO,OAAO,KAAK,MAAM,MAC5B;CACJ,IAAI,UAAU,KACV,OAAO,CAAC;CACZ,OAAO,OAAO,OAAO,MAAM,CAAC,MAAM,MAC9B;CACJ,OAAO,OAAO,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK;AAC/C;;;;AAIA,SAAgB,qBAAqB,OAAO;CACxC,MAAM,QAAQ,MAAM,KAAK;CACzB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACnC,MAAM,OAAO,MAAM;EACnB,MAAM,QAAQ,yBAAyB,KAAK,IAAI;EAChD,IAAI,OAAO;GACP,MAAM,SAAS,MAAM,SAAS,MAAM,MAAM,MAAM,GAAA,CAAI;GACpD,MAAM,OAAO,GAAG,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,MAAM,MAAM,CAAC;EAChE;CACJ;CACA,OAAO;AACX;;;;AAaA,SAAgB,UAAU,OAAO,SAAS;CACtC,MAAM,CAAC,QAAQ,OAAO,UAAU,kBAAkB,OAAO,OAAO;CAChE,MAAM,QAAQ,aAAa,SAAS,MAAM;CAC1C,MAAM,QAAQ,aAAa,SAAS,MAAM;CAC1C,MAAM,YAAY,SAAS,2BACrB,4BAA4B,OAAO,KAAK,IACxC,2BAA2B,OAAO,KAAK;CAC7C,OAAQ,SACJ,MACK,KAAK,MAAM,UAAU;EACtB,IAAI,UAAU,GACV,OAAO,MAAM,IAAI;EACrB,OAAO,UAAU,MAAM,KAAK;CAChC,CAAC,CAAC,CACG,KAAK,SAAS,aAAa,EAAE,IAClC;AACR;;;;AAIA,SAAgB,WAAW,OAAO,SAAS;CACvC,MAAM,CAAC,QAAQ,OAAO,UAAU,kBAAkB,OAAO,OAAO;CAChE,MAAM,QAAQ,aAAa,SAAS,MAAM;CAC1C,MAAM,QAAQ,aAAa,SAAS,MAAM;CAC1C,MAAM,YAAY,SAAS,2BACrB,4BAA4B,OAAO,KAAK,IACxC,2BAA2B,OAAO,KAAK;CAC7C,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC,CAAC,KAAK,SAAS,aAAa,EAAE,IAAI;AAC1E;AA6EA,SAAS,aAAa,QAAQ;CAC1B,OAAO,WAAW,SACX,UAAU,MAAM,YAAY,KAC5B,UAAU,MAAM,kBAAkB,MAAM;AACnD;AACA,SAAS,aAAa,QAAQ;CAC1B,OAAO,WAAW,SACX,UAAU,MAAM,YAAY,KAC5B,UAAU,MAAM,kBAAkB,MAAM;AACnD;AACA,SAAS,4BAA4B,OAAO,OAAO;CAC/C,QAAQ,SAAS,GAAG,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC;AAC5D;AACA,SAAS,2BAA2B,OAAO,OAAO;CAC9C,QAAQ,MAAM,UAAU;EACpB,MAAM,QAAQ,KAAK;EAEnB,QADgB,QAAQ,KAAK,SAAS,OAAO,SAAS,MAAM,MAAM,QAAQ,MAAM,KAAK,KACpE,MAAM,KAAK,MAAM,CAAC,CAAC;CACxC;AACJ;AACA,SAAS,kBAAkB,OAAO,UAAU,CAAC,GAAG;CAC5C,MAAM,UAAU,QAAQ,UAAU,QAAQ,kBAAkB,uBAAuB;CACnF,MAAM,mBAAmB,QAAQ,oBAAoB;CACrD,MAAM,mBAAmB,QAAQ,oBAAoB;CACrD,IAAI,cAAc;CAClB,IAAI,cAAc,MAAM;CACxB,OAAO,cAAc,MAAM,QAAQ;EAC/B,MAAM,OAAO,MAAM,OAAO,WAAW;EACrC,IAAI,CAAC,iBAAiB,SAAS,IAAI,GAC/B;EACJ;CACJ;CACA,OAAO,cAAc,aAAa;EAC9B,MAAM,QAAQ,cAAc;EAC5B,MAAM,OAAO,MAAM,OAAO,KAAK;EAC/B,IAAI,CAAC,iBAAiB,SAAS,IAAI,GAC/B;EACJ,cAAc;CAClB;CACA,OAAO;EACH,MAAM,MAAM,GAAG,WAAW;EAC1B,QAAQ,MAAM,MAAM,aAAa,WAAW,CAAC;EAC7C,MAAM,MAAM,WAAW;CAC3B;AACJ;;;;AC9MA,SAAgB,aAAa,WAA2D;CACtF,OAAO,YAAY,KAAK,KAAA;AAC1B;;;;ACAA,IAAa,cAAc;CACzB,YAAY,QAAuB,IAAI,gBAAgB;CACvD,gBAAgB,QAAsB,IAAI,gBAAgB;AAC5D;;;ACHA,SAAgB,cAAc;;CAC5B,MAAM,EAAE,gBAAgB,iBAAiB,2BAA2B;CACpE,MAAM,OAAO,aAAaC,OAA6B;CACvD,MAAM,YAAY,aAAaC,QAAkC;CACjDC,IAAAA;CAAmB,IAAA,EAAA,OAAA,QAAA,EAAA,OAAnB,gBAAA;EAAe,KAAA,eAAA,IAAI,IAAI,CAAC,EAAE;EAAP,EAAA,KAAA;EAAnB,EAAA,KAAA;;;CAAhB,MAAM,UAAUA;CAETC,IAAAA;CAII,IAAA,EAAA,OAAA,WAAA,EAAA,OAAA,aAAA,EAAA,OACQ,cAAA;EALZ,KAAA,UACL,oBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,OAAO,YAAY,WAAW;GAC9B,eAAe,aAAaC,QAAoD;GAChF,GAAI;GAEH,UAAA,YAAY,MAAM;EACb,CAAA,IAER,oBAAC,QAAD;GAAM,WAAU;GAAuB,UAAA;EAAO,CAAA;EAXzC,EAAA,KAAA;EAII,EAAA,KAAA;EACQ,EAAA,KAAA;;;CALnB,OAAOD;AAaT;AARkC,SAAA,SAAC,aAAA;CAAe,OAAA,EAAE,WAAW,CAACE,YAAU,UAAU;;AARnD,SAAA,SAAC,aAAA;CAAcA,OAAAA,YAAU;;AAD9B,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;;;ACFrD,SAAgB,cAAc;;CAC5B,MAAM,EAAE,oBAAoB,2BAA2B;CAErDC,IAAAA;CAIW,IAAA,EAAA,OAAA,iBAAA;EAJX,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,OAAM;GACN,SAAS;GACT,GAAI;GAEJ,UAAA;EACM,CAAA;EAJG,EAAA,KAAA;;;CALb,OACEA;AAUJ;;;ACbA,IAAM,mBAAmB;AAEzB,SAAgB,aAAa;;CAC3B,MAAM,EAAE,gBAAgB,cAAc,oBAAoB,2BAA2B;CACrF,MAAM,OAAO,aAAaC,OAA6B;CAMzCC,IAAAA;CAI+C,IAAA,EAAA,OAAA,mBAAA,EAAA,OAHjC,kBAAA,EAAA,OACtB,cAAA;EAFQ,MAAC,QAAQ;GACjB,MAAM,gBAAgB,eAAe,IAAI,IAAI,OAAO,KAAK;GACzD,aAAa;IACX,MAAM,IAAI,OAAO;IACjB,eAAe,eAAe,uBAAuB,eAAgB;IACrE,MAAM,eAAe,cAAc,eAAgB;IACnD,WAAW;IACX,UAAU,eAAe,YAAY,eAAe;IACpD,UAAU,eAAe,eAAe,eAAgB;GAC1D,CAAC;EACH;EANyD,EAAA,KAAA;EAHjC,EAAA,KAAA;EACtB,EAAA,KAAA;;;CAUc,MAAA,KAAA,SAAS,QAAQ,iBAAA,CAAkB,OAAO;CAAnDC,IAAAA;CAASC,IAAAA,EAAAA,OAAAA,IAAAA;EAAT,KAAA,EAAE,OAAOA,GAAyD;EAAzDA,EAAAA,KAAAA;;;CAGhBC,IAAAA;;EAAC,KAAA,oBAAA,UAAD,EAAA,UAAS,iBAAyB,CAAA;;;CACjCC,IAAAA;CAAW,IAAA,EAAA,OAAA,gBAAA;EAAX,KAAA,MAAM,KAAK,eAAe,OAAO,CAAC,CAAC,CACjC,OAAOC,QAAwB,CAAC,CAChC,IAAIC,QAIJ;EANS,EAAA,KAAA;;;CAnBdC,IAAAA;CAES,IAAA,EAAA,OAAA,QAAA,EAAA,QACGP,MAAAA,EAAAA,QAYHC,MAAAA,EAAAA,QAING,IAAAA;EAnBH,KAAA,qBAAC,UAAD;GACE,WAAU;GACV,OAAO;GACP,UAAUJ;GAWV,UAAA;GACA,OAAOC;GACP,GAAI;GAhBN,UAAA,CAkBEE,IACCC,EAOK;;EAxBC,EAAA,KAAA;EACGJ,EAAAA,MAAAA;EAYHC,EAAAA,MAAAA;EAING,EAAAA,MAAAA;;;CApBL,OACEG;AA4BJ;AAPa,SAAA,SAAC,QAAA;CACJ,OAAA,oBAAC,UAAD;EAAwB,OAAOC,OAAK;EACjCA,UAAAA,OAAK;CACA,GAFKA,OAAK,IAEV;;AAJF,SAAA,SAAC,QAAA;CAAS,OAAA,CAACA,OAAK;;AAvBJ,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;;;ACJrD,SAAgB,gBAAgB;;CAC9B,MAAM,EAAE,gBAAgB,iBAAiB,2BAA2B;CACpE,MAAM,OAAO,aAAaC,OAA6B;CACvD,MAAM,WAAW,aAAaC,QAAmC;CAC3CC,IAAAA;CAAmB,IAAA,EAAA,OAAA,QAAA,EAAA,OAAnB,gBAAA;EAAe,KAAA,eAAA,IAAI,IAAI;EAAJ,EAAA,KAAA;EAAnB,EAAA,KAAA;;;CAAtB,MAAM,gBAAgBA;CACtB,MAAM,YAAY,iBAAiB,cAAc,aAAa,KAAA;CAG5DC,IAAAA;CAKa,IAAA,EAAA,OAAA,YAAA,EAAA,OACU,gBAAA,EAAA,OANvB,WAAA;EACE,KAAA,aAAA,oBAAC,SAAD;GACE,WAAU;GACV,MAAK;GACL,OAAM;GACN,SAAS;GACT,WAAW,QAAQ,aAAa,EAAE,UAAU,IAAI,OAAO,QAAQ,CAAC;GAChE,GAAI;EACL,CAAA;EAHU,EAAA,KAAA;EACU,EAAA,KAAA;EANvB,EAAA,KAAA;;;CADF,OACEA;AAWJ;AAhBgC,SAAA,SAAC,aAAA;CAAc,OAAA,CAAC,CAACC,YAAU;;AAD/B,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;;;ACArD,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB;AAEzB,SAAgB,mBAAmB;;CACjC,MAAM,EAAE,cAAc,kBAAkB,2BAA2B;CACnE,MAAM,SAAS,OAAgC,IAAI;CACnD,MAAM,gBAAgB,aAAaC,OAAsC;CACzE,MAAM,OAAO,aAAaC,QAA6B;CAIlDC,IAAAA;;EAAiB,KAAA,iBAAA,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CAA0C,eAAc,GAAO;;EAAhF,EAAA,KAAA;;;CAIQ,MAAA,KAAA,iBAAiB;CACdC,IAAAA;CAAS,IAAA,EAAA,OAAA,cAAA;EAAT,MAAC,QAAQ,aAAa,EAAE,eAAe,IAAI,OAAO,MAAM,CAAC;EAAhD,EAAA,KAAA;;;CAEH,MAAA,KAAA,IAAI,iBAAiB,oBAAA,CAAqB,OAAO;CAA1DC,IAAAA;CAASC,IAAAA,EAAAA,OAAAA,IAAAA;EAAT,KAAA,EAAE,OAAOA,GAAqD;EAArDA,EAAAA,KAAAA;;;CANlBC,IAAAA;CAGSC,IAAAA,EAAAA,OAAAA,MAAAA,EAAAA,OACGJ,MAAAA,EAAAA,OAEHC,IAAAA;EANT,KAAA,oBAAC,SAAD;GACE,WAAU;GACV,aAAa;GACb,OAAOG;GACP,UAAUJ;GACV,SAAQ;GACR,OAAOC;GACP,GAAI;GACJ,KAAK;EACN,CAAA;EANQG,EAAAA,KAAAA;EACGJ,EAAAA,KAAAA;EAEHC,EAAAA,KAAAA;;;CAITI,IAAAA;CAYAC,IAAAA;;EAZA,KAAA,oBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,eAAe;IACb,MAAM,WAAW,OAAO;IACxB,SAAS,MAAM,UAAU;IACzB,SAAS,MAAM;IACf,SAAS,MAAM,UAAU;GAC3B;GAEA,UAAA;EACM,CAAA;EACR,KAAA,oBAAC,QAAD;GAAM,WAAU;GAAmB,UAAA;EAAO,CAAA;;;;;;;CAIjC,MAAA,KAAA,QAAQ;CACLC,IAAAA;CAAS,IAAA,EAAA,QAAA,cAAA;EAAT,MAAC,UAAQ,aAAa,EAAE,MAAMC,MAAI,OAAO,MAAM,CAAC;EAAvC,EAAA,MAAA;;;CAGH,MAAA,MAAA,IAAI,QAAQ,iBAAA,CAAkB,OAAO;CAA9CC,IAAAA;CAASC,IAAAA,EAAAA,QAAAA,KAAAA;EAAT,MAAA,EAAE,OAAOA,IAAyC;EAAzCA,EAAAA,MAAAA;;;CAPlBC,IAAAA;CAOSF,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QAJAG,MAAAA,EAAAA,QACGL,IAAAA;EAJZ,MAAA,oBAAC,SAAD;GACE,WAAU;GACV,aAAa;GACb,OAAOK;GACP,UAAUL;GACV,UAAA;GACA,SAAQ;GACR,OAAOE;GACP,GAAI;EACL,CAAA;EAFQA,EAAAA,MAAAA;EAJAG,EAAAA,MAAAA;EACGL,EAAAA,MAAAA;;;CA7BdM,IAAAA;CACGd,IAAAA,EAAAA,QAAAA,MAAAA,EAAAA,QAwBDY,OAAAA,EAAAA,QAvBAR,IAAAA;EAFF,MAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACGJ;IACDI;IAUAE;IAYAC;IACAK;GAUG;;EAlCFZ,EAAAA,MAAAA;EAwBDY,EAAAA,MAAAA;EAvBAR,EAAAA,MAAAA;;;CAHJ,OACEU;AAqCJ;AAxC4B,SAAA,SAAC,aAAA;CAAcC,OAAAA,YAAU;;AADhB,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;;;ACM9D,IAAa,iBAAiB;AAE9B,SAAgB,eAAe;;CAC7B,MAAM,0BAA0B,2BAA2B;CAC3D,MAAM,EAAE,cAAc,cAAc,kBAAkB,gBAAgB;CACtE,MAAM,KAAK,aAAaC,OAA2B;CACnD,MAAM,gBAAgB,aAAaC,QAAsC;CACzE,MAAM,SAAS,aAAaC,QAA4C,KAAK,CAAC;CACrDC,IAAAA;CAAoD,IAAA,EAAA,OAAA,oBAAA,EAAA,OAAA,QAAA;EAApD,KAAA,oBAAoB,QAAQ,iBAAiB,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE;EAAnE,EAAA,KAAA;EAAoD,EAAA,KAAA;;;CAA7E,MAAM,mBAAmBA;CAEnB,MAAA,KAAA,GAAG,GAAG;CACJC,IAAAA;CAAY,IAAA,EAAA,OAAA,MAAA,EAAA,OAA+B,kBAAA;EAA3C,KAAA;GAAE,UAAU;GAAI,YAAY;GAAM,SAAS;EAAiB;EAAhD,EAAA,KAAA;EAA+B,EAAA,KAAA;;;CACvC,MAAA,KAAA,eAAe,kBAAkB,SAAA;CAHgBC,IAAAA;CACvDC,IAAAA,EAAAA,OAAAA,MAAAA,EAAAA,OACEF,MAAAA,EAAAA,OACIG,IAAAA;EAHiD,KAAA;GAC3D,IAAID;GACJ,MAAMF;GACN,UAAUG;EACZ;EAHMD,EAAAA,KAAAA;EACEF,EAAAA,KAAAA;EACIG,EAAAA,KAAAA;;;CAHZ,MAAM,EAAE,YAAY,iBAAiB,WAAW,aAAaF,EAI5D;CAIGG,IAAAA;;EAAC,KAAA,oBAAA,kBAAD,CAAmB,CAAA;;;CAElBC,IAAAA;CAAOC,IAAAA,EAAAA,QAAAA,OAAAA,UAAAA,EAAAA,QACiD,UAAA,EAAA,QAAc,iBAAA;EADtE,KAAA,OAAO,WAAW,KACjB,oBAAC,OAAD;GAAK,WAAU;GAAgB,aAAW,aAAa,MAAM;GAAG,KAAK;GACnE,UAAA;EACG,CAAA;EAHCA,EAAAA,MAAAA,OAAAA;EACiD,EAAA,MAAA;EAAc,EAAA,MAAA;;;CAKtEC,IAAAA;CAyBW,IAAA,EAAA,QAAA,oBAAA,EAAA,QAzBXC,UAAAA,EAAAA,QAO6B,gBAAA,EAAA,QAgBV,MAAA,EAAA,QAYU,UAAA,EAAA,QAb+C,iBAAA,EAAA,QAAvCC,2BAAAA,EAAAA,QAc3B,mBAAA,EAAA,QA3BC,gBAAA,EAAA,QA0B6B,kBAAA;EAnCxC,KAAA,OAAO,SAAS,KACf,qBAAC,MAAD;GAAI,WAAU;GAAd,UAAA,CACG,OAAO,KAAK,OAAO,MAClB,oBAAC,yBAAD;IAEE,OAAO;KACL,GAAG;KACH,oBAAoB,aAAa,CAAC,CAAC,SAAU;KAC7C,eAAe,UACb,cAAc,iBAAe;MAC3B,GAAGC;MACH,UAAUA,YAAU,SAAU,KAAK,MACjC,UAAU,IACN,OAAO,OAAO,GAAG,OAAO,UAAU,aAAa,MAAM,CAAC,IAAI,KAAK,IAC/D,CACN;KACF,EAAE;KACJ,uBACE,cAAc,iBAAe;MAC3B,GAAGA;MACH,UAAUA,YAAU,SAAU,QAAQ,QAAMC,QAAM,KAAK;KACzD,EAAE;KACJ,eAAe,aAAa,wBAAwB,eAAe,aAAa;KAChF,UAAU;KACV,YACE,oBAAoB,QACpB,iBAAiB,OAAQ,OAAO,IAAI,EAAE,EAAE;IAC5C;IAEA,UAAA,oBAAC,mBAAD,CAAoB,CAAA;GACG,GA1BlB,MAAM,EA0BY,CAC1B,GAED,oBAAC,MAAD;IACE,WAAU;IACV,aAAW,aAAa,UAAU,CAAC,gBAAgB;IACnD,KAAK;GACN,CAAA,CACC;;EAbM,EAAA,MAAA;EAzBXH,EAAAA,MAAAA;EAO6B,EAAA,MAAA;EAgBV,EAAA,MAAA;EAYU,EAAA,MAAA;EAb+C,EAAA,MAAA;EAAvCC,EAAAA,MAAAA;EAc3B,EAAA,MAAA;EA3BC,EAAA,MAAA;EA0B6B,EAAA,MAAA;;;CAMzCG,IAAAA;CAII,IAAA,EAAA,QAAA,cAAA;EAJJ,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,eAAe;IACb,aAAaC,QAGX;GACJ;GACA,GAAI;GAEJ,UAAA;EACM,CAAA;EARJ,EAAA,MAAA;;;CAtDNC,IAAAA;CAGGT,IAAAA,EAAAA,QAAAA,MAAAA,EAAAA,QAMAE,MAAAA,EAAAA,QAyCDK,IAAAA;EAlDF,KAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACER;IAECC;IAMAE;IAyCDK;GAaG;;EA5DFP,EAAAA,MAAAA;EAMAE,EAAAA,MAAAA;EAyCDK,EAAAA,MAAAA;;;CAnDJ,OACEE;AAiEJ;AAXuB,SAAA,SAAC,aAAA;CAAe,OAAA;EAC3B,GAAGJ;EACH,UAAU,CAAC,GAAIA,YAAU,YAAY,CAAC,GAAI,gBAAgB,EAAE,WAAW,GAAG,CAAC,CAAC;CAC9E;;AAlEoB,SAAA,SAAC,aAAA;CAAyBA,OAAAA,YAAU;;AAD7B,SAAA,SAAC,aAAA;CAAcA,OAAAA,YAAU;;AADpC,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;AA8EnD,IAAM,2BAAyB;AAE/B,SAAgB,oBAAoB;;CAClC,MAAM,0BAA0B,2BAA2B;CAC3D,MAAM,EAAE,gBAAgB,cAAc,kBAAkB,UAAU,aAAa,eAC7E;CACF,MAAM,KAAK,aAAad,QAA2B;CACnD,MAAM,YAAY,aAAamB,QAAkC;CACjE,MAAM,OAAO,aAAaC,QAA6B;CACvD,MAAM,WAAW,aAAaC,MAAiC;CAC/D,MAAM,YAAY,aAAaC,MAAkC;CACjDC,IAAAA;CAAmB,IAAA,EAAA,OAAA,QAAA,EAAA,OAAnB,gBAAA;EAAe,KAAA,eAAA,IAAI,IAAI,CAAC,EAAE;EAAP,EAAA,KAAA;EAAnB,EAAA,KAAA;;;CAAhB,MAAM,UAAUA;CAaPC,IAAAA;CAAC,IAAA,EAAA,OAAA,aAAA,EAAA,OAAW,MAAA;EAAZ,KAAA,CAAC,WAAW,IAAI,CAAC,CAAC,OAAOC,OAAQ;EAAhC,EAAA,KAAA;EAAW,EAAA,KAAA;;;CAAZ,MAAA,KAAA,GAAmC,KAAK,IAAI;CAC5C,MAAA,KAAA,WAAW,MAAM;CALlBC,IAAAA;CAICC,IAAAA,EAAAA,OAAAA,MAAAA,EAAAA,OACAC,IAAAA;EALD,KAAA;GACJ,MAAM;GACN,MACE,qBAAA,UAAA,EAAA,UAAA,CACGD,IACAC,EACD,EAAA,CAAA;EAEN;EAJOD,EAAAA,KAAAA;EACAC,EAAAA,KAAAA;;;CAPQC,IAAAA;CACf,IAAA,EAAA,OAAA,MAAA,EAAA,QACMH,IAAAA;EAFS,KAAA;GACf;GACA,MAAMA;EASR;EAVE,EAAA,KAAA;EACMA,EAAAA,MAAAA;;;CAPR,MAAM,EACJ,YACA,WACA,YAAY,iBACZ,eACE,aAAaG,EAWhB;CACD,MAAM,mBAAmB,cAAc;CAG/BC,IAAAA;CAAwB,IAAA,EAAA,QAAA,MAAA,EAAA,QAAtB,YAAA,EAAA,QAAmC,kBAAA;EAArC,KAAA;GAAE;GAAU,YAAY;GAAI,SAAS;EAAiB;EAA9B,EAAA,MAAA;EAAtB,EAAA,MAAA;EAAmC,EAAA,MAAA;;;CACjC,MAAA,KAAA,eAAe,kBAAkB,SAAA;CAHgBC,IAAAA;CAC3D,IAAA,EAAA,QAAA,MAAA,EAAA,QACMD,MAAAA,EAAAA,QACIvB,IAAAA;EAHiD,KAAA;GAC3D;GACA,MAAMuB;GACN,UAAUvB;EACZ;EAHE,EAAA,MAAA;EACMuB,EAAAA,MAAAA;EACIvB,EAAAA,MAAAA;;;CAHZ,MAAM,EAAE,YAAY,iBAAiB,WAAW,aAAawB,EAI5D;CAM6B,MAAA,KAAA,UAAU,CAAC;CAAxBC,IAAAA;CAAaC,IAAAA,EAAAA,QAAAA,IAAAA;EAAb,MAAA,aAAaA,EAA2B;EAA3BA,EAAAA,MAAAA;;;CAF1BC,IAAAA;CAGO,IAAA,EAAA,QAAA,mBAAA,EAAA,QADMF,KAAAA;EAFb,MAAA,oBAAC,MAAD;GACE,WAAU;GACV,aAAWA;GACX,KAAK;EACN,CAAA;EADM,EAAA,MAAA;EADMA,EAAAA,MAAAA;;;CAMIG,IAAAA;CAAa,IAAA,EAAA,QAAA,YAAA;EAAb,MAAA,aAAa,UAAU;EAAV,EAAA,MAAA;;;CAIG,MAAA,MAAA,WAAW;CAAxBC,IAAAA;CAAaC,IAAAA,EAAAA,QAAAA,KAAAA;EAAb,MAAA,aAAaA,GAAe;EAAfA,EAAAA,MAAAA;;;CAG7BC,IAAAA;;EAAC,MAAA,oBAAA,aAAD,CAAc,CAAA;;;CAKFC,IAAAA;CAAS,IAAA,EAAA,QAAA,cAAA;EAAT,OAAC,QAAQ,aAAa,EAAE,WAAW,IAAI,OAAO,MAAM,CAAC;EAA5C,EAAA,MAAA;;;CAGH,MAAA,MAAA,IAAI,aAAa,yBAAA,CAAwB,OAAO;CAAzDC,IAAAA;CAASC,IAAAA,EAAAA,QAAAA,KAAAA;EAAT,MAAA,EAAE,OAAOA,IAAoD;EAApDA,EAAAA,MAAAA;;;CAPlBC,IAAAA;CAGS,IAAA,EAAA,QAAA,aAAA,EAAA,QACGH,OAAAA,EAAAA,QAGHC,KAAAA;EAPT,MAAA,oBAAC,SAAD;GACE,WAAU;GACV,aAAa;GACb,OAAO;GACP,UAAUD;GACV,UAAA;GACA,SAAQ;GACR,OAAOC;GACP,GAAI;EACL,CAAA;EANQ,EAAA,MAAA;EACGD,EAAAA,MAAAA;EAGHC,EAAAA,MAAAA;;;CAGTG,IAAAA;;EAAC,MAAA,oBAAA,QAAD;GAAM,WAAU;GAAmB,UAAA;EAAO,CAAA;;;CAEjCC,IAAAA;CAA+C,IAAA,EAAA,QAAA,aAAA,EAAA,QAA1C,yBAAA;EAAL,MAAA;GAAE,GAAG;GAAyB,iBAAiB;EAAU;EAAV,EAAA,MAAA;EAA1C,EAAA,MAAA;;;CAEZC,IAAAA;;EAAC,MAAA,oBAAA,YAAD,CAAa,CAAA;;;CAHfC,IAAAA;CACSF,IAAAA,EAAAA,QAAAA,KAAAA;EADT,MAAA,oBAAC,yBAAD;GACE,OAAOA;GAEPC,UAAAA;EACuB,CAAA;EAHhBD,EAAAA,MAAAA;;;CAITG,IAAAA;CACAC,IAAAA;;EADA,MAAA,oBAAC,eAAD,CAAgB,CAAA;EAChB,MAAA,oBAAC,aAAD,CAAc,CAAA;;;;;;;CAnBhBC,IAAAA;CAEEP,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QAWAI,KAAAA;EAbF,MAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACER;IACAI;IAUAC;IACAG;IAKAC;IACAC;GACG;;EAlBHN,EAAAA,MAAAA;EAWAI,EAAAA,MAAAA;;;CASDI,IAAAA;CAIsB,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,aAAA,EAAA,QAJV,aAAA,EAAA,QAKM,eAAA,EAAA,QAAe,cAAA,EAAA,QAFzB,yBAAA;EAHR,MAAA,WAAW,CAAC,aACX,oBAAC,yBAAD;GACE,OAAO;IACL,GAAG;IACH,iBAAiB;IACjB,aAAa,eAAe;GAC9B;GAEA,UAAA,oBAAC,SAAD,CAAU,CAAA;EACa,CAAA;EAT1B,EAAA,MAAA;EAIsB,EAAA,MAAA;EAJV,EAAA,MAAA;EAKM,EAAA,MAAA;EAAe,EAAA,MAAA;EAFzB,EAAA,MAAA;;;CAjCXC,IAAAA;CAIM,IAAA,EAAA,QAAA,cAAA,EAAA,QADA,aAAA,EAAA,QAEC,mBAAA,EAAA,QAHUhB,OAAAA,EAAAA,QAIGC,OAAAA,EAAAA,QAElBa,OAAAA,EAAAA,QAsBCC,KAAAA;EA9BH,MAAA,qBAAC,MAAD;GACE,WAAU;GACV,iBAAef;GACf,GAAI;GACJ,GAAI;GACJ,KAAK;GACL,oBAAkBC;GANpB,UAAA,CAQEa,KAsBCC,GAWC;;EArCE,EAAA,MAAA;EADA,EAAA,MAAA;EAEC,EAAA,MAAA;EAHUf,EAAAA,MAAAA;EAIGC,EAAAA,MAAAA;EAElBa,EAAAA,MAAAA;EAsBCC,EAAAA,MAAAA;;;CArCLE,IAAAA;CACElB,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QAMAiB,KAAAA;EAPF,MAAA,qBAAA,UAAA,EAAA,UAAA,CACEjB,KAMAiB,GA0CA,EAAA,CAAA;EAhDAjB,EAAAA,MAAAA;EAMAiB,EAAAA,MAAAA;;;CARJ,OACEC;AAmDJ;AAjEoC,SAAA,QAAC,GAAA;CAAM,OAAA;;AAdV,SAAA,OAAC,aAAA;CAActC,OAAAA,YAAU;;AAD1B,SAAA,OAAC,aAAA;CAAcA,OAAAA,YAAU;;AAD7B,SAAA,SAAC,aAAA;CAAcA,OAAAA,YAAU;;AADpB,SAAA,SAAC,aAAA;CAAcA,OAAAA,YAAU;;AADhC,SAAA,SAAC,WAAA;CAAc,OAAA,UAAU;;;;AC5FnD,IAAa,gBAAgB;AAE7B,SAAgB,cAAc;;CAC5B,MAAM,0BAA0B,2BAA2B;CAC3D,MAAM,EAAE,cAAc,cAAc,kBAAkB,gBAAgB;CACtE,MAAM,KAAK,aAAauC,OAA2B;CACnD,MAAM,SAAS,aAAaC,QAA4C,KAAK,CAAC;CACrDC,IAAAA;CAAoD,IAAA,EAAA,OAAA,oBAAA,EAAA,OAAA,QAAA;EAApD,KAAA,oBAAoB,QAAQ,iBAAiB,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE;EAAnE,EAAA,KAAA;EAAoD,EAAA,KAAA;;;CAA7E,MAAM,mBAAmBA;CAEnB,MAAA,KAAA,GAAG,GAAG;CACJC,IAAAA;CAAY,IAAA,EAAA,OAAA,MAAA,EAAA,OAA+B,kBAAA;EAA3C,KAAA;GAAE,UAAU;GAAI,YAAY;GAAM,SAAS;EAAiB;EAAhD,EAAA,KAAA;EAA+B,EAAA,KAAA;;;CACvC,MAAA,KAAA,eAAe,kBAAkB,SAAA;CAHgBC,IAAAA;CACvDC,IAAAA,EAAAA,OAAAA,MAAAA,EAAAA,OACEF,MAAAA,EAAAA,OACIG,IAAAA;EAHiD,KAAA;GAC3D,IAAID;GACJ,MAAMF;GACN,UAAUG;EACZ;EAHMD,EAAAA,KAAAA;EACEF,EAAAA,KAAAA;EACIG,EAAAA,KAAAA;;;CAHZ,MAAM,EAAE,YAAY,iBAAiB,WAAW,aAAaF,EAI5D;CAIGG,IAAAA;;EAAC,KAAA,oBAAA,kBAAD,CAAmB,CAAA;;;CAElBC,IAAAA;CAAOC,IAAAA,EAAAA,QAAAA,OAAAA,UAAAA,EAAAA,QACiD,UAAA,EAAA,QAAc,iBAAA;EADtE,KAAA,OAAO,WAAW,KACjB,oBAAC,OAAD;GAAK,WAAU;GAAgB,aAAW,aAAa,MAAM;GAAG,KAAK;GACnE,UAAA;EACG,CAAA;EAHCA,EAAAA,MAAAA,OAAAA;EACiD,EAAA,MAAA;EAAc,EAAA,MAAA;;;CAKtEC,IAAAA;CAwBW,IAAA,EAAA,QAAA,oBAAA,EAAA,QAxBXC,UAAAA,EAAAA,QAO6B,gBAAA,EAAA,QAeV,MAAA,EAAA,QAYU,UAAA,EAAA,QA5BjB,2BAAA,EAAA,QA6BF,mBAAA,EAAA,QA1BC,gBAAA,EAAA,QAyB6B,kBAAA;EAlCxC,KAAA,OAAO,SAAS,KACf,qBAAC,MAAD;GAAI,WAAU;GAAd,UAAA,CACG,OAAO,KAAK,OAAO,MAClB,oBAAC,yBAAD;IAEE,OAAO;KACL,GAAG;KACH,oBAAoB,aAAa,CAAC,CAAC,SAAU;KAC7C,eAAe,UACb,cAAc,iBAAe;MAC3B,GAAGC;MACH,UAAUA,YAAU,SAAU,KAAK,MACjC,UAAU,IACN,OAAO,OAAO,GAAG,OAAO,UAAU,aAAa,MAAM,CAAC,IAAI,KAAK,IAC/D,CACN;KACF,EAAE;KACJ,uBACE,cAAc,iBAAe;MAC3B,GAAGA;MACH,UAAUA,YAAU,SAAU,QAAQ,QAAMC,QAAM,KAAK;KACzD,EAAE;KACJ,UAAU;KACV,YACE,oBAAoB,QACpB,iBAAiB,OAAQ,OAAO,IAAI,EAAE,EAAE;IAC5C;IAEA,UAAA,oBAAC,kBAAD,CAAmB,CAAA;GACI,GAzBlB,MAAM,EAyBY,CAC1B,GAED,oBAAC,MAAD;IACE,WAAU;IACV,aAAW,aAAa,UAAU,CAAC,gBAAgB;IACnD,KAAK;GACN,CAAA,CACC;;EAbM,EAAA,MAAA;EAxBXF,EAAAA,MAAAA;EAO6B,EAAA,MAAA;EAeV,EAAA,MAAA;EAYU,EAAA,MAAA;EA5BjB,EAAA,MAAA;EA6BF,EAAA,MAAA;EA1BC,EAAA,MAAA;EAyB6B,EAAA,MAAA;;;CAMzCG,IAAAA;CAII,IAAA,EAAA,QAAA,cAAA;EAJJ,KAAA,oBAAC,UAAD;GACE,WAAU;GACV,MAAK;GACL,eAAe;IACb,aAAaC,QAGX;GACJ;GACA,GAAI;GAEJ,UAAA;EACM,CAAA;EARJ,EAAA,MAAA;;;CArDNC,IAAAA;CAGGR,IAAAA,EAAAA,QAAAA,MAAAA,EAAAA,QAMAE,MAAAA,EAAAA,QAwCDI,IAAAA;EAjDF,KAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACEP;IAECC;IAMAE;IAwCDI;GAaG;;EA3DFN,EAAAA,MAAAA;EAMAE,EAAAA,MAAAA;EAwCDI,EAAAA,MAAAA;;;CAlDJ,OACEE;AAgEJ;AAXuB,SAAA,SAAC,aAAA;CAAe,OAAA;EAC3B,GAAGJ;EACH,UAAU,CAAC,GAAIA,YAAU,YAAY,CAAC,GAAI,gBAAgB,EAAE,WAAW,GAAG,CAAC,CAAC;CAC9E;;AAjEoB,SAAA,SAAC,aAAA;CAAyBA,OAAAA,YAAU;;AADxC,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;AA4EnD,IAAM,yBAAyB;AAE/B,SAAgB,mBAAmB;;CAEjC,MAAM,EAAE,gBAAgB,cAAc,kBAAkB,UAAU,aAAa,eAD/C,2BAE9B;CACF,MAAM,KAAK,aAAaZ,MAA2B;CACnD,MAAM,YAAY,aAAaiB,MAAkC;CACjE,MAAM,OAAO,aAAaC,MAA6B;CACvCC,IAAAA;CAAmB,IAAA,EAAA,OAAA,QAAA,EAAA,OAAnB,gBAAA;EAAe,KAAA,eAAA,IAAI,IAAI,CAAC,EAAE;EAAP,EAAA,KAAA;EAAnB,EAAA,KAAA;;;CAAhB,MAAM,UAAUA;CASwBC,IAAAA;CAAC,IAAA,EAAA,OAAA,aAAA,EAAA,OAAW,MAAA;EAAZ,KAAA,CAAC,WAAW,IAAI,CAAC,CAAC,OAAOC,MAAQ;EAAhC,EAAA,KAAA;EAAW,EAAA,KAAA;;;CAAZ,MAAA,KAAA,GAAmC,KAAK,IAAI;CAA5EC,IAAAA;CAAgCC,IAAAA,EAAAA,OAAAA,IAAAA;EAAhC,KAAA;GAAE,MAAM;GAAe,MAAM,oBAAA,UAAA,EAAA,UAAGA,GAAgD,CAAA;EAAE;EAAlDA,EAAAA,KAAAA;;;CAFvBC,IAAAA;CACf,IAAA,EAAA,OAAA,MAAA,EAAA,OACMF,IAAAA;EAFS,KAAA;GACf;GACA,MAAMA;EACR;EAFE,EAAA,KAAA;EACMA,EAAAA,KAAAA;;;CAPR,MAAM,EACJ,YACA,WACA,YAAY,iBACZ,eACE,aAAaE,EAGhB;CACD,MAAM,mBAAmB,cAAc;CAG/BC,IAAAA;CAAwB,IAAA,EAAA,QAAA,MAAA,EAAA,QAAtB,YAAA,EAAA,QAAmC,kBAAA;EAArC,KAAA;GAAE;GAAU,YAAY;GAAI,SAAS;EAAiB;EAA9B,EAAA,MAAA;EAAtB,EAAA,MAAA;EAAmC,EAAA,MAAA;;;CACjC,MAAA,KAAA,eAAe,kBAAkB,SAAA;CAHgBC,IAAAA;CAC3D,IAAA,EAAA,QAAA,MAAA,EAAA,QACMD,MAAAA,EAAAA,QACInB,IAAAA;EAHiD,KAAA;GAC3D;GACA,MAAMmB;GACN,UAAUnB;EACZ;EAHE,EAAA,MAAA;EACMmB,EAAAA,MAAAA;EACInB,EAAAA,MAAAA;;;CAHZ,MAAM,EAAE,YAAY,iBAAiB,WAAW,aAAaoB,EAI5D;CAM6B,MAAA,KAAA,UAAU,CAAC;CAAxBC,IAAAA;CAAaC,IAAAA,EAAAA,QAAAA,IAAAA;EAAb,KAAA,aAAaA,EAA2B;EAA3BA,EAAAA,MAAAA;;;CAF1BC,IAAAA;CAGO,IAAA,EAAA,QAAA,mBAAA,EAAA,QADMF,IAAAA;EAFb,MAAA,oBAAC,MAAD;GACE,WAAU;GACV,aAAWA;GACX,KAAK;EACN,CAAA;EADM,EAAA,MAAA;EADMA,EAAAA,MAAAA;;;CAMIG,IAAAA;CAAa,IAAA,EAAA,QAAA,YAAA;EAAb,MAAA,aAAa,UAAU;EAAV,EAAA,MAAA;;;CAIG,MAAA,MAAA,WAAW;CAAxBC,IAAAA;CAAaC,IAAAA,EAAAA,QAAAA,KAAAA;EAAb,MAAA,aAAaA,GAAe;EAAfA,EAAAA,MAAAA;;;CAG7BC,IAAAA;;EAAC,MAAA,oBAAA,aAAD,CAAc,CAAA;;;CAKFC,IAAAA;CAAS,IAAA,EAAA,QAAA,cAAA;EAAT,OAAC,QAAQ,aAAa,EAAE,WAAW,IAAI,OAAO,MAAM,CAAC;EAA5C,EAAA,MAAA;;;CAGH,MAAA,MAAA,IAAI,aAAa,uBAAA,CAAwB,OAAO;CAAzDC,IAAAA;CAASC,IAAAA,EAAAA,QAAAA,KAAAA;EAAT,MAAA,EAAE,OAAOA,IAAoD;EAApDA,EAAAA,MAAAA;;;CAPlBC,IAAAA;CAGS,IAAA,EAAA,QAAA,aAAA,EAAA,QACGH,OAAAA,EAAAA,QAGHC,KAAAA;EAPT,MAAA,oBAAC,SAAD;GACE,WAAU;GACV,aAAa;GACb,OAAO;GACP,UAAUD;GACV,UAAA;GACA,SAAQ;GACR,OAAOC;GACP,GAAI;EACL,CAAA;EANQ,EAAA,MAAA;EACGD,EAAAA,MAAAA;EAGHC,EAAAA,MAAAA;;;CAGTG,IAAAA;;EAAC,MAAA,oBAAA,aAAD,CAAc,CAAA;;;CAZhBC,IAAAA;CAEEF,IAAAA,EAAAA,QAAAA,KAAAA;EAFF,MAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACEJ;IACAI;IAUAC;GACG;;EAXHD,EAAAA,MAAAA;;;CAVJG,IAAAA;CAIM,IAAA,EAAA,QAAA,cAAA,EAAA,QADA,aAAA,EAAA,QAEC,mBAAA,EAAA,QAHUV,OAAAA,EAAAA,QAIGC,OAAAA,EAAAA,QAElBQ,KAAAA;EARF,MAAA,oBAAC,MAAD;GACE,WAAU;GACV,iBAAeT;GACf,GAAI;GACJ,GAAI;GACJ,KAAK;GACL,oBAAkBC;GAElBQ,UAAAA;EAcE,CAAA;EAlBE,EAAA,MAAA;EADA,EAAA,MAAA;EAEC,EAAA,MAAA;EAHUT,EAAAA,MAAAA;EAIGC,EAAAA,MAAAA;EAElBQ,EAAAA,MAAAA;;;CAfJE,IAAAA;CACEZ,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QAMAW,KAAAA;EAPF,MAAA,qBAAA,UAAA,EAAA,UAAA,CACEX,KAMAW,GAuBA,EAAA,CAAA;EA7BAX,EAAAA,MAAAA;EAMAW,EAAAA,MAAAA;;;CARJ,OACEC;AAgCJ;AA1CmE,SAAA,OAAC,GAAA;CAAM,OAAA;;AAV9C,SAAA,OAAC,aAAA;CAAc7B,OAAAA,YAAU;;AADpB,SAAA,OAAC,aAAA;CAAcA,OAAAA,YAAU;;AADhC,SAAA,OAAC,WAAA;CAAc,OAAA,UAAU;;;;AC1FnD,SAAgB,gBAAA,IAAiE;;CAAjD,MAAA,EAAE,gBAAA,OAAF8B;CAAE,MAAA,iBAAA,OAAA,KAAA,IAAiB,OAAjBC;CAChC,MAAM,0BAA0B,2BAA2B;CAC3D,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,KAAK,aAAaC,OAA2B;CAO7BC,IAAAA;CAAM,IAAA,EAAA,OAAA,cAAA;EAAN,WAAM,aAAa,CAAC,CAAC,SAAU;EAAzB,EAAA,KAAA;;;CACNC,IAAAA;CACZ,IAAA,EAAA,OAAA,cAAA;EADY,MAAC,UACb,cAAc,iBAAe;GAC3B,GAAGC;GACH,UAAU,CACR;IACE,GAAGA,YAAU,SAAU;IACvB,GAAI,OAAO,UAAU,aAAa,MAAMA,YAAU,SAAU,EAAE,IAAI;GACpE,CACF;EACF,EAAE;EARF,EAAA,KAAA;;;CAJGC,IAAAA;CAcK,IAAA,EAAA,OAAA,MAAA,EAAA,OAbP,2BAAA,EAAA,OACWH,MAAAA,EAAAA,OACAC,IAAAA;EAHT,KAAA;GACL,GAAG;GACH,cAAcD;GACd,cAAcC;GAUd,iBAAiBG;GACjB,UAAU;EACZ;EADY,EAAA,KAAA;EAbP,EAAA,KAAA;EACWJ,EAAAA,KAAAA;EACAC,EAAAA,KAAAA;;;CAchBI,IAAAA;CAAqC,IAAA,EAAA,OAAA,gBAAA;EAArC,KAAA,oBAAC,qBAAD,EAAqC,eAAiB,CAAA;EAAjB,EAAA,KAAA;;;CAnBzCC,IAAAA;CAEWH,IAAAA,EAAAA,QAAAA,MAAAA,EAAAA,QAiBPE,IAAAA;EAnBJ,KAAA,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,oBAAC,yBAAD;IACE,OAAOF;IAiBPE,UAAAA;GACuB,CAAA;EACtB,CAAA;EAnBMF,EAAAA,MAAAA;EAiBPE,EAAAA,MAAAA;;;CApBN,OACEC;AAuBJ;AAR2B,SAAA,WAAM,CAAC;AAlBR,SAAA,QAAC,WAAA;CAAc,OAAA,UAAU;;AA4BnD,SAAgB,mCAAmC;;CAC1CC,IAAAA;;EAAC,KAAA,oBAAA,iBAAD,EAAiB,gBAAgB,MAAQ,CAAA;;;CAAhD,OAAOA;AACT;AAIA,SAAgB,oBAAA,IAAyE;;CAArD,MAAA,EAAE,gBAAA,OAAFC;CAAE,MAAA,iBAAA,OAAA,KAAA,IAAiB,OAAjBV;CACpC,MAAM,EAAE,mBAAmB,2BAA2B;CACtD,MAAM,OAAO,aAAaW,QAA6B;CACvCC,IAAAA;CAAmB,IAAA,EAAA,OAAA,QAAA,EAAA,OAAnB,gBAAA;EAAe,KAAA,eAAA,IAAI,IAAI,CAAC,EAAE;EAAP,EAAA,KAAA;EAAnB,EAAA,KAAA;;;CAAhB,MAAM,UAAUA;CAIXC,IAAAA;;EAAkB,KAAA,kBAAA,oBAAC,YAAD,CAAa,CAAA;EAA/B,EAAA,KAAA;;;CACAC,IAAAA;;EAAW,KAAA,WAAA,oBAAC,SAAD,CAAU,CAAA;EAArB,EAAA,KAAA;;;CAFHC,IAAAA;CACGF,IAAAA,EAAAA,OAAAA,MAAAA,EAAAA,OACAC,IAAAA;EAFH,KAAA,qBAAA,UAAA,EAAA,UAAA,CACGD,IACAC,EACD,EAAA,CAAA;EAFCD,EAAAA,KAAAA;EACAC,EAAAA,KAAAA;;;CAHL,OACEC;AAKJ;AAT4B,SAAA,SAAC,WAAA;CAAc,OAAA,UAAU;;;;AClDrD,IAAM,KAAK;AACX,IAAM,aAAa;AACnB,IAAM,QAAQ;AACd,IAAM,WAAW;;AAGjB,SAAgB,KAAK,SAA+B,GAAG,QAAuB;CAC5E,MAAM,YAAY,KAAK,IAAI,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,WAAW,CAAC;CAE5F,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;EACtC,MAAM,gBAAgB,oBAAoB,QAAQ,IAAI,SAAS;EAC/D,UAAU;EACV,UAAU,sBACR,OAAO,OAAO,EAAE,GAChB,YAAY,cAAc,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAE,CAC7C;CACF;CACA,UAAU,oBAAoB,QAAQ,GAAG,EAAE,GAAI,SAAS;CACxD,OAAO,OAAO,QAAQ,UAAU,EAAE;AACpC;AAEA,SAAS,WAAW,MAAuB;CACzC,OAAO,CAAC,WAAW,KAAK,IAAI;AAC9B;AAEA,SAAS,YAAY,MAAsB;CACzC,IAAI,QAAQ;CACZ,KAAK,MAAM,KAAK,MAAM;EACpB,IAAI,CAAC,MAAM,KAAK,CAAC,GACf;EAEF,EAAE;CACJ;CACA,OAAO;AACT;AAEA,SAAS,sBAAsB,KAAa,aAA6B;CACvE,MAAM,QAAQ,IAAI,MAAM,EAAE;CAC1B,MAAM,cAAwB,CAAC,MAAM,EAAE;CACvC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;EACrC,MAAM,OAAO,MAAM;EACnB,YAAY,KAAK,QAAQ,IAAI,OAAO,WAAW,IAAI,IAAI;CACzD;CACA,OAAO,YAAY,KAAK,IAAI;AAC9B;AAEA,SAAS,oBAAoB,KAAa,aAA6B;CACrE,MAAM,QAAQ,IAAI,MAAM,EAAE;CAC1B,MAAM,cAAwB,CAAC,MAAM,EAAE;CACvC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAClC,YAAY,KAAK,MAAM,EAAE,CAAC,MAAM,WAAW,CAAC;CAE9C,OAAO,YAAY,KAAK,IAAI;AAC9B;;;ACpCA,IAAa,kBAAkB;AAyB/B,IAAa,mBAAkC;CAC7C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,UAAU;CACV,cAAc;CACd,oBAAoB;AACtB;AACA,IAAa,0BAAyC;CACpD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,0BAAyC;CACpD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,uBAAsC;CACjD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;AAChB;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,qBAAoC;CAC/C,MAAM;CACN,QAAQ;CACR,eAAe,cAAc,GAAG,UAAU,KAAK;CAC/C,SAAS;CACT,oBAAoB,CAAC;CACrB,uBAAuB,cAAsB,UAAU,YAAY;CACnE,cAAc,cAAsB,WAAW,SAAS;CACxD,gBAAgB,WAAW,SACzB,IAAI;mBACW,UAAU,KAAK;YACtB,UAAU,UACR,KAAK,mBAAmB;EACxB,MAAM,YAAY;GAChB,GAAG;GACH,aAAa,UAAU,KAAK,aAAa,eAAe,SAAS;EACnE;EAEA,OAAO,SACL,4BAA4B,gBAAgB,SAAS,GACrD,OAAO,eAAe,UAAU,IAAI,aAClC,gBACA,SACF,EAAE,KAAK,qBAAqB,gBAAgB,SAAS,GACvD;CACF,CAAC,CAAC,CACD,KAAK,KAAK,EAAE;;;CAGvB,iBAAiB,WAAW,SAC1B,IAAI;;YAEI,UAAU,UACR,KACC,mBACC,GAAG,UAAU,KAAK,IAAI,eAAe,UAAU,KAAK,eAAe,gBAAgB;EACjF,GAAG;EACH,aAAa,UAAU,KAAK,aAAa,eAAe,SAAS;CACnE,CAAC,EAAE,GACP,CAAC,CACA,KAAK,IAAI,EAAE;;;AAGxB;AACA,IAAa,sBAAqC;CAChD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,eAAe,cAAc,GAAG,UAAU,KAAK,GAAG,UAAU,WAAW,EAAE,CAAC;CAC1E,SAAS;CACT,oBAAoB,CAAC;CACrB,cAAc,cAAsB,WAAW,SAAS;CACxD,gBAAgB,cACd,IAAI;mBACW,UAAU,KAAK;YACtB,UAAU,UAAU,KAAK,mBAAmB,eAAe,SAAU,CAAC,CAAC,KAAK,KAAK,EAAE;;;AAG/F;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,eAAe,YAAY,SAAS;EAClC,KAAK,YAAY,QAAQ,IAAI,kDAAkD;EAC/E,OAAO;CACT;CACA,sBAAsB,YAAY,SAAS;EACzC,IAAI,KAAK,yBAAyB;GAChC,KAAK,YAAY,QAAQ,IAAI,oDAAoD;GACjF,OAAO;EACT;CACF;AACF;AACA,IAAa,qBAAoC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,uBAAsC;CACjD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,mBAAkC;CAC7C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;CACd,SAAS;CACT,oBAAoB,CAAC,gBAAgB,CAAC;CACtC,eAAe,WAAW,SACxB,QAAQ,aAAa,UAAU,SAAU,IAAI;EAC3C,GAAG;EACH,aAAa,UAAU,KAAK,aAAa,GAAG;CAC9C,CAAC,EAAE;CACL,iBAAiB,WAAW,SAC1B,gBAAgB,eAAe,UAAU,SAAU,IAAI;EACrD,GAAG;EACH,aAAa,UAAU,KAAK,aAAa,GAAG;CAC9C,CAAC,EAAE;AACP;AACA,IAAa,yBAAwC;CACnD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,6BAA4C;CACvD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,oBAAmC;CAC9C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,qBAAoC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,iBAAiB;CACjB,cAAc;AAChB;AACA,IAAa,sBAAqC;CAChD,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;AAChB;AACA,IAAa,qBAAoC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,QAAQ;CACR,eAAe,YAAY,SAAS;EAClC,KAAK,YAAY,QAAQ,IAAI,qCAAqC;EAClE,OAAO;CACT;CACA,SAAS;CACT,oBAAoB,CAAC,gBAAgB,CAAC;CACtC,sBAAsB,YAAY,SAAS;EACzC,IAAI,KAAK,0BAA0B;GACjC,KAAK,YAAY,QAAQ,IAAI,qDAAqD;GAClF,OAAO;EACT;CACF;CACA,eAAe,WAAW,SACxB,SAAS,aAAa,UAAU,SAAU,IAAI;EAC5C,GAAG;EACH,aAAa,UAAU,KAAK,aAAa,GAAG;CAC9C,CAAC,EAAE;CACL,iBAAiB,WAAW,SAC1B,iBAAiB,eAAe,UAAU,SAAU,IAAI;EACtD,GAAG;EACH,aAAa,UAAU,KAAK,aAAa,GAAG;CAC9C,CAAC,EAAE;AACP;AAEA,IAAa,wBAAwB;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;AC1SA,SAAgB,gBAAgB,WAAsB,MAA6B;CACjF,MAAM,WAAW,UAAU,KAAK,YAAY,GAAG,UAAU,KAAK,UAAU;CACxE,IAAI,OAAO,KAAK,MAAM,IAAI,QAAQ;CAClC,IAAI,CAAC,MAAM;EACT,KAAK,MAAM,IAAI,UAAW,OAAO,OAAO,IAAI,CAAE;EAC9C,KAAK,MAAM,IAAI,UAAU,KAAK,YAAY,GAAG,UAAU,KAAK,eAAe,GAAG,OAAO,IAAI,CAAC;CAC5F;CACA,0BAA0B,WAAW;EAAE,GAAG;EAAM,aAAa;CAAK,CAAC;AACrE;AAEA,SAAS,0BAA0B,WAAsB,MAAoB;CAC3E,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,MAAM,SAAS,KAAK,YAAY,aAAa;CAC7C,KAAK,YAAY,aAAa,KAAK,EAAE;CACrC,MAAM,OAAO,OAAO,UAAU,KAAK,WACjC,cAAc,iBAAiB,WAAW,IAAI,KAAK,GAAG,aAAa,cAAc,MAAM,EAAE;CAE3F,KAAK,YAAY,QAAQ,IAAI,cAAc,MAAM;CACjD,KAAK,YAAY,aAAa,UAAU,KAAK,gBAAgB,MAAM,SAAS,MAAM,IAAI,IAAI;AAC5F;AAEA,SAAgB,eAAe,WAAsB,MAAsB;CACzE,MAAM,gBAAgB,KAAK,eAAe,IAAI,UAAU,IAAI;CAC5D,IAAI,CAAC,eACH,MAAM,IAAI,MAAM,4BAA4B,UAAU,KAAK,GAAG;CAGhE,MAAM,mBACJ,cAAc,WAAW,aAAa,KAAK,gBAAgB,UAAU,aAAa;CAEpF,IAAI;CACJ,IAAI,cAAc,WAAW,QAAQ,qBAAqB,KAAK,gBAAgB;EAC7E,mBAAmB,GAAG,UAAU,KAAK;EACrC,KAAK,YAAY,QAAQ,IAAI,GAAG,iBAAiB,GAAG,kBAAkB;EACtE,gBAAgB,WAAW;GACzB,GAAG;GACH,gBAAgB,aAAa,KAAK,gBAAgB,UAAU,aAAa;GACzE,YAAY,UAAU,KAAK,YAAY,UAAU,eAAe,QAAQ,KAAK,GAAG,CAAC;EACnF,CAAC;CACH,OAAO;EACL,mBACE,cAAc,iBAAiB,WAAW,IAAI,KAAK,GAAG,aAAa,cAAc,MAAM,EAAE;EAC3F,KAAK,YAAY,QAAQ,IAAI,cAAc,MAAM;CACnD;CAEA,IAAI,UAAU,UAAU;EACtB,KAAK,YAAY,QAAQ,IAAI,eAAe;EAC5C,OAAO,GAAG,aAAa,eAAe,EAAE,KAAK,iBAAiB;CAChE;CACA,OAAO;AACT;;;;;;ACnDA,SAAgB,gBACd,SACA,SACA,EAAE,QAAQ,QAAQ,YAAY,GAAG,eAAuC,CAAC,GACxD;CACjB,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;CACd;AACF;AAEA,SAAS,yBAAwE;CAC/E,OAAO,OAAO,KAAK,SAAS,KAAK,SAAS;EACxC,QAAQ;EACR,oBAAoB,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC;EAClD,GAAG,KAAK;CACV,CAAC;AACH;;;AC9BA,SAAgB,mBACd,MACA,UACA,SACA,SACA,SACM;CACN,KAAK,MAAM,IAAI,UAAU,KAAK,YAAY,QAAQ,GAAG,gBAAgB,SAAS,SAAS,OAAO,CAAC;AACjG;;;ACLA,SAAgB,mBAAmB,WAAsB,MAA6B;CACpF,mBAAmB,MAAM,GAAG,UAAU,KAAK,gBAAgB,uBAAc;EACvE,aAAa,KAAK;EAClB,SAAS,UAAU,UAAU,IAAK;EAClC,WAAW,UAAU;CACvB,CAAC;AACH;;;;;;ACNA,SAAgB,kBAAkB,WAAsB,MAA6B;CACnF,mBAAmB,MAAM,GAAG,UAAU,KAAK,eAAe,sBAAa;EACrE,aAAa,KAAK;EAClB,SAAS,UAAU,UAAU,IAAK;EAClC,WAAW,UAAU;CACvB,CAAC;AACH;;;;ACVA,IAAa,sBAAsB,OAAO,aAAa,cAAc,kBAAkB;;;;ACAvF,SAAgB,WACd,SACA,gBACA;;CACoBC,IAAAA;CAkBjBC,IAAAA;CAjBI,IAAA,EAAA,OAAA,WAAA,EAAA,OACH,gBAAA;EAFgB,WAAM;GACxB,IAAI,CAAC,SAAS;IACZ,eAAe,KAAA,CAAS;IACxB;GACF;GAEA,MAAM,WAAW,eAAe,QAAQ,sBAAsB,CAAC;GAC/D,GAAG;GAEH,MAAM,WAAW,IAAI,gBAAA,OAAgB;IAAC,MAAA,CAAA,SAADC;IAAY,OAAA,SAAS,GAAG;GAAlB,CAAmB;GAC9D,SAAS,QAAQ,OAAO;GACxB,OAAO,iBAAiB,UAAU,EAAE;GAEpC,aAAa;IACX,SAAS,WAAW;IACpB,OAAO,oBAAoB,UAAU,EAAE;IACvC,eAAe,KAAA,CAAS;GAC1B;EACF;EAAG,KAAA,CAAC,SAAS,cAAc;EAjBpB,EAAA,KAAA;EACH,EAAA,KAAA;;;;;;;CAFJ,oBAAoBF,IAkBjBC,EAAyB;AAC9B;;;AClBA,SAAgB,uBAAA,IAAkE;;CAA3C,MAAA,EAAE,aAAFE;CACrC,MAAM,CAAC,UAAU,eAAe,SAAmC,IAAI;CACvE,MAAM,CAAC,WAAW,gBAAgB,SAAgC,IAAI;CACjDC,IAAAA;CACf,IAAA,EAAA,OAAA,WAAA;EADe,MAAC,gBAAgB;GACpC,IAAI,aAAa,aAAa;IAC5B,UAAU,MAAM,YAAY,gBAAgB,GAAG,YAAY,IAAI,GAAG;IAClE,UAAU,MAAM,YAAY,iBAAiB,GAAG,YAAY,KAAK,GAAG;IACpE,UAAU,MAAM,YAAY,mBAAmB,GAAG,YAAY,OAAO,GAAG;IACxE,UAAU,MAAM,YAAY,kBAAkB,GAAG,YAAY,MAAM,GAAG;IACtE,UAAU,MAAM,YAAY,kBAAkB,GAAG,YAAY,MAAM,GAAG;IACtE,UAAU,MAAM,YAAY,mBAAmB,GAAG,YAAY,OAAO,GAAG;GAC1E;EACF;EARM,EAAA,KAAA;;;CADN,WAAW,UAAUA,EASpB;CACqBC,IAAAA;CAChB,IAAA,EAAA,OAAA,WAAA;EADgB,MAAC,kBAAgB;GACrC,IAAI,aAAaC,eAAa;IAC5B,UAAU,MAAM,YAAY,WAAW,GAAGA,cAAY,MAAM,GAAG;IAC/D,UAAU,MAAM,YAAY,YAAY,GAAGA,cAAY,OAAO,GAAG;GACnE;EACF;EAJM,EAAA,KAAA;;;CADN,WAAW,WAAWD,EAKrB;CAIGE,IAAAA;;EAAC,KAAA,oBAAA,UAAD;GACE,MAAK;GACL,WAAU;GACV,eAAc;GACd,OAAM;GACN,cAAW;GACX,KAAK;GAEL,UAAA;EACM,CAAA;;;CAVVC,IAAAA;CAYK,IAAA,EAAA,OAAA,UAAA;EAZL,KAAA,qBAAA,UAAA,EAAA,UAAA,CACED,IAUA,oBAAC,OAAD;GAAK,SAAQ;GAAG,IAAG;GAAyB,KAAK;GAC9C;EACE,CAAA,CACL,EAAA,CAAA;EAFG,EAAA,KAAA;;;CAbP,OACEC;AAgBJ;;;ACEA,IAAM,mBAAoC,EAAE,YAAY,+BAA+B;AACvF,IAAM,mBAAoC,EAAE,YAAY,+BAA+B;AAEvF,IAAM,sBAAA;AACN,IAAM,sBAAsB;CAC1B,iBAAiB,iBAAiB,gBAAgB;CAClD,iBAAiB,gBAAgB,gBAAgB;CACjD,iBAAiB,oBAAoB,gBAAgB;CACrD,iBAAiB,mBAAmB,gBAAgB;AACtD;AACA,IAAM,4BAA4B,cAAyB,UAAU;AACrE,IAAM,kBACJ,qBAAA,UAAA,EAAA,UAAA;CACE,oBAAC,eAAD,CAAgB,CAAA;CAChB,oBAAC,eAAD,CAAgB,CAAA;CAChB,oBAAC,eAAD,CAAgB,CAAA;AAChB,EAAA,CAAA;AAEJ,IAAM,kBACJ,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,+BAAD,CAAgC,CAAA,GAChC,oBAAC,gCAAD,CAAiC,CAAA,CACjC,EAAA,CAAA;AAGJ,SAAgB,iBAAA,IAcU;;CAdO,MAAA,EAC/B,MAAA,IACA,OAAA,IACA,UACA,aACA,SACA,yBAAA,IACA,sBAAA,IACA,gBAAA,IACA,aAAA,IACA,iBAAA,IACA,SAAA,IACA,SAAA,IACA,SAAA,QAb+BC;CAC/B,MAAA,OAAA,OAAA,KAAA,IAAO,UAAPC;CACA,MAAA,QAAA,OAAA,KAAA,IAAQ,SAAS,QAAjBC;CAIA,MAAA,0BAAA,OAAA,KAAA,IAA0B,gBAA1BC;CACA,MAAA,uBAAA,OAAA,KAAA,IAAuB,WAAvBC;CACA,MAAA,iBAAA,OAAA,KAAA,IAAiB,wBAAjBC;CACA,MAAA,cAAA,OAAA,KAAA,IAAc,sBAAdC;CACA,MAAA,kBAAA,OAAA,KAAA,IAAkB,2BAAlBC;CACA,MAAA,UAAA,OAAA,KAAA,IAAU,kBAAVC;CACA,MAAA,UAAA,OAAA,KAAA,IAAU,kBAAVC;CACA,MAAA,UAAA,QAAA,KAAA,IAAU,sBAAVC;CAEyBC,IAAAA;CAOT,IAAA,EAAA,OAAA,wBAAA,EAAA,OADS,2BAAA,EAAA,OAIjB,MAAA;EAViB,YACvB,YACE,cAEI,gBAAgB;GACd,MAAM,mBAAmB;GACzB,eAAe;GACf,MAAM;GACN,UAAU,CAAC;EACb,CAAC,GACH,EAAE,KAAK,CACT,CACF;EALc,EAAA,KAAA;EADS,EAAA,KAAA;EAIjB,EAAA,KAAA;;;CAVR,MAAM,CAAC,SAAS,SAASA,GAazB;CAC0BC,IAAAA;CACxB,IAAA,EAAA,OAAA,gBAAA;EADwB,MAAA,IAAI,IAC5B,eAAe,KAAKC,KAA0C,CAAC,CAAC,IAAIC,MAAkB,CACxF;EADE,EAAA,KAAA;;;CADF,MAAM,oBAAoBF;CAG1B,MAAM,+BAA+B,OAAoC,IAAI;CAE7E,MAAM,CAAC,kBAAkB,uBAAuB,SAAkC,IAAI;CAE3DG,IAAAA;;EAAE,MAAA,EAAA,sBAAsB;GAAE,UAAU;GAAI,OAAO;GAAK,WAAW;EAAG,EAAE;;;CAD/F,MAAM,UAAU,WACd,UAAU,eAAeA,GAAqE,GAC9F,UAAU,cAAc,CAC1B;CAaoBC,IAAAA;CACAC,IAAAA;CADM,IAAA,EAAA,OAAA,OAAA;EAAN,YAAM,MAAM,SAAS;EACrB,OAAC,UAAU,MAAM,SAAS,KAAK;EADzB,EAAA,KAAA;;;;;;;CATfC,IAAAA;CAIL,IAAA,EAAA,QAAA,WAAA,EAAA,QADA,eAAA,EAAA,QADA,YAAA,EAAA,QAWA,oBAAA,EAAA,QAZA,QAAA,EAAA,QAKA,eAAA,EAAA,QACA,mBAAA,EAAA,QAFgB,qBAAA,EAAA,QAGhB,SAAA,EAAA,QACcF,OAAAA,EAAAA,QACAC,KAAAA;EAVT,MAAA;GACL;GACA;GACA;GACA;GACA,gBAAgB;GAChB;GACA;GACA;GACA,cAAcD;GACd,cAAcC;GACd,iBAAiBE;GACjB,eAAe;GACf;GACA;EACF;EAXE,EAAA,MAAA;EADA,EAAA,MAAA;EADA,EAAA,MAAA;EAWA,EAAA,MAAA;EAZA,EAAA,MAAA;EAKA,EAAA,MAAA;EACA,EAAA,MAAA;EAFgB,EAAA,MAAA;EAGhB,EAAA,MAAA;EACcH,EAAAA,MAAAA;EACAC,EAAAA,MAAAA;;;CAUDG,IAAAA;;EAAC,OAAA,QACZ,oBAAoB;GAClB,IAAI,IAAI,OAAO;GACf,GAAG,IAAI,OAAO,KAAK;EACrB,CAAqB;;;CAEZC,IAAAA;CAGP,IAAA,EAAA,QAAA,OAAA;EAHO,OAAC,UAAQ;GAClB,MAAM,EAAE,UAAU,YAAY,YAAYC,MAAI,MAAM,KAAK,WAAW,CAAC;GACrE,IAAI,CAAC,SACH,MAAM,UAAU,cACd,cAAc,WAAWA,MAAI,OAAO,IAAc,UAAU,UAAU,CACxE;GAEF,oBAAoB,IAAI;EAC1B;EALI,EAAA,MAAA;;;CASAC,IAAAA;CAA+B,IAAA,EAAA,QAAA,OAAA;EAA/B,MAAA,oBAAC,MAAD;GAAI,WAAU;GAAiB,UAAA;EAAU,CAAA;EAAV,EAAA,MAAA;;;CAC9BC,IAAAA;;EAAW,MAAA,WAAA,oBAAC,OAAD;GAAK,WAAU;GAAmB,UAAA;EAAa,CAAA;EAA1D,EAAA,MAAA;;;CAEEC,IAAAA;;EAAW,MAAA,WAAA,oBAAC,wBAAD,EAAA,UAAyB,QAAgC,CAAA;EAApE,EAAA,MAAA;;;CADHC,IAAAA;CAEG,IAAA,EAAA,QAAA,WAAA,EAAA,QADAD,KAAAA;EADH,MAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACGA,KACA,OACE;;EADF,EAAA,MAAA;EADAA,EAAAA,MAAAA;;;CAJLE,IAAAA;CACEJ,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QACCC,OAAAA,EAAAA,QACDE,KAAAA;EAHF,MAAA,qBAAC,UAAD;GAAQ,WAAU;GAAlB,UAAA;IACEH;IACCC;IACDE;GAIM;;EANNH,EAAAA,MAAAA;EACCC,EAAAA,MAAAA;EACDE,EAAAA,MAAAA;;;CAMFE,IAAAA;;EAAC,MAAA,oBAAA,cAAD,CAAe,CAAA;;;CAVjBC,IAAAA;CACEF,IAAAA,EAAAA,QAAAA,KAAAA;EADF,MAAA,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACEA,KASAC,GACI;;EAVJD,EAAAA,MAAAA;;;CAaCG,IAAAA;;EAAoB,MAAA,oBAAA,oBAAC,OAAD;GAAK,WAAU;GAAmB,UAAA,iBAAiB;EAAU,CAAA;EAAjF,EAAA,MAAA;;;CADHC,IAAAA;CACGD,IAAAA,EAAAA,QAAAA,KAAAA;EADH,MAAA,oBAAC,aAAD,EAAA,UACGA,IACU,CAAA;EADVA,EAAAA,MAAAA;;;CAjCLE,IAAAA;CACW,IAAA,EAAA,QAAA,WAAA,EAAA,QAQEX,OAAAA,EAAAA,QAUXQ,OAAAA,EAAAA,QAaAE,KAAAA;EAhCF,MAAA,qBAAC,YAAD;GACW;GACT,oBAAoB;GACpB,aAAaX;GAMb,WAAWC;GATb,UAAA,CAmBEQ,KAaAE,GAGU;;EAlCD,EAAA,MAAA;EAQEV,EAAAA,MAAAA;EAUXQ,EAAAA,MAAAA;EAaAE,EAAAA,MAAAA;;;CAlDJE,IAAAA;CACSf,IAAAA,EAAAA,QAAAA,OAAAA,EAAAA,QAiBPc,KAAAA;EAlBF,MAAA,oBAAC,yBAAD;GACE,OAAOd;GAiBPc,UAAAA;EAoCuB,CAAA;EArDhBd,EAAAA,MAAAA;EAiBPc,EAAAA,MAAAA;;;CAnBJ,OACEC;AAwDJ;AA5CyB,SAAA,SAAM,CAAC;AAvBwC,SAAA,OAAC,GAAA;CAAM,OAAA,CAAC,EAAE,MAAM,CAAC;;AAAjE,SAAA,MAAC,IAAI,IAAA;CAAO,OAAA,GAAG,KAAK,cAAc,GAAG,IAAI;;;;AC9FjE,SAAgB,aACd,SACA,SACc;CACd,OAAO;EAAE,GAAG;EAAS;EAAS,YAAY;CAAoB;AAChE;AAEA,SAAS,sBAEmD;CAC1D,OAAO,KAAK;AACd;;;ACdA,SAAgB,gBACd,MACA,UACA,SACA,SACM;CACN,KAAK,MAAM,IAAI,UAAU,KAAK,YAAY,QAAQ,GAAG,aAAa,SAAS,OAAO,CAAC;AACrF;;;ACJA,SAAgB,SAAiB;CAC/B,OAAO;EAAE,SAAS,CAAC;EAAG,cAAc,CAAC;EAAG,YAAY;CAAc;AACpE;AAUA,SAAS,gBAAoC;CAE3C,OACE,CAFuB,sBAAsB,KAAK,OAIhD,CAAA,CACG,MAAM,IAAI,OAAO,GAAG,WAAW,cAAc,GAAG,UAAU,CAAC,CAAC,CAC5D,KAAK,MAAM,0BAA0B,CAAC,CAAC,CAAC,CACxC,KAAK,IAAI,GAGZ,GAAG,KAAK,YACV,CAAC,CACE,QAAQ,MAAM,CAAC,CAAC,CAChB,KAAK,MAAM,IAAI;AAEtB;AAEA,SAAS,sBAAsB,SAA0C;CACvE,MAAM,oCAAoB,IAAI,IAA+B;CAC7D,KAAK,MAAM,OAAO,SAAS;EACzB,IAAI,YAAY,kBAAkB,IAAI,IAAI,UAAU;EACpD,IAAI,CAAC,WACH,kBAAkB,IAAI,IAAI,YAAa,YAAY,EAAE,YAAY,IAAI,WAAW,CAAE;EAEpF,IAAI,IAAI,WACN,UAAU,gBAAgB,IAAI;OACzB,IAAI,IAAI,aACb,UAAU,kBAAkB,IAAI;OAC3B,IAAI,IAAI,QACb,CAAC,UAAU,iCAAiB,IAAI,IAAI,EAAA,CAAG,IAAI,IAAI,IAAI;OAC9C,IAAI,IAAI,MACb,CAAC,UAAU,iCAAiB,IAAI,IAAI,EAAA,CAAG,IAAI,IAAI,IAAI;CAEvD;CACA,OAAO,MAAM,KAAK,kBAAkB,OAAO,CAAC;AAC9C;AAEA,SAAS,0BAA0B,iBAA4C;CAC7E,MAAM,kBAAkB,CACtB,mBAAG,IAAI,IAAI,CAAC,GAAI,gBAAgB,gBAAgB,CAAC,GAAI,GAAI,gBAAgB,gBAAgB,CAAC,CAAE,CAAC,CAC/F,CAAC,CAAC,MAAM,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;CACvC,MAAM,0BAA0B,gBAAgB,OAC7C,MAAM,CAAC,gBAAgB,cAAc,IAAI,CAAC,CAC7C;CACA,MAAM,eACJ,gBAAgB,SAAS,IACrB,0BACE,UAAU,gBAAgB,KAAK,IAAI,EAAE,MACrC,KAAK,gBACF,KAAK,MAAO,gBAAgB,cAAc,IAAI,CAAC,IAAI,IAAI,QAAQ,GAAI,CAAC,CACpE,KAAK,IAAI,EAAE,MAChB;CAKN,MAAM,aAAa;EAJG,gBAAgB,iBAAiB;EAC/B,gBAAgB,kBACpC,QAAQ,gBAAgB,oBACxB;EACgD;CAAY,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;CAC5F,MAAM,aAAa,KAAK,UAAU,gBAAgB,UAAU;CAE5D,OAAO,aAAa,UAAU,WAAW,QAAQ,WAAW,KAAK,UAAU,WAAW;AACxF"}
|
|
1
|
+
{"version":3,"file":"ostack-kform-scaffolder.js","names":["() => (selector ? selector(getSchematic()) : getSchematic())","_c","<button\n className=\"builder-icon-button builder-action builder-load-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const file = await fileOpen({\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n });\n latestSchematicFileHandleRef.current = file.handle ?? null;\n const content = JSON.parse(await file.text());\n setSchematic(() => content);\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to load schematic: ${err?.toString()}`);\n }\n }}\n title=\"Load schematic\"\n aria-label=\"Load schematic\"\n >\n 📂\n </button>","err","_c","<button\n className=\"builder-icon-button builder-action builder-save-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const schematic = getSchematic();\n latestSchematicFileHandleRef.current = await fileSave(\n new Blob([JSON.stringify(schematic, null, 2)]),\n {\n fileName: `${schematic.name}-schematic.json`,\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n },\n latestSchematicFileHandleRef.current,\n );\n if (supported) {\n alert(\n `Schematic saved successfully as “${latestSchematicFileHandleRef.current?.name ?? \"unknown\"}”.`,\n );\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to save schematic: ${err?.toString()}`);\n }\n }}\n title=\"Save schematic\"\n aria-label=\"Save schematic\"\n >\n 💾\n </button>","latestSchematicFileHandleRef.current","err","_c","() => {\n const schematic = getSchematic();\n\n let resolvedScaffolders =\n typeof scaffolders === \"function\" ? scaffolders(schematic) : scaffolders;\n const resolvedScaffoldingData =\n typeof scaffoldingData === \"function\" ? scaffoldingData(schematic) : scaffoldingData;\n\n if (resolvedScaffoldingData) {\n resolvedScaffolders = resolvedScaffolders.map((scaffolder) =>\n configScaffolder(scaffolder, resolvedScaffoldingData),\n );\n }\n\n return scaffold(schematic, resolvedScaffolders, {\n schematicKinds,\n basePath,\n basePackage,\n baseDir: typeof baseDir === \"function\" ? baseDir(schematic) : baseDir,\n });\n }","_c","<button\n className=\"builder-input builder-action builder-scaffold-zip\"\n type=\"submit\"\n onClick={async (evt) => {\n evt.preventDefault();\n try {\n const schematic = getSchematic();\n const files = scaffold();\n const zip = new JSZip();\n for (const { path, content, base64, binary, executable } of files) {\n zip.file(path, content, {\n base64,\n binary,\n unixPermissions: executable ? \"755\" : undefined,\n });\n }\n const fileHandle = await fileSave(zip.generateAsync({ platform: \"UNIX\", type: \"blob\" }), {\n fileName: `${schematic.name}.zip`,\n extensions: [\".zip\"],\n mimeTypes: [\"application/zip\"],\n description: \"Form scaffolding\",\n id: name,\n });\n if (supported) {\n alert(`Project scaffolded successfully in “${fileHandle?.name ?? \"unknown\"}”.`);\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to scaffold project: ${err?.toString()}`);\n }\n }}\n >\n Scaffold 🏗️\n </button>","err","_c","(schematic) => (schematic.config?.[configName] ?? defaultValue) as T","(configValue: T | ((configValue: T) => T)) =>\n store.setState((schematic) => ({\n config: {\n ...schematic.config,\n [configName]:\n typeof configValue === \"function\"\n ? (configValue as any)(schematic.config?.[configName])\n : configValue,\n },\n }))","schematic","configValue","[configValue, setConfigValue]","_c","{\n defaultValue = false,\n disabled,\n}: UseFileBase64SerializerConfigProps","defaultValue = false","(evt) => setConfig(evt.target.checked)","<input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />","<code>FileBase64Serializer</code>","<div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>FileBase64Serializer</code>\n </label>\n </div>","_c","{\n defaultValue = false,\n disabled,\n}: UseTableValuesSerializerConfigProps","defaultValue = false","(evt) => setConfig(evt.target.checked)","<input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />","<code>TableValuesSerializer</code>","<div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>TableValuesSerializer</code>\n </label>\n </div>","_c","(schematic) => schematic.kind","(schematic) => schematic.collapsed","schematicKinds.get(kind)?.builder","Builder ? (\n <button\n type=\"button\"\n className=\"builder-child-marker\"\n title={collapsed ? \"Expand\" : \"Collapse\"}\n onClick={() => setSchematic((schematic) => ({ collapsed: !schematic.collapsed }))}\n {...preventDrag}\n >\n {collapsed ? \"▸\" : \"▾\"}\n </button>\n ) : (\n <span className=\"builder-child-marker\">•</span>\n )","(schematic) => ({ collapsed: !schematic.collapsed })","schematic","_c","_temp","_temp2","_temp3","<button\n className=\"builder-icon-button builder-child-remove\"\n type=\"button\"\n title=\"Remove\"\n onClick={removeSchematic}\n {...preventDrag}\n >\n ×\n </button>","_c","(schematic) => schematic.kind","(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }","{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }","`calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)`","<option>{KIND_PLACEHOLDER}</option>","Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))","(kind) => !kind.internal","(kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n )","<select\n className=\"builder-input builder-schema\"\n value={kind}\n onChange={(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }}\n required\n style={{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }}\n {...preventDrag}\n >\n <option>{KIND_PLACEHOLDER}</option>\n {Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))}\n </select>","kind","_c","_temp","_temp2","_temp3","(schematic) => schematic.kind","(schematic) => !!schematic.nullable","schematicKinds.get(kind)","showInput && (\n <input\n className=\"builder-input builder-nullable\"\n type=\"checkbox\"\n title=\"Nullable?\"\n checked={nullable}\n onChange={(evt) => setSchematic({ nullable: evt.target.checked })}\n {...preventDrag}\n />\n )","schematic","_c","_temp","_temp2","(schematic) => schematic.packageSuffix","(schematic) => schematic.name","parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>","(evt) => setSchematic({ packageSuffix: evt.target.value })","{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }","`${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch`","<input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />","packageSuffix ?? \"\"","<button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>","<span className=\"builder-operator\">.</span>","(evt) => setSchematic({ name: evt.target.value })","evt","{ width: `${(name || NAME_PLACEHOLDER).length}ch` }","`${(name || NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","name ?? \"\"","<div className=\"builder-package-name\">\n {parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>}\n <input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />\n <button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>\n <span className=\"builder-operator\">.</span>\n <input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n </div>","schematic","_c","_temp","_temp2","(schematic) => schematic.id","(schematic) => schematic.packageSuffix","(schematic: Schematic) => schematic.children","draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id","{ parentId: id, sortBefore: null, ignored: shouldIgnoreDrop }","{\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n }","`${id}-append`","disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE","<PackageNameInput />","fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )","length","fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )","fields.length","schematicBuilderContext.parentPackage","schematic","f","<button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>","(schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n })","<div className=\"class-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>\n </div>","(schematic) => schematic.childName","(schematic) => schematic.kind","(schematic) => schematic.nullable","(schematic) => schematic.collapsed","schematicKinds.get(kind)?.builder","[childName, kind].filter((s) => s)","(s) => s","{\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n }","[childName, kind].filter((s) => s).join(\": \")","nullable ? \"?\" : \"\"","{\n id,\n data: {\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n },\n }","{ parentId, sortBefore: id, ignored: shouldIgnoreDrop }","{\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n }","boolDataAttr(isOver && !shouldIgnoreDrop)","isOver && !shouldIgnoreDrop","<li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />","boolDataAttr(isDragging)","boolDataAttr(Builder != null)","Builder != null","<ChildMarker />","(evt) => setSchematic({ childName: evt.target.value })","{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }","`${(childName || CHILD_NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","<span className=\"builder-operator\">∶</span>","{ ...schematicBuilderContext, parentChildName: childName }","<KindSelect />","<SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>","<NullableInput />","<ChildRemove />","<div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>","Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )","<li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>","<>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>\n </>","_c","_temp","_temp2","_temp3","_temp4","CHILD_NAME_PLACEHOLDER","_temp5","_temp6","_temp7","_Fragment","(schematic) => schematic.id","(schematic: Schematic) => schematic.children","draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id","{ parentId: id, sortBefore: null, ignored: shouldIgnoreDrop }","{\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n }","`${id}-append`","disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE","<PackageNameInput />","fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )","length","fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )","fields.length","schematic","f","<button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>","(schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n })","<div className=\"enum-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>\n </div>","(schematic) => schematic.childName","(schematic) => schematic.kind","schematicKinds.get(kind)?.builder","[childName, kind].filter((s) => s)","(s) => s","{ type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> }","[childName, kind].filter((s) => s).join(\": \")","{\n id,\n data: { type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> },\n }","{ parentId, sortBefore: id, ignored: shouldIgnoreDrop }","{\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n }","boolDataAttr(isOver && !shouldIgnoreDrop)","isOver && !shouldIgnoreDrop","<li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />","boolDataAttr(isDragging)","boolDataAttr(Builder != null)","Builder != null","<ChildMarker />","(evt) => setSchematic({ childName: evt.target.value })","{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }","`${(childName || CHILD_NAME_PLACEHOLDER).length}ch`","<input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />","<ChildRemove />","<div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>","<li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>","<>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>\n </>","_c","_temp","_temp2","_temp3","_Fragment","{ showKindSelect = true }: ListableBuilderProps","showKindSelect = true","(schematic) => schematic.id","() => getSchematic().children![0]","(toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n }))","schematic","{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }","() => {}","<ListableItemBuilder showKindSelect={showKindSelect} />","<div className=\"listable-builder builder\">\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }}\n >\n <ListableItemBuilder showKindSelect={showKindSelect} />\n </SchematicBuilderContext>\n </div>","<ListableBuilder showKindSelect={false} />","{ showKindSelect = true }: ListableItemBuilderProps","(schematic) => schematic.kind","schematicKinds.get(kind)?.builder","showKindSelect && <KindSelect />","Builder && <Builder />","<>\n {showKindSelect && <KindSelect />}\n {Builder && <Builder />}\n </>","_c","_temp","_temp2","_temp3","_Fragment","serializerKt","validatorKt","() => {\n if (!element) {\n setMeasurement(undefined);\n return;\n }\n\n const cb = () => setMeasurement(element.getBoundingClientRect());\n cb();\n\n const observer = new ResizeObserver(([entry]) => entry && cb());\n observer.observe(element);\n window.addEventListener(\"resize\", cb);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", cb);\n setMeasurement(undefined);\n };\n }","[element, setMeasurement]","[entry]","_c","{ children }: SchematicBuilderConfigProps","(measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--anchor-top\", `${measurement.top}px`);\n popoverEl.style.setProperty(\"--anchor-left\", `${measurement.left}px`);\n popoverEl.style.setProperty(\"--anchor-bottom\", `${measurement.bottom}px`);\n popoverEl.style.setProperty(\"--anchor-right\", `${measurement.right}px`);\n popoverEl.style.setProperty(\"--anchor-width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--anchor-height\", `${measurement.height}px`);\n }\n }","(measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--height\", `${measurement.height}px`);\n }\n }","measurement","<button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>","<>\n <button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>\n <div popover=\"\" id=\"builder-config-popover\" ref={setPopoverEl}>\n {children}\n </div>\n </>","_c","_Fragment","{\n name = \"kform\",\n title = document.title,\n basePath,\n basePackage,\n baseDir,\n defaultRootClassPackage = \"org.example\",\n defaultRootClassName = \"MyForm\",\n schematicKinds = defaultSchematicKinds,\n scaffolders = DEFAULT_SCAFFOLDERS,\n scaffoldingData = DEFAULT_SCAFFOLDING_DATA,\n actions = DEFAULT_ACTIONS,\n configs = DEFAULT_CONFIGS,\n version = DEFAULT_APP_VERSION,\n}: SchematicBuilderProps","name = \"kform\"","title = document.title","defaultRootClassPackage = \"org.example\"","defaultRootClassName = \"MyForm\"","schematicKinds = defaultSchematicKinds","scaffolders = DEFAULT_SCAFFOLDERS","scaffoldingData = DEFAULT_SCAFFOLDING_DATA","actions = DEFAULT_ACTIONS","configs = DEFAULT_CONFIGS","version = DEFAULT_APP_VERSION","() =>\n createStore(\n persist(\n () =>\n createSchematic({\n kind: classSchematicKind.kind,\n packageSuffix: defaultRootClassPackage,\n name: defaultRootClassName,\n children: [],\n }),\n { name },\n ),\n )","new Map(\n schematicKinds.sort((t1, t2) => t1.kind.localeCompare(t2.kind)).map((t) => [t.kind, t]),\n )","(t1, t2) => t1.kind.localeCompare(t2.kind)","(t) => [t.kind, t]","{ activationConstraint: { distance: 10, delay: 400, tolerance: 20 } }","() => store.getState()","(toSet) => store.setState(toSet)","{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }","() => {}","(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)","(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }","evt","<h1 className=\"builder-title\">{title}</h1>","version && <div className=\"builder-version\">{version}</div>","configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>","<div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>","<header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>","<ClassBuilder />","<form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>","draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>","<DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>","<DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>","<SchematicBuilderContext\n value={{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>\n </SchematicBuilderContext>","_Fragment","_c"],"sources":["../../src/Schematic.ts","../../src/SchematicBuilderContext.ts","../../src/actions/LoadSchematic.tsx","../../src/actions/SaveSchematic.tsx","../../src/scaffolding/configScaffolder.ts","../../src/util/join.ts","../../src/scaffolding/scaffold.ts","../../src/scaffolding/useScaffolder.ts","../../src/actions/ScaffoldToZip.tsx","../../src/configs/util/useConfig.ts","../../src/configs/UseFileBase64SerializerConfig.tsx","../../src/configs/UseTableValuesSerializerConfig.tsx","../../src/scaffolding/kotlin/util/defaultImports.ts","../../src/scaffolding/kotlin/KtFile.ts","../../src/scaffolding/kotlin/util/simpleKtName.ts","../../src/scaffolding/kotlin/util/annotations.ts","../../src/scaffolding/scaffolders/scaffoldModels.ts","../../../../node_modules/change-case/dist/index.js","../../src/util/boolDataAttr.ts","../../src/util/preventDrag.ts","../../src/schematicBuilders/util/ChildMarker.tsx","../../src/schematicBuilders/util/ChildRemove.tsx","../../src/schematicBuilders/util/KindSelect.tsx","../../src/schematicBuilders/util/NullableInput.tsx","../../src/schematicBuilders/util/PackageNameInput.tsx","../../src/schematicBuilders/ClassBuilder.tsx","../../src/schematicBuilders/EnumBuilder.tsx","../../src/schematicBuilders/ListableBuilder.tsx","../../src/util/code.ts","../../src/SchematicKind.ts","../../src/scaffolding/scaffolders/scaffoldSchemas.ts","../../src/scaffolding/templating/EjsTemplateFile.ts","../../src/scaffolding/templating/util/addEjsTemplateFile.ts","../../src/scaffolding/scaffolders/scaffoldSerializer.ts","../../src/scaffolding/scaffolders/scaffoldValidator.ts","../../src/util/useSafeLayoutEffect.ts","../../src/util/useMeasure.ts","../../src/SchematicBuilderConfig.tsx","../../src/SchematicBuilder.tsx","../../src/scaffolding/templating/TemplateFile.ts","../../src/scaffolding/templating/util/addTemplateFile.ts","../../src/scaffolding/typescript/TsFile.ts"],"sourcesContent":["export interface Schematic {\n id: string;\n kind: string;\n packageSuffix?: string;\n name?: string;\n nullable?: boolean;\n collapsed?: boolean;\n children?: Schematic[];\n childName?: string;\n config?: Record<string, unknown>;\n}\n\nexport function createSchematic(schematic?: Partial<Schematic>): Schematic {\n return { id: self.crypto.randomUUID(), kind: \"\", ...schematic };\n}\n\nexport function moveSchematic(\n schematic: Schematic,\n moveId: string,\n parentId: string,\n sortBefore: string | null,\n): Schematic {\n const { schematic: schematicWithoutFrom, removed: fromSchematic } = remove(schematic, moveId);\n return add(schematicWithoutFrom!, fromSchematic!, parentId, sortBefore);\n}\n\nfunction remove(\n schematic: Schematic,\n id: string,\n): { schematic: Schematic | null; removed: Schematic | null } {\n if (schematic.id === id) {\n return { schematic: null, removed: schematic };\n }\n if (!schematic.children) {\n return { schematic, removed: null };\n }\n const newChildren = [];\n let removed: Schematic | null = null;\n for (const child of schematic.children) {\n const { schematic: newChild, removed: removedChild } = remove(child, id);\n if (newChild !== null) {\n newChildren.push(newChild);\n }\n if (removedChild !== null) {\n removed = removedChild;\n }\n }\n return { schematic: { ...schematic, children: newChildren }, removed };\n}\n\nfunction add(\n schematic: Schematic,\n toAdd: Schematic,\n parentId: string,\n sortBefore: string | null,\n): Schematic {\n if (schematic.id === parentId) {\n const oldChildren = schematic.children ?? [];\n const index =\n sortBefore === null ? oldChildren.length : oldChildren.findIndex((c) => c.id === sortBefore);\n return {\n ...schematic,\n children: [...oldChildren.slice(0, index), toAdd, ...oldChildren.slice(index)],\n };\n }\n if (!schematic.children) {\n return schematic;\n }\n return {\n ...schematic,\n children: schematic.children.map((child) => add(child, toAdd, parentId, sortBefore)),\n };\n}\n","import { createContext, type ReactNode, type RefObject, useContext } from \"react\";\nimport { useStore } from \"zustand/react\";\nimport type { StoreApi } from \"zustand/vanilla\";\n\nimport type { Scaffolder } from \"./scaffolding/scaffold.ts\";\nimport type { Schematic } from \"./Schematic.ts\";\nimport type { SchematicKind } from \"./SchematicKind.ts\";\n\nexport interface DraggedSchematic {\n id: string;\n type: string;\n node: ReactNode;\n}\n\nexport interface SchematicBuilderContextValue {\n name: string;\n basePath?: string;\n basePackage?: string;\n baseDir?: string | ((schematic: Schematic) => string);\n schematicKinds: Map<string, SchematicKind>;\n scaffolders: Scaffolder<any>[] | ((schematic: Schematic) => Scaffolder<any>[]);\n scaffoldingData?: Record<string, any> | ((schematic: Schematic) => Record<string, any>);\n store: StoreApi<Schematic>;\n getSchematic: () => Schematic;\n setSchematic: (\n toSet:\n | Schematic\n | Partial<Schematic>\n | ((schematic: Schematic) => Schematic | Partial<Schematic>),\n ) => void;\n removeSchematic: () => void;\n parentPackage?: string;\n parentId?: string;\n parentChildName?: string;\n draggedSchematic: DraggedSchematic | null;\n disableDrop?: boolean;\n ignoreDrop?: boolean;\n latestSchematicFileHandleRef: RefObject<FileSystemFileHandle | null>;\n}\n\nexport const SchematicBuilderContext = createContext<SchematicBuilderContextValue | null>(null);\n\nexport function useSchematicBuilderContext(): SchematicBuilderContextValue {\n const context = useContext(SchematicBuilderContext);\n if (context === null) {\n throw new Error(\"Schematic builder not in context.\");\n }\n return context;\n}\n\nexport function useSchematic(): Schematic;\nexport function useSchematic<T>(selector: (schematic: Schematic) => T): T;\nexport function useSchematic(selector?: (schematic: Schematic) => unknown): unknown {\n const { store, getSchematic } = useSchematicBuilderContext();\n return useStore(store, () => (selector ? selector(getSchematic()) : getSchematic()));\n}\n","import { fileOpen } from \"browser-fs-access\";\n\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function LoadSchematic() {\n const { name, setSchematic, latestSchematicFileHandleRef } = useSchematicBuilderContext();\n\n return (\n <button\n className=\"builder-icon-button builder-action builder-load-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const file = await fileOpen({\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n });\n latestSchematicFileHandleRef.current = file.handle ?? null;\n const content = JSON.parse(await file.text());\n setSchematic(() => content);\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to load schematic: ${err?.toString()}`);\n }\n }}\n title=\"Load schematic\"\n aria-label=\"Load schematic\"\n >\n 📂\n </button>\n );\n}\n","import { fileSave, supported } from \"browser-fs-access\";\n\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function SaveSchematic() {\n const { name, getSchematic, latestSchematicFileHandleRef } = useSchematicBuilderContext();\n\n return (\n <button\n className=\"builder-icon-button builder-action builder-save-schematic\"\n type=\"button\"\n onClick={async () => {\n try {\n const schematic = getSchematic();\n latestSchematicFileHandleRef.current = await fileSave(\n new Blob([JSON.stringify(schematic, null, 2)]),\n {\n fileName: `${schematic.name}-schematic.json`,\n extensions: [\".json\"],\n mimeTypes: [\"application/json\"],\n description: \"Form schematic\",\n id: name,\n },\n latestSchematicFileHandleRef.current,\n );\n if (supported) {\n alert(\n `Schematic saved successfully as “${latestSchematicFileHandleRef.current?.name ?? \"unknown\"}”.`,\n );\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to save schematic: ${err?.toString()}`);\n }\n }}\n title=\"Save schematic\"\n aria-label=\"Save schematic\"\n >\n 💾\n </button>\n );\n}\n","import type { Schematic } from \"../Schematic.ts\";\nimport type { Scaffolder } from \"./scaffold.ts\";\nimport type { ScaffoldingData } from \"./ScaffoldingData.ts\";\n\n/** Returns a new scaffolder with its data merged with the provided data. */\nexport function configScaffolder<TScaffoldingData extends ScaffoldingData>(\n scaffolder: Scaffolder<TScaffoldingData>,\n data: Partial<TScaffoldingData>,\n): Scaffolder<TScaffoldingData> {\n return (schematic: Schematic, originalData: TScaffoldingData) =>\n scaffolder(schematic, { ...originalData, ...data });\n}\n","function join(s1: string | undefined, s2: string | undefined, separator: string): string {\n return !s1 || !s2 ? s1 || s2 || \"\" : `${s1}${s1.endsWith(separator) ? \"\" : separator}${s2}`;\n}\n\nexport function joinPaths(path1: string | undefined, path2: string | undefined): string {\n return join(path1, path2, \"/\");\n}\n\nexport function joinPackages(pkg1: string | undefined, pkg2: string | undefined): string {\n return join(pkg1, pkg2, \".\");\n}\n","import type { Schematic } from \"../Schematic.ts\";\nimport type { SchematicKind } from \"../SchematicKind.ts\";\nimport { joinPackages } from \"../util/join.ts\";\nimport type { ScaffoldingData } from \"./ScaffoldingData.ts\";\nimport type { ScaffoldingFile, ScaffoldingFileContent } from \"./ScaffoldingFile.ts\";\n\nexport interface ScaffoldOptions {\n schematicKinds: Map<string, SchematicKind>;\n basePath?: string;\n basePackage?: string;\n baseDir?: string;\n}\n\nexport type Scaffolder<TScaffoldingData extends ScaffoldingData = ScaffoldingData> = (\n schematic: Schematic,\n data: TScaffoldingData,\n) => void;\n\nexport interface ScaffoldedFile extends Omit<ScaffoldingFile, \"getContent\"> {\n path: string;\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>;\n}\n\nexport function scaffold(\n schematic: Schematic,\n scaffolders: Scaffolder<any>[],\n options: ScaffoldOptions,\n): ScaffoldedFile[] {\n const files = new Map<string, ScaffoldingFile>();\n const data: ScaffoldingData = {\n schematicKinds: options.schematicKinds,\n rootSchematic: schematic,\n files,\n currentPath: options.basePath ?? \"/\",\n currentPackage: joinPackages(options.basePackage, schematic.packageSuffix),\n currentDir: options.baseDir,\n };\n for (const scaffolder of scaffolders) {\n scaffolder(schematic, data);\n }\n return Array.from(files).map(([path, file]) => ({\n path,\n content: file.getContent(),\n base64: file.base64,\n binary: file.binary,\n executable: file.executable,\n }));\n}\n","import { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\nimport { configScaffolder } from \"./configScaffolder.ts\";\nimport { scaffold, type ScaffoldedFile } from \"./scaffold.ts\";\n\nexport function useScaffolder(): () => ScaffoldedFile[] {\n const {\n basePath,\n basePackage,\n baseDir,\n schematicKinds,\n scaffolders,\n scaffoldingData,\n getSchematic,\n } = useSchematicBuilderContext();\n return () => {\n const schematic = getSchematic();\n\n let resolvedScaffolders =\n typeof scaffolders === \"function\" ? scaffolders(schematic) : scaffolders;\n const resolvedScaffoldingData =\n typeof scaffoldingData === \"function\" ? scaffoldingData(schematic) : scaffoldingData;\n\n if (resolvedScaffoldingData) {\n resolvedScaffolders = resolvedScaffolders.map((scaffolder) =>\n configScaffolder(scaffolder, resolvedScaffoldingData),\n );\n }\n\n return scaffold(schematic, resolvedScaffolders, {\n schematicKinds,\n basePath,\n basePackage,\n baseDir: typeof baseDir === \"function\" ? baseDir(schematic) : baseDir,\n });\n };\n}\n","import { fileSave, supported } from \"browser-fs-access\";\nimport JSZip from \"jszip\";\n\nimport { useScaffolder } from \"../scaffolding/useScaffolder.ts\";\nimport { useSchematicBuilderContext } from \"../SchematicBuilderContext.ts\";\n\nexport function ScaffoldToZip() {\n const { getSchematic, name } = useSchematicBuilderContext();\n const scaffold = useScaffolder();\n\n return (\n <button\n className=\"builder-input builder-action builder-scaffold-zip\"\n type=\"submit\"\n onClick={async (evt) => {\n evt.preventDefault();\n try {\n const schematic = getSchematic();\n const files = scaffold();\n const zip = new JSZip();\n for (const { path, content, base64, binary, executable } of files) {\n zip.file(path, content, {\n base64,\n binary,\n unixPermissions: executable ? \"755\" : undefined,\n });\n }\n const fileHandle = await fileSave(zip.generateAsync({ platform: \"UNIX\", type: \"blob\" }), {\n fileName: `${schematic.name}.zip`,\n extensions: [\".zip\"],\n mimeTypes: [\"application/zip\"],\n description: \"Form scaffolding\",\n id: name,\n });\n if (supported) {\n alert(`Project scaffolded successfully in “${fileHandle?.name ?? \"unknown\"}”.`);\n }\n } catch (err) {\n // User aborted\n if (err instanceof DOMException && err.name === \"AbortError\") {\n return;\n }\n\n alert(`Unable to scaffold project: ${err?.toString()}`);\n }\n }}\n >\n Scaffold 🏗️\n </button>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\n\ntype UseConfigReturnType<T = unknown> = [T, (configValue: T | ((configValue: T) => T)) => void];\n\nexport function useConfig<T = unknown>(configName: string): UseConfigReturnType<T | undefined>;\nexport function useConfig<T = unknown>(configName: string, defaultValue: T): UseConfigReturnType<T>;\nexport function useConfig<T>(configName: string, defaultValue?: T): UseConfigReturnType<T> {\n const { store } = useSchematicBuilderContext();\n const configValue = useSchematic(\n (schematic) => (schematic.config?.[configName] ?? defaultValue) as T,\n );\n const setConfigValue = (configValue: T | ((configValue: T) => T)) =>\n store.setState((schematic) => ({\n config: {\n ...schematic.config,\n [configName]:\n typeof configValue === \"function\"\n ? (configValue as any)(schematic.config?.[configName])\n : configValue,\n },\n }));\n\n return [configValue, setConfigValue];\n}\n","import { useConfig } from \"./util/useConfig.ts\";\n\nexport interface UseFileBase64SerializerConfigProps {\n defaultValue?: boolean;\n disabled?: boolean;\n}\n\nexport function UseFileBase64SerializerConfig({\n defaultValue = false,\n disabled,\n}: UseFileBase64SerializerConfigProps) {\n const [config, setConfig] = useConfig(\"useFileBase64Serializer\", defaultValue);\n return (\n <div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>FileBase64Serializer</code>\n </label>\n </div>\n );\n}\n","import { useConfig } from \"./util/useConfig.ts\";\n\nexport interface UseTableValuesSerializerConfigProps {\n defaultValue?: boolean;\n disabled?: boolean;\n}\n\nexport function UseTableValuesSerializerConfig({\n defaultValue = false,\n disabled,\n}: UseTableValuesSerializerConfigProps) {\n const [config, setConfig] = useConfig(\"useTableValuesSerializer\", defaultValue);\n return (\n <div className=\"builder-config-field\">\n <label>\n <input\n type=\"checkbox\"\n checked={config}\n onChange={(evt) => setConfig(evt.target.checked)}\n disabled={disabled}\n />\n Use <code>TableValuesSerializer</code>\n </label>\n </div>\n );\n}\n","const DEFAULT_IMPORTS = [\n /^kotlin\\.[^.]+$/,\n /^kotlin\\.annotation\\.[^.]+$/,\n /^kotlin\\.collections\\.[^.]+$/,\n /^kotlin\\.comparisons\\.[^.]+$/,\n /^kotlin\\.io\\.[^.]+$/,\n /^kotlin\\.ranges\\.[^.]+$/,\n /^kotlin\\.sequences\\.[^.]+$/,\n /^kotlin\\.text\\.[^.]+$/,\n];\n\nexport function isDefaultKtImport(qualifiedName: string): boolean {\n return DEFAULT_IMPORTS.some((i) => i.test(qualifiedName));\n}\n","import type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport type { ScaffoldingFile } from \"../ScaffoldingFile.ts\";\nimport { isDefaultKtImport } from \"./util/defaultImports.ts\";\n\nexport interface KtFile extends ScaffoldingFile {\n package: string;\n imports: Set<string>;\n declarations: string[];\n}\n\nexport function ktFile(data: ScaffoldingData): KtFile {\n return {\n package: data.currentPackage ?? \"\",\n imports: new Set<string>(),\n declarations: [],\n getContent: ktFileContent,\n };\n}\n\nfunction ktFileContent(this: KtFile): string {\n return (\n [\n // Package\n this.package && `package ${this.package}`,\n\n // Imports\n Array.from(this.imports)\n .filter((i) => !isDefaultKtImport(i))\n .sort()\n .map((i) => `import ${i}`)\n .join(\"\\n\"),\n\n // Declarations\n ...this.declarations,\n ]\n .filter((s) => s)\n .join(\"\\n\\n\") + \"\\n\"\n );\n}\n","export function simpleKtName(qualifiedName: string): string {\n return qualifiedName.substring(qualifiedName.lastIndexOf(\".\") + 1);\n}\n","import type { KtData } from \"../KtData.ts\";\nimport { simpleKtName } from \"./simpleKtName.ts\";\n\nconst JS_EXPORT = \"kotlin.js.JsExport\";\nconst SERIALIZABLE = \"kotlinx.serialization.Serializable\";\n\nexport function annotate(annotations: string | string[] | undefined, code: string): string {\n if (!annotations || annotations.length === 0) {\n return code;\n }\n return [...(typeof annotations === \"string\" ? [annotations] : annotations), code].join(\"\\n\");\n}\n\nexport function jsExport(code: string, data: KtData): string {\n data.currentFile.imports.add(JS_EXPORT);\n return annotate(`@${simpleKtName(JS_EXPORT)}`, code);\n}\n\nexport function serializable(code: string, data: KtData): string {\n data.currentFile.imports.add(SERIALIZABLE);\n return annotate(`@${simpleKtName(SERIALIZABLE)}`, code);\n}\n","import type { Schematic } from \"../../Schematic.ts\";\nimport { joinPackages, joinPaths } from \"../../util/join.ts\";\nimport type { KtData } from \"../kotlin/KtData.ts\";\nimport { type KtFile, ktFile } from \"../kotlin/KtFile.ts\";\nimport { jsExport, serializable } from \"../kotlin/util/annotations.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\n\nexport function scaffoldModels(schematic: Schematic, data: ScaffoldingData): void {\n const fileName = joinPaths(data.currentDir, `${schematic.name}.kt`);\n let file = data.files.get(fileName) as KtFile | undefined;\n if (!file) {\n data.files.set(fileName, (file = ktFile(data)));\n }\n scaffoldModelDeclaration(schematic, { ...data, currentFile: file });\n}\n\nfunction scaffoldModelDeclaration(schematic: Schematic, data: KtData): void {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const nDecls = data.currentFile.declarations.length;\n data.currentFile.declarations.push(\"\");\n const decl =\n schematicKind.scaffoldModel?.(schematic, data) ??\n `typealias ${schematic.name} = ${scaffoldType(schematic, data)}`;\n data.currentFile.declarations[nDecls] = schematicKind.scaffoldModel\n ? jsExport(serializable(decl, data), data)\n : decl;\n}\n\nexport function scaffoldPropertyAnnotations(\n schematic: Schematic,\n data: KtData,\n): string | string[] | undefined {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n return typeof schematicKind.propertyAnnotations === \"function\"\n ? schematicKind.propertyAnnotations(schematic, data)\n : schematicKind.propertyAnnotations;\n}\n\nexport function scaffoldType(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const schematicPackage =\n schematicKind.package ?? joinPackages(data.currentPackage, schematic.packageSuffix);\n const schematicName = schematic.name || schematicKind.name;\n\n if (schematicPackage !== data.currentPackage) {\n data.currentFile.imports.add(joinPackages(schematicPackage, schematicName));\n }\n\n if (schematicKind.package == null && schematicPackage !== data.currentPackage) {\n scaffoldModels(schematic, {\n ...data,\n currentPackage: joinPackages(data.currentPackage, schematic.packageSuffix),\n currentDir: joinPaths(data.currentDir, schematic.packageSuffix?.replace(\".\", \"/\")),\n });\n } else if (schematicKind.scaffoldModel) {\n scaffoldModelDeclaration(schematic, data);\n }\n\n return (\n (schematicKind.scaffoldType?.(schematic, data) ?? schematicName) +\n (schematic.nullable ? \"?\" : \"\")\n );\n}\n\nexport function scaffoldDefaultValue(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n return schematic.nullable\n ? \"null\"\n : typeof schematicKind.defaultValue === \"function\"\n ? schematicKind.defaultValue(schematic, data)\n : schematicKind.defaultValue;\n}\n","// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n let result = value.trim();\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n return locale === false\n ? (input) => input.toLowerCase()\n : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return locale === false\n ? (input) => input.toUpperCase()\n : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n//# sourceMappingURL=index.js.map","/** Value for a data attribute given a condition. */\nexport function boolDataAttr(condition: boolean | null | undefined): string | undefined {\n return condition ? \"\" : undefined;\n}\n","import type { KeyboardEvent, PointerEvent } from \"react\";\n\n/** Properties used to prevent an element from being dragged. */\nexport const preventDrag = {\n onKeyDown: (evt: KeyboardEvent) => evt.stopPropagation(),\n onPointerDown: (evt: PointerEvent) => evt.stopPropagation(),\n};\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function ChildMarker() {\n const { schematicKinds, setSchematic } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const collapsed = useSchematic((schematic) => schematic.collapsed);\n const Builder = schematicKinds.get(kind)?.builder;\n\n return Builder ? (\n <button\n type=\"button\"\n className=\"builder-child-marker\"\n title={collapsed ? \"Expand\" : \"Collapse\"}\n onClick={() => setSchematic((schematic) => ({ collapsed: !schematic.collapsed }))}\n {...preventDrag}\n >\n {collapsed ? \"▸\" : \"▾\"}\n </button>\n ) : (\n <span className=\"builder-child-marker\">•</span>\n );\n}\n","import { useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function ChildRemove() {\n const { removeSchematic } = useSchematicBuilderContext();\n return (\n <button\n className=\"builder-icon-button builder-child-remove\"\n type=\"button\"\n title=\"Remove\"\n onClick={removeSchematic}\n {...preventDrag}\n >\n ×\n </button>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nconst KIND_PLACEHOLDER = \"--KIND--\";\n\nexport function KindSelect() {\n const { schematicKinds, setSchematic, parentChildName } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n\n return (\n <select\n className=\"builder-input builder-schema\"\n value={kind}\n onChange={(evt) => {\n const schematicKind = schematicKinds.get(evt.target.value);\n setSchematic({\n kind: evt.target.value,\n packageSuffix: schematicKind?.defaultPackageSuffix?.(parentChildName!),\n name: schematicKind?.defaultName?.(parentChildName!),\n collapsed: false,\n nullable: schematicKind?.nullable ?? schematicKind?.defaultNullable,\n children: schematicKind?.initChildren?.(parentChildName!),\n });\n }}\n required\n style={{ width: `calc(${(kind || KIND_PLACEHOLDER).length}ch + 1.85rem)` }}\n {...preventDrag}\n >\n <option>{KIND_PLACEHOLDER}</option>\n {Array.from(schematicKinds.values())\n .filter((kind) => !kind.internal)\n .map((kind) => (\n <option key={kind.kind} value={kind.kind}>\n {kind.kind}\n </option>\n ))}\n </select>\n );\n}\n","import { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nexport function NullableInput() {\n const { schematicKinds, setSchematic } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const nullable = useSchematic((schematic) => !!schematic.nullable);\n const schematicKind = schematicKinds.get(kind);\n const showInput = schematicKind && schematicKind.nullable === undefined;\n\n return (\n showInput && (\n <input\n className=\"builder-input builder-nullable\"\n type=\"checkbox\"\n title=\"Nullable?\"\n checked={nullable}\n onChange={(evt) => setSchematic({ nullable: evt.target.checked })}\n {...preventDrag}\n />\n )\n );\n}\n","import { useRef } from \"react\";\n\nimport { useSchematic, useSchematicBuilderContext } from \"../../SchematicBuilderContext.ts\";\nimport { preventDrag } from \"../../util/preventDrag.ts\";\n\nconst PACKAGE_PLACEHOLDER = \"package.suffix\";\nconst NAME_PLACEHOLDER = \"ClassName\";\n\nexport function PackageNameInput() {\n const { setSchematic, parentPackage } = useSchematicBuilderContext();\n const pkgRef = useRef<HTMLInputElement | null>(null);\n const packageSuffix = useSchematic((schematic) => schematic.packageSuffix);\n const name = useSchematic((schematic) => schematic.name);\n\n return (\n <div className=\"builder-package-name\">\n {parentPackage && <span className=\"builder-package-prefix\">{parentPackage}.</span>}\n <input\n className=\"builder-input builder-package\"\n placeholder={PACKAGE_PLACEHOLDER}\n value={packageSuffix ?? \"\"}\n onChange={(evt) => setSchematic({ packageSuffix: evt.target.value })}\n pattern=\"(([a-z_][a-z0-9_]*)(\\.([a-z_][a-z0-9_]*))*)?\"\n style={{ width: `${(packageSuffix || PACKAGE_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n ref={pkgRef}\n />\n <button\n type=\"button\"\n className=\"builder-icon-button builder-edit-package\"\n onClick={() => {\n const pkgInput = pkgRef.current!;\n pkgInput.style.display = \"initial\";\n pkgInput.focus();\n pkgInput.style.display = \"\";\n }}\n >\n 🖉\n </button>\n <span className=\"builder-operator\">.</span>\n <input\n className=\"builder-input builder-name\"\n placeholder={NAME_PLACEHOLDER}\n value={name ?? \"\"}\n onChange={(evt) => setSchematic({ name: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(name || NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n </div>\n );\n}\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\n\nimport { createSchematic, type Schematic } from \"../Schematic.ts\";\nimport {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { boolDataAttr } from \"../util/boolDataAttr.ts\";\nimport { joinPackages } from \"../util/join.ts\";\nimport { preventDrag } from \"../util/preventDrag.ts\";\nimport { ChildMarker } from \"./util/ChildMarker.tsx\";\nimport { ChildRemove } from \"./util/ChildRemove.tsx\";\nimport { KindSelect } from \"./util/KindSelect.tsx\";\nimport { NullableInput } from \"./util/NullableInput.tsx\";\nimport { PackageNameInput } from \"./util/PackageNameInput.tsx\";\n\nexport const CLASS_DND_TYPE = \"class-field\";\n\nexport function ClassBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic, draggedSchematic, disableDrop } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const packageSuffix = useSchematic((schematic) => schematic.packageSuffix);\n const fields = useSchematic((schematic: Schematic) => schematic.children) ?? [];\n const shouldIgnoreDrop = draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n });\n\n return (\n <div className=\"class-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No fields.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentPackage: joinPackages(schematicBuilderContext.parentPackage, packageSuffix),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <ClassFieldBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add field\n </button>\n </div>\n );\n}\n\nconst CHILD_NAME_PLACEHOLDER = \"fieldName\";\n\nexport function ClassFieldBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { schematicKinds, setSchematic, draggedSchematic, parentId, disableDrop, ignoreDrop } =\n schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const childName = useSchematic((schematic) => schematic.childName);\n const kind = useSchematic((schematic) => schematic.kind);\n const nullable = useSchematic((schematic) => schematic.nullable);\n const collapsed = useSchematic((schematic) => schematic.collapsed);\n const Builder = schematicKinds.get(kind)?.builder;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDraggableRef,\n isDragging,\n } = useDraggable({\n id,\n data: {\n type: CLASS_DND_TYPE,\n node: (\n <>\n {[childName, kind].filter((s) => s).join(\": \")}\n {nullable ? \"?\" : \"\"}\n </>\n ),\n },\n });\n const shouldIgnoreDrop = isDragging || ignoreDrop;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== CLASS_DND_TYPE,\n });\n\n return (\n <>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child class-builder-field\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input class-builder-field-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <span className=\"builder-operator\">∶</span>\n <SchematicBuilderContext\n value={{ ...schematicBuilderContext, parentChildName: childName }}\n >\n <KindSelect />\n </SchematicBuilderContext>\n <NullableInput />\n <ChildRemove />\n </div>\n\n {Builder && !collapsed && (\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n parentChildName: childName,\n disableDrop: disableDrop || isDragging,\n }}\n >\n <Builder />\n </SchematicBuilderContext>\n )}\n </li>\n </>\n );\n}\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\n\nimport { createSchematic, type Schematic } from \"../Schematic.ts\";\nimport {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { boolDataAttr } from \"../util/boolDataAttr.ts\";\nimport { preventDrag } from \"../util/preventDrag.ts\";\nimport { ChildMarker } from \"./util/ChildMarker.tsx\";\nimport { ChildRemove } from \"./util/ChildRemove.tsx\";\nimport { PackageNameInput } from \"./util/PackageNameInput.tsx\";\n\nexport const ENUM_DND_TYPE = \"enum-entry\";\n\nexport function EnumBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic, draggedSchematic, disableDrop } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const fields = useSchematic((schematic: Schematic) => schematic.children) ?? [];\n const shouldIgnoreDrop = draggedSchematic != null && draggedSchematic.id === fields.at(-1)?.id;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id: `${id}-append`,\n data: { parentId: id, sortBefore: null, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n });\n\n return (\n <div className=\"enum-builder builder\">\n <PackageNameInput />\n\n {fields.length === 0 && (\n <div className=\"builder-empty\" data-over={boolDataAttr(isOver)} ref={setDroppableRef}>\n No entries.\n </div>\n )}\n\n {fields.length > 0 && (\n <ul className=\"builder-children\">\n {fields.map((field, i) => (\n <SchematicBuilderContext\n key={field.id}\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![i],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.map((f) =>\n field === f\n ? Object.assign(f, typeof toSet === \"function\" ? toSet(f) : toSet)\n : f,\n ),\n })),\n removeSchematic: () =>\n setSchematic((schematic) => ({\n ...schematic,\n children: schematic.children!.filter((f) => f !== field),\n })),\n parentId: id,\n ignoreDrop:\n draggedSchematic != null &&\n draggedSchematic.id === (fields[i - 1]?.id as string | undefined),\n }}\n >\n <EnumEntryBuilder />\n </SchematicBuilderContext>\n ))}\n\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n </ul>\n )}\n\n <button\n className=\"builder-input builder-new-child\"\n type=\"button\"\n onClick={() => {\n setSchematic((schematic) => ({\n ...schematic,\n children: [...(schematic.children ?? []), createSchematic({ childName: \"\" })],\n }));\n }}\n {...preventDrag}\n >\n Add entry\n </button>\n </div>\n );\n}\n\nconst CHILD_NAME_PLACEHOLDER = \"ENTRY_NAME\";\n\nexport function EnumEntryBuilder() {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { schematicKinds, setSchematic, draggedSchematic, parentId, disableDrop, ignoreDrop } =\n schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n const childName = useSchematic((schematic) => schematic.childName);\n const kind = useSchematic((schematic) => schematic.kind);\n const Builder = schematicKinds.get(kind)?.builder;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDraggableRef,\n isDragging,\n } = useDraggable({\n id,\n data: { type: ENUM_DND_TYPE, node: <>{[childName, kind].filter((s) => s).join(\": \")}</> },\n });\n const shouldIgnoreDrop = isDragging || ignoreDrop;\n const { setNodeRef: setDroppableRef, isOver } = useDroppable({\n id,\n data: { parentId, sortBefore: id, ignored: shouldIgnoreDrop },\n disabled: disableDrop || draggedSchematic?.type !== ENUM_DND_TYPE,\n });\n\n return (\n <>\n <li\n className=\"builder-child-droppable\"\n data-over={boolDataAttr(isOver && !shouldIgnoreDrop)}\n ref={setDroppableRef}\n />\n\n <li\n className=\"builder-child\"\n data-dragging={boolDataAttr(isDragging)}\n {...listeners}\n {...attributes}\n ref={setDraggableRef}\n data-collapsible={boolDataAttr(Builder != null)}\n >\n <div className=\"builder-child-content\">\n <ChildMarker />\n <input\n className=\"builder-input enum-builder-entry-id\"\n placeholder={CHILD_NAME_PLACEHOLDER}\n value={childName}\n onChange={(evt) => setSchematic({ childName: evt.target.value })}\n required\n pattern=\"[a-zA-Z_][a-zA-Z0-9_]*\"\n style={{ width: `${(childName || CHILD_NAME_PLACEHOLDER).length}ch` }}\n {...preventDrag}\n />\n <ChildRemove />\n </div>\n </li>\n </>\n );\n}\n","import {\n SchematicBuilderContext,\n useSchematic,\n useSchematicBuilderContext,\n} from \"../SchematicBuilderContext.ts\";\nimport { KindSelect } from \"./util/KindSelect.tsx\";\n\nexport interface ListableBuilderProps {\n showKindSelect?: boolean;\n}\n\nexport function ListableBuilder({ showKindSelect = true }: ListableBuilderProps) {\n const schematicBuilderContext = useSchematicBuilderContext();\n const { getSchematic, setSchematic } = schematicBuilderContext;\n const id = useSchematic((schematic) => schematic.id);\n\n return (\n <div className=\"listable-builder builder\">\n <SchematicBuilderContext\n value={{\n ...schematicBuilderContext,\n getSchematic: () => getSchematic().children![0],\n setSchematic: (toSet) =>\n setSchematic((schematic) => ({\n ...schematic,\n children: [\n {\n ...schematic.children![0],\n ...(typeof toSet === \"function\" ? toSet(schematic.children![0]) : toSet),\n },\n ],\n })),\n removeSchematic: () => {},\n parentId: id,\n }}\n >\n <ListableItemBuilder showKindSelect={showKindSelect} />\n </SchematicBuilderContext>\n </div>\n );\n}\n\nexport function ListableBuilderWithoutKindSelect() {\n return <ListableBuilder showKindSelect={false} />;\n}\n\nexport type ListableItemBuilderProps = ListableBuilderProps;\n\nexport function ListableItemBuilder({ showKindSelect = true }: ListableItemBuilderProps) {\n const { schematicKinds } = useSchematicBuilderContext();\n const kind = useSchematic((schematic) => schematic.kind);\n const Builder = schematicKinds.get(kind)?.builder;\n\n return (\n <>\n {showKindSelect && <KindSelect />}\n {Builder && <Builder />}\n </>\n );\n}\n","const LF = /\\r?\\n/;\nconst LF_AFFIX = /(^\\r?\\n)|(\\r?\\n$)/g;\nconst EMPTY_LINE = /^\\s*$/;\nconst SPACE = /\\s/;\n\n/** Tag function used to aid in the construction of code blocks. */\nexport function code(strings: TemplateStringsArray, ...values: any[]): string {\n const minIndent = Math.min(...strings.join(\"\").split(LF).filter(isNotEmpty).map(indentWidth));\n\n let curLine = 0;\n let result = \"\";\n const emptyInterpolationLines = new Set<number>();\n\n const append = (str: string) => {\n curLine += str.split(LF).length - 1;\n result += str;\n };\n\n for (let i = 0; i < values.length; ++i) {\n append(trimNoninitialLines(strings[i], minIndent));\n\n const value = values[i] == null || typeof values[i] === \"boolean\" ? \"\" : String(values[i]);\n if (value === \"\") {\n emptyInterpolationLines.add(curLine);\n } else {\n const lastLine = result.slice(result.lastIndexOf(\"\\n\") + 1);\n append(indentNoninitialLines(value, indentWidth(lastLine)));\n }\n }\n append(trimNoninitialLines(strings.at(-1)!, minIndent));\n\n return result\n .split(LF)\n .filter((line, index) => !(emptyInterpolationLines.has(index) && !isNotEmpty(line)))\n .join(\"\\n\")\n .replace(LF_AFFIX, \"\");\n}\n\nfunction isNotEmpty(line: string): boolean {\n return !EMPTY_LINE.test(line);\n}\n\nfunction indentWidth(line: string): number {\n let width = 0;\n for (const c of line) {\n if (!SPACE.test(c)) {\n break;\n }\n ++width;\n }\n return width;\n}\n\nfunction indentNoninitialLines(str: string, indentWidth: number): string {\n const lines = str.split(LF);\n const resultLines: string[] = [lines[0]];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n resultLines.push(line && \" \".repeat(indentWidth) + line);\n }\n return resultLines.join(\"\\n\");\n}\n\nfunction trimNoninitialLines(str: string, indentWidth: number): string {\n const lines = str.split(LF);\n const resultLines: string[] = [lines[0]];\n for (let i = 1; i < lines.length; ++i) {\n resultLines.push(lines[i].slice(indentWidth));\n }\n return resultLines.join(\"\\n\");\n}\n","import { pascalCase } from \"change-case\";\nimport type { ComponentType } from \"react\";\n\nimport type { KtData } from \"./scaffolding/kotlin/KtData.ts\";\nimport { annotate } from \"./scaffolding/kotlin/util/annotations.ts\";\nimport {\n scaffoldDefaultValue,\n scaffoldPropertyAnnotations,\n scaffoldType,\n} from \"./scaffolding/scaffolders/scaffoldModels.ts\";\nimport { scaffoldSchema } from \"./scaffolding/scaffolders/scaffoldSchemas.ts\";\nimport { createSchematic, type Schematic } from \"./Schematic.ts\";\nimport { ClassBuilder } from \"./schematicBuilders/ClassBuilder.tsx\";\nimport { EnumBuilder } from \"./schematicBuilders/EnumBuilder.tsx\";\nimport { ListableBuilder } from \"./schematicBuilders/ListableBuilder.tsx\";\nimport { code } from \"./util/code.ts\";\nimport { joinPaths } from \"./util/join.ts\";\n\nexport const NULLABLE_SCHEMA = \"tech.ostack.kform.schemas.NullableSchema\";\n\n/** Information about a kind of schematic. */\nexport interface SchematicKind {\n kind: string;\n internal?: boolean;\n schema: string;\n package?: string;\n name?: string;\n defaultNullable?: boolean;\n nullable?: boolean;\n defaultValue: string | ((schematic: Schematic, data: KtData) => string);\n propertyAnnotations?:\n | string\n | string[]\n | ((schematic: Schematic, data: KtData) => string | string[] | undefined);\n builder?: ComponentType;\n initChildren?: (childName: string) => Schematic[];\n defaultPackageSuffix?: (childName: string) => string;\n defaultName?: (childName: string) => string;\n scaffoldModel?: (schematic: Schematic, data: KtData) => string;\n scaffoldType?: (schematic: Schematic, data: KtData) => string;\n scaffoldSchema?: (schematic: Schematic, data: KtData) => string;\n}\n\nexport const anySchematicKind: SchematicKind = {\n kind: \"Any\",\n package: \"kotlin\",\n name: \"Any\",\n schema: \"tech.ostack.kform.schemas.AnySchema\",\n nullable: false,\n defaultValue: \"null\",\n scaffoldType: () => \"Any?\",\n};\nexport const bigDecimalSchematicKind: SchematicKind = {\n kind: \"BigDecimal\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"BigDecimal\",\n schema: \"tech.ostack.kform.schemas.BigDecimalSchema\",\n defaultNullable: true,\n defaultValue: \"BigDecimal.ZERO\",\n};\nexport const bigIntegerSchematicKind: SchematicKind = {\n kind: \"BigInteger\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"BigInteger\",\n schema: \"tech.ostack.kform.schemas.BigIntegerSchema\",\n defaultNullable: true,\n defaultValue: \"BigInteger.ZERO\",\n};\nexport const booleanSchematicKind: SchematicKind = {\n kind: \"Boolean\",\n package: \"kotlin\",\n name: \"Boolean\",\n schema: \"tech.ostack.kform.schemas.BooleanSchema\",\n defaultValue: \"false\",\n};\nexport const byteSchematicKind: SchematicKind = {\n kind: \"Byte\",\n package: \"kotlin\",\n name: \"Byte\",\n schema: \"tech.ostack.kform.schemas.ByteSchema\",\n defaultNullable: true,\n defaultValue: \"0.toByte()\",\n};\nexport const charSchematicKind: SchematicKind = {\n kind: \"Char\",\n package: \"kotlin\",\n name: \"Char\",\n schema: \"tech.ostack.kform.schemas.CharSchema\",\n defaultNullable: true,\n defaultValue: \"0.toChar()\",\n};\nexport const classSchematicKind: SchematicKind = {\n kind: \"Class\",\n schema: \"tech.ostack.kform.schemas.ClassSchema\",\n defaultValue: (schematic) => `${schematic.name}()`,\n builder: ClassBuilder,\n initChildren: () => [],\n defaultPackageSuffix: (childName: string) => childName.toLowerCase(),\n defaultName: (childName: string) => pascalCase(childName),\n scaffoldModel: (schematic, data) =>\n code`\n data class ${schematic.name}(\n ${schematic.children\n ?.map((childSchematic) => {\n const childData = {\n ...data,\n currentPath: joinPaths(data.currentPath, childSchematic.childName),\n };\n\n return annotate(\n scaffoldPropertyAnnotations(childSchematic, childData),\n `var ${childSchematic.childName}: ${scaffoldType(\n childSchematic,\n childData,\n )} = ${scaffoldDefaultValue(childSchematic, childData)},`,\n );\n })\n .join(\"\\n\")}\n )\n `,\n scaffoldSchema: (schematic, data) =>\n code`\n ClassSchema {\n ${schematic.children\n ?.map(\n (childSchematic) =>\n `${schematic.name}::${childSchematic.childName} { ${scaffoldSchema(childSchematic, {\n ...data,\n currentPath: joinPaths(data.currentPath, childSchematic.childName),\n })} }`,\n )\n .join(\"\\n\")}\n }\n `,\n};\nexport const doubleSchematicKind: SchematicKind = {\n kind: \"Double\",\n package: \"kotlin\",\n name: \"Double\",\n schema: \"tech.ostack.kform.schemas.DoubleSchema\",\n defaultNullable: true,\n defaultValue: \"0.0\",\n};\nexport const enumSchematicKind: SchematicKind = {\n kind: \"Enum\",\n schema: \"tech.ostack.kform.schemas.EnumSchema\",\n defaultNullable: true,\n defaultValue: (schematic) => `${schematic.name}.${schematic.children?.[0].childName}`,\n builder: EnumBuilder,\n initChildren: () => [],\n defaultName: (childName: string) => pascalCase(childName),\n scaffoldModel: (schematic) =>\n code`\n enum class ${schematic.name} {\n ${schematic.children?.map((childSchematic) => `${childSchematic.childName!},`).join(\"\\n\")}\n }\n `,\n};\nexport const fileSchematicKind: SchematicKind = {\n kind: \"File\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"File\",\n schema: \"tech.ostack.kform.schemas.FileSchema\",\n defaultNullable: true,\n defaultValue: (_schematic, data) => {\n data.currentFile.imports.add(\"tech.ostack.kform.datatypes.emptyPlaceholderFile\");\n return \"emptyPlaceholderFile()\";\n },\n propertyAnnotations: (_schematic, data) => {\n if (data.useFileBase64Serializer) {\n data.currentFile.imports.add(\"tech.ostack.kform.serializers.FileBase64Serializer\");\n return \"@Serializable(with = FileBase64Serializer::class)\";\n }\n },\n};\nexport const floatSchematicKind: SchematicKind = {\n kind: \"Float\",\n package: \"kotlin\",\n name: \"Float\",\n schema: \"tech.ostack.kform.schemas.FloatSchema\",\n defaultNullable: true,\n defaultValue: \"0f\",\n};\nexport const instantSchematicKind: SchematicKind = {\n kind: \"Instant\",\n package: \"kotlin.time\",\n name: \"Instant\",\n schema: \"tech.ostack.kform.schemas.InstantSchema\",\n defaultNullable: true,\n defaultValue: \"Instant.fromEpochMilliseconds(0)\",\n};\nexport const intSchematicKind: SchematicKind = {\n kind: \"Int\",\n package: \"kotlin\",\n name: \"Int\",\n schema: \"tech.ostack.kform.schemas.IntSchema\",\n defaultNullable: true,\n defaultValue: \"0\",\n};\nexport const listSchematicKind: SchematicKind = {\n kind: \"List\",\n package: \"kotlin.collections\",\n name: \"List\",\n schema: \"tech.ostack.kform.schemas.ListSchema\",\n defaultValue: \"emptyList()\",\n builder: ListableBuilder,\n initChildren: () => [createSchematic()],\n scaffoldType: (schematic, data) =>\n `List<${scaffoldType(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })}>`,\n scaffoldSchema: (schematic, data) =>\n `ListSchema { ${scaffoldSchema(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })} }`,\n};\nexport const localDateSchematicKind: SchematicKind = {\n kind: \"LocalDate\",\n package: \"kotlinx.datetime\",\n name: \"LocalDate\",\n schema: \"tech.ostack.kform.schemas.LocalDateSchema\",\n defaultNullable: true,\n defaultValue: \"LocalDate(1970, 1, 1)\",\n};\nexport const localDateTimeSchematicKind: SchematicKind = {\n kind: \"LocalDateTime\",\n package: \"kotlinx.datetime\",\n name: \"LocalDateTime\",\n schema: \"tech.ostack.kform.schemas.LocalDateTimeSchema\",\n defaultNullable: true,\n defaultValue: \"LocalDateTime(1970, 1, 1, 0, 0)\",\n};\nexport const longSchematicKind: SchematicKind = {\n kind: \"Long\",\n package: \"kotlin\",\n name: \"Long\",\n schema: \"tech.ostack.kform.schemas.LongSchema\",\n defaultNullable: true,\n defaultValue: \"0L\",\n};\nexport const shortSchematicKind: SchematicKind = {\n kind: \"Short\",\n package: \"kotlin\",\n name: \"Short\",\n schema: \"tech.ostack.kform.schemas.ShortSchema\",\n defaultNullable: true,\n defaultValue: \"0.toShort()\",\n};\nexport const stringSchematicKind: SchematicKind = {\n kind: \"String\",\n package: \"kotlin\",\n name: \"String\",\n schema: \"tech.ostack.kform.schemas.StringSchema\",\n defaultValue: '\"\"',\n};\nexport const tableSchematicKind: SchematicKind = {\n kind: \"Table\",\n package: \"tech.ostack.kform.datatypes\",\n name: \"Table\",\n schema: \"tech.ostack.kform.schemas.TableSchema\",\n defaultValue: (_schematic, data) => {\n data.currentFile.imports.add(\"tech.ostack.kform.datatypes.tableOf\");\n return \"tableOf()\";\n },\n builder: ListableBuilder,\n initChildren: () => [createSchematic()],\n propertyAnnotations: (_schematic, data) => {\n if (data.useTableValuesSerializer) {\n data.currentFile.imports.add(\"tech.ostack.kform.serializers.TableValuesSerializer\");\n return \"@Serializable(with = TableValuesSerializer::class)\";\n }\n },\n scaffoldType: (schematic, data) =>\n `Table<${scaffoldType(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })}>`,\n scaffoldSchema: (schematic, data) =>\n `TableSchema { ${scaffoldSchema(schematic.children![0], {\n ...data,\n currentPath: joinPaths(data.currentPath, \"*\"),\n })} }`,\n};\n\nexport const defaultSchematicKinds = [\n anySchematicKind,\n bigDecimalSchematicKind,\n bigIntegerSchematicKind,\n booleanSchematicKind,\n byteSchematicKind,\n charSchematicKind,\n classSchematicKind,\n doubleSchematicKind,\n enumSchematicKind,\n fileSchematicKind,\n floatSchematicKind,\n instantSchematicKind,\n intSchematicKind,\n listSchematicKind,\n localDateSchematicKind,\n localDateTimeSchematicKind,\n longSchematicKind,\n shortSchematicKind,\n stringSchematicKind,\n tableSchematicKind,\n];\n","import type { Schematic } from \"../../Schematic.ts\";\nimport { NULLABLE_SCHEMA } from \"../../SchematicKind.ts\";\nimport { joinPackages, joinPaths } from \"../../util/join.ts\";\nimport type { KtData } from \"../kotlin/KtData.ts\";\nimport { type KtFile, ktFile } from \"../kotlin/KtFile.ts\";\nimport { jsExport } from \"../kotlin/util/annotations.ts\";\nimport { simpleKtName } from \"../kotlin/util/simpleKtName.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\n\nexport function scaffoldSchemas(schematic: Schematic, data: ScaffoldingData): void {\n const fileName = joinPaths(data.currentDir, `${schematic.name}Schema.kt`);\n let file = data.files.get(fileName) as KtFile | undefined;\n if (!file) {\n data.files.set(fileName, (file = ktFile(data)));\n data.files.set(joinPaths(data.currentDir, `${schematic.name}Validations.kt`), ktFile(data));\n }\n scaffoldSchemaDeclaration(schematic, { ...data, currentFile: file });\n}\n\nfunction scaffoldSchemaDeclaration(schematic: Schematic, data: KtData): void {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const nDecls = data.currentFile.declarations.length;\n data.currentFile.declarations.push(\"\");\n const decl = `val ${schematic.name}Schema = ${\n schematicKind.scaffoldSchema?.(schematic, data) ?? `${simpleKtName(schematicKind.schema)}()`\n }`;\n data.currentFile.imports.add(schematicKind.schema);\n data.currentFile.declarations[nDecls] = data.currentPath === \"/\" ? jsExport(decl, data) : decl;\n}\n\nexport function scaffoldSchema(schematic: Schematic, data: KtData): string {\n const schematicKind = data.schematicKinds.get(schematic.kind);\n if (!schematicKind) {\n throw new Error(`Unknown schematic kind: '${schematic.kind}'.`);\n }\n\n const schematicPackage =\n schematicKind.package ?? joinPackages(data.currentPackage, schematic.packageSuffix);\n\n let scaffoldedSchema: string;\n if (schematicKind.package == null && schematicPackage !== data.currentPackage) {\n scaffoldedSchema = `${schematic.name}Schema`;\n data.currentFile.imports.add(`${schematicPackage}.${scaffoldedSchema}`);\n scaffoldSchemas(schematic, {\n ...data,\n currentPackage: joinPackages(data.currentPackage, schematic.packageSuffix),\n currentDir: joinPaths(data.currentDir, schematic.packageSuffix?.replace(\".\", \"/\")),\n });\n } else {\n scaffoldedSchema =\n schematicKind.scaffoldSchema?.(schematic, data) ?? `${simpleKtName(schematicKind.schema)}()`;\n data.currentFile.imports.add(schematicKind.schema);\n }\n\n if (schematic.nullable) {\n data.currentFile.imports.add(NULLABLE_SCHEMA);\n return `${simpleKtName(NULLABLE_SCHEMA)} { ${scaffoldedSchema} }`;\n }\n return scaffoldedSchema;\n}\n","import { type Options, render } from \"ejs\";\n\nimport type { TemplateFile, TemplateFileOptions } from \"./TemplateFile.ts\";\n\nexport interface EjsTemplateFile extends TemplateFile {\n content: string;\n ejsData?: Record<string, any>;\n ejsOptions?: Omit<Options, \"_with\" | \"strict\" | \"destructuredLocals\">;\n}\n\nexport type EjsTemplateFileOptions = TemplateFileOptions & EjsTemplateFile[\"ejsOptions\"];\n\nexport function ejsTemplateFile(\n content: string,\n ejsData?: EjsTemplateFile[\"ejsData\"],\n { base64, binary, executable, ...ejsOptions }: EjsTemplateFileOptions = {},\n): EjsTemplateFile {\n return {\n content,\n ejsData,\n base64,\n binary,\n executable,\n ejsOptions,\n getContent: ejsTemplateFileContent,\n };\n}\n\nfunction ejsTemplateFileContent(this: EjsTemplateFile): string | Promise<string> {\n return render(this.content, this.ejsData, {\n strict: true,\n destructuredLocals: Object.keys(this.ejsData ?? {}),\n ...this.ejsOptions,\n });\n}\n","import { joinPaths } from \"../../../util/join.ts\";\nimport type { ScaffoldingData } from \"../../ScaffoldingData.ts\";\nimport { ejsTemplateFile, type EjsTemplateFileOptions } from \"../EjsTemplateFile.ts\";\n\nexport function addEjsTemplateFile(\n data: ScaffoldingData,\n fileName: string,\n content: string,\n ejsData?: Record<string, any>,\n options?: EjsTemplateFileOptions,\n): void {\n data.files.set(joinPaths(data.currentDir, fileName), ejsTemplateFile(content, ejsData, options));\n}\n","import { camelCase } from \"change-case\";\n\nimport type { Schematic } from \"../../Schematic.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport serializerKt from \"../templates/Serializer.kt.ejs?raw\";\nimport { addEjsTemplateFile } from \"../templating/util/addEjsTemplateFile.ts\";\n\nexport function scaffoldSerializer(schematic: Schematic, data: ScaffoldingData): void {\n addEjsTemplateFile(data, `${schematic.name}Serializer.kt`, serializerKt, {\n filePackage: data.currentPackage,\n formVar: camelCase(schematic.name!),\n formClass: schematic.name,\n });\n}\n","import { camelCase } from \"change-case\";\n\nimport type { Schematic } from \"../../Schematic.ts\";\nimport type { ScaffoldingData } from \"../ScaffoldingData.ts\";\nimport validatorKt from \"../templates/Validator.kt.ejs?raw\";\nimport { addEjsTemplateFile } from \"../templating/util/addEjsTemplateFile.ts\";\n\nexport function scaffoldValidator(schematic: Schematic, data: ScaffoldingData): void {\n addEjsTemplateFile(data, `${schematic.name}Validator.kt`, validatorKt, {\n filePackage: data.currentPackage,\n formVar: camelCase(schematic.name!),\n formClass: schematic.name,\n });\n}\n","import { useEffect, useLayoutEffect } from \"react\";\n\n/** `useLayoutEffect` hook which runs `useEffect` on the server. */\nexport const useSafeLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n","import { useSafeLayoutEffect } from \"./useSafeLayoutEffect.ts\";\n\n/** Hook that tracks the dimensions of an HTML element using the Resize Observer API + window resize. */\nexport function useMeasure(\n element: Element | null,\n setMeasurement: (measurement: DOMRectReadOnly | undefined) => void,\n) {\n useSafeLayoutEffect(() => {\n if (!element) {\n setMeasurement(undefined);\n return;\n }\n\n const cb = () => setMeasurement(element.getBoundingClientRect());\n cb();\n\n const observer = new ResizeObserver(([entry]) => entry && cb());\n observer.observe(element);\n window.addEventListener(\"resize\", cb);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", cb);\n setMeasurement(undefined);\n };\n }, [element, setMeasurement]);\n}\n","import { type ReactNode, useState } from \"react\";\n\nimport { useMeasure } from \"./util/useMeasure.ts\";\n\nexport interface SchematicBuilderConfigProps {\n children?: ReactNode;\n}\n\nexport function SchematicBuilderConfig({ children }: SchematicBuilderConfigProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [popoverEl, setPopoverEl] = useState<HTMLDivElement | null>(null);\n useMeasure(anchorEl, (measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--anchor-top\", `${measurement.top}px`);\n popoverEl.style.setProperty(\"--anchor-left\", `${measurement.left}px`);\n popoverEl.style.setProperty(\"--anchor-bottom\", `${measurement.bottom}px`);\n popoverEl.style.setProperty(\"--anchor-right\", `${measurement.right}px`);\n popoverEl.style.setProperty(\"--anchor-width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--anchor-height\", `${measurement.height}px`);\n }\n });\n useMeasure(popoverEl, (measurement) => {\n if (popoverEl && measurement) {\n popoverEl.style.setProperty(\"--width\", `${measurement.width}px`);\n popoverEl.style.setProperty(\"--height\", `${measurement.height}px`);\n }\n });\n\n return (\n <>\n <button\n type=\"button\"\n className=\"builder-icon-button builder-action builder-config-schematic\"\n popoverTarget=\"builder-config-popover\"\n title=\"Config\"\n aria-label=\"Config\"\n ref={setAnchorEl}\n >\n ⚙️\n </button>\n <div popover=\"\" id=\"builder-config-popover\" ref={setPopoverEl}>\n {children}\n </div>\n </>\n );\n}\n","import {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { type ReactNode, useRef, useState } from \"react\";\nimport { createStore } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { LoadSchematic } from \"./actions/LoadSchematic.tsx\";\nimport { SaveSchematic } from \"./actions/SaveSchematic.tsx\";\nimport { ScaffoldToZip } from \"./actions/ScaffoldToZip.tsx\";\nimport { UseFileBase64SerializerConfig } from \"./configs/UseFileBase64SerializerConfig.tsx\";\nimport { UseTableValuesSerializerConfig } from \"./configs/UseTableValuesSerializerConfig.tsx\";\nimport { configScaffolder } from \"./scaffolding/configScaffolder.ts\";\nimport type { KtData } from \"./scaffolding/kotlin/KtData.ts\";\nimport type { Scaffolder } from \"./scaffolding/scaffold.ts\";\nimport { scaffoldModels } from \"./scaffolding/scaffolders/scaffoldModels.ts\";\nimport { scaffoldSchemas } from \"./scaffolding/scaffolders/scaffoldSchemas.ts\";\nimport { scaffoldSerializer } from \"./scaffolding/scaffolders/scaffoldSerializer.ts\";\nimport { scaffoldValidator } from \"./scaffolding/scaffolders/scaffoldValidator.ts\";\nimport { createSchematic, moveSchematic, type Schematic } from \"./Schematic.ts\";\nimport { SchematicBuilderConfig } from \"./SchematicBuilderConfig.tsx\";\nimport { type DraggedSchematic, SchematicBuilderContext } from \"./SchematicBuilderContext.ts\";\nimport { ClassBuilder } from \"./schematicBuilders/ClassBuilder.tsx\";\nimport { classSchematicKind, defaultSchematicKinds, type SchematicKind } from \"./SchematicKind.ts\";\n\nexport interface SchematicBuilderProps {\n name?: string;\n title?: ReactNode;\n basePath?: string;\n basePackage?: string;\n baseDir?: string | ((schematic: Schematic) => string);\n defaultRootClassPackage?: string;\n defaultRootClassName?: string;\n schematicKinds?: SchematicKind[];\n scaffolders?: Scaffolder<any>[] | ((schematic: Schematic) => Scaffolder<any>[]);\n scaffoldingData?: Record<string, any> | ((schematic: Schematic) => Record<string, any>);\n actions?: ReactNode;\n configs?: ReactNode;\n version?: ReactNode;\n}\n\nconst KOTLIN_MAIN_DATA: Partial<KtData> = { currentDir: \"shared/src/commonMain/kotlin\" };\nconst KOTLIN_TEST_DATA: Partial<KtData> = { currentDir: \"shared/src/commonTest/kotlin\" };\n\nconst DEFAULT_APP_VERSION = import.meta.env.VITE_APP_VERSION;\nconst DEFAULT_SCAFFOLDERS = [\n configScaffolder(scaffoldSchemas, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldModels, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldSerializer, KOTLIN_MAIN_DATA),\n configScaffolder(scaffoldValidator, KOTLIN_TEST_DATA),\n];\nconst DEFAULT_SCAFFOLDING_DATA = (schematic: Schematic) => schematic.config;\nconst DEFAULT_ACTIONS = (\n <>\n <LoadSchematic />\n <SaveSchematic />\n <ScaffoldToZip />\n </>\n);\nconst DEFAULT_CONFIGS = (\n <>\n <UseFileBase64SerializerConfig />\n <UseTableValuesSerializerConfig />\n </>\n);\n\nexport function SchematicBuilder({\n name = \"kform\",\n title = document.title,\n basePath,\n basePackage,\n baseDir,\n defaultRootClassPackage = \"org.example\",\n defaultRootClassName = \"MyForm\",\n schematicKinds = defaultSchematicKinds,\n scaffolders = DEFAULT_SCAFFOLDERS,\n scaffoldingData = DEFAULT_SCAFFOLDING_DATA,\n actions = DEFAULT_ACTIONS,\n configs = DEFAULT_CONFIGS,\n version = DEFAULT_APP_VERSION,\n}: SchematicBuilderProps) {\n const [store] = useState(() =>\n createStore(\n persist(\n () =>\n createSchematic({\n kind: classSchematicKind.kind,\n packageSuffix: defaultRootClassPackage,\n name: defaultRootClassName,\n children: [],\n }),\n { name },\n ),\n ),\n );\n const schematicKindsMap = new Map(\n schematicKinds.sort((t1, t2) => t1.kind.localeCompare(t2.kind)).map((t) => [t.kind, t]),\n );\n const latestSchematicFileHandleRef = useRef<FileSystemFileHandle | null>(null);\n\n const [draggedSchematic, setDraggedSchematic] = useState<DraggedSchematic | null>(null);\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 10, delay: 400, tolerance: 20 } }),\n useSensor(KeyboardSensor),\n );\n\n return (\n <SchematicBuilderContext\n value={{\n name,\n basePath,\n basePackage,\n baseDir,\n schematicKinds: schematicKindsMap,\n scaffolders,\n scaffoldingData,\n store,\n getSchematic: () => store.getState(),\n setSchematic: (toSet) => store.setState(toSet),\n removeSchematic: () => {},\n parentPackage: basePackage,\n draggedSchematic,\n latestSchematicFileHandleRef,\n }}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(evt) =>\n setDraggedSchematic({\n id: evt.active.id as string,\n ...evt.active.data.current,\n } as DraggedSchematic)\n }\n onDragEnd={(evt) => {\n const { parentId, sortBefore, ignored } = evt.over?.data.current ?? {};\n if (!ignored) {\n store.setState((schematic) =>\n moveSchematic(schematic, evt.active.id as string, parentId, sortBefore),\n );\n }\n setDraggedSchematic(null);\n }}\n >\n <form className=\"builder-root\">\n <header className=\"builder-header\">\n <h1 className=\"builder-title\">{title}</h1>\n {version && <div className=\"builder-version\">{version}</div>}\n <div className=\"builder-actions\">\n {configs && <SchematicBuilderConfig>{configs}</SchematicBuilderConfig>}\n {actions}\n </div>\n </header>\n\n <ClassBuilder />\n </form>\n\n <DragOverlay>\n {draggedSchematic && <div className=\"builder-dragged\">{draggedSchematic.node}</div>}\n </DragOverlay>\n </DndContext>\n </SchematicBuilderContext>\n );\n}\n","import type { ScaffoldingFile, ScaffoldingFileContent } from \"../ScaffoldingFile.ts\";\n\nexport interface TemplateFile extends ScaffoldingFile {\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>;\n}\n\nexport type TemplateFileOptions = Omit<ScaffoldingFile, \"getContent\">;\n\nexport function templateFile(\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>,\n options?: TemplateFileOptions,\n): TemplateFile {\n return { ...options, content, getContent: templateFileContent };\n}\n\nfunction templateFileContent(\n this: TemplateFile,\n): ScaffoldingFileContent | Promise<ScaffoldingFileContent> {\n return this.content;\n}\n","import { joinPaths } from \"../../../util/join.ts\";\nimport type { ScaffoldingData } from \"../../ScaffoldingData.ts\";\nimport type { ScaffoldingFileContent } from \"../../ScaffoldingFile.ts\";\nimport { templateFile, type TemplateFileOptions } from \"../TemplateFile.ts\";\n\nexport function addTemplateFile(\n data: ScaffoldingData,\n fileName: string,\n content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>,\n options?: TemplateFileOptions,\n): void {\n data.files.set(joinPaths(data.currentDir, fileName), templateFile(content, options));\n}\n","import type { ScaffoldingFile } from \"../ScaffoldingFile.ts\";\nimport type { TsImport } from \"./TsImport.ts\";\n\nexport interface TsFile extends ScaffoldingFile {\n imports: TsImport[];\n declarations: string[];\n}\n\nexport function tsFile(): TsFile {\n return { imports: [], declarations: [], getContent: tsFileContent };\n}\n\ninterface TsImportStatement {\n moduleName: string;\n namedImports?: Set<string>;\n typedImports?: Set<string>;\n defaultImport?: string;\n namespaceImport?: string;\n}\n\nfunction tsFileContent(this: TsFile): string {\n const importStatements = tsImportsToStatements(this.imports);\n return (\n [\n // Imports\n importStatements\n .sort((i1, i2) => i1.moduleName.localeCompare(i2.moduleName))\n .map((i) => tsImportStatementToString(i))\n .join(\"\\n\"),\n\n // Declarations\n ...this.declarations,\n ]\n .filter((s) => s)\n .join(\"\\n\\n\") + \"\\n\"\n );\n}\n\nfunction tsImportsToStatements(imports: TsImport[]): TsImportStatement[] {\n const importsStatements = new Map<string, TsImportStatement>();\n for (const imp of imports) {\n let statement = importsStatements.get(imp.moduleName);\n if (!statement) {\n importsStatements.set(imp.moduleName, (statement = { moduleName: imp.moduleName }));\n }\n if (imp.isDefault) {\n statement.defaultImport = imp.name;\n } else if (imp.isNamespace) {\n statement.namespaceImport = imp.name;\n } else if (imp.isType) {\n (statement.typedImports ??= new Set()).add(imp.name);\n } else if (imp.name) {\n (statement.namedImports ??= new Set()).add(imp.name);\n }\n }\n return Array.from(importsStatements.values());\n}\n\nfunction tsImportStatementToString(importStatement: TsImportStatement): string {\n const namedImportsArr = [\n ...new Set([...(importStatement.namedImports ?? []), ...(importStatement.typedImports ?? [])]),\n ].sort((i1, i2) => i1.localeCompare(i2));\n const allNamedImportsAreTyped = namedImportsArr.every(\n (i) => !importStatement.namedImports?.has(i),\n );\n const namedImports =\n namedImportsArr.length > 0\n ? allNamedImportsAreTyped\n ? `type { ${namedImportsArr.join(\", \")} }`\n : `{ ${namedImportsArr\n .map((i) => (importStatement.namedImports?.has(i) ? i : `type ${i}`))\n .join(\", \")} }`\n : null;\n const defaultImport = importStatement.defaultImport || null;\n const namespaceImport = importStatement.namespaceImport\n ? `* as ${importStatement.namespaceImport}`\n : null;\n const allImports = [defaultImport, namespaceImport, namedImports].filter((s) => s).join(\", \");\n const moduleName = JSON.stringify(importStatement.moduleName);\n\n return allImports ? `import ${allImports} from ${moduleName};` : `import ${moduleName};`;\n}\n"],"ignoreList":[17],"mappings":"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"}
|