@clusterenvision/ui-framework 1.0.0
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/LICENSE +21 -0
- package/README.md +295 -0
- package/dist/ai-assistant-Db002XYC.d.ts +92 -0
- package/dist/ai-assistant-EobSUV70.d.cts +92 -0
- package/dist/browser-DnHpnWwE.d.cts +354 -0
- package/dist/browser-Dx4oKf5e.d.ts +354 -0
- package/dist/browser-signals-07qodpYT.d.cts +66 -0
- package/dist/browser-signals-07qodpYT.d.ts +66 -0
- package/dist/browser-signals.cjs +32 -0
- package/dist/browser-signals.cjs.map +1 -0
- package/dist/browser-signals.d.cts +1 -0
- package/dist/browser-signals.d.ts +1 -0
- package/dist/browser-signals.js +3 -0
- package/dist/browser-signals.js.map +1 -0
- package/dist/browser.cjs +197 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +13 -0
- package/dist/browser.d.ts +13 -0
- package/dist/browser.js +12 -0
- package/dist/browser.js.map +1 -0
- package/dist/chunk-22HQL2Y4.js +568 -0
- package/dist/chunk-22HQL2Y4.js.map +1 -0
- package/dist/chunk-3ZBRNFEE.js +1525 -0
- package/dist/chunk-3ZBRNFEE.js.map +1 -0
- package/dist/chunk-4HRORR2Q.js +1953 -0
- package/dist/chunk-4HRORR2Q.js.map +1 -0
- package/dist/chunk-4L3UXVL5.cjs +68 -0
- package/dist/chunk-4L3UXVL5.cjs.map +1 -0
- package/dist/chunk-6BYWFGQY.cjs +226 -0
- package/dist/chunk-6BYWFGQY.cjs.map +1 -0
- package/dist/chunk-7SCIB5HP.js +57 -0
- package/dist/chunk-7SCIB5HP.js.map +1 -0
- package/dist/chunk-BBAUALNU.js +888 -0
- package/dist/chunk-BBAUALNU.js.map +1 -0
- package/dist/chunk-CHLDE4JQ.js +715 -0
- package/dist/chunk-CHLDE4JQ.js.map +1 -0
- package/dist/chunk-CXTAUXLG.cjs +71 -0
- package/dist/chunk-CXTAUXLG.cjs.map +1 -0
- package/dist/chunk-D2USIT6V.js +121 -0
- package/dist/chunk-D2USIT6V.js.map +1 -0
- package/dist/chunk-D3H5CGVD.js +36 -0
- package/dist/chunk-D3H5CGVD.js.map +1 -0
- package/dist/chunk-DQBX75NJ.js +92 -0
- package/dist/chunk-DQBX75NJ.js.map +1 -0
- package/dist/chunk-DRPG2DFX.js +208 -0
- package/dist/chunk-DRPG2DFX.js.map +1 -0
- package/dist/chunk-EFOOXCY7.cjs +41 -0
- package/dist/chunk-EFOOXCY7.cjs.map +1 -0
- package/dist/chunk-FFCZSYC7.cjs +906 -0
- package/dist/chunk-FFCZSYC7.cjs.map +1 -0
- package/dist/chunk-FNXIYAET.cjs +1593 -0
- package/dist/chunk-FNXIYAET.cjs.map +1 -0
- package/dist/chunk-I6GNUM3P.cjs +63 -0
- package/dist/chunk-I6GNUM3P.cjs.map +1 -0
- package/dist/chunk-IHAMVLRY.js +129 -0
- package/dist/chunk-IHAMVLRY.js.map +1 -0
- package/dist/chunk-IRBUKIRF.cjs +133 -0
- package/dist/chunk-IRBUKIRF.cjs.map +1 -0
- package/dist/chunk-KPG5HAHK.cjs +97 -0
- package/dist/chunk-KPG5HAHK.cjs.map +1 -0
- package/dist/chunk-N7Q2ESLG.cjs +130 -0
- package/dist/chunk-N7Q2ESLG.cjs.map +1 -0
- package/dist/chunk-PFBEIFVS.js +180 -0
- package/dist/chunk-PFBEIFVS.js.map +1 -0
- package/dist/chunk-PVZVFICK.cjs +318 -0
- package/dist/chunk-PVZVFICK.cjs.map +1 -0
- package/dist/chunk-Q3KH6HMU.js +305 -0
- package/dist/chunk-Q3KH6HMU.js.map +1 -0
- package/dist/chunk-QPAAV32J.cjs +1985 -0
- package/dist/chunk-QPAAV32J.cjs.map +1 -0
- package/dist/chunk-R6XQUMWT.cjs +61 -0
- package/dist/chunk-R6XQUMWT.cjs.map +1 -0
- package/dist/chunk-SA5UD5B6.js +92 -0
- package/dist/chunk-SA5UD5B6.js.map +1 -0
- package/dist/chunk-SM35JOYD.cjs +211 -0
- package/dist/chunk-SM35JOYD.cjs.map +1 -0
- package/dist/chunk-SZQNIMYI.cjs +592 -0
- package/dist/chunk-SZQNIMYI.cjs.map +1 -0
- package/dist/chunk-T6T7QE4J.js +224 -0
- package/dist/chunk-T6T7QE4J.js.map +1 -0
- package/dist/chunk-TIF372DZ.js +65 -0
- package/dist/chunk-TIF372DZ.js.map +1 -0
- package/dist/chunk-V6JCOBGY.js +69 -0
- package/dist/chunk-V6JCOBGY.js.map +1 -0
- package/dist/chunk-VHUXNDW2.cjs +189 -0
- package/dist/chunk-VHUXNDW2.cjs.map +1 -0
- package/dist/chunk-W3LNNY3U.cjs +729 -0
- package/dist/chunk-W3LNNY3U.cjs.map +1 -0
- package/dist/chunk-ZUWSU4OA.js +61 -0
- package/dist/chunk-ZUWSU4OA.js.map +1 -0
- package/dist/chunk-ZWUA2LPB.cjs +103 -0
- package/dist/chunk-ZWUA2LPB.cjs.map +1 -0
- package/dist/cli/index.cjs +566 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +558 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compiler/index.cjs +80 -0
- package/dist/compiler/index.cjs.map +1 -0
- package/dist/compiler/index.d.cts +130 -0
- package/dist/compiler/index.d.ts +130 -0
- package/dist/compiler/index.js +3 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/component-BVzvepw9.d.cts +90 -0
- package/dist/component-wTxZ2BPD.d.ts +90 -0
- package/dist/index-CpxDa60m.d.cts +644 -0
- package/dist/index-CpxDa60m.d.ts +644 -0
- package/dist/index.cjs +1356 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +165 -0
- package/dist/index.d.ts +165 -0
- package/dist/index.js +772 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/dom.cjs +102 -0
- package/dist/lib/dom.cjs.map +1 -0
- package/dist/lib/dom.d.cts +373 -0
- package/dist/lib/dom.d.ts +373 -0
- package/dist/lib/dom.js +3 -0
- package/dist/lib/dom.js.map +1 -0
- package/dist/lib/icons.cjs +20 -0
- package/dist/lib/icons.cjs.map +1 -0
- package/dist/lib/icons.d.cts +64 -0
- package/dist/lib/icons.d.ts +64 -0
- package/dist/lib/icons.js +3 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/index.cjs +247 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.cts +30 -0
- package/dist/lib/index.d.ts +30 -0
- package/dist/lib/index.js +92 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/theme.cjs +56 -0
- package/dist/lib/theme.cjs.map +1 -0
- package/dist/lib/theme.d.cts +27 -0
- package/dist/lib/theme.d.ts +27 -0
- package/dist/lib/theme.js +3 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/router-B9kms5XQ.d.ts +124 -0
- package/dist/router-YnpW_sIK.d.cts +124 -0
- package/dist/runtime/adapters/angular.cjs +48 -0
- package/dist/runtime/adapters/angular.cjs.map +1 -0
- package/dist/runtime/adapters/angular.d.cts +38 -0
- package/dist/runtime/adapters/angular.d.ts +38 -0
- package/dist/runtime/adapters/angular.js +46 -0
- package/dist/runtime/adapters/angular.js.map +1 -0
- package/dist/runtime/adapters/react.cjs +41 -0
- package/dist/runtime/adapters/react.cjs.map +1 -0
- package/dist/runtime/adapters/react.d.cts +26 -0
- package/dist/runtime/adapters/react.d.ts +26 -0
- package/dist/runtime/adapters/react.js +39 -0
- package/dist/runtime/adapters/react.js.map +1 -0
- package/dist/runtime/adapters/vue.cjs +44 -0
- package/dist/runtime/adapters/vue.cjs.map +1 -0
- package/dist/runtime/adapters/vue.d.cts +37 -0
- package/dist/runtime/adapters/vue.d.ts +37 -0
- package/dist/runtime/adapters/vue.js +42 -0
- package/dist/runtime/adapters/vue.js.map +1 -0
- package/dist/runtime/components/ai-assistant.cjs +18 -0
- package/dist/runtime/components/ai-assistant.cjs.map +1 -0
- package/dist/runtime/components/ai-assistant.d.cts +8 -0
- package/dist/runtime/components/ai-assistant.d.ts +8 -0
- package/dist/runtime/components/ai-assistant.js +9 -0
- package/dist/runtime/components/ai-assistant.js.map +1 -0
- package/dist/runtime/components/ai-summary-card.cjs +18 -0
- package/dist/runtime/components/ai-summary-card.cjs.map +1 -0
- package/dist/runtime/components/ai-summary-card.d.cts +19 -0
- package/dist/runtime/components/ai-summary-card.d.ts +19 -0
- package/dist/runtime/components/ai-summary-card.js +9 -0
- package/dist/runtime/components/ai-summary-card.js.map +1 -0
- package/dist/runtime/router.cjs +429 -0
- package/dist/runtime/router.cjs.map +1 -0
- package/dist/runtime/router.d.cts +2 -0
- package/dist/runtime/router.d.ts +2 -0
- package/dist/runtime/router.js +421 -0
- package/dist/runtime/router.js.map +1 -0
- package/dist/runtime/server.cjs +125 -0
- package/dist/runtime/server.cjs.map +1 -0
- package/dist/runtime/server.d.cts +27 -0
- package/dist/runtime/server.d.ts +27 -0
- package/dist/runtime/server.js +117 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/workflow/index.cjs +282 -0
- package/dist/runtime/workflow/index.cjs.map +1 -0
- package/dist/runtime/workflow/index.d.cts +1 -0
- package/dist/runtime/workflow/index.d.ts +1 -0
- package/dist/runtime/workflow/index.js +5 -0
- package/dist/runtime/workflow/index.js.map +1 -0
- package/dist/tracing-DGdvMCEl.d.cts +109 -0
- package/dist/tracing-DGdvMCEl.d.ts +109 -0
- package/dist/types-C4RXXKfk.d.cts +76 -0
- package/dist/types-C4RXXKfk.d.ts +76 -0
- package/package.json +166 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/router.js","../src/runtime/router-provider.js","../src/runtime/server.js","../src/runtime/ssr-app.js","../src/runtime/error-boundary-context.ts","../src/runtime/error-boundary.ts","../src/runtime/hydration-diagnostics.js"],"names":["options","match","URL","fs"],"mappings":"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","file":"index.js","sourcesContent":["import { captureRuntimeError, withRuntimeErrorBoundary } from './errors.js';\nimport { signal } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nconst CONTINUE_NAVIGATION = { type: 'continue' };\nconst MAX_GUARD_REDIRECTS = 8;\nexport function allowNavigation() {\n return CONTINUE_NAVIGATION;\n}\nexport function redirectNavigation(to, options) {\n return { type: 'redirect', to, options };\n}\nexport function errorNavigation(error, info) {\n return { type: 'error', error, info: info ?? null };\n}\nexport function createRouter(input) {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal(resolveMatch(initialPath));\n function resolveMatch(path) {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n function instantiateMatch(node, params) {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState('route', normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }));\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n };\n }\n function collectLayouts(branch, fullPath, params) {\n const states = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(createRouterBoundaryState('layout', normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n })));\n });\n });\n return states;\n }\n function createFallbackMatch(route, requestedPath, reason, error, errorMessage) {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState('route', normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }));\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n };\n }\n function match(path) {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n function navigate(path, options) {\n return runNavigation(path, options, 0);\n }\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n function runNavigation(path, options, depth) {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n }\n catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n function applyHistory(path, options) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = (options?.state) ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n }\n else {\n window.history.pushState(historyState, '', path);\n }\n }\n function runRouteGuards(match) {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n function createGuardErrorInfo(match) {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n };\n }\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n };\n}\nfunction normalizeRouterOptions(input) {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\nfunction normalizeFallbackRoute(route, fallbackId, fallbackPath) {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path ?? fallbackPath,\n };\n}\nexport async function runRouteLoader(match, args) {\n const result = await executeRouteHandler('loader', match.route.loader, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\nexport async function runRouteAction(match, args) {\n const result = await executeRouteHandler('action', match.route.action, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\nexport async function prefetchRoute(match, options) {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\nfunction normalizeBoundaryConfig(kind, config, context) {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n };\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n };\n}\nfunction createRouterBoundaryState(kind, definition) {\n const state = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n }\n catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n };\n return state;\n}\nasync function executeRouteHandler(kind, handler, match, args) {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n };\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n };\n }\n return {\n handled: true,\n data,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n };\n }\n catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n };\n }\n}\nfunction normalizeHandlerArgs(match, args) {\n return {\n params: (args?.params) ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n };\n}\nfunction runWithBoundaries(boundaries, run) {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\nfunction invokeRouteHandler(handler, kind, match, args) {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n }\n catch (error) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\nfunction createHandlerErrorInfo(phase, match, args) {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n };\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n };\n}\nfunction firstErroredBoundary(boundaries) {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\nfunction isPromiseLike(value) {\n return Boolean(value) && typeof value === 'object' && 'then' in value;\n}\nfunction updateRouteDataCache(match, result) {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n","import { renderComponent } from './component.js';\nexport function renderRouterApp(component, options) {\n return renderComponent(component, options);\n}\n","import http from 'node:http';\nimport { URL } from 'node:url';\nimport { promises as fs } from 'node:fs';\nexport function createHttpApp() {\n const middlewares = [];\n const runMiddlewares = async (ctx, index = 0) => {\n if (index >= middlewares.length) {\n return;\n }\n const next = () => {\n return runMiddlewares(ctx, index + 1);\n };\n await middlewares[index](ctx, next);\n };\n return {\n use(middleware) {\n middlewares.push(middleware);\n return this;\n },\n handle(req, res) {\n const host = req.headers.host ?? 'localhost';\n const url = new URL(req.url ?? '/', `http://${host}`);\n const ctx = { req, res, url, state: {} };\n runMiddlewares(ctx).catch((err) => {\n res.statusCode = 500;\n res.end(err instanceof Error ? err.message : 'Unknown error');\n });\n },\n listen(port) {\n const server = http.createServer((req, res) => this.handle(req, res));\n return new Promise(resolve => {\n server.listen(port, () => resolve(server));\n });\n },\n };\n}\nexport function json(handler) {\n return async (ctx, next) => {\n if (ctx.req.method === 'GET') {\n ctx.data = await handler(ctx);\n ctx.res.setHeader('Content-Type', 'application/json');\n ctx.res.end(JSON.stringify(ctx.data));\n return;\n }\n await next();\n };\n}\nexport function serveStatic(root) {\n return async (ctx, next) => {\n if (ctx.req.method !== 'GET') {\n await next();\n return;\n }\n const host = ctx.req.headers.host ?? 'localhost';\n const path = new URL(ctx.req.url ?? '/', `http://${host}`).pathname;\n const filePath = new URL(path === '/' ? '/index.html' : path, `file://${root}`);\n try {\n const data = await fs.readFile(filePath);\n ctx.res.end(data);\n }\n catch (error) {\n if (error.code === 'ENOENT') {\n await next();\n return;\n }\n throw error;\n }\n };\n}\n","const DEFAULT_TEMPLATE = '<!doctype html><html><head><!--ce-ui-head--><!--ce-ui-assets--></head><body><!--ce-ui-app--></body></html>';\nexport function renderAssetTags(manifest) {\n if (!manifest) {\n return '';\n }\n const styles = (manifest.styles ?? []).map(href => `<link rel=\"stylesheet\" href=\"${href}\">`).join('');\n const preloads = (manifest.preloads ?? [])\n .map(href => `<link rel=\"preload\" href=\"${href}\" as=\"script\">`)\n .join('');\n const scripts = (manifest.scripts ?? []).map(src => `<script type=\"module\" src=\"${src}\"></script>`).join('');\n const hydrate = (manifest.hydrate ?? [])\n .map(src => `<script type=\"module\" data-ce-hydrate src=\"${src}\"></script>`)\n .join('');\n return `${preloads}${styles}${scripts}${hydrate}`;\n}\nexport function renderHtmlDocument(options) {\n const template = options.template ?? DEFAULT_TEMPLATE;\n const head = options.head ?? '';\n const assets = renderAssetTags(options.manifest);\n const htmlAttrs = options.htmlAttributes ? ` ${options.htmlAttributes}` : '';\n const bodyAttrs = options.bodyAttributes ? ` ${options.bodyAttributes}` : '';\n return applyTemplate(template, {\n head,\n assets,\n body: options.body,\n htmlAttributes: htmlAttrs,\n bodyAttributes: bodyAttrs,\n });\n}\nfunction isAsyncIterable(value) {\n return Boolean(value) && typeof value === 'object' && Symbol.asyncIterator in value;\n}\nexport function createNodeSsrMiddleware(options) {\n return async (ctx, next) => {\n if (ctx.req.method !== 'GET') {\n await next();\n return;\n }\n const bodyResult = await options.render(ctx);\n ctx.res.statusCode = options.status ?? 200;\n ctx.res.setHeader('Content-Type', 'text/html; charset=utf-8');\n if (options.headers) {\n Object.entries(options.headers).forEach(([key, value]) => ctx.res.setHeader(key, value));\n }\n if (isAsyncIterable(bodyResult)) {\n const shell = renderHtmlShell({\n template: options.template,\n head: options.head,\n manifest: options.manifest,\n });\n ctx.res.write(shell.start);\n for await (const chunk of bodyResult) {\n ctx.res.write(chunk);\n }\n ctx.res.end(shell.end);\n return;\n }\n const html = renderHtmlDocument({\n template: options.template,\n head: options.head,\n body: bodyResult,\n manifest: options.manifest,\n });\n ctx.res.end(html);\n };\n}\nexport function createEdgeSsrHandler(options) {\n return async request => {\n const url = new URL(request.url);\n const bodyResult = await options.render({ request, url });\n const headers = new Headers(options.headers);\n if (!headers.has('Content-Type')) {\n headers.set('Content-Type', 'text/html; charset=utf-8');\n }\n if (isAsyncIterable(bodyResult)) {\n const shell = renderHtmlShell({\n template: options.template,\n head: options.head,\n manifest: options.manifest,\n });\n const encoder = new TextEncoder();\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(encoder.encode(shell.start));\n for await (const chunk of bodyResult) {\n controller.enqueue(encoder.encode(chunk));\n }\n controller.enqueue(encoder.encode(shell.end));\n controller.close();\n },\n });\n return new Response(stream, { status: options.status ?? 200, headers });\n }\n const html = renderHtmlDocument({\n template: options.template,\n head: options.head,\n body: bodyResult,\n manifest: options.manifest,\n });\n return new Response(html, { status: options.status ?? 200, headers });\n };\n}\nfunction renderHtmlShell(options) {\n const template = options.template ?? DEFAULT_TEMPLATE;\n const head = options.head ?? '';\n const assets = renderAssetTags(options.manifest);\n const resolved = applyTemplate(template, {\n head,\n assets,\n body: '<!--ce-ui-app-->',\n htmlAttributes: '',\n bodyAttributes: '',\n });\n const marker = '<!--ce-ui-app-->';\n const index = resolved.indexOf(marker);\n if (index === -1) {\n return { start: resolved, end: '' };\n }\n return {\n start: resolved.slice(0, index),\n end: resolved.slice(index + marker.length),\n };\n}\nfunction applyTemplate(template, payload) {\n if (template.includes('<html') || template.includes('<body')) {\n return template\n .replace('<html', `<html${payload.htmlAttributes}`)\n .replace('<body', `<body${payload.bodyAttributes}`)\n .replace('<!--ce-ui-head-->', payload.head)\n .replace('<!--ce-ui-assets-->', payload.assets)\n .replace('<!--ce-ui-app-->', payload.body);\n }\n return template\n .replace('<!--ce-ui-head-->', payload.head)\n .replace('<!--ce-ui-assets-->', payload.assets)\n .replace('<!--ce-ui-app-->', payload.body);\n}\n","import { signal, SignalAccessor } from './signals.js';\nimport { RuntimeErrorBoundary, RuntimeErrorInfo } from './errors.js';\n\nexport type ErrorBoundaryHandler = (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n\nexport interface ErrorBoundaryApi {\n readonly error: SignalAccessor<Error | null>;\n readonly info: SignalAccessor<RuntimeErrorInfo | null>;\n reset(): void;\n handleWith(handler: ErrorBoundaryHandler | null): void;\n}\n\nexport interface ComponentBoundaryController {\n boundary: RuntimeErrorBoundary;\n api: ErrorBoundaryApi;\n}\n\nlet currentBoundaryApi: ErrorBoundaryApi | null = null;\n\nexport function createComponentBoundaryController(options: {\n componentName?: string;\n componentInstanceId: string;\n}): ComponentBoundaryController {\n const errorSignal = signal<Error | null>(null);\n const infoSignal = signal<RuntimeErrorInfo | null>(null);\n let handler: ErrorBoundaryHandler | null = null;\n\n const api: ErrorBoundaryApi = {\n error: errorSignal,\n info: infoSignal,\n reset() {\n errorSignal.set(null);\n infoSignal.set(null);\n },\n handleWith(next) {\n handler = next ?? null;\n },\n };\n\n const boundary: RuntimeErrorBoundary = {\n id: options.componentInstanceId,\n handle(error, info) {\n errorSignal.set(error);\n infoSignal.set(info);\n if (!handler) {\n return false;\n }\n try {\n const handled = handler(error, info);\n if (handled !== false) {\n return true;\n }\n } catch (handlerError) {\n const normalized = handlerError instanceof Error ? handlerError : new Error(String(handlerError));\n errorSignal.set(normalized);\n infoSignal.set(info);\n }\n return false;\n },\n };\n\n return {\n boundary,\n api,\n } satisfies ComponentBoundaryController;\n}\n\nexport function withComponentBoundaryContext<T>(controller: ComponentBoundaryController, run: () => T): T {\n const previous = currentBoundaryApi;\n currentBoundaryApi = controller.api;\n try {\n return run();\n } finally {\n currentBoundaryApi = previous;\n }\n}\n\nexport function useErrorBoundary(handler?: ErrorBoundaryHandler): ErrorBoundaryApi {\n if (!currentBoundaryApi) {\n throw new Error('useErrorBoundary() can only be used while executing a component setup function.');\n }\n if (handler) {\n currentBoundaryApi.handleWith(handler);\n }\n return currentBoundaryApi;\n}\n","import { defineComponent } from './component.js';\nimport { RuntimeErrorInfo } from './errors.js';\nimport { useErrorBoundary } from './error-boundary-context.js';\n\nexport interface ErrorBoundaryProps extends Record<string, unknown> {\n onError?: (payload: { error: Error; info: RuntimeErrorInfo }) => void;\n}\n\nexport const ErrorBoundary = defineComponent<ErrorBoundaryProps>({\n name: 'ErrorBoundary',\n template: `\n <div ce:if=\"!hasError()\" class=\"ce-error-boundary__content\">\n <slot></slot>\n </div>\n <div ce:if=\"hasError()\" class=\"ce-error-boundary__fallback\">\n <slot name=\"fallback\">\n <section class=\"ce-error-boundary__panel\">\n <p class=\"ce-error-boundary__title\">Something went wrong.</p>\n <pre>{{ errorMessage() }}</pre>\n <button type=\"button\" on:click=\"reset\" class=\"ce-error-boundary__reset\">Try again</button>\n </section>\n </slot>\n </div>\n `,\n styles: [\n `.ce-error-boundary__fallback {\n display: block;\n }\n .ce-error-boundary__panel {\n border: 1px dashed var(--ce-border, #f87171);\n padding: 1rem;\n border-radius: 0.75rem;\n background: rgba(248, 113, 113, 0.08);\n color: inherit;\n }\n .ce-error-boundary__title {\n font-weight: 600;\n margin: 0 0 0.5rem;\n }\n .ce-error-boundary__panel pre {\n margin: 0 0 0.75rem;\n padding: 0.5rem;\n background: rgba(15, 23, 42, 0.65);\n border-radius: 0.5rem;\n font-size: 0.85rem;\n line-height: 1.4;\n white-space: pre-wrap;\n }\n .ce-error-boundary__reset {\n display: inline-flex;\n align-items: center;\n padding: 0.35rem 0.75rem;\n border-radius: 0.5rem;\n border: 0;\n cursor: pointer;\n background: var(--ce-primary, #2563eb);\n color: var(--ce-on-primary, #f8fafc);\n }`,\n ],\n setup({ props, emit }) {\n const boundary = useErrorBoundary((error, info) => {\n props.onError?.({ error, info });\n emit('error', { error, info });\n return true;\n });\n\n const hasError = () => Boolean(boundary.error());\n const errorMessage = () => boundary.error()?.message ?? 'Unknown error';\n const reset = () => {\n boundary.reset();\n };\n\n return {\n hasError,\n error: boundary.error,\n info: boundary.info,\n errorMessage,\n reset,\n };\n },\n});\n","import { emitRuntimeErrorReport } from './error-bus.js';\n\nconst inspectedTargets = new WeakSet();\n\nexport function ensureHydrationConsistency(target, context) {\n if (typeof document === 'undefined') {\n return;\n }\n if (inspectedTargets.has(target)) {\n return;\n }\n inspectedTargets.add(target);\n if (!hasServerDom(target)) {\n return;\n }\n const serverDom = snapshotDom(target);\n reportHydrationMismatch({\n templateId: context.templateId,\n componentName: context.componentName,\n componentInstanceId: context.componentInstanceId,\n reason: 'Detected existing server-rendered DOM before client render. Hydration support is not enabled yet.',\n receivedDom: serverDom,\n attributes: {\n serverDomLength: serverDom.length,\n },\n });\n clearNode(target);\n}\n\nexport function reportHydrationMismatch(details) {\n const error = new Error(`[hydration] ${details.reason}`);\n const info = {\n phase: 'hydration',\n componentName: details.componentName,\n componentInstanceId: details.componentInstanceId,\n templateId: details.templateId,\n attributes: {\n ...(details.attributes ?? {}),\n expectedDom: details.expectedDom,\n receivedDom: details.receivedDom,\n timestamp: Date.now(),\n },\n };\n emitRuntimeErrorReport({\n error,\n info,\n handled: true,\n });\n if (typeof console !== 'undefined') {\n console.warn('[ce-ui] hydration mismatch detected', {\n reason: details.reason,\n templateId: details.templateId,\n componentName: details.componentName,\n });\n }\n}\n\nexport function snapshotDom(node) {\n if (node instanceof Element) {\n return node.innerHTML;\n }\n if (node instanceof DocumentFragment) {\n const div = document.createElement('div');\n div.appendChild(node.cloneNode(true));\n return div.innerHTML;\n }\n return node.textContent ?? '';\n}\n\nfunction hasServerDom(target) {\n return 'childNodes' in target && target.childNodes.length > 0;\n}\n\nfunction clearNode(target) {\n while (target.firstChild) {\n target.removeChild(target.firstChild);\n }\n}\n"]}
|
package/dist/lib/dom.cjs
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chunkSZQNIMYI_cjs = require('../chunk-SZQNIMYI.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "$", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkSZQNIMYI_cjs.$; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "$$", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunkSZQNIMYI_cjs.$$; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "$id", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return chunkSZQNIMYI_cjs.$id; }
|
|
20
|
+
});
|
|
21
|
+
Object.defineProperty(exports, "animate", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return chunkSZQNIMYI_cjs.animate; }
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "clone", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () { return chunkSZQNIMYI_cjs.clone; }
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(exports, "create", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () { return chunkSZQNIMYI_cjs.create; }
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(exports, "debounce", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: function () { return chunkSZQNIMYI_cjs.debounce; }
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "default", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () { return chunkSZQNIMYI_cjs.dom_default; }
|
|
40
|
+
});
|
|
41
|
+
Object.defineProperty(exports, "delegate", {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
get: function () { return chunkSZQNIMYI_cjs.delegate; }
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(exports, "elementData", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function () { return chunkSZQNIMYI_cjs.elementData; }
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "fadeIn", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () { return chunkSZQNIMYI_cjs.fadeIn; }
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(exports, "fadeOut", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function () { return chunkSZQNIMYI_cjs.fadeOut; }
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(exports, "fragment", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () { return chunkSZQNIMYI_cjs.fragment; }
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "getFormValues", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () { return chunkSZQNIMYI_cjs.getFormValues; }
|
|
64
|
+
});
|
|
65
|
+
Object.defineProperty(exports, "matches", {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () { return chunkSZQNIMYI_cjs.matches; }
|
|
68
|
+
});
|
|
69
|
+
Object.defineProperty(exports, "onVisible", {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
get: function () { return chunkSZQNIMYI_cjs.onVisible; }
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "ready", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function () { return chunkSZQNIMYI_cjs.ready; }
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(exports, "serializeForm", {
|
|
78
|
+
enumerable: true,
|
|
79
|
+
get: function () { return chunkSZQNIMYI_cjs.serializeForm; }
|
|
80
|
+
});
|
|
81
|
+
Object.defineProperty(exports, "setDebugMode", {
|
|
82
|
+
enumerable: true,
|
|
83
|
+
get: function () { return chunkSZQNIMYI_cjs.setDebugMode; }
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, "slideDown", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function () { return chunkSZQNIMYI_cjs.slideDown; }
|
|
88
|
+
});
|
|
89
|
+
Object.defineProperty(exports, "slideUp", {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
get: function () { return chunkSZQNIMYI_cjs.slideUp; }
|
|
92
|
+
});
|
|
93
|
+
Object.defineProperty(exports, "throttle", {
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: function () { return chunkSZQNIMYI_cjs.throttle; }
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, "waitForElement", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function () { return chunkSZQNIMYI_cjs.waitForElement; }
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=dom.cjs.map
|
|
102
|
+
//# sourceMappingURL=dom.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dom.cjs"}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CE DOM Utilities
|
|
3
|
+
* @description Comprehensive DOM manipulation library for TypeScript projects
|
|
4
|
+
* @author ClusterEnvision
|
|
5
|
+
* @version 2.0.0
|
|
6
|
+
*
|
|
7
|
+
* Provides a jQuery-like chainable API with full type safety, optimized for
|
|
8
|
+
* modern browsers and production use. Includes performance optimizations,
|
|
9
|
+
* error handling, and extensive utility functions.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { $, create, delegate } from '@app/lib/dom';
|
|
14
|
+
*
|
|
15
|
+
* // Select and manipulate
|
|
16
|
+
* $('.button').addClass('active').on('click', handler);
|
|
17
|
+
*
|
|
18
|
+
* // Create elements
|
|
19
|
+
* const btn = create('button', {
|
|
20
|
+
* text: 'Click me',
|
|
21
|
+
* className: 'btn primary',
|
|
22
|
+
* on: { click: () => console.log('clicked') }
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Event delegation
|
|
26
|
+
* delegate('click', '.dynamic-btn', (e, target) => {
|
|
27
|
+
* console.log('Delegated click', target);
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
/** Enable/disable debug mode */
|
|
32
|
+
declare function setDebugMode(enabled: boolean): void;
|
|
33
|
+
type ElementInput = string | HTMLElement | null | undefined;
|
|
34
|
+
type ElementsInput = string | HTMLElement[] | NodeListOf<Element>;
|
|
35
|
+
type EventHandler<T extends Event = Event> = (event: T) => void;
|
|
36
|
+
type DelegateHandler = (event: Event, target: HTMLElement) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Options for creating elements
|
|
39
|
+
* @template K - HTML element tag name type
|
|
40
|
+
*/
|
|
41
|
+
interface CreateElementOptions {
|
|
42
|
+
/** CSS class name */
|
|
43
|
+
className?: string;
|
|
44
|
+
/** Array of CSS classes */
|
|
45
|
+
classes?: string[];
|
|
46
|
+
/** Element ID */
|
|
47
|
+
id?: string;
|
|
48
|
+
/** Text content */
|
|
49
|
+
text?: string;
|
|
50
|
+
/** HTML content */
|
|
51
|
+
html?: string;
|
|
52
|
+
/** HTML attributes */
|
|
53
|
+
attrs?: Record<string, string | number | boolean>;
|
|
54
|
+
/** Data attributes (without 'data-' prefix) */
|
|
55
|
+
data?: Record<string, string | number | boolean>;
|
|
56
|
+
/** Inline styles */
|
|
57
|
+
styles?: Record<string, string | number>;
|
|
58
|
+
/** Event listeners */
|
|
59
|
+
on?: Record<string, EventListener>;
|
|
60
|
+
/** Child elements or text nodes */
|
|
61
|
+
children?: (HTMLElement | string)[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Chainable DOM element wrapper
|
|
65
|
+
* Provides jQuery-like API for DOM manipulation
|
|
66
|
+
*/
|
|
67
|
+
interface DOMElement {
|
|
68
|
+
/** The underlying HTMLElement */
|
|
69
|
+
readonly el: HTMLElement | null;
|
|
70
|
+
addClass(...classes: string[]): DOMElement;
|
|
71
|
+
removeClass(...classes: string[]): DOMElement;
|
|
72
|
+
toggleClass(className: string, force?: boolean): DOMElement;
|
|
73
|
+
hasClass(className: string): boolean;
|
|
74
|
+
attr(name: string): string | null;
|
|
75
|
+
attr(name: string, value: string | number | boolean): DOMElement;
|
|
76
|
+
removeAttr(name: string): DOMElement;
|
|
77
|
+
data(key: string): string | null;
|
|
78
|
+
data(key: string, value: string | number | boolean): DOMElement;
|
|
79
|
+
html(): string;
|
|
80
|
+
html(content: string): DOMElement;
|
|
81
|
+
text(): string;
|
|
82
|
+
text(content: string): DOMElement;
|
|
83
|
+
val(): string;
|
|
84
|
+
val(value: string): DOMElement;
|
|
85
|
+
on(event: string, handler: EventListener, options?: AddEventListenerOptions): DOMElement;
|
|
86
|
+
off(event: string, handler: EventListener): DOMElement;
|
|
87
|
+
once(event: string, handler: EventListener): DOMElement;
|
|
88
|
+
trigger(event: string, detail?: unknown): DOMElement;
|
|
89
|
+
append(content: string | HTMLElement | HTMLElement[]): DOMElement;
|
|
90
|
+
prepend(content: string | HTMLElement | HTMLElement[]): DOMElement;
|
|
91
|
+
before(content: string | HTMLElement): DOMElement;
|
|
92
|
+
after(content: string | HTMLElement): DOMElement;
|
|
93
|
+
remove(): void;
|
|
94
|
+
empty(): DOMElement;
|
|
95
|
+
replace(newContent: string | HTMLElement): void;
|
|
96
|
+
parent(): DOMElement;
|
|
97
|
+
children(): HTMLElement[];
|
|
98
|
+
siblings(): HTMLElement[];
|
|
99
|
+
find(selector: string): DOMElement;
|
|
100
|
+
findAll(selector: string): HTMLElement[];
|
|
101
|
+
closest(selector: string): DOMElement;
|
|
102
|
+
next(): DOMElement;
|
|
103
|
+
prev(): DOMElement;
|
|
104
|
+
css(property: string): string;
|
|
105
|
+
css(property: string, value: string | number): DOMElement;
|
|
106
|
+
css(properties: Record<string, string | number>): DOMElement;
|
|
107
|
+
show(): DOMElement;
|
|
108
|
+
hide(): DOMElement;
|
|
109
|
+
toggle(force?: boolean): DOMElement;
|
|
110
|
+
width(): number;
|
|
111
|
+
height(): number;
|
|
112
|
+
offset(): {
|
|
113
|
+
top: number;
|
|
114
|
+
left: number;
|
|
115
|
+
};
|
|
116
|
+
scrollTop(): number;
|
|
117
|
+
scrollTop(value: number): DOMElement;
|
|
118
|
+
isVisible(): boolean;
|
|
119
|
+
isHidden(): boolean;
|
|
120
|
+
exists(): boolean;
|
|
121
|
+
focus(): DOMElement;
|
|
122
|
+
blur(): DOMElement;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Select a single element (jQuery-like $)
|
|
126
|
+
*
|
|
127
|
+
* @param selector - CSS selector string or HTMLElement
|
|
128
|
+
* @returns DOMElement wrapper for chainable operations
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Select by CSS selector
|
|
133
|
+
* $('button').addClass('active').on('click', handler);
|
|
134
|
+
*
|
|
135
|
+
* // Wrap existing element
|
|
136
|
+
* const el = document.getElementById('app');
|
|
137
|
+
* $(el).css('color', 'red');
|
|
138
|
+
*
|
|
139
|
+
* // Null-safe
|
|
140
|
+
* $('.non-existent').addClass('foo'); // No error
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
declare function $(selector: ElementInput): DOMElement;
|
|
144
|
+
/**
|
|
145
|
+
* Select multiple elements
|
|
146
|
+
*
|
|
147
|
+
* @param selector - CSS selector string
|
|
148
|
+
* @returns Array of HTMLElements (not wrapped)
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* // Get all matching elements
|
|
153
|
+
* $$('.items').forEach(el => $(el).addClass('processed'));
|
|
154
|
+
*
|
|
155
|
+
* // Map and filter
|
|
156
|
+
* const visible = $$('.item').filter(el => $(el).isVisible());
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
declare function $$(selector: string): HTMLElement[];
|
|
160
|
+
/**
|
|
161
|
+
* Select by ID (faster than querySelector)
|
|
162
|
+
*
|
|
163
|
+
* @param id - Element ID (without # prefix)
|
|
164
|
+
* @returns DOMElement wrapper
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* $id('app').html('<h1>Hello</h1>');
|
|
169
|
+
* $id('sidebar').addClass('collapsed');
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
declare function $id(id: string): DOMElement;
|
|
173
|
+
/**
|
|
174
|
+
* Create a new element with comprehensive options
|
|
175
|
+
*
|
|
176
|
+
* @template K - HTML element tag name type
|
|
177
|
+
* @param tag - HTML tag name (e.g., 'div', 'button', 'input')
|
|
178
|
+
* @param options - Configuration options for the element
|
|
179
|
+
* @returns Created HTMLElement of the specified type
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* // Simple button
|
|
184
|
+
* const btn = create('button', {
|
|
185
|
+
* className: 'btn btn-primary',
|
|
186
|
+
* text: 'Click me'
|
|
187
|
+
* });
|
|
188
|
+
*
|
|
189
|
+
* // Complex form input
|
|
190
|
+
* const input = create('input', {
|
|
191
|
+
* classes: ['form-control', 'input-lg'],
|
|
192
|
+
* attrs: { type: 'email', placeholder: 'Enter email', required: true },
|
|
193
|
+
* data: { validation: 'email', maxLength: '255' },
|
|
194
|
+
* on: {
|
|
195
|
+
* input: (e) => console.log('Input changed:', e.target.value),
|
|
196
|
+
* blur: validateEmail
|
|
197
|
+
* }
|
|
198
|
+
* });
|
|
199
|
+
*
|
|
200
|
+
* // Container with children
|
|
201
|
+
* const card = create('div', {
|
|
202
|
+
* className: 'card',
|
|
203
|
+
* children: [
|
|
204
|
+
* create('h3', { text: 'Card Title' }),
|
|
205
|
+
* create('p', { text: 'Card content goes here' }),
|
|
206
|
+
* create('button', { text: 'Action', className: 'btn' })
|
|
207
|
+
* ]
|
|
208
|
+
* });
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
declare function create<K extends keyof HTMLElementTagNameMap>(tag: K, options?: CreateElementOptions): HTMLElementTagNameMap[K];
|
|
212
|
+
/**
|
|
213
|
+
* Create a document fragment from HTML string
|
|
214
|
+
*
|
|
215
|
+
* @param html - HTML string to parse
|
|
216
|
+
* @returns DocumentFragment containing parsed elements
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const frag = fragment(`
|
|
221
|
+
* <div class="card">
|
|
222
|
+
* <h3>Title</h3>
|
|
223
|
+
* <p>Content</p>
|
|
224
|
+
* </div>
|
|
225
|
+
* `);
|
|
226
|
+
* document.body.appendChild(frag);
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
declare function fragment(html: string): DocumentFragment;
|
|
230
|
+
/**
|
|
231
|
+
* Event delegation helper for dynamic elements
|
|
232
|
+
*
|
|
233
|
+
* Attaches a single event listener to a root element and handles events
|
|
234
|
+
* from matching child elements, even if they're added dynamically after
|
|
235
|
+
* the listener is attached.
|
|
236
|
+
*
|
|
237
|
+
* @param event - Event type (e.g., 'click', 'input', 'change')
|
|
238
|
+
* @param selector - CSS selector for target elements
|
|
239
|
+
* @param handler - Callback function receiving event and matched target
|
|
240
|
+
* @param root - Root element or document to attach listener to
|
|
241
|
+
* @returns Cleanup function to remove the delegated listener
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```typescript
|
|
245
|
+
* // Handle clicks on dynamically added buttons
|
|
246
|
+
* const cleanup = delegate('click', '.btn-delete', (e, target) => {
|
|
247
|
+
* const id = target.dataset.id;
|
|
248
|
+
* deleteItem(id);
|
|
249
|
+
* });
|
|
250
|
+
*
|
|
251
|
+
* // With custom root
|
|
252
|
+
* delegate('click', '.item', handleClick, myContainer);
|
|
253
|
+
*
|
|
254
|
+
* // Clean up when done
|
|
255
|
+
* cleanup();
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
declare function delegate(event: string, selector: string, handler: DelegateHandler, root?: HTMLElement | Document): () => void;
|
|
259
|
+
/**
|
|
260
|
+
* Execute callback when DOM is ready
|
|
261
|
+
*
|
|
262
|
+
* Safely runs code when the DOM is fully loaded. If DOM is already ready,
|
|
263
|
+
* executes callback immediately.
|
|
264
|
+
*
|
|
265
|
+
* @param callback - Function to execute when DOM is ready
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* ready(() => {
|
|
270
|
+
* console.log('DOM is ready!');
|
|
271
|
+
* initApp();
|
|
272
|
+
* setupEventListeners();
|
|
273
|
+
* });
|
|
274
|
+
*
|
|
275
|
+
* // Or with arrow function
|
|
276
|
+
* ready(() => $('#app').html('<h1>Loaded</h1>'));
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
declare function ready(callback: () => void): void;
|
|
280
|
+
/**
|
|
281
|
+
* Clone an element deeply
|
|
282
|
+
*/
|
|
283
|
+
declare function clone(element: HTMLElement, deep?: boolean): HTMLElement;
|
|
284
|
+
/**
|
|
285
|
+
* Check if element matches selector
|
|
286
|
+
*/
|
|
287
|
+
declare function matches(element: HTMLElement, selector: string): boolean;
|
|
288
|
+
declare function elementData<T = unknown>(element: HTMLElement, key: string, value?: T): T | undefined;
|
|
289
|
+
/**
|
|
290
|
+
* Serialize form data to object
|
|
291
|
+
*/
|
|
292
|
+
declare function serializeForm(form: HTMLFormElement): Record<string, string>;
|
|
293
|
+
/**
|
|
294
|
+
* Get all form values including nested objects
|
|
295
|
+
*/
|
|
296
|
+
type FormValue = FormDataEntryValue | FormDataEntryValue[];
|
|
297
|
+
declare function getFormValues(form: HTMLFormElement): Record<string, FormValue>;
|
|
298
|
+
/**
|
|
299
|
+
* Debounce function for performance
|
|
300
|
+
*/
|
|
301
|
+
declare function debounce<T extends (...args: unknown[]) => unknown>(func: T, wait: number): (...args: Parameters<T>) => void;
|
|
302
|
+
/**
|
|
303
|
+
* Throttle function for performance
|
|
304
|
+
*/
|
|
305
|
+
declare function throttle<T extends (...args: unknown[]) => unknown>(func: T, limit: number): (...args: Parameters<T>) => void;
|
|
306
|
+
/**
|
|
307
|
+
* Wait for an element to appear in DOM
|
|
308
|
+
*/
|
|
309
|
+
declare function waitForElement(selector: string, timeout?: number): Promise<HTMLElement>;
|
|
310
|
+
/**
|
|
311
|
+
* Execute callback when element becomes visible (intersection observer)
|
|
312
|
+
*/
|
|
313
|
+
declare function onVisible(element: HTMLElement, callback: (entry: IntersectionObserverEntry) => void, options?: IntersectionObserverInit): () => void;
|
|
314
|
+
/**
|
|
315
|
+
* Animate element with CSS transitions
|
|
316
|
+
*/
|
|
317
|
+
declare function animate(element: HTMLElement, properties: Record<string, string>, duration?: number, easing?: string): Promise<void>;
|
|
318
|
+
/**
|
|
319
|
+
* Fade in element
|
|
320
|
+
*/
|
|
321
|
+
declare function fadeIn(element: HTMLElement, duration?: number): Promise<void>;
|
|
322
|
+
/**
|
|
323
|
+
* Fade out element
|
|
324
|
+
*/
|
|
325
|
+
declare function fadeOut(element: HTMLElement, duration?: number): Promise<void>;
|
|
326
|
+
/**
|
|
327
|
+
* Slide down (show) element
|
|
328
|
+
*/
|
|
329
|
+
declare function slideDown(element: HTMLElement, duration?: number): Promise<void>;
|
|
330
|
+
/**
|
|
331
|
+
* Slide up (hide) element
|
|
332
|
+
*/
|
|
333
|
+
declare function slideUp(element: HTMLElement, duration?: number): Promise<void>;
|
|
334
|
+
/**
|
|
335
|
+
* Complete DOM utilities API
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```typescript
|
|
339
|
+
* // Named imports (recommended)
|
|
340
|
+
* import { $, create, delegate } from '@app/lib/dom';
|
|
341
|
+
*
|
|
342
|
+
* // Default import
|
|
343
|
+
* import DOM from '@app/lib/dom';
|
|
344
|
+
* DOM.$('.button').addClass('active');
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
347
|
+
declare const DOMApi: {
|
|
348
|
+
version: string;
|
|
349
|
+
$: typeof $;
|
|
350
|
+
$$: typeof $$;
|
|
351
|
+
$id: typeof $id;
|
|
352
|
+
create: typeof create;
|
|
353
|
+
fragment: typeof fragment;
|
|
354
|
+
delegate: typeof delegate;
|
|
355
|
+
ready: typeof ready;
|
|
356
|
+
clone: typeof clone;
|
|
357
|
+
matches: typeof matches;
|
|
358
|
+
elementData: typeof elementData;
|
|
359
|
+
serializeForm: typeof serializeForm;
|
|
360
|
+
getFormValues: typeof getFormValues;
|
|
361
|
+
debounce: typeof debounce;
|
|
362
|
+
throttle: typeof throttle;
|
|
363
|
+
waitForElement: typeof waitForElement;
|
|
364
|
+
onVisible: typeof onVisible;
|
|
365
|
+
animate: typeof animate;
|
|
366
|
+
fadeIn: typeof fadeIn;
|
|
367
|
+
fadeOut: typeof fadeOut;
|
|
368
|
+
slideDown: typeof slideDown;
|
|
369
|
+
slideUp: typeof slideUp;
|
|
370
|
+
setDebugMode: typeof setDebugMode;
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
export { $, $$, $id, type CreateElementOptions, type DOMElement, type DelegateHandler, type ElementInput, type ElementsInput, type EventHandler, animate, clone, create, debounce, DOMApi as default, delegate, elementData, fadeIn, fadeOut, fragment, getFormValues, matches, onVisible, ready, serializeForm, setDebugMode, slideDown, slideUp, throttle, waitForElement };
|