@duongthiu/onex-core 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -65
- package/THEME_API.md +36 -33
- package/dist/api.js +14 -0
- package/dist/api.js.map +1 -0
- package/dist/api.mjs +5 -0
- package/dist/api.mjs.map +1 -0
- package/dist/auth.js +23 -0
- package/dist/auth.js.map +1 -0
- package/dist/auth.mjs +6 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/blog.js +22 -0
- package/dist/blog.js.map +1 -0
- package/dist/blog.mjs +5 -0
- package/dist/blog.mjs.map +1 -0
- package/dist/cart.js +27 -0
- package/dist/cart.js.map +1 -0
- package/dist/cart.mjs +6 -0
- package/dist/cart.mjs.map +1 -0
- package/dist/chunk-2CSWHI3L.js +210 -0
- package/dist/chunk-2CSWHI3L.js.map +1 -0
- package/dist/chunk-2FGHIDUV.js +99 -0
- package/dist/chunk-2FGHIDUV.js.map +1 -0
- package/dist/chunk-2NMEKWO5.js +40 -0
- package/dist/chunk-2NMEKWO5.js.map +1 -0
- package/dist/chunk-43BVHGDT.mjs +131 -0
- package/dist/chunk-43BVHGDT.mjs.map +1 -0
- package/dist/chunk-4JVQJI3I.mjs +290 -0
- package/dist/chunk-4JVQJI3I.mjs.map +1 -0
- package/dist/chunk-5N2EKK5O.js +9550 -0
- package/dist/chunk-5N2EKK5O.js.map +1 -0
- package/dist/chunk-5T6NDVSN.js +76 -0
- package/dist/chunk-5T6NDVSN.js.map +1 -0
- package/dist/chunk-73AINNCI.mjs +201 -0
- package/dist/chunk-73AINNCI.mjs.map +1 -0
- package/dist/chunk-AIXBDAVP.mjs +61 -0
- package/dist/chunk-AIXBDAVP.mjs.map +1 -0
- package/dist/chunk-ALYN5HAC.js +210 -0
- package/dist/chunk-ALYN5HAC.js.map +1 -0
- package/dist/chunk-AREMJR3Q.js +36 -0
- package/dist/chunk-AREMJR3Q.js.map +1 -0
- package/dist/chunk-DXAI6XOI.mjs +33 -0
- package/dist/chunk-DXAI6XOI.mjs.map +1 -0
- package/dist/chunk-F5TFNWFJ.mjs +257 -0
- package/dist/chunk-F5TFNWFJ.mjs.map +1 -0
- package/dist/chunk-FQ7FWUZN.js +265 -0
- package/dist/chunk-FQ7FWUZN.js.map +1 -0
- package/dist/{chunk-3SZX6LHT.js → chunk-J27VGXJH.js} +2 -24
- package/dist/chunk-J27VGXJH.js.map +1 -0
- package/dist/chunk-JZ46LLTZ.js +121 -0
- package/dist/chunk-JZ46LLTZ.js.map +1 -0
- package/dist/chunk-K24UHN6G.mjs +76 -0
- package/dist/chunk-K24UHN6G.mjs.map +1 -0
- package/dist/chunk-KCQGGU5R.mjs +344 -0
- package/dist/chunk-KCQGGU5R.mjs.map +1 -0
- package/dist/chunk-MT22NYKT.mjs +117 -0
- package/dist/chunk-MT22NYKT.mjs.map +1 -0
- package/dist/chunk-NDD472IZ.js +85 -0
- package/dist/chunk-NDD472IZ.js.map +1 -0
- package/dist/chunk-NHOIGGYU.mjs +833 -0
- package/dist/chunk-NHOIGGYU.mjs.map +1 -0
- package/dist/chunk-O3XR7TW3.mjs +12 -0
- package/dist/chunk-O3XR7TW3.mjs.map +1 -0
- package/dist/chunk-OAPYSC2X.mjs +206 -0
- package/dist/chunk-OAPYSC2X.mjs.map +1 -0
- package/dist/{chunk-XE4EOKS4.mjs → chunk-ONJREDYY.mjs} +3 -23
- package/dist/chunk-ONJREDYY.mjs.map +1 -0
- package/dist/chunk-OVT2LUAM.js +197 -0
- package/dist/chunk-OVT2LUAM.js.map +1 -0
- package/dist/chunk-OWNGNGKL.js +331 -0
- package/dist/chunk-OWNGNGKL.js.map +1 -0
- package/dist/chunk-P7SXNZSV.js +298 -0
- package/dist/chunk-P7SXNZSV.js.map +1 -0
- package/dist/chunk-PFJOL3HI.mjs +71 -0
- package/dist/chunk-PFJOL3HI.mjs.map +1 -0
- package/dist/chunk-PPULMWJ6.js +295 -0
- package/dist/chunk-PPULMWJ6.js.map +1 -0
- package/dist/chunk-RGIVKACG.js +359 -0
- package/dist/chunk-RGIVKACG.js.map +1 -0
- package/dist/chunk-RPP5K2LP.js +870 -0
- package/dist/chunk-RPP5K2LP.js.map +1 -0
- package/dist/{chunk-7EON6Q4L.mjs → chunk-RUCHWUD7.mjs} +7651 -6370
- package/dist/chunk-RUCHWUD7.mjs.map +1 -0
- package/dist/chunk-SEVUIX4H.js +137 -0
- package/dist/chunk-SEVUIX4H.js.map +1 -0
- package/dist/chunk-SK2FSHFM.mjs +208 -0
- package/dist/chunk-SK2FSHFM.mjs.map +1 -0
- package/dist/chunk-T6EJ2GAV.mjs +294 -0
- package/dist/chunk-T6EJ2GAV.mjs.map +1 -0
- package/dist/chunk-ULBDOFZI.mjs +302 -0
- package/dist/chunk-ULBDOFZI.mjs.map +1 -0
- package/dist/chunk-V3JIELNV.js +241 -0
- package/dist/chunk-V3JIELNV.js.map +1 -0
- package/dist/chunk-V5E2KWMA.mjs +238 -0
- package/dist/chunk-V5E2KWMA.mjs.map +1 -0
- package/dist/chunk-VJA3ER6A.js +14 -0
- package/dist/chunk-VJA3ER6A.js.map +1 -0
- package/dist/chunk-VLI7ULX5.js +66 -0
- package/dist/chunk-VLI7ULX5.js.map +1 -0
- package/dist/chunk-WFGS5OFH.mjs +189 -0
- package/dist/chunk-WFGS5OFH.mjs.map +1 -0
- package/dist/chunk-WVC5GP24.mjs +96 -0
- package/dist/chunk-WVC5GP24.mjs.map +1 -0
- package/dist/chunk-YOSPWY5K.mjs +36 -0
- package/dist/chunk-YOSPWY5K.mjs.map +1 -0
- package/dist/chunk-ZFFXXLX7.js +205 -0
- package/dist/chunk-ZFFXXLX7.js.map +1 -0
- package/dist/client.js +512 -249
- package/dist/client.mjs +21 -2
- package/dist/components.js +393 -0
- package/dist/components.js.map +1 -0
- package/dist/components.mjs +8 -0
- package/dist/components.mjs.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/config.mjs +4 -0
- package/dist/config.mjs.map +1 -0
- package/dist/contact.js +22 -0
- package/dist/contact.js.map +1 -0
- package/dist/contact.mjs +5 -0
- package/dist/contact.mjs.map +1 -0
- package/dist/contexts.js +51 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.mjs +6 -0
- package/dist/contexts.mjs.map +1 -0
- package/dist/finance.js +26 -0
- package/dist/finance.js.map +1 -0
- package/dist/finance.mjs +5 -0
- package/dist/finance.mjs.map +1 -0
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -0
- package/dist/icons.mjs +4 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/index.js +512 -249
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js +1437 -0
- package/dist/internal.js.map +1 -0
- package/dist/internal.mjs +1404 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/motion.js +51 -0
- package/dist/motion.js.map +1 -0
- package/dist/motion.mjs +38 -0
- package/dist/motion.mjs.map +1 -0
- package/dist/orders.js +22 -0
- package/dist/orders.js.map +1 -0
- package/dist/orders.mjs +5 -0
- package/dist/orders.mjs.map +1 -0
- package/dist/products.js +27 -0
- package/dist/products.js.map +1 -0
- package/dist/products.mjs +6 -0
- package/dist/products.mjs.map +1 -0
- package/dist/registry.js +44 -0
- package/dist/registry.js.map +1 -0
- package/dist/registry.mjs +7 -0
- package/dist/registry.mjs.map +1 -0
- package/dist/renderers.js +51 -0
- package/dist/renderers.js.map +1 -0
- package/dist/renderers.mjs +6 -0
- package/dist/renderers.mjs.map +1 -0
- package/dist/server.js +11 -189
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +3 -186
- package/dist/server.mjs.map +1 -1
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +4 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.js +160 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +7 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/wrappers.js +104 -0
- package/dist/wrappers.js.map +1 -0
- package/dist/wrappers.mjs +96 -0
- package/dist/wrappers.mjs.map +1 -0
- package/package.json +112 -9
- package/dist/api-vuL1Eg5L.d.mts +0 -2961
- package/dist/api-vuL1Eg5L.d.ts +0 -2961
- package/dist/chunk-3SZX6LHT.js.map +0 -1
- package/dist/chunk-7EON6Q4L.mjs.map +0 -1
- package/dist/chunk-WDY773GJ.js +0 -8308
- package/dist/chunk-WDY773GJ.js.map +0 -1
- package/dist/chunk-XE4EOKS4.mjs.map +0 -1
- package/dist/client.d.mts +0 -1461
- package/dist/client.d.ts +0 -1461
- package/dist/index.d.mts +0 -125
- package/dist/index.d.ts +0 -125
- package/dist/server.d.mts +0 -70
- package/dist/server.d.ts +0 -70
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/generate-id.ts","../src/utils/block-finder.ts","../src/utils/component-finder.ts","../src/utils/component-updater.ts","../src/utils/section-helpers.ts","../src/utils/inspector-utils.ts","../src/utils/adapters.ts","../src/utils/section/validation.ts","../src/utils/section/extraction.ts","../src/utils/section/conversion.ts","../src/utils/section/index.ts","../src/utils/component/validation.ts","../src/utils/component/extraction.ts","../src/utils/component/conversion.ts","../src/utils/component/index.ts"],"names":["__spreadProps","__spreadValues","DEFAULT_INSPECTOR_CONFIG","FIELD_TYPES","validateFieldValue","autoConvertValue","createValueProxy"],"mappings":"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","file":"chunk-RPP5K2LP.js","sourcesContent":["/**\n * ID Generation Utilities\n * Generate unique IDs for pages, sections, and other entities\n */\n\n/**\n * Generate a random ID with prefix\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction generateRandomId(prefix: string, length: number = 8): string {\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n let id = \"\";\n\n for (let i = 0; i < length; i++) {\n id += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return `${prefix}-${id}`;\n}\n\n/**\n * Generate a unique page ID\n *\n * @param prefix - Optional prefix (default: 'page')\n * @returns Unique page ID\n *\n * @example\n * ```ts\n * const pageId = generatePageId(); // 'page-a3b4c5d6'\n * const pageId = generatePageId('homepage'); // 'homepage-a3b4c5d6'\n * ```\n */\nexport function generatePageId(prefix: string = \"page\"): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a unique section ID\n *\n * @param sectionType - Section type (e.g., 'hero', 'features')\n * @returns Unique section ID\n *\n * @example\n * ```ts\n * const sectionId = generateSectionId('hero'); // 'hero-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateSectionId(sectionType: string): string {\n return `${sectionType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a unique block ID\n *\n * @param blockType - Block type (e.g., 'text', 'image')\n * @returns Unique block ID\n *\n * @example\n * ```ts\n * const blockId = generateBlockId('text'); // 'text-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateBlockId(blockType: string): string {\n return `${blockType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a URL-friendly handle from a title\n *\n * @param title - Page or section title\n * @returns URL-friendly handle\n *\n * @example\n * ```ts\n * const handle = generateHandle('My New Page'); // 'my-new-page'\n * const handle = generateHandle('About Us & Services'); // 'about-us-services'\n * ```\n */\nexport function generateHandle(title: string): string {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\") // Remove special characters\n .replace(/\\s+/g, \"-\") // Replace spaces with hyphens\n .replace(/-+/g, \"-\") // Replace multiple hyphens with single hyphen\n .replace(/^-|-$/g, \"\"); // Remove leading/trailing hyphens\n}\n\n/**\n * Generate a unique theme ID\n *\n * @param name - Theme name\n * @returns Unique theme ID\n *\n * @example\n * ```ts\n * const themeId = generateThemeId('Dark Mode'); // 'dark-mode-1234567890'\n * ```\n */\nexport function generateThemeId(name: string): string {\n const handle = generateHandle(name);\n return `${handle}-${Date.now()}`;\n}\n\n/**\n * Generate a generic unique ID\n *\n * @param prefix - Optional prefix (default: 'id')\n * @returns Unique ID\n *\n * @example\n * ```ts\n * const id = generateId(); // 'id-1234567890-a3b4c5d6'\n * const id = generateId('comp'); // 'comp-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateId(prefix: string = \"id\"): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n","/**\n * Block Finder Utilities\n * Recursive functions to find, update, and remove blocks at any nesting level\n */\n\nimport type { BlockInstance } from \"../types\";\nimport type { SectionInstance } from \"../types\";\n\n/**\n * Recursively find a block by ID in a section's block tree\n * @param section - The section to search in\n * @param blockId - The block ID to find\n * @returns The block if found, undefined otherwise\n */\nexport function findBlockInSection(\n section: SectionInstance | null | undefined,\n blockId: string\n): BlockInstance | undefined {\n if (!section?.blocks) return undefined;\n\n // Search through all blocks at this level\n for (const block of section.blocks) {\n // Direct match\n if (block.id === blockId) {\n return block;\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const found = findBlockInBlocks(block.blocks, blockId);\n if (found) return found;\n }\n }\n\n return undefined;\n}\n\n/**\n * Recursively search for a block in an array of blocks\n * @param blocks - Array of blocks to search\n * @param blockId - The block ID to find\n * @returns The block if found, undefined otherwise\n */\nfunction findBlockInBlocks(\n blocks: BlockInstance[],\n blockId: string\n): BlockInstance | undefined {\n for (const block of blocks) {\n if (block.id === blockId) {\n return block;\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const found = findBlockInBlocks(block.blocks, blockId);\n if (found) return found;\n }\n }\n\n return undefined;\n}\n\n/**\n * Update a block at any nesting level in a section\n * @param section - The section containing the block\n * @param blockId - The block ID to update\n * @param updates - Partial updates to apply to the block\n * @returns Updated section with the block modified\n */\nexport function updateNestedBlock(\n section: SectionInstance,\n blockId: string,\n updates: Partial<BlockInstance>\n): SectionInstance {\n if (!section.blocks) return section;\n\n return {\n ...section,\n blocks: updateBlockInArray(section.blocks, blockId, updates),\n };\n}\n\n/**\n * Recursively update a block in an array of blocks\n */\nfunction updateBlockInArray(\n blocks: BlockInstance[],\n blockId: string,\n updates: Partial<BlockInstance>\n): BlockInstance[] {\n return blocks.map((block) => {\n // Direct match - update this block\n if (block.id === blockId) {\n return { ...block, ...updates };\n }\n\n // Has nested blocks - recursively search and update\n if (block.blocks && block.blocks.length > 0) {\n return {\n ...block,\n blocks: updateBlockInArray(block.blocks, blockId, updates),\n };\n }\n\n // No match, return unchanged\n return block;\n });\n}\n\n/**\n * Remove a block at any nesting level from a section\n * @param section - The section containing the block\n * @param blockId - The block ID to remove\n * @returns Updated section with the block removed\n */\nexport function removeNestedBlock(\n section: SectionInstance,\n blockId: string\n): SectionInstance {\n if (!section.blocks) return section;\n\n return {\n ...section,\n blocks: removeBlockFromArray(section.blocks, blockId),\n };\n}\n\n/**\n * Recursively remove a block from an array of blocks\n */\nfunction removeBlockFromArray(\n blocks: BlockInstance[],\n blockId: string\n): BlockInstance[] {\n return blocks\n .filter((block) => block.id !== blockId) // Remove if direct match\n .map((block) => {\n // Recursively remove from nested blocks\n if (block.blocks && block.blocks.length > 0) {\n return {\n ...block,\n blocks: removeBlockFromArray(block.blocks, blockId),\n };\n }\n return block;\n });\n}\n\n/**\n * Get the path to a block (useful for debugging)\n * @param section - The section to search in\n * @param blockId - The block ID to find\n * @returns Array of block IDs representing the path, or empty array if not found\n */\nexport function getBlockPath(\n section: SectionInstance | null | undefined,\n blockId: string\n): string[] {\n if (!section?.blocks) return [];\n\n for (const block of section.blocks) {\n if (block.id === blockId) {\n return [block.id];\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const path = getBlockPathInBlocks(block.blocks, blockId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n\n/**\n * Recursively get block path in an array of blocks\n */\nfunction getBlockPathInBlocks(\n blocks: BlockInstance[],\n blockId: string\n): string[] {\n for (const block of blocks) {\n if (block.id === blockId) {\n return [block.id];\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const path = getBlockPathInBlocks(block.blocks, blockId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n","/**\n * Component Finder Utilities\n * Recursive functions to find components at any nesting level (in sections and blocks)\n */\n\nimport type { SectionComponentInstance } from \"../types\";\nimport type { SectionInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\n\n/**\n * Recursively find a component by ID in a section\n * Searches both direct section components and components nested in blocks\n * @param section - The section to search in\n * @param componentId - The component ID to find\n * @returns The component if found, null otherwise\n */\nexport function findComponentInSection(\n section: SectionInstance | null | undefined,\n componentId: string\n): SectionComponentInstance | null {\n if (!section) return null;\n\n // First, check direct section components\n if (section.components) {\n const directComponent = section.components.find(\n (c) => c.id === componentId\n );\n if (directComponent) {\n return directComponent;\n }\n }\n\n // Then search in nested blocks\n if (section.blocks && section.blocks.length > 0) {\n const found = findComponentInBlocks(section.blocks, componentId);\n if (found) return found;\n }\n\n return null;\n}\n\n/**\n * Recursively search for a component in an array of blocks\n * @param blocks - Array of blocks to search\n * @param componentId - The component ID to find\n * @returns The component if found, null otherwise\n */\nfunction findComponentInBlocks(\n blocks: BlockInstance[],\n componentId: string\n): SectionComponentInstance | null {\n for (const block of blocks) {\n // Check components in this block\n if (block.components) {\n const component = block.components.find((c) => c.id === componentId);\n if (component) {\n return component;\n }\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const found = findComponentInBlocks(block.blocks, componentId);\n if (found) return found;\n }\n }\n\n return null;\n}\n\n/**\n * Get the path to a component (useful for debugging)\n * @param section - The section to search in\n * @param componentId - The component ID to find\n * @returns Object with the path information, or null if not found\n */\nexport function getComponentPath(\n section: SectionInstance | null | undefined,\n componentId: string\n): {\n sectionId: string;\n blockPath: string[];\n componentId: string;\n} | null {\n if (!section) return null;\n\n // Check direct section components\n if (section.components) {\n const directComponent = section.components.find(\n (c) => c.id === componentId\n );\n if (directComponent) {\n return {\n sectionId: section.id,\n blockPath: [],\n componentId,\n };\n }\n }\n\n // Search in nested blocks\n if (section.blocks && section.blocks.length > 0) {\n const blockPath = getComponentPathInBlocks(section.blocks, componentId);\n if (blockPath.length > 0) {\n return {\n sectionId: section.id,\n blockPath,\n componentId,\n };\n }\n }\n\n return null;\n}\n\n/**\n * Recursively get component path in an array of blocks\n * Returns the array of block IDs leading to the component\n */\nfunction getComponentPathInBlocks(\n blocks: BlockInstance[],\n componentId: string\n): string[] {\n for (const block of blocks) {\n // Check if component is in this block\n if (block.components) {\n const component = block.components.find((c) => c.id === componentId);\n if (component) {\n return [block.id];\n }\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const path = getComponentPathInBlocks(block.blocks, componentId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n","/**\n * Component Updater Utilities\n * Recursive functions to update components at any nesting level (in sections and blocks)\n */\n\nimport type { SectionInstance, SectionComponentInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\nimport type { ComponentInstance } from \"../types\";\n\n/**\n * Update a component at any nesting level in a section\n * Searches both direct section components and components nested in blocks\n * @param section - The section containing the component\n * @param componentId - The component ID to update\n * @param updates - Partial updates to apply to the component\n * @returns Updated section with the component modified\n */\nexport function updateNestedComponent(\n section: SectionInstance,\n componentId: string,\n updates: Partial<SectionComponentInstance>\n): SectionInstance {\n // Update direct section components\n let updatedComponents = section.components;\n if (updatedComponents && updatedComponents.length > 0) {\n updatedComponents = updatedComponents.map((component) => {\n if (component.id === componentId) {\n return {\n ...component,\n ...updates,\n // Deep merge content and style if provided\n content: updates.content\n ? { ...(component.content ?? {}), ...updates.content }\n : component.content,\n style: updates.style\n ? { ...(component.style ?? {}), ...updates.style }\n : component.style,\n };\n }\n return component;\n });\n }\n\n // Update components nested in blocks\n let updatedBlocks = section.blocks;\n if (updatedBlocks && updatedBlocks.length > 0) {\n updatedBlocks = updateComponentInBlocks(\n updatedBlocks,\n componentId,\n updates\n );\n }\n\n return {\n ...section,\n components: updatedComponents,\n blocks: updatedBlocks,\n };\n}\n\n/**\n * Recursively update a component in an array of blocks\n * @param blocks - Array of blocks to search\n * @param componentId - The component ID to update\n * @param updates - Partial updates to apply to the component\n * @returns Updated array of blocks\n */\nfunction updateComponentInBlocks(\n blocks: BlockInstance[],\n componentId: string,\n updates: Partial<SectionComponentInstance>\n): BlockInstance[] {\n return blocks.map((block) => {\n const updatedBlock = { ...block };\n\n // Update components in this block\n if (block.components && block.components.length > 0) {\n updatedBlock.components = block.components.map((component) => {\n if (component.id === componentId) {\n return {\n ...component,\n ...updates,\n type: component.type,\n // Deep merge content and style if provided\n content: updates.content\n ? { ...(component.content ?? {}), ...updates.content }\n : component.content,\n style: updates.style\n ? { ...(component.style ?? {}), ...updates.style }\n : component.style,\n } as ComponentInstance;\n }\n return component;\n });\n }\n\n // Recursively update in nested blocks\n if (block.blocks && block.blocks.length > 0) {\n updatedBlock.blocks = updateComponentInBlocks(\n block.blocks,\n componentId,\n updates\n );\n }\n\n return updatedBlock;\n });\n}\n","/**\n * Section Helper Utilities\n * Auto-rendering utilities for sections with component grouping and slot-based layouts\n */\n\nimport type { ComponentInstance, SectionComponentInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\n\n/**\n * Sort components by order field\n */\nexport function sortComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return [...components].sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Filter enabled components only\n */\nexport function filterEnabledComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return components.filter((component) => component.enabled !== false);\n}\n\n/**\n * Get components sorted and filtered\n */\nexport function getActiveComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return sortComponents(filterEnabledComponents(components));\n}\n\n/**\n * Slot configuration for grouping components\n */\nexport interface SlotConfig {\n [slotName: string]: string[]; // slot name -> array of component types\n}\n\n/**\n * Grouped components by slot\n */\nexport interface GroupedComponents<\n T extends ComponentInstance | SectionComponentInstance = ComponentInstance,\n> {\n slots: Record<string, T[]>;\n ungrouped: T[];\n}\n\n/**\n * Group components by slot based on their types\n * Useful for layout-based rendering (header, content, footer, etc.)\n *\n * @example\n * ```tsx\n * const slotConfig = {\n * header: ['heading', 'badge'],\n * content: ['paragraph', 'image'],\n * actions: ['button']\n * };\n * const { slots, ungrouped } = groupBySlot(components, slotConfig);\n * ```\n */\nexport function groupBySlot<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], slotConfig: SlotConfig): GroupedComponents<T> {\n const slots: Record<string, T[]> = {};\n const ungrouped: T[] = [];\n\n // Initialize slots\n for (const slotName in slotConfig) {\n slots[slotName] = [];\n }\n\n // Create a reverse lookup: component type -> slot name\n const typeToSlot: Record<string, string> = {};\n for (const [slotName, types] of Object.entries(slotConfig)) {\n for (const type of types) {\n typeToSlot[type] = slotName;\n }\n }\n\n // Group components\n for (const component of components) {\n if (component.enabled === false) continue;\n\n const slotName = typeToSlot[component.type];\n if (slotName) {\n slots[slotName].push(component);\n } else {\n ungrouped.push(component);\n }\n }\n\n // Sort each slot by order\n for (const slotName in slots) {\n slots[slotName] = sortComponents(slots[slotName]);\n }\n ungrouped.sort((a, b) => (a.order || 0) - (b.order || 0));\n\n return { slots, ungrouped };\n}\n\n/**\n * Get components by type\n * Useful for finding specific component types in a section\n *\n * @example\n * ```tsx\n * const headings = getComponentsByType(components, 'heading');\n * const buttons = getComponentsByType(components, ['button', 'link']);\n * ```\n */\nexport function getComponentsByType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): T[] {\n const typeArray = Array.isArray(types) ? types : [types];\n return components\n .filter(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n )\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Get first component by type\n * Useful for getting a specific component like the main heading\n *\n * @example\n * ```tsx\n * const heading = getFirstComponentByType(components, 'heading');\n * ```\n */\nexport function getFirstComponentByType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): T | undefined {\n const typeArray = Array.isArray(types) ? types : [types];\n return components.find(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n );\n}\n\n/**\n * Check if section has any components of given type\n */\nexport function hasComponentType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): boolean {\n const typeArray = Array.isArray(types) ? types : [types];\n return components.some(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n );\n}\n\n/**\n * Sort blocks by order field\n */\nexport function sortBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return [...blocks].sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Filter enabled blocks only\n */\nexport function filterEnabledBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return blocks.filter((block) => block.enabled !== false);\n}\n\n/**\n * Get blocks sorted and filtered\n */\nexport function getActiveBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return sortBlocks(filterEnabledBlocks(blocks));\n}\n\n/**\n * Count enabled items (components or blocks)\n */\nexport function countEnabledItems<T extends { enabled?: boolean }>(\n items: T[]\n): number {\n return items.filter((item) => item.enabled !== false).length;\n}\n\n/**\n * Check if array has any enabled items\n */\nexport function hasEnabledItems<T extends { enabled?: boolean }>(\n items: T[] | undefined\n): boolean {\n return !!items && countEnabledItems(items) > 0;\n}\n","import type { DetectionResult } from \"../types\";\nimport { DEFAULT_INSPECTOR_CONFIG } from \"../types\";\n\n/**\n * Get display label for a detection result\n * Formats section/block/component names for the inspector overlay\n */\nexport function getElementLabel(result: DetectionResult): string {\n switch (result.type) {\n case \"component\":\n return result.componentType || \"Component\";\n case \"block\": {\n // Get the block element to read its type\n const blockElement =\n result.element ||\n document.querySelector(`[data-block-id=\"${result.blockId}\"]`);\n const blockType = blockElement?.getAttribute(\"data-block-type\");\n\n // Format block type name (e.g., \"feature-card\" → \"Feature Card\")\n if (blockType) {\n return blockType\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n }\n return \"Block\";\n }\n case \"section\": {\n // Use element from detection result if available\n const element =\n result.element ||\n document.querySelector(`[data-section-id=\"${result.sectionId}\"]`);\n\n // Try to get section name from data attribute\n const sectionName = element?.getAttribute(\"data-section-name\");\n if (sectionName) {\n return sectionName;\n }\n\n // Fallback: format section type (e.g., \"features\" → \"Features\")\n const sectionType = element?.getAttribute(\"data-section-type\");\n if (sectionType) {\n return sectionType\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n }\n\n return \"Section\";\n }\n default:\n return \"Unknown\";\n }\n}\n\n/**\n * Get color for a detection type\n * Returns the appropriate outline color from the inspector config\n */\nexport function getSelectionColor(type: string): string {\n return (\n DEFAULT_INSPECTOR_CONFIG.outlineColors[\n type as keyof typeof DEFAULT_INSPECTOR_CONFIG.outlineColors\n ] || \"#999999\"\n );\n}\n\n/**\n * Format a kebab-case name to Title Case\n * e.g., \"feature-card\" → \"Feature Card\"\n */\nexport function formatBlockName(name: string): string {\n return name\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n","/**\n * Data Adapters\n * Convert between different data formats for compatibility\n */\n\nimport type {\n SectionComponentInstance,\n ComponentInstance,\n StyleSettings,\n ComponentType,\n} from \"../types\";\n\n/**\n * Adapt a SectionComponentInstance to a full ComponentInstance\n * so it can be rendered via the component registry.\n *\n * - Ensures content/style objects always exist\n * - Preserves ordering and metadata\n *\n * @param component - Section component instance to adapt\n * @returns Full component instance ready for rendering\n *\n * @example\n * const sectionComp = { id: \"1\", type: \"heading\", settings: { text: \"Hello\" } };\n * const fullComp = toComponentInstance(sectionComp);\n * // fullComp.content = { text: \"Hello\" }\n * // fullComp.style = {}\n */\nexport function toComponentInstance(\n component: SectionComponentInstance\n): ComponentInstance {\n const content = (component.content ??\n component.settings ??\n {}) as ComponentInstance[\"content\"];\n\n const style = (component.style ?? {}) as StyleSettings;\n\n return {\n id: component.id,\n type: component.type as ComponentType,\n content,\n style,\n responsiveStyle: undefined,\n styleMode: \"basic\",\n order: component.order,\n enabled: component.enabled,\n createdAt: component.createdAt,\n updatedAt: component.updatedAt,\n };\n}\n","/**\n * Section Helpers - Validation\n * Validates section field values against schema definitions\n * @module utils/section/validation\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { ValidationError, ValidationResult } from \"./types\";\nimport { FIELD_TYPES } from \"../../types/fields\";\n\n/**\n * Validate a single field value against its definition\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to validate\n * @returns ValidationError if invalid, null if valid\n * @internal\n */\nexport function validateFieldValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): ValidationError | null {\n // Check required fields\n if (fieldDef.required && (value === undefined || value === null)) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' is required but was not provided`,\n };\n }\n\n // Skip validation for optional fields with no value\n if (value === undefined || value === null) {\n return null;\n }\n\n // Validate by field type\n switch (fieldDef.type) {\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO: {\n const options = fieldDef.options || [];\n const allowedValues = options.map((opt) => opt.value);\n if (!allowedValues.includes(value as string)) {\n return {\n field: fieldDef.id,\n value,\n message: `Value '${value}' for field '${fieldDef.id}' is not in allowed options`,\n allowedValues,\n };\n }\n break;\n }\n\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE: {\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' must be a number, got '${typeof value}'`,\n };\n }\n\n if (fieldDef.min !== undefined && value < fieldDef.min) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${value} for field '${fieldDef.id}' is below minimum ${fieldDef.min}`,\n };\n }\n\n if (fieldDef.max !== undefined && value > fieldDef.max) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${value} for field '${fieldDef.id}' is above maximum ${fieldDef.max}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA: {\n const strValue = String(value);\n if (fieldDef.maxLength && strValue.length > fieldDef.maxLength) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' exceeds maximum length of ${fieldDef.maxLength}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.URL: {\n const urlValue = String(value);\n // Basic URL validation: must start with /, http://, https://, or #\n if (\n !urlValue.startsWith(\"/\") &&\n !urlValue.startsWith(\"http://\") &&\n !urlValue.startsWith(\"https://\") &&\n !urlValue.startsWith(\"#\")\n ) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' with value '${urlValue}' is not a valid URL`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX: {\n if (typeof value !== \"boolean\") {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' must be a boolean, got '${typeof value}'`,\n };\n }\n break;\n }\n\n // Other types: no specific validation needed\n default:\n break;\n }\n\n return null;\n}\n\n/**\n * Validate all settings in a section\n *\n * @param section - Section instance\n * @param schema - Section schema\n * @returns Validation result with errors\n * @internal\n */\nexport function validateSettings(\n section: SectionInstance,\n schema: SectionSchema\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n for (const fieldDef of schema.settings) {\n const value = section.settings?.[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate entire section (settings)\n *\n * @param section - Section instance\n * @param schema - Section schema\n * @returns Validation result\n */\nexport function validateSection(\n section: SectionInstance,\n schema: SectionSchema\n): ValidationResult {\n return validateSettings(section, schema);\n}\n","/**\n * Section Helpers - Value Extraction\n * Extracts and validates values from section instances\n * @module utils/section/extraction\n */\n\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { SettingValue } from \"../../types\";\nimport { validateFieldValue } from \"./validation\";\n\n/**\n * Extract all settings values from schema with validation\n *\n * For each field in settings:\n * 1. Get runtime value from section.settings\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param section - Section instance (runtime data)\n * @param schema - Section schema (definition)\n * @returns Object with all settings field values\n * @internal\n */\nexport function extractSettings(\n section: SectionInstance,\n schema: SectionSchema\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n for (const fieldDef of schema.settings) {\n const fieldId = fieldDef.id;\n const runtimeValue = section.settings?.[fieldId] as SettingValue;\n const defaultValue =\n (schema.defaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Section Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n","/**\n * Section Helpers - Type Conversion\n * Auto-converts values based on schema field type\n * @module utils/section/conversion\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport { FIELD_TYPES } from \"../../types/fields\";\n\n/**\n * Auto-convert value based on field type from schema\n *\n * Maps field type to appropriate JavaScript type:\n * - text, select, etc. → string\n * - number, range → number\n * - boolean, checkbox → boolean\n * - array, repeater → array\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to convert\n * @returns Converted value\n * @internal\n */\nexport function autoConvertValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): SettingValue {\n if (value == null) return value;\n\n switch (fieldDef.type) {\n // String types\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA:\n case FIELD_TYPES.URL:\n case FIELD_TYPES.COLOR:\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO:\n case FIELD_TYPES.RICHTEXT:\n case FIELD_TYPES.IMAGE:\n case FIELD_TYPES.VIDEO:\n case FIELD_TYPES.FONT:\n return String(value);\n\n // Number types\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE:\n return Number(value);\n\n // Boolean types\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX:\n return Boolean(value);\n\n // Array types\n case FIELD_TYPES.ARRAY:\n case FIELD_TYPES.REPEATER:\n return Array.isArray(value) ? value : [];\n\n // Complex types (return as-is)\n case FIELD_TYPES.COLLECTION:\n case FIELD_TYPES.PRODUCT:\n case FIELD_TYPES.BLOG:\n case FIELD_TYPES.ARTICLE:\n case FIELD_TYPES.PAGE:\n return value;\n\n default:\n return value;\n }\n}\n\n/**\n * Create Proxy object with auto-type conversion on property access\n *\n * Returns a Proxy that intercepts property access and automatically\n * converts values based on their field type in the schema.\n *\n * @param values - Raw values object\n * @param definitions - Field definitions from schema\n * @returns Proxied object with auto-conversion\n * @internal\n */\nexport function createValueProxy(\n values: Record<string, SettingValue>,\n definitions: FieldDefinition[]\n): Record<string, SettingValue> {\n return new Proxy(values, {\n get(target, prop: string) {\n const value = target[prop];\n const fieldDef = definitions.find((f) => f.id === prop);\n\n if (!fieldDef) {\n // No definition found - return raw value\n return value;\n }\n\n // Auto-convert based on field type from schema\n return autoConvertValue(fieldDef, value);\n },\n }) as Record<string, SettingValue>;\n}\n","/**\n * Section Helpers - Main API\n *\n * Provides schema-driven validation and value extraction for sections.\n * Auto-extracts all fields from schema with type detection and validation.\n *\n * @example\n * ```typescript\n * import { getSectionValues } from '@onex/core';\n *\n * export function MySection({ section, schema }: SectionComponentProps) {\n * const { settings } = getSectionValues(section, schema);\n *\n * // Direct property access - auto-typed!\n * const { title, subtitle, backgroundColor } = settings;\n *\n * return <div style={{ backgroundColor }}>{title}</div>;\n * }\n * ```\n *\n * @module utils/section\n */\n\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { SectionValues } from \"./types\";\nimport { validateSection } from \"./validation\";\nimport { extractSettings } from \"./extraction\";\nimport { createValueProxy } from \"./conversion\";\n\n/**\n * Get all section values with validation and auto-type conversion\n *\n * This is the primary API for sections. It:\n * - Auto-extracts ALL fields from schema (no need to specify field names)\n * - Validates runtime values against schema definitions\n * - Auto-converts types based on field type (text→string, number→number, etc.)\n * - Falls back to schema defaults for missing/invalid values\n * - Provides direct property access: settings.title, settings.backgroundColor\n *\n * @param section - Section instance (runtime data)\n * @param schema - Section schema (definition)\n * @returns Object with settings, isValid, and errors\n *\n * @example\n * ```typescript\n * const { settings } = getSectionValues(section, schema);\n *\n * // Direct property access - auto-typed!\n * const title = settings.title; // string (auto-detected from schema)\n * const enabled = settings.enabled; // boolean (auto-detected from schema)\n * const padding = settings.padding; // number (auto-detected from schema)\n *\n * // Or destructure\n * const { title, subtitle, backgroundColor, padding } = settings;\n * ```\n */\nexport function getSectionValues(\n section: SectionInstance,\n schema: SectionSchema\n): SectionValues {\n // Extract and validate all values from schema\n const settingsValues = extractSettings(section, schema);\n const validation = validateSection(section, schema);\n\n // Return Proxy object for auto-typed property access\n return {\n settings: createValueProxy(settingsValues, schema.settings),\n isValid: validation.valid,\n errors: validation.errors,\n };\n}\n\n// Re-export types and utilities\nexport type { SectionValues, ValidationError, ValidationResult } from \"./types\";\nexport { validateSection, validateSettings } from \"./validation\";\n","/**\n * Component Helpers - Validation\n * Validates component values against schema definitions\n * @module utils/component/validation\n */\n\nimport type {\n ComponentDefinition,\n ComponentInstance,\n FieldDefinition,\n SettingValue,\n} from \"../../types\";\nimport { FIELD_TYPES } from \"../../types\";\nimport type { ValidationError, ValidationResult } from \"./types\";\n\n/**\n * Validate a single field value against its definition\n * @internal\n */\nexport function validateFieldValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): ValidationError | null {\n // If value is undefined/null and field is not required, it's valid\n if (value === undefined || value === null) {\n if (fieldDef.required) {\n return {\n field: fieldDef.id,\n value,\n message: `Field \"${fieldDef.label}\" is required`,\n };\n }\n return null; // Not required, undefined is ok\n }\n\n // Validate based on field type\n switch (fieldDef.type) {\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO: {\n const selectDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"select\" | \"radio\" }\n >;\n const allowedValues = selectDef.options.map((opt) => opt.value);\n if (!allowedValues.includes(String(value))) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" is not in allowed options for field \"${fieldDef.label}\"`,\n allowedValues,\n };\n }\n break;\n }\n\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE: {\n const numberDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"number\" | \"range\" }\n >;\n const numValue = Number(value);\n if (isNaN(numValue)) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" must be a number`,\n };\n }\n if (numberDef.min !== undefined && numValue < numberDef.min) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${numValue} for field \"${fieldDef.label}\" is below minimum ${numberDef.min}`,\n };\n }\n if (numberDef.max !== undefined && numValue > numberDef.max) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${numValue} for field \"${fieldDef.label}\" is above maximum ${numberDef.max}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA: {\n const textDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"text\" | \"textarea\" }\n >;\n const strValue = String(value);\n if (textDef.maxLength && strValue.length > textDef.maxLength) {\n return {\n field: fieldDef.id,\n value,\n message: `Text for field \"${fieldDef.label}\" exceeds maximum length of ${textDef.maxLength}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX: {\n if (typeof value !== \"boolean\") {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" must be a boolean`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.URL: {\n const strValue = String(value);\n // Allow relative URLs, anchors, and full URLs\n if (\n !strValue.startsWith(\"#\") &&\n !strValue.startsWith(\"/\") &&\n !strValue.startsWith(\"http\")\n ) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" is not a valid URL`,\n };\n }\n break;\n }\n }\n\n return null;\n}\n\n/**\n * Validate component content against schema\n */\nexport function validateContent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n for (const fieldDef of definition.contentSettings) {\n const value = component.content[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate component style against schema\n */\nexport function validateStyle(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n const allStyleSettings = [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ];\n\n for (const fieldDef of allStyleSettings) {\n const value = component.style[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate entire component instance against its definition\n */\nexport function validateComponent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const contentValidation = validateContent(component, definition);\n const styleValidation = validateStyle(component, definition);\n\n return {\n valid: contentValidation.valid && styleValidation.valid,\n errors: [...contentValidation.errors, ...styleValidation.errors],\n };\n}\n","/**\n * Component Helpers - Value Extraction\n * Extracts and validates values from component instances\n * @module utils/component/extraction\n */\n\nimport type {\n ComponentDefinition,\n ComponentInstance,\n SettingValue,\n} from \"../../types\";\nimport { validateFieldValue } from \"./validation\";\n\n/**\n * Extract all content values from schema with validation\n *\n * For each field in contentSettings:\n * 1. Get runtime value from component.content\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with all content field values\n * @internal\n */\nexport function extractContent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n for (const fieldDef of definition.contentSettings) {\n const fieldId = fieldDef.id;\n const runtimeValue = component.content[fieldId] as SettingValue;\n const defaultValue =\n (definition.contentDefaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Component Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n\n/**\n * Extract all style values from schema with validation\n *\n * For each field in styleSettings (basic + advanced):\n * 1. Get runtime value from component.style\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with all style field values\n * @internal\n */\nexport function extractStyle(\n component: ComponentInstance,\n definition: ComponentDefinition\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n const allStyleSettings = [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ];\n\n for (const fieldDef of allStyleSettings) {\n const fieldId = fieldDef.id;\n const runtimeValue = component.style[fieldId] as SettingValue;\n const defaultValue =\n (definition.styleDefaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Component Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n","/**\n * Component Helpers - Type Conversion\n * Auto-converts values based on schema field type\n * @module utils/component/conversion\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport { FIELD_TYPES } from \"../../types\";\n\n/**\n * Auto-convert value based on field type from schema\n *\n * Maps field type to appropriate JavaScript type:\n * - text, select, etc. → string\n * - number, range → number\n * - boolean, checkbox → boolean\n * - array, repeater → array\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to convert\n * @returns Converted value\n * @internal\n */\nexport function autoConvertValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): SettingValue {\n if (value == null) return value;\n\n switch (fieldDef.type) {\n // String types\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA:\n case FIELD_TYPES.URL:\n case FIELD_TYPES.COLOR:\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO:\n case FIELD_TYPES.RICHTEXT:\n case FIELD_TYPES.IMAGE:\n case FIELD_TYPES.VIDEO:\n case FIELD_TYPES.FONT:\n return String(value);\n\n // Number types\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE:\n return Number(value);\n\n // Boolean types\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX:\n return Boolean(value);\n\n // Array types\n case FIELD_TYPES.ARRAY:\n case FIELD_TYPES.REPEATER:\n return Array.isArray(value) ? value : [];\n\n // Complex types (return as-is)\n case FIELD_TYPES.COLLECTION:\n case FIELD_TYPES.PRODUCT:\n case FIELD_TYPES.BLOG:\n case FIELD_TYPES.ARTICLE:\n case FIELD_TYPES.PAGE:\n return value;\n\n default:\n return value;\n }\n}\n\n/**\n * Create Proxy object with auto-type conversion on property access\n *\n * Returns a Proxy that intercepts property access and automatically\n * converts values based on their field type in the schema.\n *\n * @param values - Raw values object\n * @param definitions - Field definitions from schema\n * @returns Proxied object with auto-conversion\n * @internal\n */\nexport function createValueProxy(\n values: Record<string, SettingValue>,\n definitions: FieldDefinition[]\n): Record<string, SettingValue> {\n return new Proxy(values, {\n get(target, prop: string) {\n const value = target[prop];\n const fieldDef = definitions.find((f) => f.id === prop);\n\n if (!fieldDef) {\n // No definition found - return raw value\n return value;\n }\n\n // Auto-convert based on field type from schema\n return autoConvertValue(fieldDef, value);\n },\n }) as Record<string, SettingValue>;\n}\n","/**\n * Component Helpers - Main API\n *\n * Provides schema-driven validation and value extraction for components.\n * Auto-extracts all fields from schema with type detection and validation.\n *\n * @example\n * ```typescript\n * import { getComponentValues } from '@onex/core';\n *\n * export function MyComponent({ component, definition }: ComponentProps) {\n * const { content, style } = getComponentValues(component, definition);\n *\n * // Direct property access - auto-typed!\n * const { text, url } = content;\n * const { variant, size } = style;\n *\n * return <div>{text}</div>;\n * }\n * ```\n *\n * @module utils/component\n */\n\nimport type { ComponentDefinition, ComponentInstance } from \"../../types\";\nimport type { ComponentValues } from \"./types\";\nimport { validateComponent } from \"./validation\";\nimport { extractContent, extractStyle } from \"./extraction\";\nimport { createValueProxy } from \"./conversion\";\n\n/**\n * Get all component values with validation and auto-type conversion\n *\n * This is the primary API for components. It:\n * - Auto-extracts ALL fields from schema (no need to specify field names)\n * - Validates runtime values against schema definitions\n * - Auto-converts types based on field type (text→string, number→number, etc.)\n * - Falls back to schema defaults for missing/invalid values\n * - Provides direct property access: content.text, style.variant\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with content, style, isValid, and errors\n *\n * @example\n * ```typescript\n * const { content, style } = getComponentValues(component, definition);\n *\n * // Direct property access - auto-typed!\n * const text = content.text; // string (auto-detected from schema)\n * const enabled = content.enabled; // boolean (auto-detected from schema)\n * const variant = style.variant; // string (auto-detected from schema)\n *\n * // Or destructure\n * const { text, url, target } = content;\n * const { variant, size } = style;\n * ```\n */\nexport function getComponentValues(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ComponentValues {\n // Extract and validate all values from schema\n const contentValues = extractContent(component, definition);\n const styleValues = extractStyle(component, definition);\n const validation = validateComponent(component, definition);\n\n // Return Proxy objects for auto-typed property access\n return {\n content: createValueProxy(contentValues, definition.contentSettings),\n style: createValueProxy(styleValues, [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ]),\n isValid: validation.valid,\n errors: validation.errors,\n };\n}\n\n// Re-export types and utilities (prefixed to avoid conflicts with section module)\nexport type {\n ComponentValues,\n ValidationError as ComponentValidationError,\n ValidationResult as ComponentValidationResult,\n} from \"./types\";\nexport {\n validateComponent,\n validateContent,\n validateStyle,\n} from \"./validation\";\n"]}
|