flexium 0.10.7 → 0.12.8
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 +10 -10
- package/dist/canvas.d.cts +83 -23
- package/dist/canvas.d.ts +83 -23
- package/dist/canvas.js +1 -1
- package/dist/canvas.js.map +1 -1
- package/dist/canvas.mjs +1 -1
- package/dist/canvas.mjs.map +1 -1
- package/dist/chunk-44RZHCII.mjs +2 -0
- package/dist/chunk-44RZHCII.mjs.map +1 -0
- package/dist/chunk-7BXR4ZFD.js +2 -0
- package/dist/chunk-7BXR4ZFD.js.map +1 -0
- package/dist/chunk-CPJRQL2C.mjs +2 -0
- package/dist/chunk-CPJRQL2C.mjs.map +1 -0
- package/dist/chunk-ENWGYQNU.js +2 -0
- package/dist/chunk-ENWGYQNU.js.map +1 -0
- package/dist/chunk-EXLNKYSH.js +2 -0
- package/dist/chunk-EXLNKYSH.js.map +1 -0
- package/dist/chunk-IA4FEBFE.js +2 -0
- package/dist/chunk-IA4FEBFE.js.map +1 -0
- package/dist/chunk-IOF6L2BT.mjs +2 -0
- package/dist/chunk-IOF6L2BT.mjs.map +1 -0
- package/dist/chunk-KBUONZI2.js +2 -0
- package/dist/chunk-KBUONZI2.js.map +1 -0
- package/dist/chunk-LUREDEUB.mjs +2 -0
- package/dist/chunk-LUREDEUB.mjs.map +1 -0
- package/dist/chunk-LUW7DIEW.js +2 -0
- package/dist/chunk-LUW7DIEW.js.map +1 -0
- package/dist/chunk-S6WF3XNF.mjs +2 -0
- package/dist/chunk-S6WF3XNF.mjs.map +1 -0
- package/dist/chunk-ZCO4NIGC.mjs +2 -0
- package/dist/chunk-ZCO4NIGC.mjs.map +1 -0
- package/dist/core.d.cts +41 -2
- package/dist/core.d.ts +41 -2
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/dom.d.cts +10 -33
- package/dist/dom.d.ts +10 -33
- package/dist/dom.js +1 -1
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/dom.mjs.map +1 -1
- package/dist/index.d.cts +1 -24
- package/dist/index.d.ts +1 -24
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.d.cts +65 -148
- package/dist/interactive.d.ts +65 -148
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/jsx-dev-runtime.d.cts +6 -2
- package/dist/jsx-dev-runtime.d.ts +6 -2
- package/dist/jsx-dev-runtime.js +1 -1
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-dev-runtime.mjs +1 -1
- package/dist/jsx-dev-runtime.mjs.map +1 -1
- package/dist/jsx-runtime.d.cts +6 -68
- package/dist/jsx-runtime.d.ts +6 -68
- package/dist/jsx-runtime.js +1 -1
- package/dist/jsx-runtime.mjs +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/router.d.cts +48 -15
- package/dist/router.d.ts +48 -15
- package/dist/router.js +1 -1
- package/dist/router.js.map +1 -1
- package/dist/router.mjs +1 -1
- package/dist/router.mjs.map +1 -1
- package/package.json +13 -53
- package/dist/DrawText-CVAKQ5wZ.d.cts +0 -309
- package/dist/DrawText-Dlh1L1Ar.d.ts +0 -309
- package/dist/Motion-BrOAJzgH.d.cts +0 -87
- package/dist/Motion-BrOAJzgH.d.ts +0 -87
- package/dist/advanced.d.cts +0 -32
- package/dist/advanced.d.ts +0 -32
- package/dist/advanced.js +0 -2
- package/dist/advanced.js.map +0 -1
- package/dist/advanced.mjs +0 -2
- package/dist/advanced.mjs.map +0 -1
- package/dist/chunk-5ICRQIS2.js +0 -3
- package/dist/chunk-5ICRQIS2.js.map +0 -1
- package/dist/chunk-5K55ASOD.mjs +0 -3
- package/dist/chunk-5K55ASOD.mjs.map +0 -1
- package/dist/chunk-AZEHBSBG.js +0 -3
- package/dist/chunk-AZEHBSBG.js.map +0 -1
- package/dist/chunk-BBNYMXE7.mjs +0 -2
- package/dist/chunk-BBNYMXE7.mjs.map +0 -1
- package/dist/chunk-BYHIHYRR.mjs +0 -2
- package/dist/chunk-BYHIHYRR.mjs.map +0 -1
- package/dist/chunk-DZ7L3SHV.js +0 -2
- package/dist/chunk-DZ7L3SHV.js.map +0 -1
- package/dist/chunk-ECYYIQEX.mjs +0 -3
- package/dist/chunk-ECYYIQEX.mjs.map +0 -1
- package/dist/chunk-FDMJHFN7.mjs +0 -2
- package/dist/chunk-FDMJHFN7.mjs.map +0 -1
- package/dist/chunk-GKJQEOP7.mjs +0 -2
- package/dist/chunk-GKJQEOP7.mjs.map +0 -1
- package/dist/chunk-GYDP6MFV.js +0 -3
- package/dist/chunk-GYDP6MFV.js.map +0 -1
- package/dist/chunk-HB5VPQTB.mjs +0 -2
- package/dist/chunk-HB5VPQTB.mjs.map +0 -1
- package/dist/chunk-KNF5ERPK.mjs +0 -2
- package/dist/chunk-KNF5ERPK.mjs.map +0 -1
- package/dist/chunk-OPAAGNBO.mjs +0 -2
- package/dist/chunk-OPAAGNBO.mjs.map +0 -1
- package/dist/chunk-OPAQ4R4M.mjs +0 -2
- package/dist/chunk-OPAQ4R4M.mjs.map +0 -1
- package/dist/chunk-Q7IWDVJ4.js +0 -2
- package/dist/chunk-Q7IWDVJ4.js.map +0 -1
- package/dist/chunk-QPCIDSMM.js +0 -2
- package/dist/chunk-QPCIDSMM.js.map +0 -1
- package/dist/chunk-QZIX4FXS.mjs +0 -2
- package/dist/chunk-QZIX4FXS.mjs.map +0 -1
- package/dist/chunk-RMN5IPS5.js +0 -2
- package/dist/chunk-RMN5IPS5.js.map +0 -1
- package/dist/chunk-U6C6VDVZ.js +0 -2
- package/dist/chunk-U6C6VDVZ.js.map +0 -1
- package/dist/chunk-WQFQO5LK.js +0 -2
- package/dist/chunk-WQFQO5LK.js.map +0 -1
- package/dist/chunk-WVEJT7HD.mjs +0 -2
- package/dist/chunk-WVEJT7HD.mjs.map +0 -1
- package/dist/chunk-WWEWRI6S.js +0 -2
- package/dist/chunk-WWEWRI6S.js.map +0 -1
- package/dist/chunk-XJHWMHKF.js +0 -2
- package/dist/chunk-XJHWMHKF.js.map +0 -1
- package/dist/chunk-Y6KKAHLS.mjs +0 -3
- package/dist/chunk-Y6KKAHLS.mjs.map +0 -1
- package/dist/chunk-YDZ37ZZ4.js +0 -2
- package/dist/chunk-YDZ37ZZ4.js.map +0 -1
- package/dist/chunk-YPVRQKMW.js +0 -2
- package/dist/chunk-YPVRQKMW.js.map +0 -1
- package/dist/components-BMbqsbMY.d.cts +0 -126
- package/dist/components-C83mBQXW.d.ts +0 -126
- package/dist/core-CxHP8991.d.cts +0 -32
- package/dist/core-D0ggvjX3.d.ts +0 -32
- package/dist/effect-554ONNZR.js +0 -2
- package/dist/effect-554ONNZR.js.map +0 -1
- package/dist/effect-T2GVIS3T.mjs +0 -2
- package/dist/effect-T2GVIS3T.mjs.map +0 -1
- package/dist/owner-QS9tPwPr.d.cts +0 -27
- package/dist/owner-QS9tPwPr.d.ts +0 -27
- package/dist/portal-BK_0Z0hE.d.cts +0 -206
- package/dist/portal-CbguxtuQ.d.ts +0 -206
- package/dist/primitives/layout.d.cts +0 -295
- package/dist/primitives/layout.d.ts +0 -295
- package/dist/primitives/layout.js +0 -2
- package/dist/primitives/layout.js.map +0 -1
- package/dist/primitives/layout.mjs +0 -2
- package/dist/primitives/layout.mjs.map +0 -1
- package/dist/primitives/motion.d.cts +0 -230
- package/dist/primitives/motion.d.ts +0 -230
- package/dist/primitives/motion.js +0 -2
- package/dist/primitives/motion.js.map +0 -1
- package/dist/primitives/motion.mjs +0 -2
- package/dist/primitives/motion.mjs.map +0 -1
- package/dist/primitives/ui.d.cts +0 -81
- package/dist/primitives/ui.d.ts +0 -81
- package/dist/primitives/ui.js +0 -2
- package/dist/primitives/ui.js.map +0 -1
- package/dist/primitives/ui.mjs +0 -2
- package/dist/primitives/ui.mjs.map +0 -1
- package/dist/primitives.d.cts +0 -93
- package/dist/primitives.d.ts +0 -93
- package/dist/primitives.js +0 -2
- package/dist/primitives.js.map +0 -1
- package/dist/primitives.mjs +0 -2
- package/dist/primitives.mjs.map +0 -1
- package/dist/renderer-DSLb-FGg.d.cts +0 -135
- package/dist/renderer-DSLb-FGg.d.ts +0 -135
- package/dist/server.d.cts +0 -3
- package/dist/server.d.ts +0 -3
- package/dist/server.js +0 -2
- package/dist/server.js.map +0 -1
- package/dist/server.mjs +0 -2
- package/dist/server.mjs.map +0 -1
- package/dist/state-DitsMyev.d.cts +0 -96
- package/dist/state-DitsMyev.d.ts +0 -96
- package/dist/state-RYKSC35A.mjs +0 -2
- package/dist/state-RYKSC35A.mjs.map +0 -1
- package/dist/state-XUXPMCFJ.js +0 -2
- package/dist/state-XUXPMCFJ.js.map +0 -1
- package/dist/sync-Z4QqUDjF.d.cts +0 -25
- package/dist/sync-Z4QqUDjF.d.ts +0 -25
- package/dist/test-exports.d.cts +0 -68
- package/dist/test-exports.d.ts +0 -68
- package/dist/test-exports.js +0 -2
- package/dist/test-exports.js.map +0 -1
- package/dist/test-exports.mjs +0 -2
- package/dist/test-exports.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/router/core.ts","../src/router/utils.ts","../src/router/context.ts","../src/router/components.ts"],"names":["createLocation","getDefaultLoc","getLoc","parseQuery","loc","setLoc","state","navigate","path","isUnsafePath","handlePopState","error","normalizedPath","protocol","sanitizeQueryValue","value","DANGEROUS_KEYS","search","params","query","key","sanitizedKey","sanitizedValue","matchPath","pathname","routePath","paramNames","regexPath","_","paramName","regex","match","index","createRoutesFromChildren","children","routes","childArray","child","isFNode","component","beforeEnter","nestedChildren","route","matchRoutes","location","result","matchRouteBranch","parentPath","fullPath","isLeaf","matcher","compilePath","matchedPath","paramValues","paramsObj","extractParams","currentMatch","childMatches","indexRoute","prefix","values","i","RouterCtx","createContext","RouteDepthCtx","router","ctx","context","Router","props","nonRouteChildren","routeChildren","Route","matches","m","routerContext","target","prop","ms","matchedContent","rootMatch","f","_props","Outlet","depth","Component","Link","r","handleClick","e"],"mappings":"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","file":"chunk-5K55ASOD.mjs","sourcesContent":["/**\n * Router Core Module\n *\n * Provides core routing functionality including location management,\n * path matching, and navigation.\n */\n\nimport { state, type StateValue } from '../core/state'\nimport { Location } from './types'\n\n/**\n * Creates a reactive location signal and navigate function.\n *\n * The location signal automatically updates when:\n * - navigate() is called\n * - Browser back/forward buttons are used (popstate event)\n *\n * @returns Tuple of [location signal, navigate function, cleanup function]\n *\n * @example\n * ```tsx\n * const [location, navigate, cleanup] = createLocation();\n * // Access current path\n * console.log(location().pathname);\n * // Navigate to new path\n * navigate('/users/123');\n * // Cleanup when done (removes popstate listener)\n * cleanup();\n * ```\n */\nexport function createLocation(): [StateValue<Location>, (path: string) => void, () => void] {\n // SSR guard: return safe defaults on server\n const getDefaultLoc = (): Location => ({\n pathname: '/',\n search: '',\n hash: '',\n query: {},\n })\n\n const getLoc = (): Location => {\n if (typeof window === 'undefined') {\n return getDefaultLoc()\n }\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n query: parseQuery(window.location.search),\n }\n }\n\n const [loc, setLoc] = state<Location>(getLoc())\n\n const navigate = (path: string) => {\n // SSR guard\n if (typeof window === 'undefined') return\n\n // Security: Validate path to prevent javascript: and other dangerous protocols\n if (isUnsafePath(path)) {\n console.error('[Flexium Router] Blocked navigation to unsafe path:', path)\n return\n }\n window.history.pushState({}, '', path)\n setLoc(getLoc())\n }\n\n // SSR guard for popstate listener\n const handlePopState = () => {\n try {\n setLoc(getLoc())\n } catch (error) {\n console.error('[Flexium Router] Error handling popstate:', error)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', handlePopState)\n }\n\n // Cleanup function to remove listener\n const cleanup = () => {\n if (typeof window !== 'undefined') {\n window.removeEventListener('popstate', handlePopState)\n }\n }\n\n return [loc, navigate, cleanup]\n}\n\n/**\n * Check if a path contains unsafe protocols (XSS prevention)\n * @param path - Path to validate\n * @returns true if path is unsafe\n */\nexport function isUnsafePath(path: string): boolean {\n const normalizedPath = path.trim().toLowerCase()\n const unsafeProtocols = ['javascript:', 'data:', 'vbscript:', 'file:']\n return unsafeProtocols.some(protocol => normalizedPath.startsWith(protocol))\n}\n\n/**\n * Sanitize query parameter value to prevent XSS\n * @param value - Query parameter value\n * @returns Sanitized value\n */\nexport function sanitizeQueryValue(value: string): string {\n // Remove potential script tags and event handlers\n return value\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/javascript:/gi, '') // Remove javascript: protocol\n .replace(/on\\w+\\s*=/gi, '') // Remove event handlers like onclick=\n}\n\n/**\n * Parses URL search string into key-value object\n * @param search - URL search string (e.g., \"?foo=bar&baz=qux\")\n * @returns Object with query parameters\n */\n// Dangerous keys that could lead to prototype pollution\nconst DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype'])\n\nfunction parseQuery(search: string): Record<string, string> {\n const params = new URLSearchParams(search)\n // Use Object.create(null) to prevent prototype pollution\n const query: Record<string, string> = Object.create(null)\n params.forEach((value, key) => {\n // Sanitize both key and value to prevent XSS\n const sanitizedKey = sanitizeQueryValue(key)\n const sanitizedValue = sanitizeQueryValue(value)\n // Block dangerous keys to prevent prototype pollution\n if (sanitizedKey && !DANGEROUS_KEYS.has(sanitizedKey)) {\n query[sanitizedKey] = sanitizedValue\n }\n })\n return query\n}\n\n/**\n * Matches a pathname against a route pattern.\n *\n * Supports dynamic segments with `:param` syntax.\n *\n * @param pathname - Current URL pathname (e.g., \"/users/123\")\n * @param routePath - Route pattern (e.g., \"/users/:id\")\n * @returns Object with `matches` boolean and extracted `params`\n *\n * @example\n * ```tsx\n * const result = matchPath('/users/123', '/users/:id');\n * // { matches: true, params: { id: '123' } }\n * ```\n */\nexport function matchPath(\n pathname: string,\n routePath: string\n): { matches: boolean; params: Record<string, string> } {\n const paramNames: string[] = []\n const regexPath = routePath.replace(/:([^/]+)/g, (_, paramName) => {\n paramNames.push(paramName)\n return '([^/]+)'\n })\n\n const regex = new RegExp(`^${regexPath}$`)\n const match = pathname.match(regex)\n\n if (!match) {\n return { matches: false, params: {} }\n }\n\n const params: Record<string, string> = {}\n match.slice(1).forEach((value, index) => {\n params[paramNames[index]] = value\n })\n\n return { matches: true, params }\n}\n","import { RouteDef, RouteMatch } from './types'\nimport type { FNodeChild } from '../core/renderer'\nimport { isFNode } from '../renderers/dom/f'\n\n/**\n * Flatten the children of <Router> or <Route> into a route configuration tree.\n * Note: This assumes `children` are FNodes representing <Route> components.\n */\nexport function createRoutesFromChildren(children: FNodeChild): RouteDef[] {\n const routes: RouteDef[] = []\n\n const childArray = Array.isArray(children) ? children : [children]\n\n for (const child of childArray) {\n if (!isFNode(child)) {\n continue\n }\n\n const { path, index, component, beforeEnter } = child.props as {\n path?: string\n index?: boolean\n component?: Function\n beforeEnter?: (\n params: Record<string, string>\n ) => boolean | Promise<boolean>\n }\n const nestedChildren = child.children\n\n // Skip routes without a component (unless they have children as layout routes)\n if (!component && !nestedChildren) {\n console.warn(\n `[Flexium Router] Route \"${path || '(index)'}\" has no component and no children. Skipping.`\n )\n continue\n }\n\n const route: RouteDef = {\n path: path || '',\n index: !!index,\n component: component || (() => null),\n children: nestedChildren ? createRoutesFromChildren(nestedChildren) : [],\n beforeEnter,\n }\n\n routes.push(route)\n }\n\n return routes\n}\n\n/**\n * Match a URL against a route tree.\n * Returns an array of matches (from root to leaf).\n */\nexport function matchRoutes(\n routes: RouteDef[],\n location: string\n): RouteMatch[] | null {\n for (const route of routes) {\n const result = matchRouteBranch(route, location, '')\n if (result) return result\n }\n return null\n}\n\nfunction matchRouteBranch(\n route: RouteDef,\n location: string,\n parentPath: string\n): RouteMatch[] | null {\n let fullPath = parentPath\n if (route.path) {\n fullPath =\n parentPath.replace(/\\/$/, '') + '/' + route.path.replace(/^\\//, '')\n }\n\n const isLeaf = route.children.length === 0\n const matcher = compilePath(fullPath, !isLeaf)\n const match = location.match(matcher)\n\n if (match) {\n const [matchedPath, ...paramValues] = match\n const paramsObj = extractParams(fullPath, paramValues)\n\n const currentMatch: RouteMatch = {\n route,\n params: paramsObj,\n pathname: matchedPath,\n }\n\n if (isLeaf) {\n // Exact match required for leaf\n if (matchedPath === location) return [currentMatch]\n return null\n }\n\n // Has children: try to match one of them\n // If no children match, and this route is an index route?\n // Or if this route matches partially, maybe an index child matches the rest?\n\n for (const child of route.children) {\n const childMatches = matchRouteBranch(child, location, fullPath)\n if (childMatches) {\n return [currentMatch, ...childMatches]\n }\n }\n\n // If no children matched, but we matched exactly this layout route?\n // E.g. /users matches /users layout, and maybe it renders index?\n if (matchedPath === location) {\n // Check for index route\n const indexRoute = route.children.find((c) => c.index)\n if (indexRoute) {\n return [\n currentMatch,\n { route: indexRoute, params: {}, pathname: matchedPath },\n ]\n }\n // Just the layout? Maybe.\n return [currentMatch]\n }\n }\n\n return null\n}\n\nfunction compilePath(path: string, prefix: boolean): RegExp {\n const regexPath = path.replace(/:([^/]+)/g, () => '([^/]+)')\n\n // If path is exactly \"/\", and we want prefix matching, it should match everything\n if (regexPath === '/' && prefix) {\n return new RegExp('^')\n }\n\n // If prefix matching allowed, ensure we match segment boundary\n return new RegExp(`^${regexPath}${prefix ? '(?:/|$)' : '$'}`)\n}\n\nfunction extractParams(path: string, values: string[]): Record<string, string> {\n const params: Record<string, string> = {}\n let i = 0\n // Re-parse to find param names... inefficient but works\n path.replace(/:([^/]+)/g, (_, paramName) => {\n params[paramName] = values[i++]\n return ''\n })\n return params\n}\n","import { createContext } from '../core/context'\nimport { RouterContext } from './types'\n\n// Global Router Context\nexport const RouterCtx = createContext<RouterContext | null>(null)\n\n// Current Route Depth Context (for Outlet)\n// Stores the index of the current match in the `matches` array\nexport const RouteDepthCtx = createContext<number>(0)\n","import { state, type StateValue } from '../core/state'\nimport { createLocation } from './core'\nimport { createRoutesFromChildren, matchRoutes } from './utils'\nimport { LinkProps, RouteProps, RouterContext } from './types'\nimport { f, isFNode } from '../renderers/dom/f'\nimport { RouterCtx, RouteDepthCtx } from './context'\nimport { context } from '../core/context'\nimport type { FNodeChild } from '../core/renderer'\n\n/**\n * Get the current router context.\n * Must be called within a <Router> component.\n *\n * @example\n * ```tsx\n * const r = router()\n * r.navigate('/dashboard')\n * ```\n */\nexport function router(): RouterContext {\n const ctx = context(RouterCtx)\n if (!ctx) {\n throw new Error('router() must be called within a <Router> component')\n }\n return ctx\n}\n\nexport function Router(props: { children: FNodeChild }) {\n const [location, navigate] = createLocation()\n\n // Separate Route children from non-Route children (like Nav, etc.)\n const childArray = Array.isArray(props.children) ? props.children : [props.children]\n const nonRouteChildren: FNodeChild[] = []\n const routeChildren: FNodeChild[] = []\n\n for (const child of childArray) {\n if (isFNode(child) && typeof child.type === 'function' && child.type === Route) {\n routeChildren.push(child)\n } else {\n nonRouteChildren.push(child)\n }\n }\n\n // Parse route configuration from Route children only\n const routes = createRoutesFromChildren(routeChildren)\n\n // Compute matches\n const [matches] = state(() => {\n const loc = location()\n return matchRoutes(routes, loc.pathname) || []\n })\n\n const [params] = state(() => {\n const m = matches()\n if (m.length > 0) {\n return m[m.length - 1].params\n }\n return {}\n })\n\n // Create routerContext as a stable object\n // The signals (location, params, matches) are already reactive\n // We create a proxy to ensure property access is properly tracked\n // When accessing location, params, or matches, automatically read the signal's value\n // to register subscriptions (similar to how state() proxy works)\n const routerContext: RouterContext = new Proxy({\n location,\n params,\n navigate,\n matches,\n } as any, {\n get(target, prop) {\n const value = target[prop as keyof RouterContext]\n\n // For state values (location, params, matches), return them directly\n // They are already Proxy-based and work like state() - property access triggers tracking\n if (prop === 'location' || prop === 'params' || prop === 'matches') {\n return value as StateValue<unknown>\n }\n\n // For navigate, return as-is\n return value\n }\n }) as RouterContext\n\n return () => {\n const ms = matches()\n\n // Matched route component (or null if no match)\n let matchedContent: FNodeChild = null\n if (ms.length > 0) {\n const rootMatch = ms[0]\n\n // Check beforeEnter guard\n if (rootMatch.route.beforeEnter) {\n const result = rootMatch.route.beforeEnter(rootMatch.params)\n if (result !== false) {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n } else {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n }\n\n // Render non-Route children (like Nav) and the matched route wrapped in main\n return f(RouterCtx.Provider, { value: routerContext }, [\n ...nonRouteChildren,\n f('main', { id: 'main' }, [matchedContent]),\n ])\n }\n}\n\n/**\n * Route configuration component.\n * Doesn't render anything directly; used by Router to build the route tree.\n */\nexport function Route(_props: RouteProps) {\n return null\n}\n\n/**\n * Renders the child route content.\n */\nexport function Outlet() {\n const router = context(RouterCtx)\n const depth = context(RouteDepthCtx) || 0 // Default 0\n\n // Safety check\n if (!router) return null\n\n return () => {\n const ms = router.matches()\n\n // Check if we have a match at this depth\n if (depth >= ms.length) return null\n\n const match = ms[depth]\n\n // Check beforeEnter guard\n if (match.route.beforeEnter) {\n const result = match.route.beforeEnter(match.params)\n if (result === false) return null\n }\n\n const Component = match.route.component\n\n // Render component and provide next depth\n return f(RouteDepthCtx.Provider, { value: depth + 1 }, [\n f(Component, { params: match.params }),\n ])\n }\n}\n\nexport function Link(props: LinkProps) {\n const r = router()\n\n const handleClick = (e: Event) => {\n e.preventDefault()\n r.navigate(props.to)\n }\n\n return f(\n 'a',\n {\n href: props.to,\n class: props.class,\n onclick: handleClick,\n },\n props.children\n )\n}\n"]}
|
package/dist/chunk-AZEHBSBG.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkDZ7L3SHV_js=require('./chunk-DZ7L3SHV.js'),chunkXJHWMHKF_js=require('./chunk-XJHWMHKF.js'),chunkQ7IWDVJ4_js=require('./chunk-Q7IWDVJ4.js');function v(){let t=()=>({pathname:"/",search:"",hash:"",query:{}}),e=()=>typeof window>"u"?t():{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash,query:F(window.location.search)},[n,r]=chunkXJHWMHKF_js.k(e()),i=s=>{if(!(typeof window>"u")){if(L(s)){console.error("[Flexium Router] Blocked navigation to unsafe path:",s);return}window.history.pushState({},"",s),r(e());}},a=()=>{try{r(e());}catch(s){console.error("[Flexium Router] Error handling popstate:",s);}};return typeof window<"u"&&window.addEventListener("popstate",a),[n,i,()=>{typeof window<"u"&&window.removeEventListener("popstate",a);}]}function L(t){let e=t.trim().toLowerCase();return ["javascript:","data:","vbscript:","file:"].some(r=>e.startsWith(r))}function C(t){return t.replace(/<[^>]*>/g,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"")}var b=new Set(["__proto__","constructor","prototype"]);function F(t){let e=new URLSearchParams(t),n=Object.create(null);return e.forEach((r,i)=>{let a=C(i),u=C(r);a&&!b.has(a)&&(n[a]=u);}),n}function A(t,e){let n=[],r=e.replace(/:([^/]+)/g,(s,h)=>(n.push(h),"([^/]+)")),i=new RegExp(`^${r}$`),a=t.match(i);if(!a)return {matches:false,params:{}};let u={};return a.slice(1).forEach((s,h)=>{u[n[h]]=s;}),{matches:true,params:u}}function y(t){let e=[],n=Array.isArray(t)?t:[t];for(let r of n){if(!chunkQ7IWDVJ4_js.c(r))continue;let{path:i,index:a,component:u,beforeEnter:s}=r.props,h=r.children;if(!u&&!h){console.warn(`[Flexium Router] Route "${i||"(index)"}" has no component and no children. Skipping.`);continue}let f={path:i||"",index:!!a,component:u||(()=>null),children:h?y(h):[],beforeEnter:s};e.push(f);}return e}function P(t,e){for(let n of t){let r=E(n,e,"");if(r)return r}return null}function E(t,e,n){let r=n;t.path&&(r=n.replace(/\/$/,"")+"/"+t.path.replace(/^\//,""));let i=t.children.length===0,a=k(r,!i),u=e.match(a);if(u){let[s,...h]=u,f=D(r,h),o={route:t,params:f,pathname:s};if(i)return s===e?[o]:null;for(let l of t.children){let c=E(l,e,r);if(c)return [o,...c]}if(s===e){let l=t.children.find(c=>c.index);return l?[o,{route:l,params:{},pathname:s}]:[o]}}return null}function k(t,e){let n=t.replace(/:([^/]+)/g,()=>"([^/]+)");return n==="/"&&e?new RegExp("^"):new RegExp(`^${n}${e?"(?:/|$)":"$"}`)}function D(t,e){let n={},r=0;return t.replace(/:([^/]+)/g,(i,a)=>(n[a]=e[r++],"")),n}var x=chunkDZ7L3SHV_js.a(null),d=chunkDZ7L3SHV_js.a(0);function N(){let t=chunkDZ7L3SHV_js.b(x);if(!t)throw new Error("router() must be called within a <Router> component");return t}function W(t){let[e,n]=v(),r=Array.isArray(t.children)?t.children:[t.children],i=[],a=[];for(let o of r)chunkQ7IWDVJ4_js.c(o)&&typeof o.type=="function"&&o.type===S?a.push(o):i.push(o);let u=y(a),[s]=chunkXJHWMHKF_js.k(()=>{let o=e();return P(u,o.pathname)||[]}),[h]=chunkXJHWMHKF_js.k(()=>{let o=s();return o.length>0?o[o.length-1].params:{}}),f=new Proxy({location:e,params:h,navigate:n,matches:s},{get(o,l){let c=o[l];return c}});return ()=>{let o=s(),l=null;if(o.length>0){let c=o[0];c.route.beforeEnter?c.route.beforeEnter(c.params)!==false&&(l=chunkQ7IWDVJ4_js.a(d.Provider,{value:1},[chunkQ7IWDVJ4_js.a("div",{key:c.route.path,style:{display:"contents"}},[chunkQ7IWDVJ4_js.a(c.route.component,{params:c.params})])])):l=chunkQ7IWDVJ4_js.a(d.Provider,{value:1},[chunkQ7IWDVJ4_js.a("div",{key:c.route.path,style:{display:"contents"}},[chunkQ7IWDVJ4_js.a(c.route.component,{params:c.params})])]);}return chunkQ7IWDVJ4_js.a(x.Provider,{value:f},[...i,chunkQ7IWDVJ4_js.a("main",{id:"main"},[l])])}}function S(t){return null}function Y(){let t=chunkDZ7L3SHV_js.b(x),e=chunkDZ7L3SHV_js.b(d)||0;return t?()=>{let n=t.matches();if(e>=n.length)return null;let r=n[e];if(r.route.beforeEnter&&r.route.beforeEnter(r.params)===false)return null;let i=r.route.component;return chunkQ7IWDVJ4_js.a(d.Provider,{value:e+1},[chunkQ7IWDVJ4_js.a(i,{params:r.params})])}:null}function H(t){let e=N(),n=r=>{r.preventDefault(),e.navigate(t.to);};return chunkQ7IWDVJ4_js.a("a",{href:t.to,class:t.class,onclick:n},t.children)}
|
|
2
|
-
exports.a=v;exports.b=L;exports.c=C;exports.d=A;exports.e=y;exports.f=P;exports.g=N;exports.h=W;exports.i=S;exports.j=Y;exports.k=H;//# sourceMappingURL=chunk-AZEHBSBG.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-AZEHBSBG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/router/core.ts","../src/router/utils.ts","../src/router/context.ts","../src/router/components.ts"],"names":["createLocation","getDefaultLoc","getLoc","parseQuery","loc","setLoc","state","navigate","path","isUnsafePath","handlePopState","error","normalizedPath","protocol","sanitizeQueryValue","value","DANGEROUS_KEYS","search","params","query","key","sanitizedKey","sanitizedValue","matchPath","pathname","routePath","paramNames","regexPath","_","paramName","regex","match","index","createRoutesFromChildren","children","routes","childArray","child","isFNode","component","beforeEnter","nestedChildren","route","matchRoutes","location","result","matchRouteBranch","parentPath","fullPath","isLeaf","matcher","compilePath","matchedPath","paramValues","paramsObj","extractParams","currentMatch","childMatches","indexRoute","prefix","values","i","RouterCtx","createContext","RouteDepthCtx","router","ctx","context","Router","props","nonRouteChildren","routeChildren","Route","matches","m","routerContext","target","prop","ms","matchedContent","rootMatch","f","_props","Outlet","depth","Component","Link","r","handleClick","e"],"mappings":"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","file":"chunk-AZEHBSBG.js","sourcesContent":["/**\n * Router Core Module\n *\n * Provides core routing functionality including location management,\n * path matching, and navigation.\n */\n\nimport { state, type StateValue } from '../core/state'\nimport { Location } from './types'\n\n/**\n * Creates a reactive location signal and navigate function.\n *\n * The location signal automatically updates when:\n * - navigate() is called\n * - Browser back/forward buttons are used (popstate event)\n *\n * @returns Tuple of [location signal, navigate function, cleanup function]\n *\n * @example\n * ```tsx\n * const [location, navigate, cleanup] = createLocation();\n * // Access current path\n * console.log(location().pathname);\n * // Navigate to new path\n * navigate('/users/123');\n * // Cleanup when done (removes popstate listener)\n * cleanup();\n * ```\n */\nexport function createLocation(): [StateValue<Location>, (path: string) => void, () => void] {\n // SSR guard: return safe defaults on server\n const getDefaultLoc = (): Location => ({\n pathname: '/',\n search: '',\n hash: '',\n query: {},\n })\n\n const getLoc = (): Location => {\n if (typeof window === 'undefined') {\n return getDefaultLoc()\n }\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n query: parseQuery(window.location.search),\n }\n }\n\n const [loc, setLoc] = state<Location>(getLoc())\n\n const navigate = (path: string) => {\n // SSR guard\n if (typeof window === 'undefined') return\n\n // Security: Validate path to prevent javascript: and other dangerous protocols\n if (isUnsafePath(path)) {\n console.error('[Flexium Router] Blocked navigation to unsafe path:', path)\n return\n }\n window.history.pushState({}, '', path)\n setLoc(getLoc())\n }\n\n // SSR guard for popstate listener\n const handlePopState = () => {\n try {\n setLoc(getLoc())\n } catch (error) {\n console.error('[Flexium Router] Error handling popstate:', error)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', handlePopState)\n }\n\n // Cleanup function to remove listener\n const cleanup = () => {\n if (typeof window !== 'undefined') {\n window.removeEventListener('popstate', handlePopState)\n }\n }\n\n return [loc, navigate, cleanup]\n}\n\n/**\n * Check if a path contains unsafe protocols (XSS prevention)\n * @param path - Path to validate\n * @returns true if path is unsafe\n */\nexport function isUnsafePath(path: string): boolean {\n const normalizedPath = path.trim().toLowerCase()\n const unsafeProtocols = ['javascript:', 'data:', 'vbscript:', 'file:']\n return unsafeProtocols.some(protocol => normalizedPath.startsWith(protocol))\n}\n\n/**\n * Sanitize query parameter value to prevent XSS\n * @param value - Query parameter value\n * @returns Sanitized value\n */\nexport function sanitizeQueryValue(value: string): string {\n // Remove potential script tags and event handlers\n return value\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/javascript:/gi, '') // Remove javascript: protocol\n .replace(/on\\w+\\s*=/gi, '') // Remove event handlers like onclick=\n}\n\n/**\n * Parses URL search string into key-value object\n * @param search - URL search string (e.g., \"?foo=bar&baz=qux\")\n * @returns Object with query parameters\n */\n// Dangerous keys that could lead to prototype pollution\nconst DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype'])\n\nfunction parseQuery(search: string): Record<string, string> {\n const params = new URLSearchParams(search)\n // Use Object.create(null) to prevent prototype pollution\n const query: Record<string, string> = Object.create(null)\n params.forEach((value, key) => {\n // Sanitize both key and value to prevent XSS\n const sanitizedKey = sanitizeQueryValue(key)\n const sanitizedValue = sanitizeQueryValue(value)\n // Block dangerous keys to prevent prototype pollution\n if (sanitizedKey && !DANGEROUS_KEYS.has(sanitizedKey)) {\n query[sanitizedKey] = sanitizedValue\n }\n })\n return query\n}\n\n/**\n * Matches a pathname against a route pattern.\n *\n * Supports dynamic segments with `:param` syntax.\n *\n * @param pathname - Current URL pathname (e.g., \"/users/123\")\n * @param routePath - Route pattern (e.g., \"/users/:id\")\n * @returns Object with `matches` boolean and extracted `params`\n *\n * @example\n * ```tsx\n * const result = matchPath('/users/123', '/users/:id');\n * // { matches: true, params: { id: '123' } }\n * ```\n */\nexport function matchPath(\n pathname: string,\n routePath: string\n): { matches: boolean; params: Record<string, string> } {\n const paramNames: string[] = []\n const regexPath = routePath.replace(/:([^/]+)/g, (_, paramName) => {\n paramNames.push(paramName)\n return '([^/]+)'\n })\n\n const regex = new RegExp(`^${regexPath}$`)\n const match = pathname.match(regex)\n\n if (!match) {\n return { matches: false, params: {} }\n }\n\n const params: Record<string, string> = {}\n match.slice(1).forEach((value, index) => {\n params[paramNames[index]] = value\n })\n\n return { matches: true, params }\n}\n","import { RouteDef, RouteMatch } from './types'\nimport type { FNodeChild } from '../core/renderer'\nimport { isFNode } from '../renderers/dom/f'\n\n/**\n * Flatten the children of <Router> or <Route> into a route configuration tree.\n * Note: This assumes `children` are FNodes representing <Route> components.\n */\nexport function createRoutesFromChildren(children: FNodeChild): RouteDef[] {\n const routes: RouteDef[] = []\n\n const childArray = Array.isArray(children) ? children : [children]\n\n for (const child of childArray) {\n if (!isFNode(child)) {\n continue\n }\n\n const { path, index, component, beforeEnter } = child.props as {\n path?: string\n index?: boolean\n component?: Function\n beforeEnter?: (\n params: Record<string, string>\n ) => boolean | Promise<boolean>\n }\n const nestedChildren = child.children\n\n // Skip routes without a component (unless they have children as layout routes)\n if (!component && !nestedChildren) {\n console.warn(\n `[Flexium Router] Route \"${path || '(index)'}\" has no component and no children. Skipping.`\n )\n continue\n }\n\n const route: RouteDef = {\n path: path || '',\n index: !!index,\n component: component || (() => null),\n children: nestedChildren ? createRoutesFromChildren(nestedChildren) : [],\n beforeEnter,\n }\n\n routes.push(route)\n }\n\n return routes\n}\n\n/**\n * Match a URL against a route tree.\n * Returns an array of matches (from root to leaf).\n */\nexport function matchRoutes(\n routes: RouteDef[],\n location: string\n): RouteMatch[] | null {\n for (const route of routes) {\n const result = matchRouteBranch(route, location, '')\n if (result) return result\n }\n return null\n}\n\nfunction matchRouteBranch(\n route: RouteDef,\n location: string,\n parentPath: string\n): RouteMatch[] | null {\n let fullPath = parentPath\n if (route.path) {\n fullPath =\n parentPath.replace(/\\/$/, '') + '/' + route.path.replace(/^\\//, '')\n }\n\n const isLeaf = route.children.length === 0\n const matcher = compilePath(fullPath, !isLeaf)\n const match = location.match(matcher)\n\n if (match) {\n const [matchedPath, ...paramValues] = match\n const paramsObj = extractParams(fullPath, paramValues)\n\n const currentMatch: RouteMatch = {\n route,\n params: paramsObj,\n pathname: matchedPath,\n }\n\n if (isLeaf) {\n // Exact match required for leaf\n if (matchedPath === location) return [currentMatch]\n return null\n }\n\n // Has children: try to match one of them\n // If no children match, and this route is an index route?\n // Or if this route matches partially, maybe an index child matches the rest?\n\n for (const child of route.children) {\n const childMatches = matchRouteBranch(child, location, fullPath)\n if (childMatches) {\n return [currentMatch, ...childMatches]\n }\n }\n\n // If no children matched, but we matched exactly this layout route?\n // E.g. /users matches /users layout, and maybe it renders index?\n if (matchedPath === location) {\n // Check for index route\n const indexRoute = route.children.find((c) => c.index)\n if (indexRoute) {\n return [\n currentMatch,\n { route: indexRoute, params: {}, pathname: matchedPath },\n ]\n }\n // Just the layout? Maybe.\n return [currentMatch]\n }\n }\n\n return null\n}\n\nfunction compilePath(path: string, prefix: boolean): RegExp {\n const regexPath = path.replace(/:([^/]+)/g, () => '([^/]+)')\n\n // If path is exactly \"/\", and we want prefix matching, it should match everything\n if (regexPath === '/' && prefix) {\n return new RegExp('^')\n }\n\n // If prefix matching allowed, ensure we match segment boundary\n return new RegExp(`^${regexPath}${prefix ? '(?:/|$)' : '$'}`)\n}\n\nfunction extractParams(path: string, values: string[]): Record<string, string> {\n const params: Record<string, string> = {}\n let i = 0\n // Re-parse to find param names... inefficient but works\n path.replace(/:([^/]+)/g, (_, paramName) => {\n params[paramName] = values[i++]\n return ''\n })\n return params\n}\n","import { createContext } from '../core/context'\nimport { RouterContext } from './types'\n\n// Global Router Context\nexport const RouterCtx = createContext<RouterContext | null>(null)\n\n// Current Route Depth Context (for Outlet)\n// Stores the index of the current match in the `matches` array\nexport const RouteDepthCtx = createContext<number>(0)\n","import { state, type StateValue } from '../core/state'\nimport { createLocation } from './core'\nimport { createRoutesFromChildren, matchRoutes } from './utils'\nimport { LinkProps, RouteProps, RouterContext } from './types'\nimport { f, isFNode } from '../renderers/dom/f'\nimport { RouterCtx, RouteDepthCtx } from './context'\nimport { context } from '../core/context'\nimport type { FNodeChild } from '../core/renderer'\n\n/**\n * Get the current router context.\n * Must be called within a <Router> component.\n *\n * @example\n * ```tsx\n * const r = router()\n * r.navigate('/dashboard')\n * ```\n */\nexport function router(): RouterContext {\n const ctx = context(RouterCtx)\n if (!ctx) {\n throw new Error('router() must be called within a <Router> component')\n }\n return ctx\n}\n\nexport function Router(props: { children: FNodeChild }) {\n const [location, navigate] = createLocation()\n\n // Separate Route children from non-Route children (like Nav, etc.)\n const childArray = Array.isArray(props.children) ? props.children : [props.children]\n const nonRouteChildren: FNodeChild[] = []\n const routeChildren: FNodeChild[] = []\n\n for (const child of childArray) {\n if (isFNode(child) && typeof child.type === 'function' && child.type === Route) {\n routeChildren.push(child)\n } else {\n nonRouteChildren.push(child)\n }\n }\n\n // Parse route configuration from Route children only\n const routes = createRoutesFromChildren(routeChildren)\n\n // Compute matches\n const [matches] = state(() => {\n const loc = location()\n return matchRoutes(routes, loc.pathname) || []\n })\n\n const [params] = state(() => {\n const m = matches()\n if (m.length > 0) {\n return m[m.length - 1].params\n }\n return {}\n })\n\n // Create routerContext as a stable object\n // The signals (location, params, matches) are already reactive\n // We create a proxy to ensure property access is properly tracked\n // When accessing location, params, or matches, automatically read the signal's value\n // to register subscriptions (similar to how state() proxy works)\n const routerContext: RouterContext = new Proxy({\n location,\n params,\n navigate,\n matches,\n } as any, {\n get(target, prop) {\n const value = target[prop as keyof RouterContext]\n\n // For state values (location, params, matches), return them directly\n // They are already Proxy-based and work like state() - property access triggers tracking\n if (prop === 'location' || prop === 'params' || prop === 'matches') {\n return value as StateValue<unknown>\n }\n\n // For navigate, return as-is\n return value\n }\n }) as RouterContext\n\n return () => {\n const ms = matches()\n\n // Matched route component (or null if no match)\n let matchedContent: FNodeChild = null\n if (ms.length > 0) {\n const rootMatch = ms[0]\n\n // Check beforeEnter guard\n if (rootMatch.route.beforeEnter) {\n const result = rootMatch.route.beforeEnter(rootMatch.params)\n if (result !== false) {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n } else {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n }\n\n // Render non-Route children (like Nav) and the matched route wrapped in main\n return f(RouterCtx.Provider, { value: routerContext }, [\n ...nonRouteChildren,\n f('main', { id: 'main' }, [matchedContent]),\n ])\n }\n}\n\n/**\n * Route configuration component.\n * Doesn't render anything directly; used by Router to build the route tree.\n */\nexport function Route(_props: RouteProps) {\n return null\n}\n\n/**\n * Renders the child route content.\n */\nexport function Outlet() {\n const router = context(RouterCtx)\n const depth = context(RouteDepthCtx) || 0 // Default 0\n\n // Safety check\n if (!router) return null\n\n return () => {\n const ms = router.matches()\n\n // Check if we have a match at this depth\n if (depth >= ms.length) return null\n\n const match = ms[depth]\n\n // Check beforeEnter guard\n if (match.route.beforeEnter) {\n const result = match.route.beforeEnter(match.params)\n if (result === false) return null\n }\n\n const Component = match.route.component\n\n // Render component and provide next depth\n return f(RouteDepthCtx.Provider, { value: depth + 1 }, [\n f(Component, { params: match.params }),\n ])\n }\n}\n\nexport function Link(props: LinkProps) {\n const r = router()\n\n const handleClick = (e: Event) => {\n e.preventDefault()\n r.navigate(props.to)\n }\n\n return f(\n 'a',\n {\n href: props.to,\n class: props.class,\n onclick: handleClick,\n },\n props.children\n )\n}\n"]}
|
package/dist/chunk-BBNYMXE7.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d as d$2,b as b$1,a as a$1,c as c$1}from'./chunk-FDMJHFN7.mjs';import {c,a}from'./chunk-HB5VPQTB.mjs';import {d as d$1,e}from'./chunk-ECYYIQEX.mjs';function U(e){return e&&(typeof e=="object"||typeof e=="function")?g in e:false}function X(e){return typeof e=="function"?(e()):U(e)?e():e}function Y(e,t){let[a,n]=d(void 0),[r,o]=d(void 0),[u,s]=d(false),[l,y]=d("unresolved"),p=null,x=async(c,P=false)=>{P?(y("refreshing"),s(true)):(y("pending"),s(true)),o(void 0);let C=t(c,{value:a.peek(),refetching:P});p=C;try{let T=await C;p===C&&(n(T),y("ready"),s(!1));}catch(T){p===C&&(o(T),y("errored"),s(false));}};c(()=>{let c=X(e);x(c,false);});let v=function(){return a()};return Object.defineProperties(v,{value:{get:()=>a(),enumerable:true,configurable:true},loading:{get:()=>u(),enumerable:true,configurable:true},error:{get:()=>r(),enumerable:true,configurable:true},state:{get:()=>l(),enumerable:true,configurable:true},latest:{get:()=>a.peek(),enumerable:true,configurable:true},peek:{value:()=>a.peek(),enumerable:false,configurable:true},[g]:{value:v,enumerable:false,configurable:false}}),[v,{mutate:c=>n(c),refetch:()=>{let c=X(e);x(c,true);}}]}var m=new Map,w=new Map,b=new Map,h={enabled:true,maxIdleTime:300*1e3,checkInterval:60*1e3,minAccessCount:0},k=null;function M(){return k}function _(e){k=e;}(typeof window<"u"||typeof globalThis<"u")&&setTimeout(()=>{h.enabled&&!k&&(k=setInterval(E,h.checkInterval),k&&typeof k=="object"&&"unref"in k&&typeof k.unref=="function"&&k.unref());},0);var ge=1e4,te=false,Z=new WeakMap;function R(e){if(typeof e=="string")return e;let t=Z.get(e);if(t!==void 0)return t;try{let a=JSON.stringify(e);return Z.set(e,a),a}catch{return String(e)}}function ee(e,t){t&&(w.has(t)||w.set(t,new Set),w.get(t).add(e));}function N(e,t){if(!t)return;let a=w.get(t);a&&(a.delete(e),a.size===0&&w.delete(t));}function I(e,t,a){let n=Date.now(),r=b.get(e);r?(r.lastAccessed=n,r.accessCount++,r.referenceCount++,t&&r.namespace!==t&&(r.namespace&&N(e,r.namespace),r.namespace=t,ee(e,t))):(b.set(e,{key:e,namespace:t,createdAt:n,lastAccessed:n,accessCount:1,referenceCount:1,signalRef:a&&typeof WeakRef<"u"?new WeakRef(a):void 0}),ee(e,t));}var H=null;function ne(e){H=e;}function E(){if(!h.enabled||!H)return;let e=Date.now(),t=[];for(let[a,n]of b.entries()){if(n.signalRef&&typeof WeakRef<"u"&&!n.signalRef.deref()){t.push(a);continue}e-n.lastAccessed>h.maxIdleTime&&n.referenceCount===0&&n.accessCount>=h.minAccessCount&&t.push(a);}for(let a of t)H(a);t.length>0&&typeof process<"u"&&process.env?.NODE_ENV!=="production"&&console.log(`[Flexium] Auto-cleaned ${t.length} idle states`);}function ae(){return te}function W(e){te=e;}function re(){return ge}var z=0,f=new WeakMap,oe=new WeakMap,be=new WeakMap;function S(e,t,a){let n=oe.get(e);n||(n=new Map,oe.set(e,n));let r=n.get(t);if(!r){let o=a!==void 0?a:Reflect.get(e,t);r=O(o),n.set(t,r);}return r}function O(e,t,a$1){let n={_value:e,subsHead:void 0,depsHead:void 0,version:0,nodeType:t?2:1,computeFn:t,flags:t?12:0,lastCleanEpoch:0,key:a$1},r=function(){let s=f.get(r),l=d$1();return l&&l!==r&&a.connect(r,l),s.computeFn?A(s,r):s._value},o=r;return f.set(o,n),a$1&&be.set(o,a$1),Object.defineProperty(o,"subsHead",{get:()=>f.get(o).subsHead,set:s=>{f.get(o).subsHead=s;},enumerable:false,configurable:true}),Object.defineProperty(o,"depsHead",{get:()=>f.get(o).depsHead,set:s=>{f.get(o).depsHead=s;},enumerable:false,configurable:true}),Object.defineProperty(o,"version",{get:()=>f.get(o).version,enumerable:false,configurable:true}),Object.defineProperty(o,"nodeType",{get:()=>f.get(o).nodeType,enumerable:false,configurable:true}),Object.defineProperty(o,"flags",{get:()=>f.get(o).flags||0,set:s=>{f.get(o).flags=s;},enumerable:false,configurable:true}),o.peek=()=>{let s=f.get(o);return s.computeFn?A(s,o,true):s._value},t||(o.set=s=>{let l=f.get(o),y=l._value,p=typeof s=="function"?s(y):s;l._value!==p&&(l._value=p,l.version=++z,K(l));}),o.execute=()=>{let s=f.get(o);s.computeFn&&(s.flags=(s.flags||0)|4|8,K(s));},o.notify=()=>{let s=f.get(o);K(s);},new Proxy(o,Se)}function A(e$1,t,a$1=false){if(!e$1.computeFn)return e$1._value;let n=e$1.flags||0,r=n&12;if(!a$1&&r===0)return e$1._value;if((n&4)===0&&(n&8)!==0&&!me(e$1))return e$1.flags=n&-9,e$1._value;e$1.flags=n&-13,a.disconnectDependencies(t);let o=d$1();e(t);try{let u=e$1.computeFn();e$1._value!==u&&(e$1._value=u,e$1.version=++z),e$1.lastCleanEpoch=z;}finally{e(o);}return e$1._value}function me(e){if(!e.depsHead)return true;let t=e.depsHead;for(;t;){let a=t.dep;if(a.version>(e.lastCleanEpoch||0))return true;if(a.nodeType===2){let n=f.get(a);if(((n.flags||0)&12)!==0){let o=a.version;if(A(n,a,true),a.version!==o&&a.version>(e.lastCleanEpoch||0))return true}}t=t.nextDep;}return false}function K(e){if(d$2()===0){if(e.subsHead){let t=false,a=e.subsHead;for(;a;){let n=a.sub;n.nodeType===2?n.execute&&n.execute():(b$1(n),t||(t=true,a$1())),a=a.nextSub;}}}else {let t=e.subsHead;for(;t;)t.sub&&c$1(t.sub),t=t.nextSub;}}var Se={get(e,t){let a$1=f.get(e);if(t===g)return e;if(a$1.key&&I(a$1.key),t==="peek")return e.peek;if(t==="set"&&!a$1.computeFn)return e.set;let n=a$1.computeFn?A(a$1,e):a$1._value,r=d$1();if(r&&r!==e&&a.connect(e,r),t===Symbol.toPrimitive||t==="valueOf")return ()=>n;if(t===Symbol.iterator&&Array.isArray(n))return S(n,"length")(),S(n,"iterate")(),n[Symbol.iterator].bind(n);if(t==="prototype"||t==="name"||t==="caller"||t==="arguments"){if(typeof n=="function")return n[t];if(n===null||typeof n!="object")return}if(n!==null&&typeof n=="object"){let u=Reflect.get(n,t);return typeof u=="function"?Array.isArray(n)&&["push","pop","shift","unshift","splice","sort","reverse"].includes(t)?function(...l){let y=u.apply(n,l),p=f.get(e),x=p.computeFn?A(p,e):p._value;return n===x&&(S(n,"length").set(n.length),S(n,"iterate")()),y}:Array.isArray(n)?u.bind(n):n[t].bind(n):(S(n,t,u)(),u!==null&&typeof u=="object"?ie(u):u)}let o=n[t];return typeof o=="function"?o.bind(n):o},set(e,t,a){let n=f.get(e);if(n.computeFn)throw new Error("Cannot set computed signal");let r=n._value;if(r!==null&&typeof r=="object"){let o=Reflect.set(r,t,a);return o&&S(r,t).set(a),o}return false},has(e,t){if(t===g)return true;let a=f.get(e),n=a.computeFn?A(a,e):a._value;return n===null?false:typeof n=="object"?Reflect.has(n,t):false},ownKeys(e){let t=f.get(e),a=t.computeFn?A(t,e):t._value;if(a===null||typeof a!="object")return [];Array.isArray(a)&&S(a,"length")(),S(a,"iterate")();let n=Reflect.ownKeys(a),r=Reflect.ownKeys(e),o=["prototype","name","length"],u=[...n];for(let s of o)r.includes(s)&&!u.includes(s)&&Reflect.getOwnPropertyDescriptor(e,s)&&u.push(s);return u},getPrototypeOf(e){let t=f.get(e),a=t.computeFn?A(t,e):t._value;return a!==null&&typeof a=="object"?Reflect.getPrototypeOf(a):Object.prototype},getOwnPropertyDescriptor(e,t){if(t===g)return {configurable:true,enumerable:false,value:e};let a=f.get(e),n=a.computeFn?A(a,e):a._value;if(t==="prototype"||t==="name"||t==="caller"||t==="arguments"){if(t==="prototype"){let o=Reflect.getOwnPropertyDescriptor(e,t);return o||void 0}if(n!==null&&typeof n=="object"){let o=Reflect.getOwnPropertyDescriptor(n,t);if(o)return {...o,configurable:true,enumerable:true}}if(typeof n=="function"){let o=Reflect.getOwnPropertyDescriptor(n,t);if(o)return {...o,configurable:true,enumerable:true}}return}if(n===null||typeof n!="object")return;let r=Reflect.getOwnPropertyDescriptor(n,t);if(r)return {...r,configurable:true,enumerable:true}}},ve={get(e,t,a){if(t===g)return e;let n=Reflect.get(e,t,a);return S(e,t,n)(),n!==null&&typeof n=="object"?ie(n):n},set(e,t,a,n){let r=Reflect.set(e,t,a,n);return r&&S(e,t).set(a),r},has(e,t){return t===g?true:Reflect.has(e,t)}},se=new WeakMap;function ie(e){let t=se.get(e);return t||(t=new Proxy(e,ve),se.set(e,t)),t}var ue=new WeakMap;function ce(e,t){if(typeof e=="object"&&e!==null){let a=ue.get(e);return a||(a=O(e,void 0,t),ue.set(e,a),a)}return O(e,void 0,t)}function j(e,t){return O(void 0,e,t)}function le(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&g in e?e[g]:null}var fe=null;function L(e){fe=e;}function de(){return fe}function Fe(){return {id:Symbol("component"),hookIndex:0,hooks:[]}}function He(e){e.hookIndex=0;}var g=Symbol.for("flexium.stateSignal");function B(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&g in e}function Ke(e){return B(e)}function ze(e){return le(e)}function Le(e,t){return B(e)?e.peek()===t:false}function Be(e){return B(e)?!!e.peek():false}function Te(e,t){let a=de();if(a&&!t?.key){let i=a,c=i.hookIndex++;if(c<i.hooks.length)return i.hooks[c];let P=a;L(null);let C=d(e,t);return L(P),i.hooks.push(C),C}let n=t?.key,r=n?R(n):void 0,o=Array.isArray(n)&&n.length>0?String(n[0]):void 0,u=t?.params;if(r&&m.has(r)){let i=m.get(r);I(r,o,i.proxy);let c=[i.proxy];return i.setter&&c.push(i.setter),i.refetch&&c.push(i.refetch),i.status&&c.push(i.status),i.error&&c.push(i.error),c}let s,l,y,p,x;if(typeof e=="function"){let i=e,c=u!==void 0?()=>i(u):i,P;try{P=c();}catch{}if(i.constructor.name==="AsyncFunction"||P instanceof Promise){let[T,pe]=Y(c,async ye=>ye);y=pe.refetch,s=j(()=>T(),r),p=j(()=>T.loading?"loading":T.error?"error":T.state==="unresolved"?"idle":"success",r),x=j(()=>T.error,r);}else s=j(c,r);}else s=ce(e,r),l=i=>{let c=s[g];typeof i=="function"?c.set(i(c.peek())):c.set(i);};let v=[s];return l&&v.push(l),y&&(v.splice(1,0,y),p&&v.push(p),x&&v.push(x)),r&&(m.set(r,{proxy:s,setter:l,refetch:y,status:p,error:x,createdAt:Date.now(),lastAccessed:Date.now(),accessCount:1,referenceCount:1,key:r,namespace:o}),I(r,o,s),typeof process<"u"&&process.env?.NODE_ENV!=="production"&&!ae()&&m.size>=re()&&(W(true),console.warn(`[Flexium] Registry size warning: ${m.size}`))),v}var d=Te;d.delete=function(e){let t=R(e),a=b.get(t);return a?.namespace&&N(t,a.namespace),b.delete(t),m.delete(t)};d.clear=function(){m.clear(),w.clear(),b.clear(),W(false);};d.has=function(e){return m.has(R(e))};d.clearByPrefix=function(e){let t=R(e),a=0,n=[];for(let[r]of b.entries()){if(r===t){n.push(r);continue}if(t.endsWith("]")){let o=t.slice(0,-1);r.startsWith(o)&&r.length>o.length&&r[o.length]===","&&n.push(r);}else r.startsWith(t)&&n.push(r);}for(let r of n)d.delete(r)&&a++;return a};d.getStats=function(){let e={};for(let[a,n]of w.entries())e[a]=n.size;let t=0;for(let a of b.values())t+=a.accessCount;return {total:m.size,byNamespace:e,topNamespaces:Object.entries(e).map(([a,n])=>({namespace:a,count:n})).sort((a,n)=>n.count-a.count).slice(0,10),averageAccessCount:b.size?t/b.size:0}};d.getNamespaceStats=function(e){let t=R(e),a=Array.isArray(e)&&e.length>0?String(e[0]):t,n=[],r=0;for(let[o,u]of b.entries()){let s=false;if(o===t)s=true;else if(t.endsWith("]")){let l=t.slice(0,-1);o.startsWith(l)&&o.length>l.length&&o[l.length]===","&&(s=true);}else o.startsWith(t)&&(s=true);s&&(n.push({key:o,accessCount:u.accessCount,createdAt:u.createdAt}),r+=u.accessCount);}return {namespace:a,count:n.length,totalAccessCount:r,averageAccessCount:n.length?r/n.length:0,states:n}};Object.defineProperty(d,"size",{get:()=>m.size,enumerable:true});d.enableAutoCleanup=e=>{Object.assign(h,e,{enabled:true});let t=M();t&&clearInterval(t);let a=setInterval(E,h.checkInterval);_(a);};d.disableAutoCleanup=()=>{h.enabled=false;let e=M();e&&clearInterval(e),_(null);};Object.defineProperty(d,"isAutoCleanupEnabled",{get:()=>h.enabled,enumerable:true});ne(e=>d.delete(e));function Ge(e){return {current:e}}export{Y as a,L as b,Fe as c,He as d,g as e,B as f,Ke as g,ze as h,Le as i,Be as j,d as k,Ge as l};//# sourceMappingURL=chunk-BBNYMXE7.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-BBNYMXE7.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/resource.ts","../src/core/registry.ts","../src/core/proxy.ts","../src/core/component.ts","../src/core/state.ts"],"names":["isStateValue","value","STATE_SIGNAL","getValue","source","createResource","fetcher","setValue","state","error","setError","loading","setLoading","resourceState","setResourceState","latestPromise","load","currentSource","refetching","currentPromise","result","err","effect","resource","v","globalStateRegistry","namespaceRegistry","stateMetadata","autoCleanupConfig","autoCleanupInterval","getAutoCleanupInterval","setAutoCleanupInterval","interval","performAutoCleanup","DEV_WARNING_THRESHOLD","hasWarnedAboutSize","keyCache","serializeKey","key","cached","serialized","registerStateInNamespace","namespace","unregisterStateFromNamespace","set","updateStateMetadata","signalRefTarget","now","existing","deleteStateCallback","setDeleteStateCallback","callback","keysToRemove","metadata","getHasWarnedAboutSize","setHasWarnedAboutSize","getDevWarningThreshold","globalVersion","proxyMetadata","depMap","signalToKeyMap","getDep","target","initialValue","deps","dep","currentVal","createReactiveProxy","computeFn","targetFn","meta","activeEffect","getActiveEffect","Graph","getComputedValue","newValue","prevValue","notifySubscribers","signalProxyHandlers","force","flags","dirtyOrStale","needsRefetch","prevEffect","setActiveEffect","link","depMeta","oldVersion","getBatchDepth","hasScheduled","sub","addToAutoBatch","scheduleAutoBatch","addToBatch","prop","innerValue","val","args","currentValue","createNestedProxy","success","keys","targetKeys","functionProps","targetDesc","innerDesc","desc","nestedHandlers","receiver","nestedProxyCache","proxy","reactiveProxyCache","createSignalProxy","createComputedProxy","getProxyFromStateValue","stateValue","currentComponent","setCurrentComponent","instance","getCurrentComponent","createComponentInstance","resetHookIndex","isSignal","getStateSignal","equals","isTruthy","stateImplementation","initialValueOrFetcher","options","comp","hookIndex","saved","res","rawKey","params","entry","setter","refetch","statusProxy","errorProxy","originalFn","fn","testResult","actions","proxySignal","sKey","prefix","prefixStr","cleared","keysToDelete","raw","k","byNamespace","ns","totalAccess","m","n","c","b","pStr","states","matched","newInterval","ref","initial"],"mappings":"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","file":"chunk-BBNYMXE7.mjs","sourcesContent":["/**\n * Resource API - Proxy-based async state management\n * \n * Creates a resource for handling async data with loading/error states\n */\n\nimport { state, type StateValue } from './state'\nimport { effect } from './effect'\nimport { STATE_SIGNAL } from './state'\n\n/**\n * Resource interface for async data\n */\nexport interface Resource<T> {\n (): T | undefined\n value: T | undefined\n loading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error: any\n state: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n latest: T | undefined\n peek(): T | undefined\n}\n\n/**\n * Helper to check if a value is a state value (Proxy-based)\n */\nfunction isStateValue(value: unknown): value is StateValue<unknown> {\n if (value && (typeof value === 'object' || typeof value === 'function')) {\n return STATE_SIGNAL in (value as object)\n }\n return false\n}\n\n/**\n * Helper to get value from state or plain value\n */\nfunction getValue<T>(source: T | StateValue<T> | (() => T)): T {\n if (typeof source === 'function') {\n // Check if it's a state value (Proxy)\n if (isStateValue(source)) {\n return (source as StateValue<T>)()\n }\n // It's a plain function\n return (source as () => T)()\n }\n // It's a static value or state value\n if (isStateValue(source)) {\n return (source as StateValue<T>)()\n }\n return source\n}\n\n/**\n * Creates a resource for handling async data\n * @internal Use state(async () => ...) instead which returns [data, refetch, status, error]\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createResource<T, S = any>(\n source: S | StateValue<S> | (() => S),\n fetcher: (\n source: S,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { value, refetching }: { value: T | undefined; refetching: any }\n ) => Promise<T>\n): [Resource<T>, { mutate: (v: T | undefined) => void; refetch: () => void }] {\n const [value, setValue] = state<T | undefined>(undefined)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [error, setError] = state<any>(undefined)\n const [loading, setLoading] = state<boolean>(false)\n const [resourceState, setResourceState] = state<\n 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n >('unresolved')\n\n let latestPromise: Promise<T> | null = null\n\n const load = async (currentSource: S, refetching = false) => {\n if (refetching) {\n setResourceState('refreshing')\n setLoading(true)\n } else {\n setResourceState('pending')\n setLoading(true)\n }\n setError(undefined)\n\n const currentPromise = fetcher(currentSource, { value: value.peek(), refetching })\n latestPromise = currentPromise\n\n try {\n const result = await currentPromise\n if (latestPromise === currentPromise) {\n setValue(result)\n setResourceState('ready')\n setLoading(false)\n }\n } catch (err) {\n if (latestPromise === currentPromise) {\n setError(err)\n setResourceState('errored')\n setLoading(false)\n }\n }\n }\n\n // Track source changes\n effect(() => {\n const currentSource = getValue(source)\n load(currentSource, false)\n })\n\n // Create the resource object (read-only signal interface)\n const resource = function () {\n return value()\n } as unknown as Resource<T>\n\n Object.defineProperties(resource, {\n value: { get: () => value(), enumerable: true, configurable: true },\n loading: { get: () => loading(), enumerable: true, configurable: true },\n error: { get: () => error(), enumerable: true, configurable: true },\n state: { get: () => resourceState(), enumerable: true, configurable: true },\n latest: { get: () => value.peek(), enumerable: true, configurable: true },\n peek: { value: () => value.peek(), enumerable: false, configurable: true },\n // Expose STATE_SIGNAL for detection\n [STATE_SIGNAL]: { value: resource, enumerable: false, configurable: false }\n })\n\n const actions = {\n mutate: (v: T | undefined) => setValue(v),\n refetch: () => {\n const currentSource = getValue(source)\n load(currentSource, true)\n },\n }\n\n return [resource, actions]\n}\n","/**\n * Global State Registry & Metadata\n * \n * Manages global state registry, namespaces, metadata, and auto-cleanup\n */\n\nimport type { StateValue, StateAction, AsyncStatus, StateKey } from './state'\n\nexport interface RegistryEntry {\n proxy: StateValue<any> // Proxy itself is the signal\n setter: StateAction<any> | undefined\n refetch?: () => void\n status?: StateValue<AsyncStatus>\n error?: StateValue<unknown>\n key?: string\n namespace?: string\n\n // Metadata for tracking\n createdAt: number\n lastAccessed: number\n accessCount: number\n referenceCount: number\n}\n\nexport const globalStateRegistry = new Map<string, RegistryEntry>()\nexport const namespaceRegistry = new Map<string, Set<string>>()\n\nexport interface StateMetadata {\n key: string\n namespace?: string\n createdAt: number\n lastAccessed: number\n accessCount: number\n referenceCount: number\n signalRef?: WeakRef<any>\n}\n\nexport const stateMetadata = new Map<string, StateMetadata>()\n\nexport interface AutoCleanupConfig {\n enabled: boolean\n maxIdleTime: number\n checkInterval: number\n minAccessCount: number\n}\n\nexport let autoCleanupConfig: AutoCleanupConfig = {\n enabled: true,\n maxIdleTime: 5 * 60 * 1000,\n checkInterval: 60 * 1000,\n minAccessCount: 0,\n}\n\nlet autoCleanupInterval: AnyInterval | null = null\ntype AnyInterval = ReturnType<typeof setInterval>\n\nexport function getAutoCleanupInterval(): AnyInterval | null {\n return autoCleanupInterval\n}\n\nexport function setAutoCleanupInterval(interval: AnyInterval | null): void {\n autoCleanupInterval = interval\n}\n\nif (typeof window !== 'undefined' || typeof globalThis !== 'undefined') {\n setTimeout(() => {\n if (autoCleanupConfig.enabled && !autoCleanupInterval) {\n autoCleanupInterval = setInterval(performAutoCleanup, autoCleanupConfig.checkInterval)\n // Allow process to exit in Node.js environment even if interval is running\n if (autoCleanupInterval && typeof autoCleanupInterval === 'object' && 'unref' in autoCleanupInterval && typeof autoCleanupInterval.unref === 'function') {\n (autoCleanupInterval as any).unref()\n }\n }\n }, 0)\n}\n\nconst DEV_WARNING_THRESHOLD = 10000\nlet hasWarnedAboutSize = false\n\n/**\n * Helper Functions\n */\nconst keyCache = new WeakMap<readonly unknown[], string>()\n\nexport function serializeKey(key: StateKey): string {\n if (typeof key === 'string') return key\n const cached = keyCache.get(key)\n if (cached !== undefined) return cached\n try {\n const serialized = JSON.stringify(key)\n keyCache.set(key, serialized)\n return serialized\n } catch (error) {\n const fallback = String(key)\n return fallback\n }\n}\n\nexport function registerStateInNamespace(key: string, namespace?: string): void {\n if (!namespace) return\n if (!namespaceRegistry.has(namespace)) namespaceRegistry.set(namespace, new Set())\n namespaceRegistry.get(namespace)!.add(key)\n}\n\nexport function unregisterStateFromNamespace(key: string, namespace?: string): void {\n if (!namespace) return\n const set = namespaceRegistry.get(namespace)\n if (set) {\n set.delete(key)\n if (set.size === 0) namespaceRegistry.delete(namespace)\n }\n}\n\nexport function updateStateMetadata(key: string, namespace?: string, signalRefTarget?: any): void {\n const now = Date.now()\n const existing = stateMetadata.get(key)\n\n if (existing) {\n existing.lastAccessed = now\n existing.accessCount++\n existing.referenceCount++\n if (namespace && existing.namespace !== namespace) {\n if (existing.namespace) unregisterStateFromNamespace(key, existing.namespace)\n existing.namespace = namespace\n registerStateInNamespace(key, namespace)\n }\n } else {\n stateMetadata.set(key, {\n key,\n namespace,\n createdAt: now,\n lastAccessed: now,\n accessCount: 1,\n referenceCount: 1,\n signalRef: signalRefTarget && typeof WeakRef !== 'undefined' ? new WeakRef(signalRefTarget) : undefined\n })\n registerStateInNamespace(key, namespace)\n }\n}\n\n// Callback to delete state - set by state.ts to avoid circular dependency\nlet deleteStateCallback: ((key: string) => boolean) | null = null\n\nexport function setDeleteStateCallback(callback: (key: string) => boolean): void {\n deleteStateCallback = callback\n}\n\nexport function performAutoCleanup(): void {\n if (!autoCleanupConfig.enabled || !deleteStateCallback) return\n const now = Date.now()\n const keysToRemove: string[] = []\n\n for (const [key, metadata] of stateMetadata.entries()) {\n if (metadata.signalRef && typeof WeakRef !== 'undefined') {\n const sig = metadata.signalRef.deref()\n if (!sig) {\n keysToRemove.push(key)\n continue\n }\n }\n const idleTime = now - metadata.lastAccessed\n if (idleTime > autoCleanupConfig.maxIdleTime && metadata.referenceCount === 0 && metadata.accessCount >= autoCleanupConfig.minAccessCount) {\n keysToRemove.push(key)\n }\n }\n\n for (const key of keysToRemove) {\n deleteStateCallback(key)\n }\n\n if (keysToRemove.length > 0 && typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {\n console.log(`[Flexium] Auto-cleaned ${keysToRemove.length} idle states`)\n }\n}\n\nexport function getHasWarnedAboutSize(): boolean {\n return hasWarnedAboutSize\n}\n\nexport function setHasWarnedAboutSize(value: boolean): void {\n hasWarnedAboutSize = value\n}\n\nexport function getDevWarningThreshold(): number {\n return DEV_WARNING_THRESHOLD\n}\n","/**\n * Proxy-Centric Signaling Architecture\n * \n * Proxy directly stores values and manages dependency graph\n * No SignalNode/ComputedNode wrapper - Proxy IS the signal\n */\n\nimport { STATE_SIGNAL } from './state'\nimport { updateStateMetadata } from './registry'\nimport { Graph, type Link, type ISubscriber, type IObservable, SubscriberFlags, NodeType } from './graph'\nimport { getActiveEffect, setActiveEffect } from './owner'\nimport { scheduleAutoBatch, addToAutoBatch, addToBatch, getBatchDepth } from './sync'\n\n// Global version clock for epoch-based validation\nlet globalVersion = 0\n\n/**\n * Reactive Proxy Metadata\n * Stores all reactive state directly in Proxy metadata\n */\ninterface ReactiveMetadata {\n // Value storage\n _value: unknown\n\n // Graph state\n subsHead: Link | undefined\n depsHead: Link | undefined\n version: number\n\n // Node type\n nodeType: NodeType\n\n // Computed state (for computed proxies)\n computeFn?: () => unknown\n flags?: SubscriberFlags\n lastCleanEpoch?: number\n\n // Key for registry tracking\n key?: string\n}\n\nconst proxyMetadata = new WeakMap<object, ReactiveMetadata>()\n\n/**\n * Dependency Map: Stores signals for object properties.\n * Key: Target Object (The inner value)\n * Value: Map<PropertyKey, ReactiveProxy>\n */\nconst depMap = new WeakMap<object, Map<string | symbol, any>>()\nconst signalToKeyMap = new WeakMap<object, string>()\n\nfunction getDep(target: object, key: string | symbol, initialValue?: unknown): any {\n let deps = depMap.get(target)\n if (!deps) {\n deps = new Map()\n depMap.set(target, deps)\n }\n let dep = deps.get(key)\n if (!dep) {\n const currentVal = initialValue !== undefined ? initialValue : Reflect.get(target, key)\n dep = createReactiveProxy(currentVal)\n deps.set(key, dep)\n }\n return dep\n}\n\n/**\n * Reactive Proxy Target Interface\n * Extends function with IObservable/ISubscriber properties\n */\ninterface ReactiveTarget extends Function {\n // IObservable properties\n subsHead: Link | undefined\n version: number\n nodeType: NodeType\n notify(): void\n\n // ISubscriber properties (for computed)\n depsHead?: Link | undefined\n flags?: SubscriberFlags\n execute(): void\n\n // Proxy methods\n peek(): unknown\n set?(value: unknown | ((prev: unknown) => unknown)): void\n}\n\n/**\n * Create a reactive proxy that implements IObservable/ISubscriber\n */\nfunction createReactiveProxy<T>(initialValue: T, computeFn?: () => T, key?: string): ReactiveTarget {\n const metadata: ReactiveMetadata = {\n _value: initialValue,\n subsHead: undefined,\n depsHead: undefined,\n version: 0,\n nodeType: computeFn ? NodeType.Computed : NodeType.Signal,\n computeFn,\n flags: computeFn ? (SubscriberFlags.Dirty | SubscriberFlags.Stale) : 0,\n lastCleanEpoch: 0,\n key\n }\n\n // Create callable function target\n // We need to create the function first, then add properties\n const targetFn = function () {\n const meta = proxyMetadata.get(targetFn as any)!\n\n // Track dependency if in effect/computed\n const activeEffect = getActiveEffect()\n if (activeEffect && activeEffect !== (targetFn as any)) {\n Graph.connect(targetFn as any as IObservable, activeEffect)\n }\n\n if (meta.computeFn) {\n // Computed: lazy evaluation\n return getComputedValue(meta, targetFn as any as ReactiveTarget)\n }\n return meta._value\n } as unknown as ReactiveTarget\n\n const target = targetFn\n\n proxyMetadata.set(target as any, metadata)\n if (key) {\n signalToKeyMap.set(target as any, key)\n }\n\n // Make target implement IObservable/ISubscriber\n // Use non-enumerable properties to avoid issues with object spread\n Object.defineProperty(target, 'subsHead', {\n get: () => proxyMetadata.get(target as any)!.subsHead,\n set: (v) => { proxyMetadata.get(target as any)!.subsHead = v },\n enumerable: false,\n configurable: true\n })\n Object.defineProperty(target, 'depsHead', {\n get: () => proxyMetadata.get(target as any)!.depsHead,\n set: (v) => { proxyMetadata.get(target as any)!.depsHead = v },\n enumerable: false,\n configurable: true\n })\n Object.defineProperty(target, 'version', {\n get: () => proxyMetadata.get(target as any)!.version,\n enumerable: false,\n configurable: true\n })\n Object.defineProperty(target, 'nodeType', {\n get: () => proxyMetadata.get(target as any)!.nodeType,\n enumerable: false,\n configurable: true\n })\n Object.defineProperty(target, 'flags', {\n get: () => proxyMetadata.get(target as any)!.flags || 0,\n set: (v) => { proxyMetadata.get(target as any)!.flags = v },\n enumerable: false,\n configurable: true\n })\n\n // Add methods\n target.peek = () => {\n const meta = proxyMetadata.get(target as any)!\n if (meta.computeFn) {\n return getComputedValue(meta, target as any, true)\n }\n return meta._value\n }\n\n if (!computeFn) {\n target.set = (newValue: T | ((prev: T) => T)) => {\n const meta = proxyMetadata.get(target as any)!\n const prevValue = meta._value\n const value = typeof newValue === 'function' ? (newValue as (prev: T) => T)(prevValue as T) : newValue\n if (meta._value !== value) {\n meta._value = value\n meta.version = ++globalVersion\n notifySubscribers(meta)\n }\n }\n }\n\n target.execute = () => {\n const meta = proxyMetadata.get(target as any)!\n if (meta.computeFn) {\n meta.flags = (meta.flags || 0) | SubscriberFlags.Dirty | SubscriberFlags.Stale\n notifySubscribers(meta)\n }\n }\n\n // Add notify method for IObservable\n target.notify = () => {\n const meta = proxyMetadata.get(target as any)!\n notifySubscribers(meta)\n }\n\n const proxy = new Proxy(target, signalProxyHandlers) as any\n return proxy\n}\n\nfunction getComputedValue(meta: ReactiveMetadata, target: ReactiveTarget, force = false): unknown {\n if (!meta.computeFn) return meta._value\n\n const flags = meta.flags || 0\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n\n if (!force && dirtyOrStale === 0) {\n return meta._value\n }\n\n // Check if dependencies changed\n if ((flags & SubscriberFlags.Dirty) === 0 && (flags & SubscriberFlags.Stale) !== 0) {\n if (!needsRefetch(meta)) {\n meta.flags = flags & ~SubscriberFlags.Stale\n return meta._value\n }\n }\n\n // Re-compute\n meta.flags = flags & ~(SubscriberFlags.Dirty | SubscriberFlags.Stale)\n Graph.disconnectDependencies(target as ISubscriber)\n\n const prevEffect = getActiveEffect()\n setActiveEffect(target as ISubscriber)\n\n try {\n const newValue = meta.computeFn()\n if (meta._value !== newValue) {\n meta._value = newValue\n meta.version = ++globalVersion\n }\n meta.lastCleanEpoch = globalVersion\n } finally {\n setActiveEffect(prevEffect)\n }\n\n return meta._value\n}\n\nfunction needsRefetch(meta: ReactiveMetadata): boolean {\n if (!meta.depsHead) return true\n\n let link: Link | undefined = meta.depsHead\n while (link) {\n const dep = link.dep!\n if (dep.version > (meta.lastCleanEpoch || 0)) {\n return true\n }\n if (dep.nodeType === NodeType.Computed) {\n const depMeta = proxyMetadata.get(dep as any)!\n const flags = depMeta.flags || 0\n if ((flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)) !== 0) {\n const oldVersion = dep.version\n getComputedValue(depMeta, dep as any as ReactiveTarget, true)\n if (dep.version !== oldVersion && dep.version > (meta.lastCleanEpoch || 0)) {\n return true\n }\n }\n }\n link = link.nextDep\n }\n return false\n}\n\nfunction notifySubscribers(meta: ReactiveMetadata): void {\n if (getBatchDepth() === 0) {\n if (meta.subsHead) {\n let hasScheduled = false\n let link: Link | undefined = meta.subsHead\n\n while (link) {\n const sub = link.sub!\n if (sub.nodeType === NodeType.Computed) {\n if (sub.execute) sub.execute()\n } else {\n addToAutoBatch(sub)\n if (!hasScheduled) {\n hasScheduled = true\n scheduleAutoBatch()\n }\n }\n link = link.nextSub\n }\n }\n } else {\n let link = meta.subsHead\n while (link) {\n if (link.sub) addToBatch(link.sub)\n link = link.nextSub\n }\n }\n}\n\n/**\n * Proxy Handler for Reactive Proxies\n */\nconst signalProxyHandlers: ProxyHandler<ReactiveTarget> = {\n get(target, prop) {\n const meta = proxyMetadata.get(target as any)!\n\n // Direct access to underlying proxy\n if (prop === STATE_SIGNAL) return target\n\n // Access Tracking\n if (meta.key) updateStateMetadata(meta.key)\n\n // Expose peek method\n if (prop === 'peek') {\n return target.peek\n }\n\n // Expose set method for writable signals\n if (prop === 'set' && !meta.computeFn) {\n return target.set\n }\n\n // Get the current value (track dependency)\n const innerValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n\n // Track dependency if in effect/computed (before property access checks)\n const activeEffect = getActiveEffect()\n if (activeEffect && activeEffect !== (target as any)) {\n Graph.connect(target as IObservable, activeEffect)\n }\n\n // Enable primitive coercion (arithmetic operations)\n if (prop === Symbol.toPrimitive || prop === 'valueOf') {\n return () => innerValue\n }\n\n // Enable iteration (for arrays)\n if (prop === Symbol.iterator) {\n if (Array.isArray(innerValue)) {\n getDep(innerValue, 'length')()\n getDep(innerValue, 'iterate')()\n return (innerValue as any)[Symbol.iterator].bind(innerValue)\n }\n }\n\n // For function-specific properties on the target function itself, hide them\n // This ensures object spread only includes innerValue properties\n // Note: 'length' is NOT a function property - it's an array property, so we handle it separately\n // This check must come AFTER we've determined innerValue is an object\n if (prop === 'prototype' || prop === 'name' || prop === 'caller' || prop === 'arguments') {\n // Only return if innerValue itself is a function\n if (typeof innerValue === 'function') {\n return (innerValue as any)[prop]\n }\n // For non-function innerValue, return undefined to hide target function's properties\n // But only if innerValue is not an object (to avoid hiding object properties)\n if (innerValue === null || typeof innerValue !== 'object') {\n return undefined\n }\n // If innerValue is an object, continue to property access below\n }\n\n // Recursive Forwarding for object properties\n if (innerValue !== null && typeof innerValue === 'object') {\n // Get the property value from innerValue\n const val = Reflect.get(innerValue, prop)\n\n if (typeof val === 'function') {\n // Special handling for Array mutation methods\n if (Array.isArray(innerValue) && ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].includes(prop as string)) {\n return function (...args: any[]) {\n const result = (val as Function).apply(innerValue, args)\n const meta = proxyMetadata.get(target as any)!\n const currentValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n if (innerValue === currentValue) {\n const lengthDep = getDep(innerValue, 'length')\n lengthDep.set(innerValue.length)\n getDep(innerValue, 'iterate')()\n }\n return result\n }\n }\n if (Array.isArray(innerValue)) {\n return (val as Function).bind(innerValue)\n }\n return (innerValue as any)[prop].bind(innerValue)\n }\n\n // Track property access for reactivity (this creates/get a signal for the property)\n // Call the signal to track dependency\n const depSignal = getDep(innerValue, prop, val)\n depSignal() // Track dependency - this returns the signal's value\n\n // Create nested proxy for nested objects\n if (val !== null && typeof val === 'object') {\n return createNestedProxy(val)\n }\n // Return the actual property value from innerValue (not from signal)\n // The signal is only for tracking, we return the actual value\n return val\n }\n\n // Primitive property access (for primitives like numbers, strings)\n const val = (innerValue as any)[prop]\n return typeof val === 'function' ? val.bind(innerValue) : val\n },\n\n set(target, prop, newValue) {\n const meta = proxyMetadata.get(target as any)!\n if (meta.computeFn) {\n throw new Error('Cannot set computed signal')\n }\n\n const innerValue = meta._value\n if (innerValue !== null && typeof innerValue === 'object') {\n const success = Reflect.set(innerValue, prop, newValue)\n if (success) {\n getDep(innerValue, prop).set(newValue)\n }\n return success\n }\n return false\n },\n\n has(target, prop) {\n if (prop === STATE_SIGNAL) return true\n const meta = proxyMetadata.get(target as any)!\n const innerValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n if (innerValue === null) return false\n if (typeof innerValue === 'object') {\n return Reflect.has(innerValue, prop)\n }\n return false\n },\n\n ownKeys(target) {\n const meta = proxyMetadata.get(target as any)!\n const innerValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n\n if (innerValue === null || typeof innerValue !== 'object') {\n // For primitives, return empty array (no own keys)\n return []\n }\n\n if (Array.isArray(innerValue)) {\n getDep(innerValue, 'length')()\n getDep(innerValue, 'iterate')()\n } else {\n getDep(innerValue, 'iterate')()\n }\n\n // Return keys of innerValue (not target function)\n // This ensures object spread only includes innerValue properties\n // Note: Proxy spec requires ownKeys to match getOwnPropertyDescriptor\n // Since getOwnPropertyDescriptor returns descriptors for function properties (prototype, name, etc.),\n // we must include them in ownKeys to satisfy the Proxy spec\n // But we only include non-enumerable ones that getOwnPropertyDescriptor returns descriptors for\n const keys = Reflect.ownKeys(innerValue)\n const targetKeys = Reflect.ownKeys(target)\n // Add function properties that getOwnPropertyDescriptor returns descriptors for\n // These are non-enumerable so won't appear in object spread\n const functionProps = ['prototype', 'name', 'length']\n const result = [...keys]\n for (const prop of functionProps) {\n if (targetKeys.includes(prop) && !result.includes(prop)) {\n // Only add if getOwnPropertyDescriptor would return a descriptor for it\n const desc = Reflect.getOwnPropertyDescriptor(target, prop)\n if (desc) {\n result.push(prop)\n }\n }\n }\n return result\n },\n\n getPrototypeOf(target) {\n const meta = proxyMetadata.get(target as any)!\n const innerValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n\n if (innerValue !== null && typeof innerValue === 'object') {\n return Reflect.getPrototypeOf(innerValue)\n }\n\n // For primitives, return Object.prototype\n return Object.prototype\n },\n\n getOwnPropertyDescriptor(target, prop) {\n if (prop === STATE_SIGNAL) {\n return { configurable: true, enumerable: false, value: target }\n }\n\n const meta = proxyMetadata.get(target as any)!\n const innerValue = meta.computeFn ? getComputedValue(meta, target as any) : meta._value\n\n // Hide function-specific properties (prototype, name, etc.) from target function\n // Only expose properties from innerValue\n // This is critical: target is a function, but we want to expose innerValue's properties\n // Note: 'length' is NOT a function property - it's an array property, so we handle it separately\n if (prop === 'prototype' || prop === 'name' || prop === 'caller' || prop === 'arguments') {\n // For 'prototype', we must return a descriptor because target is a function\n // Return the actual function's prototype descriptor exactly as it is\n // IMPORTANT: We must preserve ALL descriptor properties exactly to match target\n if (prop === 'prototype') {\n const targetDesc = Reflect.getOwnPropertyDescriptor(target, prop)\n if (targetDesc) {\n // Return the descriptor exactly as it is - don't modify any properties\n return targetDesc\n }\n // If no descriptor exists, return undefined (not a descriptor)\n return undefined\n }\n // For other function properties (name, caller, arguments), check innerValue first\n // If innerValue has this property, return its descriptor (not the function's)\n if (innerValue !== null && typeof innerValue === 'object') {\n const innerDesc = Reflect.getOwnPropertyDescriptor(innerValue, prop)\n if (innerDesc) {\n // innerValue has this property, return its descriptor\n return {\n ...innerDesc,\n configurable: true,\n enumerable: true\n }\n }\n }\n // Only return descriptor if innerValue itself is a function (not the target function)\n if (typeof innerValue === 'function') {\n const desc = Reflect.getOwnPropertyDescriptor(innerValue, prop)\n if (desc) {\n return {\n ...desc,\n configurable: true,\n enumerable: true\n }\n }\n }\n // For other function properties, return undefined to hide function properties\n return undefined\n }\n\n if (innerValue === null || typeof innerValue !== 'object') {\n // For primitives, return undefined (no own properties)\n return undefined\n }\n\n // Return descriptor from innerValue (not from target function)\n // This ensures object spread works correctly\n const desc = Reflect.getOwnPropertyDescriptor(innerValue, prop)\n if (desc) {\n // Make sure descriptor is configurable and enumerable for spread syntax\n return {\n ...desc,\n configurable: true,\n enumerable: true\n }\n }\n\n // For properties that don't exist on innerValue, return undefined\n return undefined\n }\n}\n\nconst nestedHandlers: ProxyHandler<object> = {\n get(target, prop, receiver) {\n if (prop === STATE_SIGNAL) return target\n const val = Reflect.get(target, prop, receiver)\n getDep(target, prop, val)()\n if (val !== null && typeof val === 'object') {\n return createNestedProxy(val)\n }\n return val\n },\n set(target, prop, newValue, receiver) {\n const success = Reflect.set(target, prop, newValue, receiver)\n if (success) {\n getDep(target, prop).set(newValue)\n }\n return success\n },\n has(target, prop) {\n if (prop === STATE_SIGNAL) return true\n return Reflect.has(target, prop)\n }\n}\n\nconst nestedProxyCache = new WeakMap<object, any>()\n\nfunction createNestedProxy<T extends object>(target: T): T {\n let proxy = nestedProxyCache.get(target)\n if (!proxy) {\n proxy = new Proxy(target, nestedHandlers)\n nestedProxyCache.set(target, proxy)\n }\n return proxy\n}\n\n// Cache for Reactive Proxies (only for objects, primitives create new proxy each time)\nconst reactiveProxyCache = new WeakMap<object, any>()\n\nexport function createSignalProxy<T>(initialValue: T, key?: string): import('./state').StateValue<T> {\n // For objects, use cache. For primitives, always create new proxy\n if (typeof initialValue === 'object' && initialValue !== null) {\n let proxy = reactiveProxyCache.get(initialValue)\n if (proxy) return proxy as unknown as import('./state').StateValue<T>\n proxy = createReactiveProxy(initialValue, undefined, key)\n reactiveProxyCache.set(initialValue, proxy)\n return proxy as unknown as import('./state').StateValue<T>\n }\n\n // Primitives: always create new proxy (no caching)\n return createReactiveProxy(initialValue, undefined, key) as unknown as import('./state').StateValue<T>\n}\n\nexport function createComputedProxy<T>(computeFn: () => T, key?: string): import('./state').StateValue<T> {\n const proxy = createReactiveProxy(undefined as T, computeFn, key)\n return proxy as unknown as import('./state').StateValue<T>\n}\n\n// Helper to get underlying proxy from StateValue\nexport function getProxyFromStateValue(stateValue: unknown): any {\n if (typeof stateValue === 'object' || typeof stateValue === 'function') {\n if (stateValue !== null && STATE_SIGNAL in stateValue) {\n return (stateValue as any)[STATE_SIGNAL]\n }\n }\n return null\n}\n","/**\n * Component Hook System\n * \n * Manages component instances and hook state for state() API\n */\n\nexport interface ComponentInstance {\n id: symbol\n hookIndex: number\n hooks: unknown[]\n}\n\nlet currentComponent: ComponentInstance | null = null\n\nexport function setCurrentComponent(instance: ComponentInstance | null): void {\n currentComponent = instance\n}\n\nexport function getCurrentComponent(): ComponentInstance | null {\n return currentComponent\n}\n\nexport function createComponentInstance(): ComponentInstance {\n return {\n id: Symbol('component'),\n hookIndex: 0,\n hooks: [],\n }\n}\n\nexport function resetHookIndex(instance: ComponentInstance): void {\n instance.hookIndex = 0\n}\n","/**\n * Main State API\n * \n * Unified state() function that handles all state patterns:\n * - Local state (like useState)\n * - Global state (like Recoil atoms)\n * - Async resources (like React Query)\n * - Computed values (like selectors)\n */\n\nimport { createResource } from './resource'\nimport { createSignalProxy, createComputedProxy, getProxyFromStateValue } from './proxy'\nimport { getCurrentComponent, setCurrentComponent } from './component'\nimport {\n globalStateRegistry,\n namespaceRegistry,\n stateMetadata,\n serializeKey,\n unregisterStateFromNamespace,\n updateStateMetadata,\n performAutoCleanup,\n getHasWarnedAboutSize,\n setHasWarnedAboutSize,\n getDevWarningThreshold,\n getAutoCleanupInterval,\n setAutoCleanupInterval,\n setDeleteStateCallback,\n autoCleanupConfig,\n type AutoCleanupConfig\n} from './registry'\n\n/** Symbol to identify StateProxy and access underlying signal */\nexport const STATE_SIGNAL = Symbol.for('flexium.stateSignal')\n\n/**\n * Main State API Types\n */\nexport type StateKey = string | readonly (string | number | boolean | null | undefined | object)[]\nexport type StateAction<T> = (newValue: T | ((prev: T) => T)) => void\nexport type StateValue<T> = T & (() => T) & { peek(): T }\nexport type AsyncStatus = 'idle' | 'loading' | 'success' | 'error'\nexport interface StateOptions<P = unknown> {\n key?: StateKey\n params?: P\n}\n\n/**\n * Check if a value is a state value (Proxy-based)\n */\nexport function isStateValue(value: unknown): value is StateValue<unknown> {\n // Hybrid proxies are functions\n return (typeof value === 'object' || typeof value === 'function') && value !== null && STATE_SIGNAL in value\n}\n\n/**\n * Check if a value is a signal (alias for isStateValue for compatibility)\n * @deprecated Use isStateValue instead\n */\nexport function isSignal(value: unknown): value is StateValue<unknown> {\n return isStateValue(value)\n}\n\n// Helper to get the underlying proxy from a StateValue\nexport function getStateSignal(stateValue: unknown): any {\n return getProxyFromStateValue(stateValue)\n}\n\nexport function equals<T>(stateValue: StateValue<T>, value: T): boolean {\n if (!isStateValue(stateValue)) return false\n return stateValue.peek() === value\n}\n\nexport function isTruthy<T>(stateValue: StateValue<T>): boolean {\n if (!isStateValue(stateValue)) return false\n return Boolean(stateValue.peek())\n}\n\nexport interface StateStats {\n total: number\n byNamespace: Record<string, number>\n topNamespaces: Array<{ namespace: string; count: number }>\n averageAccessCount: number\n}\n\nexport interface NamespaceStats {\n namespace: string\n count: number\n totalAccessCount: number\n averageAccessCount: number\n states: Array<{ key: string; accessCount: number; createdAt: number }>\n}\n\ninterface StateFunction {\n <T>(initialValue: T, options?: StateOptions): [StateValue<T>, StateAction<T>]\n <T, P>(computeFn: (params: P) => T, options: StateOptions<P> & { params: P }): [StateValue<T>]\n <T>(computeFn: () => T, options?: StateOptions): [StateValue<T>]\n <T, P>(fetcher: (params: P) => Promise<T>, options: StateOptions<P> & { params: P }): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n <T>(fetcher: () => Promise<T>, options?: StateOptions): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n\n delete: (key: StateKey) => boolean\n clear: () => void\n clearByPrefix: (prefix: StateKey) => number\n has: (key: StateKey) => boolean\n readonly size: number\n getStats: () => StateStats\n getNamespaceStats: (prefix: StateKey) => NamespaceStats\n enableAutoCleanup: (config?: Partial<AutoCleanupConfig>) => void\n disableAutoCleanup: () => void\n readonly isAutoCleanupEnabled: boolean\n}\n\nfunction stateImplementation<T, P = unknown>(\n initialValueOrFetcher: T | ((params?: P) => T) | ((params?: P) => Promise<T>),\n options?: StateOptions<P>\n): any {\n // Hook System\n const currentComponent = getCurrentComponent()\n if (currentComponent && !options?.key) {\n const comp = currentComponent\n const hookIndex = comp.hookIndex++\n if (hookIndex < comp.hooks.length) return comp.hooks[hookIndex]\n const saved = currentComponent\n setCurrentComponent(null)\n const res = state(initialValueOrFetcher as any, options as any)\n setCurrentComponent(saved)\n comp.hooks.push(res)\n return res\n }\n\n // Key Serializing\n const rawKey = options?.key\n const key = rawKey ? serializeKey(rawKey) : undefined\n const namespace = Array.isArray(rawKey) && rawKey.length > 0 ? String(rawKey[0]) : undefined\n const params = options?.params\n\n // Check Registry\n if (key && globalStateRegistry.has(key)) {\n const entry = globalStateRegistry.get(key)!\n updateStateMetadata(key, namespace, entry.proxy)\n\n const result = [entry.proxy]\n if (entry.setter) result.push(entry.setter)\n if (entry.refetch) result.push(entry.refetch)\n if (entry.status) result.push(entry.status)\n if (entry.error) result.push(entry.error)\n\n return result\n }\n\n // Logic - Create proxies directly\n let proxy: StateValue<T>\n let setter: StateAction<T> | undefined\n let refetch: (() => void) | undefined\n let statusProxy: StateValue<AsyncStatus> | undefined\n let errorProxy: StateValue<unknown> | undefined\n\n if (typeof initialValueOrFetcher === 'function') {\n const originalFn = initialValueOrFetcher as Function\n const fn = params !== undefined ? () => originalFn(params) : originalFn\n\n let testResult: any\n try { testResult = fn() } catch (e) { /* treat as computed */ }\n\n const isAsync = originalFn.constructor.name === 'AsyncFunction' || testResult instanceof Promise\n\n if (isAsync) {\n // Resource - TODO: createResource도 Proxy 기반으로 변경 필요\n const [res, actions] = createResource(fn as any, async (v) => v)\n refetch = actions.refetch\n\n // Create computed proxy for resource value\n proxy = createComputedProxy(() => res(), key) as any\n\n // Status Computed\n statusProxy = createComputedProxy(() => res.loading ? 'loading' : res.error ? 'error' : res.state === 'unresolved' ? 'idle' : 'success', key) as any\n\n // Error Computed\n errorProxy = createComputedProxy(() => res.error, key) as any\n } else {\n // Computed\n proxy = createComputedProxy(fn as any, key) as any\n }\n } else {\n // Signal - create proxy directly\n proxy = createSignalProxy(initialValueOrFetcher, key)\n setter = (newValue: any) => {\n const proxySignal = (proxy as any)[STATE_SIGNAL]\n if (typeof newValue === 'function') {\n proxySignal.set(newValue(proxySignal.peek()))\n } else {\n proxySignal.set(newValue)\n }\n }\n }\n\n const result: any[] = [proxy]\n if (setter) result.push(setter)\n if (refetch) {\n result.splice(1, 0, refetch) // [proxy, refetch, status, error]\n if (statusProxy) result.push(statusProxy)\n if (errorProxy) result.push(errorProxy)\n }\n\n // Register\n if (key) {\n globalStateRegistry.set(key, {\n proxy, setter, refetch, status: statusProxy, error: errorProxy,\n createdAt: Date.now(), lastAccessed: Date.now(), accessCount: 1, referenceCount: 1,\n key, namespace\n })\n\n updateStateMetadata(key, namespace, proxy)\n\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (isDev && !getHasWarnedAboutSize() && globalStateRegistry.size >= getDevWarningThreshold()) {\n setHasWarnedAboutSize(true)\n console.warn(`[Flexium] Registry size warning: ${globalStateRegistry.size}`)\n }\n }\n\n return result\n}\n\nconst state = stateImplementation as StateFunction\n\n// Static Methods\nstate.delete = function (key: StateKey): boolean {\n const sKey = serializeKey(key)\n const meta = stateMetadata.get(sKey)\n if (meta?.namespace) unregisterStateFromNamespace(sKey, meta.namespace)\n stateMetadata.delete(sKey)\n return globalStateRegistry.delete(sKey)\n}\n\nstate.clear = function (): void {\n globalStateRegistry.clear()\n namespaceRegistry.clear()\n stateMetadata.clear()\n setHasWarnedAboutSize(false)\n}\n\nstate.has = function (key: StateKey): boolean {\n return globalStateRegistry.has(serializeKey(key))\n}\n\nstate.clearByPrefix = function (prefix: StateKey): number {\n const prefixStr = serializeKey(prefix)\n let cleared = 0\n const keysToDelete: string[] = []\n\n for (const [key] of stateMetadata.entries()) {\n if (key === prefixStr) { keysToDelete.push(key); continue }\n if (prefixStr.endsWith(']')) {\n const raw = prefixStr.slice(0, -1)\n if (key.startsWith(raw) && key.length > raw.length && key[raw.length] === ',') keysToDelete.push(key)\n } else {\n if (key.startsWith(prefixStr)) keysToDelete.push(key)\n }\n }\n\n for (const k of keysToDelete) {\n if (state.delete(k)) cleared++\n }\n return cleared\n}\n\nstate.getStats = function (): StateStats {\n const byNamespace: Record<string, number> = {}\n for (const [ns, keys] of namespaceRegistry.entries()) byNamespace[ns] = keys.size\n\n let totalAccess = 0\n for (const m of stateMetadata.values()) totalAccess += m.accessCount\n\n return {\n total: globalStateRegistry.size,\n byNamespace,\n topNamespaces: Object.entries(byNamespace).map(([n, c]) => ({ namespace: n, count: c })).sort((a, b) => b.count - a.count).slice(0, 10),\n averageAccessCount: stateMetadata.size ? totalAccess / stateMetadata.size : 0\n }\n}\n\nstate.getNamespaceStats = function (prefix: StateKey): NamespaceStats {\n const pStr = serializeKey(prefix)\n const ns = Array.isArray(prefix) && prefix.length > 0 ? String(prefix[0]) : pStr\n const states: any[] = []\n let totalAccess = 0\n\n for (const [key, m] of stateMetadata.entries()) {\n let matched = false\n\n if (key === pStr) {\n matched = true\n } else if (pStr.endsWith(']')) {\n const raw = pStr.slice(0, -1)\n if (key.startsWith(raw) && key.length > raw.length && key[raw.length] === ',') {\n matched = true\n }\n } else {\n if (key.startsWith(pStr)) matched = true\n }\n\n if (matched) {\n states.push({ key, accessCount: m.accessCount, createdAt: m.createdAt })\n totalAccess += m.accessCount\n }\n }\n return {\n namespace: ns, count: states.length, totalAccessCount: totalAccess,\n averageAccessCount: states.length ? totalAccess / states.length : 0,\n states\n }\n}\n\nObject.defineProperty(state, 'size', { get: () => globalStateRegistry.size, enumerable: true })\nstate.enableAutoCleanup = (c) => {\n Object.assign(autoCleanupConfig, c, { enabled: true })\n const interval = getAutoCleanupInterval()\n if (interval) clearInterval(interval)\n const newInterval = setInterval(performAutoCleanup, autoCleanupConfig.checkInterval)\n setAutoCleanupInterval(newInterval)\n}\nstate.disableAutoCleanup = () => {\n autoCleanupConfig.enabled = false\n const interval = getAutoCleanupInterval()\n if (interval) clearInterval(interval)\n setAutoCleanupInterval(null)\n}\nObject.defineProperty(state, 'isAutoCleanupEnabled', { get: () => autoCleanupConfig.enabled, enumerable: true })\n\n// Set delete callback to avoid circular dependency\nsetDeleteStateCallback((key: string) => state.delete(key))\n\nexport { state }\n\nexport interface RefObject<T> { current: T | null }\nexport function ref<T>(initial: T | null): RefObject<T> { return { current: initial } }\n"]}
|
package/dist/chunk-BYHIHYRR.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-WVEJT7HD.mjs';var C={},G=["display","flex","flexGrow","flexShrink","flexBasis","flexDirection","flexWrap","backgroundColor","background","borderColor","borderStyle","border","opacity","overflow","boxShadow","position","zIndex","color","fontWeight","fontFamily","fontStyle","textAlign","textTransform","textDecoration","whiteSpace","textOverflow","wordBreak","verticalAlign","cursor","visibility","boxSizing","pointerEvents"];G.forEach(e=>C[e]=n=>n);var W=["gap","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","width","height","minWidth","maxWidth","minHeight","maxHeight","borderRadius","borderWidth","top","right","bottom","left","fontSize","lineHeight","letterSpacing"];W.forEach(e=>C[e]=V);C.justifyContent=e=>k(e);C.alignItems=e=>P(e);C.alignSelf=e=>P(e);function c(e){let n={};for(let o in e){let i=C[o];if(i){let a=t(e[o]);a!==void 0&&(n[o]=i(a));}}return n}function y(e,n){return n?{...e,...n}:e}function t(e){if(e!==void 0)return typeof e=="object"&&e!==null&&"base"in e?e.base:e}function V(e){if(e!==void 0)return typeof e=="number"?`${e}px`:e}function k(e){return {start:"flex-start",center:"center",end:"flex-end",between:"space-between",around:"space-around",evenly:"space-evenly"}[e]||e}function P(e){return {start:"flex-start",center:"center",end:"flex-end",stretch:"stretch",baseline:"baseline"}[e]||e}function j(e){let{children:n,align:o,justify:i,wrap:a$1,reverse:b=false,as:d="div",class:v,style:R,id:l,role:s,"aria-label":p,"aria-labelledby":x,"aria-describedby":m,onPress:r,onMouseEnter:u,onMouseLeave:S,...w}=e,h=c(w),f={display:"flex",flexDirection:b?"row-reverse":"row"},B=t(o);B&&(f.alignItems=P(B));let T=t(i);T&&(f.justifyContent=k(T)),t(a$1)&&(f.flexWrap="wrap");let A=y({...f,...h},R);return a(d,{style:A,class:v,id:l,role:s,"aria-label":p,"aria-labelledby":x,"aria-describedby":m,onclick:r,onMouseEnter:u,onMouseLeave:S},n)}function N(e){let{children:n,align:o,justify:i,wrap:a$1,reverse:b=false,as:d="div",class:v,style:R,id:l,role:s,"aria-label":p,"aria-labelledby":x,"aria-describedby":m,onPress:r,onMouseEnter:u,onMouseLeave:S,...w}=e,h=c(w),f={display:"flex",flexDirection:b?"column-reverse":"column"},B=t(o);B&&(f.alignItems=P(B));let T=t(i);T&&(f.justifyContent=k(T)),t(a$1)&&(f.flexWrap="wrap");let A=y({...f,...h},R);return a(d,{style:A,class:v,id:l,role:s,"aria-label":p,"aria-labelledby":x,"aria-describedby":m,onclick:r,onMouseEnter:u,onMouseLeave:S},n)}function D(e){let{size:n,width:o,height:i,flex:a$1,as:b="div",class:d,style:v,...R}=e,l=c(R),s={display:"flex"},p=t(n);if(p!==void 0)s.flexBasis=V(p),s.flexGrow=0,s.flexShrink=0;else {let m=t(o),r=t(i);m!==void 0||r!==void 0?(m!==void 0&&(s.width=V(m)),r!==void 0&&(s.height=V(r)),s.flexGrow=0,s.flexShrink=0):s.flexGrow=t(a$1)??1;}let x=y({...s,...l},v);return a(b,{style:x,class:d,...e},[])}function I(e){return typeof e=="number"?`repeat(${e}, 1fr)`:e}function J(e){let{children:n,cols:o,rows:i,columnGap:a$1,rowGap:b,flow:d,autoColumns:v,autoRows:R,as:l="div",class:s,style:p,...x}=e,m=c(x),r={display:"grid"},u=t(o);u!==void 0&&(r.gridTemplateColumns=I(u));let S=t(i);S!==void 0&&(r.gridTemplateRows=I(S));let w=t(a$1);w!==void 0&&(r.columnGap=V(w));let h=t(b);h!==void 0&&(r.rowGap=V(h)),d&&(r.gridAutoFlow=d);let f=y({...r,...m},p);return a(l,{style:f,class:s,...e},n)}function z(e){let{children:n,align:o,justify:i,as:a$1="div",class:b,style:d,...v}=e,R=c(v),l={display:"grid",gridTemplateColumns:"1fr",gridTemplateRows:"1fr"},s=t(o);s&&(l.alignItems=s);let p=t(i);p&&(l.justifyItems=p);let x=y({...l,...R},d),r=(Array.isArray(n)?n:[n]).map(u=>u);return a(a$1,{style:x,class:b,...e},r)}export{c as a,y as b,t as c,V as d,k as e,P as f,j as g,N as h,D as i,J as j,z as k};//# sourceMappingURL=chunk-BYHIHYRR.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-BYHIHYRR.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/primitives/layout/types.ts","../src/primitives/layout/Row.ts","../src/primitives/layout/Column.ts","../src/primitives/layout/Spacer.ts","../src/primitives/layout/Grid.ts","../src/primitives/layout/Stack.ts"],"names":["styleConfig","standardProps","prop","v","pixelProps","toCSSValue","mapJustifyContent","mapAlignItems","stylePropsToCSS","props","styles","key","transform","value","getBaseValue","mergeStyles","baseStyles","userStyles","responsiveValue","Row","children","align","justify","wrap","reverse","as","className","userStyle","id","role","ariaLabel","ariaLabelledBy","ariaDescribedBy","onPress","onMouseEnter","onMouseLeave","styleProps","generatedStyles","flexStyles","alignValue","justifyValue","finalStyles","f","Column","Spacer","size","width","height","flex","sizeVal","w","h","toGridTemplate","Grid","cols","rows","columnGap","rowGap","flow","autoColumns","autoRows","gridStyles","colsValue","rowsValue","colGap","rGap","Stack","stackStyles","stackedChildren","child"],"mappings":"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","file":"chunk-BYHIHYRR.mjs","sourcesContent":["/**\n * Layout Primitives Types\n */\n\n/**\n * Responsive value type supporting base and breakpoint-specific values\n */\nexport type ResponsiveValue<T> =\n | T\n | {\n base?: T\n sm?: T\n md?: T\n lg?: T\n xl?: T\n }\n\n/**\n * CSS Properties type\n */\nexport interface CSSProperties {\n [key: string]: string | number | undefined\n}\n\n// Layout Types\nexport type FlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse'\nexport type JustifyContent =\n | 'start'\n | 'center'\n | 'end'\n | 'between'\n | 'around'\n | 'evenly'\n | 'flex-start'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\nexport type AlignItems =\n | 'start'\n | 'center'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'flex-start'\n | 'flex-end'\nexport type Overflow = 'visible' | 'hidden' | 'scroll' | 'auto'\nexport type Position = 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'\nexport type Display =\n | 'flex'\n | 'none'\n | 'block'\n | 'inline-block'\n | 'inline'\n | 'grid'\n | 'initial'\nexport type FlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse'\n\n// Text Types\nexport type TextAlign = 'left' | 'center' | 'right' | 'justify'\nexport type FontStyle = 'normal' | 'italic' | 'oblique'\nexport type FontWeight =\n | 'normal'\n | 'bold'\n | 'bolder'\n | 'lighter'\n | number\n | string\nexport type TextTransform = 'none' | 'capitalize' | 'uppercase' | 'lowercase'\nexport type TextDecoration =\n | 'none'\n | 'underline'\n | 'overline'\n | 'line-through'\n | 'blink'\nexport type WhiteSpace = 'normal' | 'nowrap' | 'pre' | 'pre-line' | 'pre-wrap'\nexport type TextOverflow = 'clip' | 'ellipsis'\nexport type WordBreak = 'normal' | 'break-all' | 'keep-all' | 'break-word'\nexport type VerticalAlign =\n | 'baseline'\n | 'sub'\n | 'super'\n | 'top'\n | 'text-top'\n | 'middle'\n | 'bottom'\n | 'text-bottom'\n | string\n | number\n\n// Other Types\nexport type Cursor =\n | 'auto'\n | 'default'\n | 'none'\n | 'context-menu'\n | 'help'\n | 'pointer'\n | 'progress'\n | 'wait'\n | 'cell'\n | 'crosshair'\n | 'text'\n | 'vertical-text'\n | 'alias'\n | 'copy'\n | 'move'\n | 'no-drop'\n | 'not-allowed'\n | 'grab'\n | 'grabbing'\n | string\nexport type Visibility = 'visible' | 'hidden' | 'collapse'\nexport type BoxSizing = 'content-box' | 'border-box'\nexport type PointerEvents =\n | 'auto'\n | 'none'\n | 'visiblePainted'\n | 'visibleFill'\n | 'visibleStroke'\n | 'visible'\n | 'painted'\n | 'fill'\n | 'stroke'\n | 'all'\n | 'inherit'\n\n// Base style props that can be applied to any component\nexport interface BaseStyleProps {\n // Layout\n display?: ResponsiveValue<Display>\n flex?: ResponsiveValue<number | string>\n flexGrow?: ResponsiveValue<number>\n flexShrink?: ResponsiveValue<number>\n flexBasis?: ResponsiveValue<string>\n flexDirection?: ResponsiveValue<FlexDirection>\n justifyContent?: ResponsiveValue<JustifyContent>\n alignItems?: ResponsiveValue<AlignItems>\n alignSelf?: ResponsiveValue<AlignItems>\n gap?: ResponsiveValue<number | string>\n flexWrap?: ResponsiveValue<FlexWrap>\n\n // Spacing\n padding?: ResponsiveValue<number | string>\n paddingTop?: ResponsiveValue<number | string>\n paddingRight?: ResponsiveValue<number | string>\n paddingBottom?: ResponsiveValue<number | string>\n paddingLeft?: ResponsiveValue<number | string>\n margin?: ResponsiveValue<number | string>\n marginTop?: ResponsiveValue<number | string>\n marginRight?: ResponsiveValue<number | string>\n marginBottom?: ResponsiveValue<number | string>\n marginLeft?: ResponsiveValue<number | string>\n\n // Sizing\n width?: ResponsiveValue<number | string>\n height?: ResponsiveValue<number | string>\n minWidth?: ResponsiveValue<number | string>\n maxWidth?: ResponsiveValue<number | string>\n minHeight?: ResponsiveValue<number | string>\n maxHeight?: ResponsiveValue<number | string>\n\n // Visual\n backgroundColor?: ResponsiveValue<string>\n background?: ResponsiveValue<string>\n borderRadius?: ResponsiveValue<number | string>\n borderWidth?: ResponsiveValue<number | string>\n borderColor?: ResponsiveValue<string>\n borderStyle?: ResponsiveValue<string>\n border?: ResponsiveValue<string>\n opacity?: ResponsiveValue<number>\n overflow?: ResponsiveValue<Overflow>\n boxShadow?: ResponsiveValue<string>\n\n // Positioning\n position?: ResponsiveValue<Position>\n top?: ResponsiveValue<number | string>\n right?: ResponsiveValue<number | string>\n bottom?: ResponsiveValue<number | string>\n left?: ResponsiveValue<number | string>\n zIndex?: ResponsiveValue<number>\n\n // Text\n color?: ResponsiveValue<string>\n fontSize?: ResponsiveValue<number | string>\n fontWeight?: ResponsiveValue<FontWeight>\n fontFamily?: ResponsiveValue<string>\n fontStyle?: ResponsiveValue<FontStyle>\n textAlign?: ResponsiveValue<TextAlign>\n lineHeight?: ResponsiveValue<number | string>\n letterSpacing?: ResponsiveValue<number | string>\n textTransform?: ResponsiveValue<TextTransform>\n textDecoration?: ResponsiveValue<TextDecoration>\n whiteSpace?: ResponsiveValue<WhiteSpace>\n textOverflow?: ResponsiveValue<TextOverflow>\n wordBreak?: ResponsiveValue<WordBreak>\n verticalAlign?: ResponsiveValue<VerticalAlign>\n\n // Other\n cursor?: ResponsiveValue<Cursor>\n visibility?: ResponsiveValue<Visibility>\n boxSizing?: ResponsiveValue<BoxSizing>\n pointerEvents?: ResponsiveValue<PointerEvents>\n}\n\n// Base props for all components\nexport interface BaseComponentProps extends BaseStyleProps {\n id?: string\n /** CSS class name (unified API) */\n class?: string\n style?: CSSProperties\n 'aria-label'?: string\n 'aria-labelledby'?: string\n 'aria-describedby'?: string\n role?: string\n tabIndex?: number\n /** Press/click handler (unified API for web and mobile) */\n onPress?: (event: MouseEvent) => void\n onMouseEnter?: (event: MouseEvent) => void\n onMouseLeave?: (event: MouseEvent) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children?: any\n}\n\n// Configuration for style properties\nconst styleConfig: Record<string, (val: any) => any> = {}\n\n// 1. Standard properties (direct mapping)\nconst standardProps = [\n 'display',\n 'flex',\n 'flexGrow',\n 'flexShrink',\n 'flexBasis',\n 'flexDirection',\n 'flexWrap',\n 'backgroundColor',\n 'background',\n 'borderColor',\n 'borderStyle',\n 'border',\n 'opacity',\n 'overflow',\n 'boxShadow',\n 'position',\n 'zIndex',\n 'color',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'textAlign',\n 'textTransform',\n 'textDecoration',\n 'whiteSpace',\n 'textOverflow',\n 'wordBreak',\n 'verticalAlign',\n 'cursor',\n 'visibility',\n 'boxSizing',\n 'pointerEvents',\n]\nstandardProps.forEach((prop) => (styleConfig[prop] = (v) => v))\n\n// 2. Pixel properties (convert number to px)\nconst pixelProps = [\n 'gap',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'width',\n 'height',\n 'minWidth',\n 'maxWidth',\n 'minHeight',\n 'maxHeight',\n 'borderRadius',\n 'borderWidth',\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'fontSize',\n 'lineHeight',\n 'letterSpacing',\n]\npixelProps.forEach((prop) => (styleConfig[prop] = toCSSValue))\n\n// 3. Special mappings\nstyleConfig.justifyContent = (v) => mapJustifyContent(v)\nstyleConfig.alignItems = (v) => mapAlignItems(v)\nstyleConfig.alignSelf = (v) => mapAlignItems(v)\n\n// Helper to convert style props to CSSProperties\nexport function stylePropsToCSS(props: BaseStyleProps): CSSProperties {\n const styles: CSSProperties = {}\n\n for (const key in props) {\n const transform = styleConfig[key]\n if (transform) {\n const value = getBaseValue(props[key as keyof BaseStyleProps])\n if (value !== undefined) {\n styles[key] = transform(value)\n }\n }\n }\n\n return styles\n}\n\n// Helper to merge styles (user-provided style takes precedence)\nexport function mergeStyles(\n baseStyles: CSSProperties,\n userStyles?: CSSProperties\n): CSSProperties {\n if (!userStyles) {\n return baseStyles\n }\n return { ...baseStyles, ...userStyles }\n}\n\n// Helper to get the base value from a responsive prop\nexport function getBaseValue<T>(\n responsiveValue: ResponsiveValue<T> | undefined\n): T | undefined {\n if (responsiveValue === undefined) return undefined\n if (\n typeof responsiveValue === 'object' &&\n responsiveValue !== null &&\n 'base' in responsiveValue\n ) {\n return (responsiveValue as { base?: T }).base\n }\n return responsiveValue as T\n}\n\n// Helper to convert number to px string if needed\nexport function toCSSValue(\n value: number | string | undefined\n): string | number | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'number') {\n return `${value}px`\n }\n return value\n}\n\n/** Map justify shorthand to CSS value */\nexport function mapJustifyContent(value: JustifyContent): string {\n const map: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n }\n return map[value] || value\n}\n\n/** Map align shorthand to CSS value */\nexport function mapAlignItems(value: AlignItems): string {\n const map: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n }\n return map[value] || value\n}\n","import { f } from '../../renderers/dom/f'\nimport { FNode } from '../../core/renderer'\nimport {\n BaseComponentProps,\n AlignItems,\n JustifyContent,\n ResponsiveValue,\n stylePropsToCSS,\n mergeStyles,\n getBaseValue,\n mapJustifyContent,\n mapAlignItems,\n} from './types'\n\n/**\n * Props for Row component - horizontal flex container\n */\nexport interface RowProps extends BaseComponentProps {\n /** Align items on cross axis (vertical) */\n align?: ResponsiveValue<AlignItems>\n /** Justify items on main axis (horizontal) */\n justify?: ResponsiveValue<JustifyContent>\n /** Enable wrapping of items */\n wrap?: ResponsiveValue<boolean>\n /** Reverse the direction */\n reverse?: boolean\n /** HTML element to render */\n as?: string\n}\n\n/**\n * Row - Horizontal flex container\n *\n * A primitive layout component for arranging children in a horizontal row\n * using flexbox. Supports alignment, justification, and responsive props.\n *\n * @example\n * ```tsx\n * <Row gap={16} align=\"center\" justify=\"between\">\n * <div>Left</div>\n * <div>Right</div>\n * </Row>\n * ```\n *\n * @example\n * ```tsx\n * // Responsive gap\n * <Row gap={{ base: 8, md: 16, lg: 24 }}>\n * <Button>One</Button>\n * <Button>Two</Button>\n * </Row>\n * ```\n */\nexport function Row(props: RowProps): FNode {\n const {\n children,\n align,\n justify,\n wrap,\n reverse = false,\n as = 'div',\n class: className,\n style: userStyle,\n // Base component props\n id,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n onPress,\n onMouseEnter,\n onMouseLeave,\n // Extract style props\n ...styleProps\n } = props\n\n // Generate styles from style props\n const generatedStyles = stylePropsToCSS(styleProps)\n\n // Build flex container styles\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const flexStyles: Record<string, any> = {\n display: 'flex',\n flexDirection: reverse ? 'row-reverse' : 'row',\n }\n\n // Handle alignment\n const alignValue = getBaseValue(align)\n if (alignValue) {\n flexStyles.alignItems = mapAlignItems(alignValue as AlignItems)\n }\n\n // Handle justification\n const justifyValue = getBaseValue(justify)\n if (justifyValue) {\n flexStyles.justifyContent = mapJustifyContent(\n justifyValue as JustifyContent\n )\n }\n\n // Handle wrap\n const wrapValue = getBaseValue(wrap)\n if (wrapValue) {\n flexStyles.flexWrap = 'wrap'\n }\n\n // Merge all styles\n const finalStyles = mergeStyles(\n { ...flexStyles, ...generatedStyles },\n userStyle\n )\n\n // Create element\n return f(\n as,\n {\n style: finalStyles,\n class: className,\n id,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n onclick: onPress,\n onMouseEnter,\n onMouseLeave,\n },\n children\n )\n}\n","import { f } from '../../renderers/dom/f'\nimport { FNode } from '../../core/renderer'\nimport {\n BaseComponentProps,\n AlignItems,\n JustifyContent,\n ResponsiveValue,\n stylePropsToCSS,\n mergeStyles,\n getBaseValue,\n mapJustifyContent,\n mapAlignItems,\n} from './types'\n\n/**\n * Props for Column component - vertical flex container\n */\nexport interface ColumnProps extends BaseComponentProps {\n /** Align items on cross axis (horizontal) */\n align?: ResponsiveValue<AlignItems>\n /** Justify items on main axis (vertical) */\n justify?: ResponsiveValue<JustifyContent>\n /** Enable wrapping of items */\n wrap?: ResponsiveValue<boolean>\n /** Reverse the direction */\n reverse?: boolean\n /** HTML element to render */\n as?: string\n}\n\n/**\n * Column - Vertical flex container\n *\n * A primitive layout component for arranging children in a vertical column\n * using flexbox. Supports alignment, justification, and responsive props.\n *\n * @example\n * ```tsx\n * <Column gap={8} padding={16}>\n * <div>Top</div>\n * <div>Bottom</div>\n * </Column>\n * ```\n *\n * @example\n * ```tsx\n * // Center content vertically and horizontally\n * <Column align=\"center\" justify=\"center\" height=\"100vh\">\n * <h1>Centered Content</h1>\n * </Column>\n * ```\n */\nexport function Column(props: ColumnProps): FNode {\n const {\n children,\n align,\n justify,\n wrap,\n reverse = false,\n as = 'div',\n class: className,\n style: userStyle,\n // Base component props\n id,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n onPress,\n onMouseEnter,\n onMouseLeave,\n // Extract style props\n ...styleProps\n } = props\n\n // Generate styles from style props\n const generatedStyles = stylePropsToCSS(styleProps)\n\n // Build flex container styles\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const flexStyles: Record<string, any> = {\n display: 'flex',\n flexDirection: reverse ? 'column-reverse' : 'column',\n }\n\n // Handle alignment\n const alignValue = getBaseValue(align)\n if (alignValue) {\n flexStyles.alignItems = mapAlignItems(alignValue as AlignItems)\n }\n\n // Handle justification\n const justifyValue = getBaseValue(justify)\n if (justifyValue) {\n flexStyles.justifyContent = mapJustifyContent(\n justifyValue as JustifyContent\n )\n }\n\n // Handle wrap\n const wrapValue = getBaseValue(wrap)\n if (wrapValue) {\n flexStyles.flexWrap = 'wrap'\n }\n\n // Merge all styles\n const finalStyles = mergeStyles(\n { ...flexStyles, ...generatedStyles },\n userStyle\n )\n\n // Create element\n return f(\n as,\n {\n style: finalStyles,\n class: className,\n id,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n onclick: onPress,\n onMouseEnter,\n onMouseLeave,\n },\n children\n )\n}\n","import { f } from '../../renderers/dom/f'\nimport { FNode } from '../../core/renderer'\nimport {\n BaseComponentProps,\n ResponsiveValue,\n stylePropsToCSS,\n mergeStyles,\n getBaseValue,\n toCSSValue,\n} from './types'\n\nexport interface SpacerProps extends BaseComponentProps {\n /** Size on main axis (width for Row, height for Column) */\n size?: ResponsiveValue<number | string>\n /** Explicit width */\n width?: ResponsiveValue<number | string>\n /** Explicit height */\n height?: ResponsiveValue<number | string>\n /** Flex grow factor (defaults to 1 if no size specified) */\n flex?: ResponsiveValue<number>\n /** HTML element to render */\n as?: string\n}\n\n/**\n * Spacer - Flexible spacing component\n *\n * Used to create space between elements or push elements apart.\n * By default, it grows to fill available space using flex: 1.\n * Can be used in both horizontal (Row) and vertical (Column) layouts.\n *\n * @example\n * ```tsx\n * <Row>\n * <Text>Left</Text>\n * <Spacer />\n * <Text>Right</Text>\n * </Row>\n * ```\n */\nexport function Spacer(props: SpacerProps): FNode {\n const {\n size,\n width,\n height,\n flex,\n as = 'div',\n class: className,\n style: userStyle,\n ...styleProps\n } = props\n\n const generatedStyles = stylePropsToCSS(styleProps)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const styles: Record<string, any> = {\n display: 'flex',\n }\n\n // If explicit size provided, use it\n const sizeVal = getBaseValue(size)\n if (sizeVal !== undefined) {\n styles.flexBasis = toCSSValue(sizeVal)\n styles.flexGrow = 0\n styles.flexShrink = 0\n } else {\n // Otherwise check width/height\n const w = getBaseValue(width)\n const h = getBaseValue(height)\n\n if (w !== undefined || h !== undefined) {\n if (w !== undefined) styles.width = toCSSValue(w)\n if (h !== undefined) styles.height = toCSSValue(h)\n styles.flexGrow = 0\n styles.flexShrink = 0\n } else {\n // If no size at all, act as flexible spacer\n styles.flexGrow = getBaseValue(flex) ?? 1\n }\n }\n\n const finalStyles = mergeStyles({ ...styles, ...generatedStyles }, userStyle)\n\n return f(as, { style: finalStyles, class: className, ...props }, [])\n}\n","import { f } from '../../renderers/dom/f'\nimport { FNode } from '../../core/renderer'\nimport {\n BaseComponentProps,\n ResponsiveValue,\n stylePropsToCSS,\n mergeStyles,\n getBaseValue,\n toCSSValue,\n} from './types'\n\nexport interface GridProps extends BaseComponentProps {\n /** Number of columns or column template */\n cols?: ResponsiveValue<number | string>\n /** Number of rows or row template */\n rows?: ResponsiveValue<number | string>\n /** Column gap */\n columnGap?: ResponsiveValue<number | string>\n /** Row gap */\n rowGap?: ResponsiveValue<number | string>\n /** Grid auto flow */\n flow?: 'row' | 'column' | 'dense' | 'row dense' | 'column dense'\n /** Auto columns size */\n autoColumns?: ResponsiveValue<string>\n /** Auto rows size */\n autoRows?: ResponsiveValue<string>\n as?: string\n}\n\nfunction toGridTemplate(value: number | string): string {\n if (typeof value === 'number') {\n return `repeat(${value}, 1fr)`\n }\n return value\n}\n\n/**\n * Grid - 2D layout container\n *\n * A primitive layout component based on CSS Grid.\n * Supports responsive columns, rows, gaps, and all standard grid properties.\n *\n * @example\n * ```tsx\n * // 3-column grid\n * <Grid cols={3} gap={16}>\n * <div />\n * <div />\n * <div />\n * </Grid>\n * ```\n */\nexport function Grid(props: GridProps): FNode {\n const {\n children,\n cols,\n rows,\n columnGap,\n rowGap,\n flow,\n autoColumns,\n autoRows,\n as = 'div',\n class: className,\n style: userStyle,\n ...styleProps\n } = props\n\n const generatedStyles = stylePropsToCSS(styleProps)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const gridStyles: Record<string, any> = {\n display: 'grid',\n }\n\n const colsValue = getBaseValue(cols)\n if (colsValue !== undefined) {\n gridStyles.gridTemplateColumns = toGridTemplate(colsValue)\n }\n\n const rowsValue = getBaseValue(rows)\n if (rowsValue !== undefined) {\n gridStyles.gridTemplateRows = toGridTemplate(rowsValue)\n }\n\n const colGap = getBaseValue(columnGap)\n if (colGap !== undefined) {\n gridStyles.columnGap = toCSSValue(colGap)\n }\n\n const rGap = getBaseValue(rowGap)\n if (rGap !== undefined) {\n gridStyles.rowGap = toCSSValue(rGap)\n }\n\n if (flow) {\n gridStyles.gridAutoFlow = flow\n }\n\n const finalStyles = mergeStyles(\n { ...gridStyles, ...generatedStyles },\n userStyle\n )\n\n return f(as, { style: finalStyles, class: className, ...props }, children)\n}\n","import { f } from '../../renderers/dom/f'\nimport { FNode } from '../../core/renderer'\nimport {\n BaseComponentProps,\n AlignItems,\n JustifyContent,\n ResponsiveValue,\n stylePropsToCSS,\n mergeStyles,\n getBaseValue,\n} from './types'\n\nexport interface StackProps extends BaseComponentProps {\n align?: ResponsiveValue<AlignItems>\n justify?: ResponsiveValue<JustifyContent>\n as?: string\n}\n\n/**\n * Stack - Layered positioning container\n *\n * A primitive layout component for layering children on top of each other.\n * Uses CSS Grid for perfect overlap.\n *\n * @example\n * ```tsx\n * <Stack>\n * <Image src=\"bg.jpg\" />\n * <Text>Overlay</Text>\n * </Stack>\n * ```\n */\nexport function Stack(props: StackProps): FNode {\n const {\n children,\n align,\n justify,\n as = 'div',\n class: className,\n style: userStyle,\n ...styleProps\n } = props\n\n const generatedStyles = stylePropsToCSS(styleProps)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stackStyles: Record<string, any> = {\n display: 'grid',\n gridTemplateColumns: '1fr',\n gridTemplateRows: '1fr',\n }\n\n const alignValue = getBaseValue(align)\n if (alignValue) {\n // Map align to alignItems/justifyItems depending on context, but for stack usually alignItems\n stackStyles.alignItems = alignValue\n }\n\n const justifyValue = getBaseValue(justify)\n if (justifyValue) {\n stackStyles.justifyItems = justifyValue\n }\n\n const finalStyles = mergeStyles(\n { ...stackStyles, ...generatedStyles },\n userStyle\n )\n\n // Ensure all children occupy the same cell\n const kids = Array.isArray(children) ? children : [children]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stackedChildren = kids.map((child: any) => {\n if (!child || typeof child !== 'object') return child\n // In a real implementation we would clone the FNode and merge styles\n // For now, we assume the renderer handles grid overlap or we rely on the container\n // Actually, to make Stack work, children need grid-area: 1/1/2/2 or similar.\n // Since we can't easily clone FNodes here without helper, we might rely on CSS selector\n // or wrapping. Let's wrap in a div if we must, or assume direct children support style injection.\n // For this MVP restoration, we'll just return children. The grid container forces overlap\n // if we set grid-template-areas or similar, but simplest is grid-column: 1 / -1, grid-row: 1 / -1 on children.\n\n // A simple trick for Stack without cloning:\n // Just render them. Users might need to position them.\n // BUT the previous implementation did something.\n // Let's assume standard CSS Grid stacking: all items in row 1 col 1.\n return child\n })\n\n // To enforce stacking, we'd ideally inject style to children.\n // For now, let's just render the container.\n\n return f(as, { style: finalStyles, class: className, ...props }, stackedChildren)\n}\n"]}
|
package/dist/chunk-DZ7L3SHV.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkGYDP6MFV_js=require('./chunk-GYDP6MFV.js');function u(n){let e=Symbol("context"),t=r=>r.children;return t._contextId=e,{id:e,Provider:t,defaultValue:n}}function c(n){let e=chunkGYDP6MFV_js.g();if(e&&e.context){let t=e.context[n.id];if(t!==void 0)return t}return n.defaultValue}function l(n,e){let t=chunkGYDP6MFV_js.g();t&&(t.context||(t.context={}),t.context[n]=e);}exports.a=u;exports.b=c;exports.c=l;//# sourceMappingURL=chunk-DZ7L3SHV.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-DZ7L3SHV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/context.ts"],"names":["createContext","defaultValue","id","Provider","props","context","ctx","owner","getOwner","value","pushProvider"],"mappings":"iEASO,SAASA,CAAAA,CAAiBC,CAAAA,CAA6B,CAC5D,IAAMC,EAAK,MAAA,CAAO,SAAS,CAAA,CAErBC,CAAAA,CAAYC,GACTA,CAAAA,CAAM,QAAA,CAEX,OAACD,CAAAA,CAA+C,WAAaD,CAAAA,CAE1D,CACL,EAAA,CAAAA,CAAAA,CACA,SAAAC,CAAAA,CACA,YAAA,CAAAF,CACF,CACF,CAUO,SAASI,CAAAA,CAAWC,CAAAA,CAAoB,CAC7C,IAAMC,CAAAA,CAAQC,kBAAAA,EAAS,CACvB,GAAID,GAASA,CAAAA,CAAM,OAAA,CAAS,CAC1B,IAAME,EAAQF,CAAAA,CAAM,OAAA,CAAQD,CAAAA,CAAI,EAAE,EAClC,GAAIG,CAAAA,GAAU,MAAA,CACZ,OAAOA,CAEX,CACA,OAAOH,CAAAA,CAAI,YACb,CAQO,SAASI,CAAAA,CAAaR,CAAAA,CAAYO,CAAAA,CAAsB,CAC7D,IAAMF,CAAAA,CAAQC,kBAAAA,EAAS,CACnBD,IACGA,CAAAA,CAAM,OAAA,GACTA,CAAAA,CAAM,OAAA,CAAU,EAAC,CAAA,CAEnBA,CAAAA,CAAM,OAAA,CAAQL,CAAE,EAAIO,CAAAA,EAExB","file":"chunk-DZ7L3SHV.js","sourcesContent":["import type { FNodeChild } from './renderer'\nimport { getOwner, setOwner } from './owner'\n\nexport interface Context<T> {\n id: symbol\n Provider: (props: { value: T; children: FNodeChild }) => FNodeChild\n defaultValue: T\n}\n\nexport function createContext<T>(defaultValue: T): Context<T> {\n const id = Symbol('context')\n\n const Provider = (props: { value: T; children: FNodeChild }): FNodeChild => {\n return props.children\n }\n ; (Provider as unknown as { _contextId: symbol })._contextId = id\n\n return {\n id,\n Provider,\n defaultValue,\n }\n}\n\n/**\n * Get the current value from a context.\n *\n * @example\n * ```tsx\n * const theme = context(ThemeContext)\n * ```\n */\nexport function context<T>(ctx: Context<T>): T {\n const owner = getOwner()\n if (owner && owner.context) {\n const value = owner.context[ctx.id]\n if (value !== undefined) {\n return value as T\n }\n }\n return ctx.defaultValue\n}\n\n/**\n * Push a value onto the context stack for a given context ID.\n * @internal Used by the renderer during component mounting.\n * @param id - The context symbol identifier\n * @param value - The value to push onto the context stack\n */\nexport function pushProvider(id: symbol, value: unknown): void {\n const owner = getOwner()\n if (owner) {\n if (!owner.context) {\n owner.context = {}\n }\n owner.context[id] = value\n }\n}\n\n/**\n * Pop a value from the context stack for a given context ID.\n * @internal No-op in Owner-based context system (handled by scope)\n */\nexport function popProvider(_id: symbol): void {\n // No-op: Context scoping is handled by the Owner prototype chain\n}\n\n/**\n * Capture the current context state\n * Returns an opaque handle to the current owner scope.\n */\nexport function captureContext(): unknown {\n return getOwner()\n}\n\n/**\n * Run a function with the captured context restored\n */\nexport function runWithContext<T>(\n snapshot: unknown,\n fn: () => T\n): T {\n const prev = getOwner()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setOwner(snapshot as any)\n try {\n return fn()\n } finally {\n setOwner(prev)\n }\n}\n"]}
|
package/dist/chunk-ECYYIQEX.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var n={EFFECT_EXECUTION_FAILED:"FLX101",CLEANUP_OUTSIDE_EFFECT:"FLX102",SIGNAL_UPDATE_DURING_RENDER:"FLX103",COMPUTED_EXECUTION_FAILED:"FLX104",CONTEXT_MISSING_PROVIDER:"FLX201",ROUTER_OUTSIDE_PROVIDER:"FLX202",FORM_VALIDATION_FAILED:"FLX301",FORM_SUBMISSION_FAILED:"FLX302",ASYNC_VALIDATION_FAILED:"FLX303",BUTTON_HANDLER_FAILED:"FLX401",BUTTON_MISSING_ARIA_LABEL:"FLX402",COMPONENT_RENDER_FAILED:"FLX403",HYDRATION_MISMATCH:"FLX501",HYDRATION_TEXT_MISMATCH:"FLX502",HYDRATION_TAG_MISMATCH:"FLX503",HYDRATION_ATTRIBUTE_MISMATCH:"FLX504",DEVTOOLS_LISTENER_ERROR:"FLX601",UNCAUGHT_RENDER_ERROR:"FLX701",ERROR_BOUNDARY_CALLBACK_FAILED:"FLX702",DOM_CLEANUP_FAILED:"FLX703",EVENT_HANDLER_FAILED:"FLX801",KEYBOARD_HANDLER_FAILED:"FLX802",RESOURCE_FETCH_FAILED:"FLX901",RESOURCE_TIMEOUT:"FLX902"};function g(e){return typeof process<"u"&&process.env?.NODE_ENV!=="production"?{[n.EFFECT_EXECUTION_FAILED]:{message:"Effect execution failed",suggestion:"Check the effect callback for runtime errors. Consider wrapping async operations in try-catch."},[n.CLEANUP_OUTSIDE_EFFECT]:{message:"onCleanup must be called from within an effect",suggestion:"Move the onCleanup() call inside an effect() callback."},[n.SIGNAL_UPDATE_DURING_RENDER]:{message:"Signal was updated during render",suggestion:"Avoid updating signals inside render functions. Use effect() for side effects."},[n.CONTEXT_MISSING_PROVIDER]:{message:"Context used outside of Provider",suggestion:"Wrap your component tree with the appropriate Context.Provider."},[n.ROUTER_OUTSIDE_PROVIDER]:{message:"router() must be used within a <Router> component",suggestion:"Ensure your component is a descendant of <Router>."},[n.FORM_VALIDATION_FAILED]:{message:"Form field validation failed",suggestion:"Check the validation rules for the field and the input value."},[n.FORM_SUBMISSION_FAILED]:{message:"Form submission failed",suggestion:"Check the onSubmit handler and network connectivity."},[n.BUTTON_HANDLER_FAILED]:{message:"Button press handler failed",suggestion:"Check the onPress/onClick callback for errors."},[n.BUTTON_MISSING_ARIA_LABEL]:{message:"IconButton is missing an aria-label",suggestion:"Add an aria-label prop to IconButton for screen reader accessibility."},[n.HYDRATION_MISMATCH]:{message:"Hydration mismatch detected",suggestion:"Ensure server and client render the same content. Check for browser-only code."},[n.HYDRATION_TEXT_MISMATCH]:{message:"Text content mismatch during hydration",suggestion:"Server and client rendered different text. Check for Date.now(), Math.random(), or client-only data."},[n.HYDRATION_TAG_MISMATCH]:{message:"Element tag mismatch during hydration",suggestion:"Server and client rendered different elements. Verify conditional rendering logic."},[n.DEVTOOLS_LISTENER_ERROR]:{message:"DevTools listener threw an error",suggestion:"Check your DevTools event listener callback."},[n.UNCAUGHT_RENDER_ERROR]:{message:"Uncaught error during render",suggestion:"Wrap components with <ErrorBoundary> to catch and handle errors gracefully."},[n.ERROR_BOUNDARY_CALLBACK_FAILED]:{message:"ErrorBoundary callback failed",suggestion:"Check your onError or onReset callback for errors."},[n.COMPUTED_EXECUTION_FAILED]:{message:"Computed value execution failed",suggestion:"Check the computed callback for runtime errors. Ensure all dependencies are valid."},[n.ASYNC_VALIDATION_FAILED]:{message:"Async form validation failed",suggestion:"Check the async validation function and ensure it handles errors properly."},[n.COMPONENT_RENDER_FAILED]:{message:"Component render failed",suggestion:"Check the component function for runtime errors. Consider wrapping with <ErrorBoundary>."},[n.HYDRATION_ATTRIBUTE_MISMATCH]:{message:"Attribute mismatch during hydration",suggestion:"Server and client rendered different attribute values. Check for dynamic attributes."},[n.DOM_CLEANUP_FAILED]:{message:"DOM cleanup operation failed",suggestion:"A node may have been removed from the DOM unexpectedly. Check for manual DOM manipulation."},[n.EVENT_HANDLER_FAILED]:{message:"Event handler threw an error",suggestion:"Check your event handler callback. Consider adding try-catch for async operations."},[n.KEYBOARD_HANDLER_FAILED]:{message:"Keyboard event handler failed",suggestion:"Check the onKeyDown/onKeyUp handler for errors."},[n.RESOURCE_FETCH_FAILED]:{message:"Resource fetch failed",suggestion:"Check the async function and network connectivity. The resource will show an error state."},[n.RESOURCE_TIMEOUT]:{message:"Resource fetch timed out",suggestion:"The async operation took too long. Consider adding a timeout handler or retry logic."}}[e]||{message:`Error ${e}`}:{message:`Minified Error ${e}`}}function c(e,r,o){let t=g(e);return {code:e,message:t.message,suggestion:t.suggestion,context:r,originalError:o}}function u(e){let r=`[Flexium ${e.code}] ${e.message}`;if(e.context&&Object.keys(e.context).length>0){let o=Object.entries(e.context).map(([t,s])=>`${t}: ${JSON.stringify(s)}`).join(", ");r+=` (${o})`;}return e.suggestion&&(r+=`
|
|
2
|
-
\u2192 ${e.suggestion}`),r}function E(e,r,o){let t=c(e,r,o),s=u(t);o?console.error(s,o):console.error(s);}function d(e,r){let o=c(e,r),t=u(o);console.warn(t);}var i=null;function f(){return i}function _(e){i=e;}function I(e){let r=i;i=null;try{return e()}finally{i=r;}}var a=null;function R(){return a}function A(e){a=e;}function T(e){let r=a,o={cleanups:[],context:r?Object.create(r.context):null,owner:r};a=o;let t=()=>{if(o.cleanups.length!==0){for(let s of o.cleanups)s();o.cleanups=[];}};try{return e(t)}finally{a=r;}}export{n as a,E as b,d as c,f as d,_ as e,I as f,R as g,A as h,T as i};//# sourceMappingURL=chunk-ECYYIQEX.mjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-ECYYIQEX.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/errors.ts","../src/core/owner.ts"],"names":["ErrorCodes","getErrorDetails","code","createErrorInfo","context","originalError","details","formatErrorMessage","info","message","contextStr","key","value","logError","logWarning","activeEffect","getActiveEffect","setActiveEffect","effect","untrack","fn","prev","owner","getOwner","setOwner","newOwner","root","prevOwner","dispose","cleanup"],"mappings":"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","file":"chunk-ECYYIQEX.mjs","sourcesContent":["/**\n * Flexium Error System\n *\n * Standardized error handling with error codes, contextual information,\n * and actionable suggestions for developers.\n */\n\n// Error codes for all Flexium errors\nexport const ErrorCodes = {\n // Signal/Effect errors (1xx)\n EFFECT_EXECUTION_FAILED: 'FLX101',\n CLEANUP_OUTSIDE_EFFECT: 'FLX102',\n SIGNAL_UPDATE_DURING_RENDER: 'FLX103',\n COMPUTED_EXECUTION_FAILED: 'FLX104',\n\n // Context errors (2xx)\n CONTEXT_MISSING_PROVIDER: 'FLX201',\n ROUTER_OUTSIDE_PROVIDER: 'FLX202',\n\n // Form errors (3xx)\n FORM_VALIDATION_FAILED: 'FLX301',\n FORM_SUBMISSION_FAILED: 'FLX302',\n ASYNC_VALIDATION_FAILED: 'FLX303',\n\n // Component errors (4xx)\n BUTTON_HANDLER_FAILED: 'FLX401',\n BUTTON_MISSING_ARIA_LABEL: 'FLX402',\n COMPONENT_RENDER_FAILED: 'FLX403',\n\n // Hydration errors (5xx)\n HYDRATION_MISMATCH: 'FLX501',\n HYDRATION_TEXT_MISMATCH: 'FLX502',\n HYDRATION_TAG_MISMATCH: 'FLX503',\n HYDRATION_ATTRIBUTE_MISMATCH: 'FLX504',\n\n // DevTools errors (6xx)\n DEVTOOLS_LISTENER_ERROR: 'FLX601',\n\n // Render errors (7xx)\n UNCAUGHT_RENDER_ERROR: 'FLX701',\n ERROR_BOUNDARY_CALLBACK_FAILED: 'FLX702',\n DOM_CLEANUP_FAILED: 'FLX703',\n\n // Event errors (8xx)\n EVENT_HANDLER_FAILED: 'FLX801',\n KEYBOARD_HANDLER_FAILED: 'FLX802',\n\n // Resource/Async errors (9xx)\n RESOURCE_FETCH_FAILED: 'FLX901',\n RESOURCE_TIMEOUT: 'FLX902',\n} as const\n\nexport type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes]\n\ninterface ErrorDefinition {\n message: string\n suggestion?: string\n}\n\n// Error message definitions with suggestions\n// Wrapped in a function to allow tree-shaking in production\nfunction getErrorDetails(code: ErrorCode): {\n message: string\n suggestion?: string\n} {\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (isDev) {\n const errorDefinitions: Record<ErrorCode, ErrorDefinition> = {\n [ErrorCodes.EFFECT_EXECUTION_FAILED]: {\n message: 'Effect execution failed',\n suggestion:\n 'Check the effect callback for runtime errors. Consider wrapping async operations in try-catch.',\n },\n [ErrorCodes.CLEANUP_OUTSIDE_EFFECT]: {\n message: 'onCleanup must be called from within an effect',\n suggestion: 'Move the onCleanup() call inside an effect() callback.',\n },\n [ErrorCodes.SIGNAL_UPDATE_DURING_RENDER]: {\n message: 'Signal was updated during render',\n suggestion:\n 'Avoid updating signals inside render functions. Use effect() for side effects.',\n },\n [ErrorCodes.CONTEXT_MISSING_PROVIDER]: {\n message: 'Context used outside of Provider',\n suggestion:\n 'Wrap your component tree with the appropriate Context.Provider.',\n },\n [ErrorCodes.ROUTER_OUTSIDE_PROVIDER]: {\n message: 'router() must be used within a <Router> component',\n suggestion: 'Ensure your component is a descendant of <Router>.',\n },\n [ErrorCodes.FORM_VALIDATION_FAILED]: {\n message: 'Form field validation failed',\n suggestion:\n 'Check the validation rules for the field and the input value.',\n },\n [ErrorCodes.FORM_SUBMISSION_FAILED]: {\n message: 'Form submission failed',\n suggestion: 'Check the onSubmit handler and network connectivity.',\n },\n [ErrorCodes.BUTTON_HANDLER_FAILED]: {\n message: 'Button press handler failed',\n suggestion: 'Check the onPress/onClick callback for errors.',\n },\n [ErrorCodes.BUTTON_MISSING_ARIA_LABEL]: {\n message: 'IconButton is missing an aria-label',\n suggestion:\n 'Add an aria-label prop to IconButton for screen reader accessibility.',\n },\n [ErrorCodes.HYDRATION_MISMATCH]: {\n message: 'Hydration mismatch detected',\n suggestion:\n 'Ensure server and client render the same content. Check for browser-only code.',\n },\n [ErrorCodes.HYDRATION_TEXT_MISMATCH]: {\n message: 'Text content mismatch during hydration',\n suggestion:\n 'Server and client rendered different text. Check for Date.now(), Math.random(), or client-only data.',\n },\n [ErrorCodes.HYDRATION_TAG_MISMATCH]: {\n message: 'Element tag mismatch during hydration',\n suggestion:\n 'Server and client rendered different elements. Verify conditional rendering logic.',\n },\n [ErrorCodes.DEVTOOLS_LISTENER_ERROR]: {\n message: 'DevTools listener threw an error',\n suggestion: 'Check your DevTools event listener callback.',\n },\n [ErrorCodes.UNCAUGHT_RENDER_ERROR]: {\n message: 'Uncaught error during render',\n suggestion:\n 'Wrap components with <ErrorBoundary> to catch and handle errors gracefully.',\n },\n [ErrorCodes.ERROR_BOUNDARY_CALLBACK_FAILED]: {\n message: 'ErrorBoundary callback failed',\n suggestion: 'Check your onError or onReset callback for errors.',\n },\n [ErrorCodes.COMPUTED_EXECUTION_FAILED]: {\n message: 'Computed value execution failed',\n suggestion:\n 'Check the computed callback for runtime errors. Ensure all dependencies are valid.',\n },\n [ErrorCodes.ASYNC_VALIDATION_FAILED]: {\n message: 'Async form validation failed',\n suggestion:\n 'Check the async validation function and ensure it handles errors properly.',\n },\n [ErrorCodes.COMPONENT_RENDER_FAILED]: {\n message: 'Component render failed',\n suggestion:\n 'Check the component function for runtime errors. Consider wrapping with <ErrorBoundary>.',\n },\n [ErrorCodes.HYDRATION_ATTRIBUTE_MISMATCH]: {\n message: 'Attribute mismatch during hydration',\n suggestion:\n 'Server and client rendered different attribute values. Check for dynamic attributes.',\n },\n [ErrorCodes.DOM_CLEANUP_FAILED]: {\n message: 'DOM cleanup operation failed',\n suggestion:\n 'A node may have been removed from the DOM unexpectedly. Check for manual DOM manipulation.',\n },\n [ErrorCodes.EVENT_HANDLER_FAILED]: {\n message: 'Event handler threw an error',\n suggestion:\n 'Check your event handler callback. Consider adding try-catch for async operations.',\n },\n [ErrorCodes.KEYBOARD_HANDLER_FAILED]: {\n message: 'Keyboard event handler failed',\n suggestion: 'Check the onKeyDown/onKeyUp handler for errors.',\n },\n [ErrorCodes.RESOURCE_FETCH_FAILED]: {\n message: 'Resource fetch failed',\n suggestion:\n 'Check the async function and network connectivity. The resource will show an error state.',\n },\n [ErrorCodes.RESOURCE_TIMEOUT]: {\n message: 'Resource fetch timed out',\n suggestion:\n 'The async operation took too long. Consider adding a timeout handler or retry logic.',\n },\n }\n return errorDefinitions[code] || { message: `Error ${code}` }\n }\n return { message: `Minified Error ${code}` }\n}\n\nexport interface FlexiumErrorInfo {\n code: ErrorCode\n message: string\n suggestion?: string\n context?: Record<string, unknown>\n originalError?: unknown\n}\n\n/**\n * Create a standardized error info object\n */\nexport function createErrorInfo(\n code: ErrorCode,\n context?: Record<string, unknown>,\n originalError?: unknown\n): FlexiumErrorInfo {\n const details = getErrorDetails(code)\n return {\n code,\n message: details.message,\n suggestion: details.suggestion,\n context,\n originalError,\n }\n}\n\n/**\n * Format error message for console output\n */\nexport function formatErrorMessage(info: FlexiumErrorInfo): string {\n let message = `[Flexium ${info.code}] ${info.message}`\n\n if (info.context && Object.keys(info.context).length > 0) {\n const contextStr = Object.entries(info.context)\n .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)\n .join(', ')\n message += ` (${contextStr})`\n }\n\n if (info.suggestion) {\n message += `\\n → ${info.suggestion}`\n }\n\n return message\n}\n\n/**\n * Log an error with standardized formatting\n */\nexport function logError(\n code: ErrorCode,\n context?: Record<string, unknown>,\n originalError?: unknown\n): void {\n const info = createErrorInfo(code, context, originalError)\n const message = formatErrorMessage(info)\n\n if (originalError) {\n console.error(message, originalError)\n } else {\n console.error(message)\n }\n}\n\n/**\n * Log a warning with standardized formatting\n */\nexport function logWarning(\n code: ErrorCode,\n context?: Record<string, unknown>\n): void {\n const info = createErrorInfo(code, context)\n const message = formatErrorMessage(info)\n console.warn(message)\n}\n\n/**\n * Create a FlexiumError with standardized information\n */\nexport class FlexiumError extends Error {\n code: ErrorCode\n suggestion?: string\n context?: Record<string, unknown>\n\n constructor(code: ErrorCode, context?: Record<string, unknown>) {\n const details = getErrorDetails(code)\n super(details.message)\n this.name = 'FlexiumError'\n this.code = code\n this.suggestion = details.suggestion\n this.context = context\n }\n\n toString(): string {\n return formatErrorMessage({\n code: this.code,\n message: this.message,\n suggestion: this.suggestion,\n context: this.context,\n })\n }\n}\n","/**\n * Owner.ts\n *\n * Managing reactive scopes and cleanup contexts.\n */\n\n// ==================================================================================\n// 1. Owner & Scope Management\n// ==================================================================================\n\nexport interface Owner {\n cleanups: (() => void)[]\n context: Record<symbol, unknown> | null\n owner: Owner | null // Parent owner\n}\n\nimport type { ISubscriber } from './graph'\n\n// Global context for dependency tracking\nlet activeEffect: ISubscriber | null = null\n\nexport function getActiveEffect(): ISubscriber | null {\n return activeEffect\n}\n\nexport function setActiveEffect(effect: ISubscriber | null): void {\n activeEffect = effect\n}\n\n/**\n * Execute a function without tracking signal dependencies.\n * Useful when you need to read signals inside an effect without creating dependencies.\n *\n * @param fn - Function to execute without tracking\n * @returns The return value of fn\n */\nexport function untrack<T>(fn: () => T): T {\n const prev = activeEffect\n activeEffect = null\n try {\n return fn()\n } finally {\n activeEffect = prev\n }\n}\n\nlet owner: Owner | null = null\n\n/**\n * Get the current owner (scope)\n * @internal\n */\nexport function getOwner(): Owner | null {\n return owner\n}\n\n/**\n * Set the current owner (scope)\n * @internal\n */\nexport function setOwner(newOwner: Owner | null): void {\n owner = newOwner\n}\n\n/**\n * Creates a disposal scope.\n * The return value of the function is returned, and a dispose function is returned.\n *\n * @param fn - Function to run within a new root scope\n * @returns [return value of fn, dispose function]\n *\n * @example\n * ```tsx\n * const [val, dispose] = root((dispose) => {\n * effect(() => console.log('Inside root'));\n * return 123;\n * });\n * dispose(); // Cleans up all effects created inside\n * ```\n */\nexport function root<T>(fn: (dispose: () => void) => T): T {\n const prevOwner = owner\n const newOwner: Owner = {\n cleanups: [],\n context: prevOwner ? Object.create(prevOwner.context) : null,\n owner: prevOwner,\n }\n\n owner = newOwner\n\n const dispose = () => {\n // Performance: Fast path when no cleanups\n if (newOwner.cleanups.length === 0) return\n \n for (const cleanup of newOwner.cleanups) {\n cleanup()\n }\n newOwner.cleanups = []\n }\n\n try {\n return fn(dispose)\n } finally {\n owner = prevOwner\n }\n}\n\n\n"]}
|
package/dist/chunk-FDMJHFN7.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var o=0,i=new Set,r=new Set,n=false;function f(){n||(n=true,queueMicrotask(s));}function s(){if(n=false,r.size===0)return;let e=[];for(let t of r)e.push(t);r.clear();for(let t=0;t<e.length;t++)e[t].execute();}function a(e){r.add(e);}function b(e){i.add(e);}function d(){return o}function h(e){let t;if(e){o++;try{t=e();}finally{if(o--,o===0){let c=[];for(let u of i)c.push(u);i.clear();for(let u=0;u<c.length;u++)c[u].execute();}}}return s(),t}export{f as a,a as b,b as c,d,h as e};//# sourceMappingURL=chunk-FDMJHFN7.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-FDMJHFN7.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/sync.ts"],"names":["batchDepth","batchQueue","autoBatchQueue","isAutoBatchScheduled","scheduleAutoBatch","flushAutoBatch","queue","sub","i","addToAutoBatch","addToBatch","getBatchDepth","sync","fn","result"],"mappings":"AAGA,IAAIA,CAAAA,CAAa,CAAA,CAEXC,CAAAA,CAAa,IAAI,GAAA,CAGjBC,CAAAA,CAAiB,IAAI,GAAA,CACvBC,CAAAA,CAAuB,KAAA,CAEpB,SAASC,CAAAA,EAA0B,CACjCD,CAAAA,GACDA,CAAAA,CAAuB,IAAA,CACvB,cAAA,CAAeE,CAAc,CAAA,EAErC,CAEO,SAASA,CAAAA,EAAuB,CAEnC,GADAF,CAAAA,CAAuB,KAAA,CACnBD,CAAAA,CAAe,IAAA,GAAS,CAAA,CAAG,OAI/B,IAAMI,CAAAA,CAAuB,EAAC,CAC9B,IAAA,IAAWC,CAAAA,IAAOL,CAAAA,CACdI,CAAAA,CAAM,IAAA,CAAKC,CAAG,CAAA,CAElBL,CAAAA,CAAe,KAAA,EAAM,CAGrB,IAAA,IAASM,CAAAA,CAAI,EAAGA,CAAAA,CAAIF,CAAAA,CAAM,MAAA,CAAQE,CAAAA,EAAAA,CAC9BF,CAAAA,CAAME,CAAC,CAAA,CAAE,OAAA,GAEjB,CAEO,SAASC,CAAAA,CAAeF,CAAAA,CAAwB,CACnDL,CAAAA,CAAe,GAAA,CAAIK,CAAG,EAC1B,CAEO,SAASG,CAAAA,CAAWH,CAAAA,CAAwB,CAC/CN,CAAAA,CAAW,GAAA,CAAIM,CAAG,EACtB,CAEO,SAASI,CAAAA,EAAwB,CACpC,OAAOX,CACX,CAwBO,SAASY,CAAAA,CAAQC,CAAAA,CAAwB,CAC5C,IAAIC,CAAAA,CAEJ,GAAID,CAAAA,CAAI,CACJb,IACA,GAAI,CACAc,CAAAA,CAASD,CAAAA,GACb,CAAA,OAAE,CAEE,GADAb,IACIA,CAAAA,GAAe,CAAA,CAAG,CAGlB,IAAMM,CAAAA,CAAuB,EAAC,CAC9B,IAAA,IAAWC,CAAAA,IAAON,CAAAA,CACdK,CAAAA,CAAM,IAAA,CAAKC,CAAG,CAAA,CAElBN,CAAAA,CAAW,KAAA,GAEX,IAAA,IAASO,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAM,MAAA,CAAQE,CAAAA,EAAAA,CAC9BF,CAAAA,CAAME,CAAC,CAAA,CAAE,OAAA,GAEjB,CACJ,CACJ,CAGA,OAAAH,CAAAA,GAEOS,CACX","file":"chunk-FDMJHFN7.mjs","sourcesContent":["import { ISubscriber } from './graph'\n\n// Batching state\nlet batchDepth = 0\n// Batch queue now needs to store raw subscribers. Set is efficient for uniqueness.\nconst batchQueue = new Set<ISubscriber>()\n\n// Auto-batching state (Microtask Scheduler)\nconst autoBatchQueue = new Set<ISubscriber>()\nlet isAutoBatchScheduled = false\n\nexport function scheduleAutoBatch(): void {\n if (!isAutoBatchScheduled) {\n isAutoBatchScheduled = true\n queueMicrotask(flushAutoBatch)\n }\n}\n\nexport function flushAutoBatch(): void {\n isAutoBatchScheduled = false\n if (autoBatchQueue.size === 0) return\n\n // Performance: Direct iteration instead of Array.from() to avoid array allocation\n // Build array while iterating Set\n const queue: ISubscriber[] = []\n for (const sub of autoBatchQueue) {\n queue.push(sub)\n }\n autoBatchQueue.clear()\n\n // Execute effects - use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n}\n\nexport function addToAutoBatch(sub: ISubscriber): void {\n autoBatchQueue.add(sub)\n}\n\nexport function addToBatch(sub: ISubscriber): void {\n batchQueue.add(sub)\n}\n\nexport function getBatchDepth(): number {\n return batchDepth\n}\n\n/**\n * Synchronizes state updates.\n * \n * - `sync()`: Force flushes any pending auto-batched effects.\n * - `sync(fn)`: Batches updates within `fn`, then flushes them and any pending effects synchronously.\n *\n * @param fn - Optional function containing state updates\n * @returns The return value of fn, if provided\n *\n * @example\n * ```tsx\n * // 1. Force flush pending effects\n * count.value++\n * sync() // DOM is now updated\n *\n * // 2. Batch updates and flush immediately\n * sync(() => {\n * count.value = 1\n * name.value = 'Bob'\n * }) // Effects run once here, DOM updated\n * ```\n */\nexport function sync<T>(fn?: () => T): T | void {\n let result: T | undefined\n\n if (fn) {\n batchDepth++\n try {\n result = fn()\n } finally {\n batchDepth--\n if (batchDepth === 0) {\n // Execute all queued subscribers from manual batch\n // Performance: Direct iteration instead of Array.from() to avoid array allocation\n const queue: ISubscriber[] = []\n for (const sub of batchQueue) {\n queue.push(sub)\n }\n batchQueue.clear()\n // Use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n }\n }\n }\n\n // Always flushing auto-batch queue to ensure everything is synced\n flushAutoBatch()\n\n return result\n}\n"]}
|
package/dist/chunk-GKJQEOP7.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-WVEJT7HD.mjs';import {d as d$1}from'./chunk-HB5VPQTB.mjs';function m(e){let t={},i=[];return e.x!==void 0&&i.push(`translateX(${e.x}px)`),e.y!==void 0&&i.push(`translateY(${e.y}px)`),e.scale!==void 0?i.push(`scale(${e.scale})`):(e.scaleX!==void 0&&i.push(`scaleX(${e.scaleX})`),e.scaleY!==void 0&&i.push(`scaleY(${e.scaleY})`)),e.rotate!==void 0&&i.push(`rotate(${e.rotate}deg)`),i.length>0&&(t.transform=i.join(" ")),e.opacity!==void 0&&(t.opacity=e.opacity.toString()),e.width!==void 0&&(t.width=typeof e.width=="number"?`${e.width}px`:e.width),e.height!==void 0&&(t.height=typeof e.height=="number"?`${e.height}px`:e.height),t}function L(e){let t=e.tension??170,i=e.friction??26,o=e.mass??1,r=t,n=i,s=o,l=Math.sqrt(r/s),c=n/(2*Math.sqrt(r*s)),u=4.6/(c*l)*1e3;return c<1?{duration:u,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)"}:{duration:u,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}}var d=null,x=null;function A(){if(d===null)if(typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-reduced-motion: reduce)");d=e.matches;let t=i=>{d=i.matches;};e.addEventListener("change",t),x=()=>{e.removeEventListener("change",t),d=null,x=null;};}else d=false;return d}function O(){x&&x();}var f=class{constructor(t){this.animation=null;this.resizeObserver=null;this.previousSize=null;this.element=t;}animate(t){let{initial:i,animate:o,duration:r=300,spring:n,easing:s="ease-out",delay:l=0}=t;if(!o)return;if(this.cancel(),A()){let a=m(o);Object.assign(this.element.style,{transform:a.transform||"",opacity:a.opacity||"",width:a.width||"",height:a.height||""}),t.onAnimationStart&&t.onAnimationStart(),t.onAnimationComplete&&t.onAnimationComplete();return}if(i){let a=m(i);Object.assign(this.element.style,{transform:a.transform||"",opacity:a.opacity||"",width:a.width||"",height:a.height||""});}let c=i?m(i):{},u=m(o),h=r,g=s;if(n){let a=L(n);h=a.duration,g=a.easing;}this.animation=this.element.animate([c,u],{duration:h,easing:g,delay:l,fill:"forwards"}),t.onAnimationStart&&t.onAnimationStart(),this.animation.onfinish=()=>{t.onAnimationComplete&&t.onAnimationComplete();};}async animateExit(t,i=300,o="ease-in"){if(this.cancel(),A()){let n=m(t);Object.assign(this.element.style,{transform:n.transform||"",opacity:n.opacity||"",width:n.width||"",height:n.height||""});return}let r=m(t);this.animation=this.element.animate([{},r],{duration:i,easing:o,fill:"forwards"}),await this.animation.finished;}enableLayoutAnimation(t=300,i="ease-out"){let o=this.element.getBoundingClientRect();this.previousSize={width:o.width,height:o.height},this.resizeObserver=new ResizeObserver(r=>{for(let n of r){if(!this.previousSize){this.previousSize={width:n.contentRect.width,height:n.contentRect.height};return}let s=n.contentRect.width,l=n.contentRect.height;(s!==this.previousSize.width||l!==this.previousSize.height)&&(this.cancel(),this.animation=this.element.animate([{width:`${this.previousSize.width}px`,height:`${this.previousSize.height}px`},{width:`${s}px`,height:`${l}px`}],{duration:t,easing:i,fill:"forwards"}),this.previousSize={width:s,height:l});}}),this.resizeObserver.observe(this.element);}disableLayoutAnimation(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null,this.previousSize=null);}cancel(){this.animation&&(this.animation.cancel(),this.animation=null);}dispose(){this.cancel(),this.disableLayoutAnimation();}};function R(e){switch(e){case "fade":return {enter:{opacity:0},enterTo:{opacity:1},exit:{opacity:0}};case "slide-up":return {enter:{opacity:0,y:20},enterTo:{opacity:1,y:0},exit:{opacity:0,y:-20}};case "slide-down":return {enter:{opacity:0,y:-20},enterTo:{opacity:1,y:0},exit:{opacity:0,y:20}};case "slide-left":return {enter:{opacity:0,x:20},enterTo:{opacity:1,x:0},exit:{opacity:0,x:-20}};case "slide-right":return {enter:{opacity:0,x:-20},enterTo:{opacity:1,x:0},exit:{opacity:0,x:20}};case "scale":return {enter:{scale:.9},enterTo:{scale:1},exit:{scale:.9}};case "scale-fade":return {enter:{opacity:0,scale:.95},enterTo:{opacity:1,scale:1},exit:{opacity:0,scale:.95}};default:return {enter:{},enterTo:{},exit:{}}}}var y=null;function $(e){let{preset:t,enter:i,enterTo:o,exit:r,enterTiming:n={duration:300,easing:"ease-out"},exitTiming:s={duration:200,easing:"ease-in"},onEnterStart:l,onEnterComplete:c,onExitStart:u,onExitComplete:h,children:g}=e,a$1=t?R(t):null,P=i??a$1?.enter??{},C=o??a$1?.enterTo??{},S=r??a$1?.exit??{},b=null,p=null,M=y?.registerChild()??0,z=y?.staggerDelay??0,E=M*z;return d$1(async()=>{b&&p&&(u?.(),await p.animateExit(S,s.duration,s.easing),h?.());}),a("div",{style:{display:"contents"},ref:T=>{T&&(b=T,p=new f(T),queueMicrotask(()=>{p&&(l?.(),p.animate({initial:P,animate:C,duration:n.duration,easing:n.easing,delay:(n.delay??0)+E,onAnimationComplete:c}));}));}},g)}function G(e){let{stagger:t=50,children:i}=e,o=0,r={registerChild:()=>o++,staggerDelay:t};return ()=>{o=0;let n=y;y=r;try{return i}finally{y=n;}}}var D={fade:{preset:"fade"},slideUp:{preset:"slide-up"},slideDown:{preset:"slide-down"},slideLeft:{preset:"slide-left"},slideRight:{preset:"slide-right"},scale:{preset:"scale"},scaleFade:{preset:"scale-fade"},modal:{enter:{opacity:0,scale:.95,y:-10},enterTo:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},enterTiming:{duration:200,easing:"cubic-bezier(0.16, 1, 0.3, 1)"},exitTiming:{duration:150,easing:"ease-in"}},dropdown:{enter:{opacity:0,y:-8,scale:.95},enterTo:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.95},enterTiming:{duration:150,easing:"ease-out"},exitTiming:{duration:100,easing:"ease-in"}},tooltip:{enter:{opacity:0,scale:.9},enterTo:{opacity:1,scale:1},exit:{opacity:0,scale:.9},enterTiming:{duration:100,easing:"ease-out"},exitTiming:{duration:75,easing:"ease-in"}},notification:{enter:{opacity:0,x:100},enterTo:{opacity:1,x:0},exit:{opacity:0,x:100},enterTiming:{duration:300,easing:"cubic-bezier(0.16, 1, 0.3, 1)"},exitTiming:{duration:200,easing:"ease-in"}},page:{enter:{opacity:0},enterTo:{opacity:1},exit:{opacity:0},enterTiming:{duration:200,easing:"ease-out"},exitTiming:{duration:150,easing:"ease-in"}}};export{O as a,f as b,$ as c,G as d,D as e};//# sourceMappingURL=chunk-GKJQEOP7.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-GKJQEOP7.mjs.map
|