@openwebf/react-router 0.24.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -431,12 +431,16 @@ interface HybridRouterChangeEvent extends SyntheticEvent {
431
431
  readonly path: string;
432
432
  }
433
433
  type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;
434
+ interface HybridRouterPrerenderingEvent extends SyntheticEvent {
435
+ }
436
+ type HybridRouterPrerenderingEventHandler = EventHandler<HybridRouterPrerenderingEvent>;
434
437
  interface WebFHybridRouterProps {
435
438
  path: string;
436
439
  title?: string;
437
440
  theme?: 'material' | 'cupertino';
438
441
  onScreen?: HybridRouterChangeEventHandler;
439
442
  offScreen?: HybridRouterChangeEventHandler;
443
+ onPrerendering?: HybridRouterPrerenderingEventHandler;
440
444
  children?: ReactNode;
441
445
  }
442
446
  interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {
@@ -444,4 +448,4 @@ interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {
444
448
  declare const WebFRouterLink: FC<WebFHybridRouterProps>;
445
449
 
446
450
  export { Route, Routes, WebFRouter, WebFRouterLink, __unstable_setEnsureRouteMountedCallback, matchPath, matchRoutes, pathToRegex, useLocation, useNavigate, useParams, useRouteContext, useRoutes };
447
- export type { HybridRouteStackEntry, HybridRouterChangeEvent, HybridRouterChangeEventHandler, Location, NavigateFunction, NavigateOptions, NavigationMethods, RouteMatch, RouteObject, RouteParams, RouteProps, RoutesProps, WebFHybridRouterProps, WebFRouterLinkElement };
451
+ export type { HybridRouteStackEntry, HybridRouterChangeEvent, HybridRouterChangeEventHandler, HybridRouterPrerenderingEvent, HybridRouterPrerenderingEventHandler, Location, NavigateFunction, NavigateOptions, NavigationMethods, RouteMatch, RouteObject, RouteParams, RouteProps, RoutesProps, WebFHybridRouterProps, WebFRouterLinkElement };
package/dist/index.esm.js CHANGED
@@ -341,6 +341,13 @@ const RawWebFRouterLink = createWebFComponent({
341
341
  callback(event);
342
342
  },
343
343
  },
344
+ {
345
+ propName: 'onPrerendering',
346
+ eventName: 'prerendering',
347
+ handler: (callback) => (event) => {
348
+ callback(event);
349
+ },
350
+ },
344
351
  ],
345
352
  });
346
353
  const WebFRouterLink = function (props) {
@@ -351,7 +358,12 @@ const WebFRouterLink = function (props) {
351
358
  props.onScreen(event);
352
359
  }
353
360
  };
354
- return (React.createElement(RawWebFRouterLink, { title: props.title, path: props.path, theme: props.theme, onScreen: handleOnScreen, offScreen: props.offScreen }, isRender ? props.children : null));
361
+ const handlePrerendering = (event) => {
362
+ var _a;
363
+ enableRender(true);
364
+ (_a = props.onPrerendering) === null || _a === void 0 ? void 0 : _a.call(props, event);
365
+ };
366
+ return (React.createElement(RawWebFRouterLink, { title: props.title, path: props.path, theme: props.theme, onScreen: handleOnScreen, offScreen: props.offScreen, onPrerendering: handlePrerendering }, isRender ? props.children : null));
355
367
  };
356
368
 
357
369
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.54.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/routes/utils.ts","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/index.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/isDev.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/useMemoizedFn/index.js","../src/utils/RouterLink.tsx","../src/routes/Route.tsx","../src/routes/Routes.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Router management module\n *\n * Encapsulates routing navigation functionality with route guard mechanism for permission checks\n */\nfunction getHybridHistory(): any {\n return (globalThis as any)?.webf?.hybridHistory;\n}\n\ntype RoutePath = string;\n\ntype EnsureRouteMountedCallback = (pathname: string) => Promise<void> | void;\nlet ensureRouteMountedCallback: EnsureRouteMountedCallback | null = null;\n\nexport function __unstable_setEnsureRouteMountedCallback(callback: EnsureRouteMountedCallback | null) {\n ensureRouteMountedCallback = callback;\n}\n\nasync function ensureRouteMounted(pathname: string) {\n if (!ensureRouteMountedCallback) return;\n await ensureRouteMountedCallback(pathname);\n}\n\n/**\n * Single entry in the hybrid router stack.\n * Mirrors the data returned from webf.hybridHistory.buildContextStack.\n */\nexport interface HybridRouteStackEntry {\n path: RoutePath;\n state: any;\n}\n\n/**\n * WebF Router object - provides comprehensive navigation APIs\n * Combines web-like history management with Flutter-like navigation patterns\n */\nexport const WebFRouter = {\n /**\n * Get the current state object associated with the history entry\n */\n get state() {\n return getHybridHistory()?.state;\n },\n\n /**\n * Get the full hybrid router build context stack.\n * The stack is ordered from root route (index 0) to the current top route (last element).\n */\n get stack(): HybridRouteStackEntry[] {\n return (getHybridHistory()?.buildContextStack as HybridRouteStackEntry[]) ?? [];\n },\n \n /**\n * Get the current route path\n */\n get path() {\n return (getHybridHistory()?.path as RoutePath) ?? '/'\n },\n \n /**\n * Navigate to a specified route\n * Applies route guards for permission checks before navigation\n */\n push: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamed(path, { arguments: state })\n },\n \n /**\n * Replace the current route without adding to history\n * Applies route guards for permission checks before navigation\n */\n replace: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushReplacementNamed(path, { arguments: state});\n },\n \n /**\n * Navigate back to the previous route\n */\n back: () => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.back();\n },\n \n /**\n * Close the current screen and return to the previous one\n * Flutter-style navigation method\n */\n pop: (result?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pop(result);\n },\n \n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.popUntil(path)\n },\n \n /**\n * Pop the current route and push a new named route\n */\n popAndPushNamed: async <T extends RoutePath>(path: T, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.popAndPushNamed(path, {arguments: state})\n },\n \n /**\n * Push a new route and remove routes until reaching a specific route\n */\n pushNamedAndRemoveUntil: async <T extends RoutePath>(path: T, state: any, untilPath: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamedAndRemoveUntil(state, path, untilPath)\n },\n \n /**\n * Push a new route and remove all routes until a specific route (Flutter-style)\n */\n pushNamedAndRemoveUntilRoute: async <T extends RoutePath>(newPath: T, untilPath: RoutePath, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(newPath);\n hybridHistory.pushNamedAndRemoveUntilRoute(newPath, untilPath, { arguments: state })\n },\n \n /**\n * Check if the navigator can go back\n */\n canPop: (): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.canPop();\n },\n \n /**\n * Pop the current route if possible\n * Returns true if the pop was successful, false otherwise\n */\n maybePop: (result?: any): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.maybePop(result);\n },\n \n /**\n * Push a new state to the history stack (web-style navigation)\n */\n pushState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pushState(state, name);\n },\n \n /**\n * Replace the current history entry with a new one (web-style navigation)\n */\n replaceState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.replaceState(state, name);\n },\n \n /**\n * Pop and push with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushState: (state: any, name: string): string => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n return hybridHistory.restorablePopAndPushState(state, name);\n },\n \n /**\n * Pop and push named route with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushNamed: async <T extends RoutePath>(path: T, state?: any): Promise<string> => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n return hybridHistory.restorablePopAndPushNamed(path, { arguments: state });\n }\n}\n\n/**\n * Route parameters extracted from dynamic routes\n */\nexport interface RouteParams {\n [key: string]: string;\n}\n\n/**\n * Route match result\n */\nexport interface RouteMatch {\n path: string;\n params: RouteParams;\n isExact: boolean;\n}\n\n/**\n * Convert a route pattern to a regular expression\n * @param pattern Route pattern like \"/user/:userId\" or \"/category/:catId/product/:prodId\"\n * @returns Object with regex and parameter names\n */\nexport function pathToRegex(pattern: string): { regex: RegExp; paramNames: string[] } {\n const paramNames: string[] = [];\n \n if (pattern === '*') {\n paramNames.push('*');\n return { regex: /^(.*)$/, paramNames };\n }\n\n // Escape special regex characters except : and *\n let regexPattern = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n \n // Replace :param with named capture groups\n regexPattern = regexPattern.replace(/:([^\\/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '([^/]+)';\n });\n\n // Replace * with a splat capture group (matches across segments)\n regexPattern = regexPattern.replace(/\\*/g, () => {\n paramNames.push('*');\n return '(.*)';\n });\n \n // Add anchors for exact matching\n regexPattern = `^${regexPattern}$`;\n \n return {\n regex: new RegExp(regexPattern),\n paramNames\n };\n}\n\n/**\n * Match a pathname against a route pattern and extract parameters\n * @param pattern Route pattern like \"/user/:userId\"\n * @param pathname Actual pathname like \"/user/123\"\n * @returns Match result with extracted parameters or null if no match\n */\nexport function matchPath(pattern: string, pathname: string): RouteMatch | null {\n const { regex, paramNames } = pathToRegex(pattern);\n const match = pathname.match(regex);\n \n if (!match) {\n return null;\n }\n \n // Extract parameters from capture groups\n const params: RouteParams = {};\n paramNames.forEach((paramName, index) => {\n params[paramName] = match[index + 1]; // +1 because match[0] is the full match\n });\n \n return {\n path: pattern,\n params,\n isExact: true\n };\n}\n\n/**\n * Find the best matching route from a list of route patterns\n * @param routes Array of route patterns\n * @param pathname Current pathname\n * @returns Best match or null if no routes match\n */\nexport function matchRoutes(routes: string[], pathname: string): RouteMatch | null {\n for (const route of routes) {\n const match = matchPath(route, pathname);\n if (match) {\n return match;\n }\n }\n return null;\n}\n","export var isObject = function (value) {\n return value !== null && typeof value === 'object';\n};\nexport var isFunction = function (value) {\n return typeof value === 'function';\n};\nexport var isString = function (value) { return typeof value === 'string'; };\nexport var isBoolean = function (value) { return typeof value === 'boolean'; };\nexport var isNumber = function (value) { return typeof value === 'number'; };\nexport var isUndef = function (value) { return typeof value === 'undefined'; };\n","var isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\nexport default isDev;\n","import { useMemo, useRef } from 'react';\nimport { isFunction } from '../utils';\nimport isDev from '../utils/isDev';\nvar useMemoizedFn = function (fn) {\n if (isDev) {\n if (!isFunction(fn)) {\n console.error(\"useMemoizedFn expected parameter is a function, got \".concat(typeof fn));\n }\n }\n var fnRef = useRef(fn);\n // why not write `fnRef.current = fn`?\n // https://github.com/alibaba/hooks/issues/728\n fnRef.current = useMemo(function () { return fn; }, [fn]);\n var memoizedFn = useRef(undefined);\n if (!memoizedFn.current) {\n memoizedFn.current = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fnRef.current.apply(this, args);\n };\n }\n return memoizedFn.current;\n};\nexport default useMemoizedFn;\n","import React, { EventHandler, FC, ReactNode, SyntheticEvent, useState } from \"react\";\nimport { createWebFComponent, WebFElementWithMethods } from \"@openwebf/react-core-ui\";\n\nexport interface HybridRouterChangeEvent extends SyntheticEvent {\n readonly state: any;\n readonly kind: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext';\n readonly path: string;\n}\n\nexport type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;\n\nexport interface WebFHybridRouterProps {\n path: string;\n title?: string;\n theme?: 'material' | 'cupertino';\n onScreen?: HybridRouterChangeEventHandler;\n offScreen?: HybridRouterChangeEventHandler;\n children?: ReactNode;\n}\n\n// Define the element interface for WebFRouterLink\nexport interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {}\n\n// Create the raw component using createWebFComponent\nconst RawWebFRouterLink = createWebFComponent<WebFRouterLinkElement, WebFHybridRouterProps>({\n tagName: 'webf-router-link',\n displayName: 'WebFRouterLink',\n\n // Map props to attributes\n attributeProps: ['path', 'title', 'theme'],\n\n // Event handlers\n events: [\n {\n propName: 'onScreen',\n eventName: 'onscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'offScreen',\n eventName: 'offscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n ],\n});\n\nexport const WebFRouterLink: FC<WebFHybridRouterProps> = function (props: WebFHybridRouterProps) {\n const [isRender, enableRender] = useState(false);\n\n const handleOnScreen = (event: HybridRouterChangeEvent) => {\n enableRender(true);\n\n if (props.onScreen) {\n props.onScreen(event);\n }\n };\n\n return (\n <RawWebFRouterLink title={props.title} path={props.path} theme={props.theme} onScreen={handleOnScreen} offScreen={props.offScreen}>\n {isRender ? props.children : null}\n </RawWebFRouterLink>\n );\n}","/**\n * Route Component\n *\n * This component is a core part of the application routing system, responsible for:\n * 1. Managing page rendering and lifecycle\n * 2. Providing route context (RouteContext)\n * 3. Handling page navigation bar (AppBar)\n * 4. Providing page lifecycle hooks\n */\n\nimport React, { useState } from 'react'\n// import { Router, RouterEvents$ } from './router'\nimport { useMemoizedFn } from 'ahooks';\nimport { WebFRouterLink } from '../utils/RouterLink';\n\n/**\n * Route component props interface\n */\nexport interface RouteProps {\n /**\n * Page title\n * Displayed in the center of the navigation bar\n */\n title?: string\n /**\n * Page path\n * Must be a member of the RoutePath enum\n */\n path: string\n /**\n * The concrete path to mount for this route instance.\n * Used internally to support dynamic routes like `/users/:id` mounting at `/users/123`.\n */\n mountedPath?: string\n /**\n * Whether to pre-render\n * If true, the page will be rendered when the app starts, rather than waiting for route navigation\n * Can be used to improve page switching performance or preload data\n *\n * @default false\n */\n prerender?: boolean\n /**\n * Page content\n * The actual page component to render\n */\n element: React.ReactNode\n /**\n * Theme for this route\n * Controls the visual style of the navigation bar and page\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino'\n}\n\n/**\n * Route Component\n *\n * Responsible for managing page rendering, lifecycle and navigation bar\n */\nexport function Route({ path, mountedPath, prerender = false, element, title, theme }: RouteProps) {\n // Mark whether the page has been rendered\n const [hasRendered, updateRender] = useState(false)\n\n /**\n * Rendering control logic\n */\n const shouldPrerender = prerender;\n const shouldRenderChildren = shouldPrerender || hasRendered\n\n /**\n * Handle page display event\n */\n const handleOnScreen = useMemoizedFn(() => {\n updateRender(true);\n })\n\n /**\n * Handle page hide event\n */\n const handleOffScreen = useMemoizedFn(() => {\n })\n\n return (\n <WebFRouterLink path={mountedPath ?? path} title={title} theme={theme} onScreen={handleOnScreen} offScreen={handleOffScreen}>\n {shouldRenderChildren ? element : null}\n </WebFRouterLink>\n )\n}\n","import React, { createContext, useContext, useMemo, Children, isValidElement, useState, useEffect, useRef } from 'react';\nimport { Route } from './Route';\nimport { __unstable_setEnsureRouteMountedCallback, WebFRouter, matchPath } from './utils';\nimport type { HybridRouteStackEntry, RouteMatch, RouteParams } from './utils';\nimport type { HybridRouterChangeEvent } from '../utils/RouterLink';\n\n/**\n * Route context interface\n *\n * Provides page route related state and methods, accessed through the useRouteContext hook\n *\n * @template S - Page state type, defaults to undefined\n */\ninterface RouteContext<S = any> {\n /**\n * Page path\n * Current route path, corresponds to RoutePath enum\n */\n path: string | undefined\n /**\n * The concrete mounted path for this route instance (e.g. `/users/123`).\n */\n mountedPath: string | undefined\n /**\n * Page state\n * State data passed during route navigation\n */\n params: S | undefined\n /**\n * Route parameters extracted from dynamic routes (e.g., :userId in /user/:userId)\n */\n routeParams: RouteParams | undefined\n /**\n * Current active path from router\n */\n activePath: string | undefined\n /**\n * Route event kind\n */\n routeEventKind?: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext'\n}\n\n/**\n * Route context default value\n */\nconst RouteContext = createContext<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n params: undefined,\n routeParams: undefined,\n activePath: undefined,\n routeEventKind: undefined\n});\n\n/**\n * Hook to get route context\n *\n * Use generic parameters to specify the route path and automatically infer the corresponding state type\n *\n * @template T - Route path type, must be a member of the RoutePath enum\n * @returns Type-safe route context object\n *\n * @example\n * ```tsx\n * const { params, path, isActive } = useRouteContext();\n * ```\n */\nexport function useRouteContext() {\n const context = useContext<RouteContext>(RouteContext);\n\n const isActive = context.activePath !== undefined\n && context.mountedPath !== undefined\n && context.activePath === context.mountedPath;\n\n return {\n ...context,\n isActive\n };\n}\n\n/**\n * Location object interface\n */\nexport interface Location {\n /**\n * The path of the current location\n */\n pathname: string;\n /**\n * The state object associated with this location\n */\n state: any;\n /**\n * A unique key for this location\n */\n key?: string;\n}\n\n/**\n * Hook to get the current location\n * \n * @returns Current location object with pathname and state\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const location = useLocation();\n * \n * console.log('Current path:', location.pathname);\n\n * console.log('Location state:', location.state);\n * console.log('Is active:', location.isActive);\n * \n * return <div>Current path: {location.pathname}</div>;\n * }\n * ```\n */\nexport function useLocation(): Location & { isActive: boolean } {\n const context = useRouteContext();\n\n // Create location object from context\n const location = useMemo(() => {\n const pathname = context.activePath || WebFRouter.path;\n \n // Get state - prioritize context params, fallback to WebFRouter.state\n const state = context.isActive\n ? (context.params || WebFRouter.state)\n : WebFRouter.state;\n \n return {\n pathname,\n state,\n isActive: context.isActive,\n key: `${pathname}-${Date.now()}`\n };\n }, [context.isActive, context.activePath, context.params]);\n\n return location;\n}\n\n/**\n * Hook to get route parameters from dynamic routes\n * \n * @returns Route parameters object with parameter names as keys and values as strings\n * \n * @example\n * ```tsx\n * // For route pattern \"/user/:userId\" and actual path \"/user/123\"\n * function UserPage() {\n * const params = useParams();\n * \n * console.log(params.userId); // \"123\"\n * \n * return <div>User ID: {params.userId}</div>;\n * }\n * ```\n */\nexport function useParams(): RouteParams {\n const context = useRouteContext();\n \n return useMemo(() => {\n return context.routeParams || {};\n }, [context.routeParams]);\n}\n\n/**\n * Route configuration object\n */\nexport interface RouteObject {\n /**\n * Path for the route\n */\n path: string;\n /**\n * Element to render for this route\n */\n element: React.ReactNode;\n /**\n * Whether to pre-render this route\n */\n prerender?: boolean;\n /**\n * Theme for this route\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino';\n /**\n * Child routes (not supported yet)\n */\n children?: RouteObject[];\n}\n\n/**\n * Props for the Routes component\n */\nexport interface RoutesProps {\n /**\n * Route components as children\n */\n children: React.ReactNode;\n}\n\n/**\n * Routes component that wraps multiple Route components and provides shared context\n * \n * @example\n * ```tsx\n * <Routes sharedData={{ user: currentUser, theme: 'dark' }}>\n * <Route path=\"/\" element={<Home />} />\n * <Route path=\"/about\" element={<About />} />\n * <Route path=\"/profile\" element={<Profile />} />\n * </Routes>\n * ```\n */\n/**\n * Route-specific context provider that only updates when the route is active\n */\nfunction RouteContextProvider({\n patternPath,\n mountedPath,\n children,\n}: {\n patternPath: string;\n mountedPath: string;\n children: React.ReactNode;\n}) {\n const globalContext = useContext(RouteContext);\n\n // Create a route-specific context that only updates when this route is active\n const routeSpecificContext = useMemo(() => {\n const isActive = globalContext.activePath !== undefined && globalContext.activePath === mountedPath;\n const match = isActive ? matchPath(patternPath, mountedPath) : null;\n\n if (isActive && match) {\n const effectiveParams = globalContext.params !== undefined ? globalContext.params : WebFRouter.state;\n\n return {\n path: patternPath,\n mountedPath,\n params: effectiveParams,\n routeParams: match.params,\n activePath: globalContext.activePath,\n routeEventKind: globalContext.routeEventKind\n };\n }\n\n return {\n path: patternPath,\n mountedPath,\n params: undefined,\n routeParams: undefined,\n activePath: globalContext.activePath,\n routeEventKind: undefined\n };\n }, [patternPath, mountedPath, globalContext.activePath, globalContext.params, globalContext.routeEventKind]);\n\n return (\n <RouteContext.Provider value={routeSpecificContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nfunction patternScore(pattern: string): number {\n if (pattern === '*') return 0;\n const segments = pattern.split('/').filter(Boolean);\n let score = 0;\n for (const segment of segments) {\n if (segment === '*') score += 1;\n else if (segment.startsWith(':')) score += 2;\n else score += 3;\n }\n return score * 100 + segments.length;\n}\n\nfunction findBestMatch(patterns: string[], pathname: string): RouteMatch | null {\n let best: { match: RouteMatch; score: number } | null = null;\n for (const pattern of patterns) {\n const match = matchPath(pattern, pathname);\n if (!match) continue;\n const score = patternScore(pattern);\n if (!best || score > best.score) best = { match, score };\n }\n return best?.match ?? null;\n}\n\nfunction escapeAttributeValue(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nexport function Routes({ children }: RoutesProps) {\n // State to track current route information\n const [routeState, setRouteState] = useState<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n activePath: WebFRouter.path, // Initialize with current path\n params: undefined,\n routeParams: undefined,\n routeEventKind: undefined\n });\n\n const [stack, setStack] = useState<HybridRouteStackEntry[]>(() => WebFRouter.stack);\n const [preMountedPaths, setPreMountedPaths] = useState<string[]>([]);\n\n const routePatternsRef = useRef<string[]>([]);\n const pendingEnsureResolversRef = useRef<Map<string, Array<() => void>>>(new Map());\n\n // Keep a stable view of declared route patterns for event handlers.\n useEffect(() => {\n const patterns: string[] = [];\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) return;\n if (child.type !== Route) return;\n patterns.push(child.props.path);\n });\n routePatternsRef.current = patterns;\n }, [children]);\n \n // Listen to hybridrouterchange event\n useEffect(() => {\n const handleRouteChange = (event: Event) => {\n const routeEvent = event as unknown as HybridRouterChangeEvent;\n \n // Check for new event detail structure with params\n const eventDetail = (event as any).detail;\n\n const newActivePath = WebFRouter.path;\n const newStack = WebFRouter.stack;\n setStack(newStack);\n setPreMountedPaths((prev) => prev.filter((p) => newStack.some((entry) => entry.path === p)));\n\n const bestMatch = newActivePath ? findBestMatch(routePatternsRef.current, newActivePath) : null;\n const routeParams = eventDetail?.params || bestMatch?.params || undefined;\n\n const activeEntry = [...newStack].reverse().find((entry) => entry.path === newActivePath);\n const eventState = activeEntry?.state ?? eventDetail?.state ?? routeEvent.state ?? WebFRouter.state;\n\n // Update state based on event kind\n setRouteState({\n path: routeEvent.path,\n mountedPath: routeEvent.path,\n activePath: newActivePath,\n params: eventState,\n routeParams: routeParams, // Use params from Flutter if available\n routeEventKind: routeEvent.kind\n });\n };\n\n // Add event listener\n document.addEventListener('hybridrouterchange', handleRouteChange);\n\n // Cleanup on unmount\n return () => {\n document.removeEventListener('hybridrouterchange', handleRouteChange);\n };\n }, []);\n\n useEffect(() => {\n __unstable_setEnsureRouteMountedCallback((pathname: string) => {\n if (!pathname) return;\n\n const bestMatch = findBestMatch(routePatternsRef.current, pathname);\n if (!bestMatch) return;\n\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (document.querySelector(selector)) return;\n\n let resolveFn: (() => void) | undefined;\n const promise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n\n pendingEnsureResolversRef.current.set(pathname, [\n ...(pendingEnsureResolversRef.current.get(pathname) ?? []),\n resolveFn!,\n ]);\n\n setPreMountedPaths((prev) => (prev.includes(pathname) ? prev : [...prev, pathname]));\n\n return promise;\n });\n\n return () => {\n __unstable_setEnsureRouteMountedCallback(null);\n };\n }, []);\n\n useEffect(() => {\n const pending = pendingEnsureResolversRef.current;\n for (const [pathname, resolvers] of pending.entries()) {\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (!document.querySelector(selector)) continue;\n for (const resolve of resolvers) resolve();\n pending.delete(pathname);\n }\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n // Global context value\n const globalContextValue = useMemo(() => ({\n path: undefined,\n mountedPath: undefined,\n params: routeState.params,\n routeParams: routeState.routeParams, // Pass through route params from Flutter\n activePath: routeState.activePath,\n routeEventKind: routeState.routeEventKind\n }), [routeState.activePath, routeState.params, routeState.routeParams, routeState.routeEventKind]);\n\n const wrappedChildren = useMemo(() => {\n const declaredRoutes: React.ReactElement[] = [];\n const patterns: string[] = [];\n const declaredPaths = new Set<string>();\n\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) {\n declaredRoutes.push(child as any);\n return;\n }\n\n if (child.type !== Route) {\n console.warn('Routes component should only contain Route components as direct children');\n declaredRoutes.push(child);\n return;\n }\n\n const patternPath: string = child.props.path;\n patterns.push(patternPath);\n declaredPaths.add(patternPath);\n const mountedPath: string = child.props.mountedPath ?? patternPath;\n\n declaredRoutes.push(\n <RouteContextProvider key={`declared:${patternPath}`} patternPath={patternPath} mountedPath={mountedPath}>\n {child}\n </RouteContextProvider>\n );\n });\n\n const mountedPaths: string[] = [];\n for (const entry of stack) mountedPaths.push(entry.path);\n for (const path of preMountedPaths) mountedPaths.push(path);\n if (routeState.activePath && !mountedPaths.includes(routeState.activePath)) mountedPaths.push(routeState.activePath);\n\n const dynamicRoutes: React.ReactElement[] = [];\n const seenMountedPaths = new Set<string>();\n for (const mountedPath of mountedPaths) {\n if (seenMountedPaths.has(mountedPath)) continue;\n seenMountedPaths.add(mountedPath);\n if (declaredPaths.has(mountedPath)) continue;\n\n const bestMatch = findBestMatch(patterns, mountedPath);\n if (!bestMatch) continue;\n\n const matchingRouteElement = Children.toArray(children).find((node) => {\n if (!isValidElement(node)) return false;\n if (node.type !== Route) return false;\n return node.props.path === bestMatch.path;\n }) as React.ReactElement | undefined;\n\n if (!matchingRouteElement) continue;\n\n const routeInstance = React.cloneElement(matchingRouteElement, {\n mountedPath,\n });\n\n dynamicRoutes.push(\n <RouteContextProvider key={`dynamic:${mountedPath}`} patternPath={bestMatch.path} mountedPath={mountedPath}>\n {routeInstance}\n </RouteContextProvider>\n );\n }\n\n return [...declaredRoutes, ...dynamicRoutes];\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n return (\n <RouteContext.Provider value={globalContextValue}>\n {wrappedChildren}\n </RouteContext.Provider>\n );\n}\n\n/**\n * Hook to create routes from a configuration object\n * \n * @param routes Array of route configuration objects\n * @returns React element tree of Routes and Route components\n * \n * @example\n * ```tsx\n * function App() {\n * const routes = useRoutes([\n * { path: '/', element: <Home /> },\n * { path: '/about', element: <About /> },\n * { path: '/users', element: <Users /> },\n * { path: '/contact', element: <Contact /> }\n * ]);\n * \n * return routes;\n * }\n * ```\n */\nexport function useRoutes(routes: RouteObject[]): React.ReactElement | null {\n // Convert route objects to Route components\n const routeElements = useMemo(() => {\n return routes.map((route) => {\n if (route.children && route.children.length > 0) {\n console.warn('Nested routes are not supported yet');\n }\n\n return (\n <Route\n key={route.path}\n path={route.path}\n element={route.element}\n prerender={route.prerender}\n theme={route.theme}\n />\n );\n });\n }, [routes]);\n\n // Return Routes component with Route children\n return <Routes>{routeElements}</Routes>;\n}\n\n\n/**\n * Navigation function type\n */\nexport interface NavigateFunction {\n (to: string, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Navigation options\n */\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Extended navigation object with additional methods\n */\nexport interface NavigationMethods {\n /**\n * Navigate to a route or go back\n */\n navigate: NavigateFunction;\n\n /**\n * Close the current screen and return to the previous one\n */\n pop: (result?: any) => void;\n\n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: string) => void;\n\n /**\n * Pop the current route and push a new route\n */\n popAndPush: (path: string, state?: any) => Promise<void>;\n\n /**\n * Push a new route and remove all routes until a specific route\n */\n pushAndRemoveUntil: (newPath: string, untilPath: string, state?: any) => Promise<void>;\n\n /**\n * Check if the navigator can go back\n */\n canPop: () => boolean;\n\n /**\n * Pop the current route if possible\n */\n maybePop: (result?: any) => boolean;\n}\n\n/**\n * Hook to navigate between routes programmatically\n * \n * @example\n * ```tsx\n * function LoginPage() {\n * const { navigate, pop, canPop } = useNavigate();\n * \n * const handleLogin = async () => {\n * await login();\n * navigate('/dashboard');\n * };\n * \n * const handleReplace = () => {\n * navigate('/home', { replace: true });\n * };\n * \n * const handleWithState = () => {\n * navigate('/profile', { state: { from: 'login' } });\n * };\n * \n * const goBack = () => {\n * if (canPop()) {\n * pop();\n * } else {\n * navigate('/');\n * }\n * };\n * }\n * ```\n */\nexport function useNavigate(): NavigationMethods {\n return useMemo(() => {\n function navigate(to: string | number, options?: NavigateOptions): void {\n if (typeof to === 'number') {\n // Handle relative navigation (e.g., -1 for back)\n if (to === -1) {\n WebFRouter.back();\n } else {\n console.warn('Relative navigation other than -1 is not supported yet');\n }\n return;\n }\n\n // Handle absolute navigation\n if (options?.replace) {\n WebFRouter.replace(to, options.state);\n } else {\n WebFRouter.push(to, options?.state);\n }\n }\n\n return {\n navigate: navigate as NavigateFunction,\n pop: WebFRouter.pop,\n popUntil: WebFRouter.popUntil,\n popAndPush: WebFRouter.popAndPushNamed,\n pushAndRemoveUntil: WebFRouter.pushNamedAndRemoveUntilRoute,\n canPop: WebFRouter.canPop,\n maybePop: WebFRouter.maybePop\n };\n }, []);\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,2,3,4]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.54.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/routes/utils.ts","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/index.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/isDev.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/useMemoizedFn/index.js","../src/utils/RouterLink.tsx","../src/routes/Route.tsx","../src/routes/Routes.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Router management module\n *\n * Encapsulates routing navigation functionality with route guard mechanism for permission checks\n */\nfunction getHybridHistory(): any {\n return (globalThis as any)?.webf?.hybridHistory;\n}\n\ntype RoutePath = string;\n\ntype EnsureRouteMountedCallback = (pathname: string) => Promise<void> | void;\nlet ensureRouteMountedCallback: EnsureRouteMountedCallback | null = null;\n\nexport function __unstable_setEnsureRouteMountedCallback(callback: EnsureRouteMountedCallback | null) {\n ensureRouteMountedCallback = callback;\n}\n\nasync function ensureRouteMounted(pathname: string) {\n if (!ensureRouteMountedCallback) return;\n await ensureRouteMountedCallback(pathname);\n}\n\n/**\n * Single entry in the hybrid router stack.\n * Mirrors the data returned from webf.hybridHistory.buildContextStack.\n */\nexport interface HybridRouteStackEntry {\n path: RoutePath;\n state: any;\n}\n\n/**\n * WebF Router object - provides comprehensive navigation APIs\n * Combines web-like history management with Flutter-like navigation patterns\n */\nexport const WebFRouter = {\n /**\n * Get the current state object associated with the history entry\n */\n get state() {\n return getHybridHistory()?.state;\n },\n\n /**\n * Get the full hybrid router build context stack.\n * The stack is ordered from root route (index 0) to the current top route (last element).\n */\n get stack(): HybridRouteStackEntry[] {\n return (getHybridHistory()?.buildContextStack as HybridRouteStackEntry[]) ?? [];\n },\n \n /**\n * Get the current route path\n */\n get path() {\n return (getHybridHistory()?.path as RoutePath) ?? '/'\n },\n \n /**\n * Navigate to a specified route\n * Applies route guards for permission checks before navigation\n */\n push: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamed(path, { arguments: state })\n },\n \n /**\n * Replace the current route without adding to history\n * Applies route guards for permission checks before navigation\n */\n replace: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushReplacementNamed(path, { arguments: state});\n },\n \n /**\n * Navigate back to the previous route\n */\n back: () => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.back();\n },\n \n /**\n * Close the current screen and return to the previous one\n * Flutter-style navigation method\n */\n pop: (result?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pop(result);\n },\n \n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.popUntil(path)\n },\n \n /**\n * Pop the current route and push a new named route\n */\n popAndPushNamed: async <T extends RoutePath>(path: T, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.popAndPushNamed(path, {arguments: state})\n },\n \n /**\n * Push a new route and remove routes until reaching a specific route\n */\n pushNamedAndRemoveUntil: async <T extends RoutePath>(path: T, state: any, untilPath: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamedAndRemoveUntil(state, path, untilPath)\n },\n \n /**\n * Push a new route and remove all routes until a specific route (Flutter-style)\n */\n pushNamedAndRemoveUntilRoute: async <T extends RoutePath>(newPath: T, untilPath: RoutePath, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(newPath);\n hybridHistory.pushNamedAndRemoveUntilRoute(newPath, untilPath, { arguments: state })\n },\n \n /**\n * Check if the navigator can go back\n */\n canPop: (): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.canPop();\n },\n \n /**\n * Pop the current route if possible\n * Returns true if the pop was successful, false otherwise\n */\n maybePop: (result?: any): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.maybePop(result);\n },\n \n /**\n * Push a new state to the history stack (web-style navigation)\n */\n pushState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pushState(state, name);\n },\n \n /**\n * Replace the current history entry with a new one (web-style navigation)\n */\n replaceState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.replaceState(state, name);\n },\n \n /**\n * Pop and push with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushState: (state: any, name: string): string => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n return hybridHistory.restorablePopAndPushState(state, name);\n },\n \n /**\n * Pop and push named route with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushNamed: async <T extends RoutePath>(path: T, state?: any): Promise<string> => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n return hybridHistory.restorablePopAndPushNamed(path, { arguments: state });\n }\n}\n\n/**\n * Route parameters extracted from dynamic routes\n */\nexport interface RouteParams {\n [key: string]: string;\n}\n\n/**\n * Route match result\n */\nexport interface RouteMatch {\n path: string;\n params: RouteParams;\n isExact: boolean;\n}\n\n/**\n * Convert a route pattern to a regular expression\n * @param pattern Route pattern like \"/user/:userId\" or \"/category/:catId/product/:prodId\"\n * @returns Object with regex and parameter names\n */\nexport function pathToRegex(pattern: string): { regex: RegExp; paramNames: string[] } {\n const paramNames: string[] = [];\n \n if (pattern === '*') {\n paramNames.push('*');\n return { regex: /^(.*)$/, paramNames };\n }\n\n // Escape special regex characters except : and *\n let regexPattern = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n \n // Replace :param with named capture groups\n regexPattern = regexPattern.replace(/:([^\\/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '([^/]+)';\n });\n\n // Replace * with a splat capture group (matches across segments)\n regexPattern = regexPattern.replace(/\\*/g, () => {\n paramNames.push('*');\n return '(.*)';\n });\n \n // Add anchors for exact matching\n regexPattern = `^${regexPattern}$`;\n \n return {\n regex: new RegExp(regexPattern),\n paramNames\n };\n}\n\n/**\n * Match a pathname against a route pattern and extract parameters\n * @param pattern Route pattern like \"/user/:userId\"\n * @param pathname Actual pathname like \"/user/123\"\n * @returns Match result with extracted parameters or null if no match\n */\nexport function matchPath(pattern: string, pathname: string): RouteMatch | null {\n const { regex, paramNames } = pathToRegex(pattern);\n const match = pathname.match(regex);\n \n if (!match) {\n return null;\n }\n \n // Extract parameters from capture groups\n const params: RouteParams = {};\n paramNames.forEach((paramName, index) => {\n params[paramName] = match[index + 1]; // +1 because match[0] is the full match\n });\n \n return {\n path: pattern,\n params,\n isExact: true\n };\n}\n\n/**\n * Find the best matching route from a list of route patterns\n * @param routes Array of route patterns\n * @param pathname Current pathname\n * @returns Best match or null if no routes match\n */\nexport function matchRoutes(routes: string[], pathname: string): RouteMatch | null {\n for (const route of routes) {\n const match = matchPath(route, pathname);\n if (match) {\n return match;\n }\n }\n return null;\n}\n","export var isObject = function (value) {\n return value !== null && typeof value === 'object';\n};\nexport var isFunction = function (value) {\n return typeof value === 'function';\n};\nexport var isString = function (value) { return typeof value === 'string'; };\nexport var isBoolean = function (value) { return typeof value === 'boolean'; };\nexport var isNumber = function (value) { return typeof value === 'number'; };\nexport var isUndef = function (value) { return typeof value === 'undefined'; };\n","var isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\nexport default isDev;\n","import { useMemo, useRef } from 'react';\nimport { isFunction } from '../utils';\nimport isDev from '../utils/isDev';\nvar useMemoizedFn = function (fn) {\n if (isDev) {\n if (!isFunction(fn)) {\n console.error(\"useMemoizedFn expected parameter is a function, got \".concat(typeof fn));\n }\n }\n var fnRef = useRef(fn);\n // why not write `fnRef.current = fn`?\n // https://github.com/alibaba/hooks/issues/728\n fnRef.current = useMemo(function () { return fn; }, [fn]);\n var memoizedFn = useRef(undefined);\n if (!memoizedFn.current) {\n memoizedFn.current = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fnRef.current.apply(this, args);\n };\n }\n return memoizedFn.current;\n};\nexport default useMemoizedFn;\n","import React, { EventHandler, FC, ReactNode, SyntheticEvent, useState } from \"react\";\nimport { createWebFComponent, WebFElementWithMethods } from \"@openwebf/react-core-ui\";\n\nexport interface HybridRouterChangeEvent extends SyntheticEvent {\n readonly state: any;\n readonly kind: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext';\n readonly path: string;\n}\n\nexport type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;\n\nexport interface HybridRouterPrerenderingEvent extends SyntheticEvent {}\n\nexport type HybridRouterPrerenderingEventHandler = EventHandler<HybridRouterPrerenderingEvent>;\n\nexport interface WebFHybridRouterProps {\n path: string;\n title?: string;\n theme?: 'material' | 'cupertino';\n onScreen?: HybridRouterChangeEventHandler;\n offScreen?: HybridRouterChangeEventHandler;\n onPrerendering?: HybridRouterPrerenderingEventHandler;\n children?: ReactNode;\n}\n\n// Define the element interface for WebFRouterLink\nexport interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {}\n\n// Create the raw component using createWebFComponent\nconst RawWebFRouterLink = createWebFComponent<WebFRouterLinkElement, WebFHybridRouterProps>({\n tagName: 'webf-router-link',\n displayName: 'WebFRouterLink',\n\n // Map props to attributes\n attributeProps: ['path', 'title', 'theme'],\n\n // Event handlers\n events: [\n {\n propName: 'onScreen',\n eventName: 'onscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'offScreen',\n eventName: 'offscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'onPrerendering',\n eventName: 'prerendering',\n handler: (callback) => (event) => {\n callback(event as unknown as HybridRouterPrerenderingEvent);\n },\n },\n ],\n});\n\nexport const WebFRouterLink: FC<WebFHybridRouterProps> = function (props: WebFHybridRouterProps) {\n const [isRender, enableRender] = useState(false);\n\n const handleOnScreen = (event: HybridRouterChangeEvent) => {\n enableRender(true);\n\n if (props.onScreen) {\n props.onScreen(event);\n }\n };\n\n const handlePrerendering = (event: HybridRouterPrerenderingEvent) => {\n enableRender(true);\n props.onPrerendering?.(event);\n };\n\n return (\n <RawWebFRouterLink\n title={props.title}\n path={props.path}\n theme={props.theme}\n onScreen={handleOnScreen}\n offScreen={props.offScreen}\n onPrerendering={handlePrerendering}\n >\n {isRender ? props.children : null}\n </RawWebFRouterLink>\n );\n}\n","/**\n * Route Component\n *\n * This component is a core part of the application routing system, responsible for:\n * 1. Managing page rendering and lifecycle\n * 2. Providing route context (RouteContext)\n * 3. Handling page navigation bar (AppBar)\n * 4. Providing page lifecycle hooks\n */\n\nimport React, { useState } from 'react'\n// import { Router, RouterEvents$ } from './router'\nimport { useMemoizedFn } from 'ahooks';\nimport { WebFRouterLink } from '../utils/RouterLink';\n\n/**\n * Route component props interface\n */\nexport interface RouteProps {\n /**\n * Page title\n * Displayed in the center of the navigation bar\n */\n title?: string\n /**\n * Page path\n * Must be a member of the RoutePath enum\n */\n path: string\n /**\n * The concrete path to mount for this route instance.\n * Used internally to support dynamic routes like `/users/:id` mounting at `/users/123`.\n */\n mountedPath?: string\n /**\n * Whether to pre-render\n * If true, the page will be rendered when the app starts, rather than waiting for route navigation\n * Can be used to improve page switching performance or preload data\n *\n * @default false\n */\n prerender?: boolean\n /**\n * Page content\n * The actual page component to render\n */\n element: React.ReactNode\n /**\n * Theme for this route\n * Controls the visual style of the navigation bar and page\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino'\n}\n\n/**\n * Route Component\n *\n * Responsible for managing page rendering, lifecycle and navigation bar\n */\nexport function Route({ path, mountedPath, prerender = false, element, title, theme }: RouteProps) {\n // Mark whether the page has been rendered\n const [hasRendered, updateRender] = useState(false)\n\n /**\n * Rendering control logic\n */\n const shouldPrerender = prerender;\n const shouldRenderChildren = shouldPrerender || hasRendered\n\n /**\n * Handle page display event\n */\n const handleOnScreen = useMemoizedFn(() => {\n updateRender(true);\n })\n\n /**\n * Handle page hide event\n */\n const handleOffScreen = useMemoizedFn(() => {\n })\n\n return (\n <WebFRouterLink path={mountedPath ?? path} title={title} theme={theme} onScreen={handleOnScreen} offScreen={handleOffScreen}>\n {shouldRenderChildren ? element : null}\n </WebFRouterLink>\n )\n}\n","import React, { createContext, useContext, useMemo, Children, isValidElement, useState, useEffect, useRef } from 'react';\nimport { Route } from './Route';\nimport { __unstable_setEnsureRouteMountedCallback, WebFRouter, matchPath } from './utils';\nimport type { HybridRouteStackEntry, RouteMatch, RouteParams } from './utils';\nimport type { HybridRouterChangeEvent } from '../utils/RouterLink';\n\n/**\n * Route context interface\n *\n * Provides page route related state and methods, accessed through the useRouteContext hook\n *\n * @template S - Page state type, defaults to undefined\n */\ninterface RouteContext<S = any> {\n /**\n * Page path\n * Current route path, corresponds to RoutePath enum\n */\n path: string | undefined\n /**\n * The concrete mounted path for this route instance (e.g. `/users/123`).\n */\n mountedPath: string | undefined\n /**\n * Page state\n * State data passed during route navigation\n */\n params: S | undefined\n /**\n * Route parameters extracted from dynamic routes (e.g., :userId in /user/:userId)\n */\n routeParams: RouteParams | undefined\n /**\n * Current active path from router\n */\n activePath: string | undefined\n /**\n * Route event kind\n */\n routeEventKind?: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext'\n}\n\n/**\n * Route context default value\n */\nconst RouteContext = createContext<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n params: undefined,\n routeParams: undefined,\n activePath: undefined,\n routeEventKind: undefined\n});\n\n/**\n * Hook to get route context\n *\n * Use generic parameters to specify the route path and automatically infer the corresponding state type\n *\n * @template T - Route path type, must be a member of the RoutePath enum\n * @returns Type-safe route context object\n *\n * @example\n * ```tsx\n * const { params, path, isActive } = useRouteContext();\n * ```\n */\nexport function useRouteContext() {\n const context = useContext<RouteContext>(RouteContext);\n\n const isActive = context.activePath !== undefined\n && context.mountedPath !== undefined\n && context.activePath === context.mountedPath;\n\n return {\n ...context,\n isActive\n };\n}\n\n/**\n * Location object interface\n */\nexport interface Location {\n /**\n * The path of the current location\n */\n pathname: string;\n /**\n * The state object associated with this location\n */\n state: any;\n /**\n * A unique key for this location\n */\n key?: string;\n}\n\n/**\n * Hook to get the current location\n * \n * @returns Current location object with pathname and state\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const location = useLocation();\n * \n * console.log('Current path:', location.pathname);\n\n * console.log('Location state:', location.state);\n * console.log('Is active:', location.isActive);\n * \n * return <div>Current path: {location.pathname}</div>;\n * }\n * ```\n */\nexport function useLocation(): Location & { isActive: boolean } {\n const context = useRouteContext();\n\n // Create location object from context\n const location = useMemo(() => {\n const pathname = context.activePath || WebFRouter.path;\n \n // Get state - prioritize context params, fallback to WebFRouter.state\n const state = context.isActive\n ? (context.params || WebFRouter.state)\n : WebFRouter.state;\n \n return {\n pathname,\n state,\n isActive: context.isActive,\n key: `${pathname}-${Date.now()}`\n };\n }, [context.isActive, context.activePath, context.params]);\n\n return location;\n}\n\n/**\n * Hook to get route parameters from dynamic routes\n * \n * @returns Route parameters object with parameter names as keys and values as strings\n * \n * @example\n * ```tsx\n * // For route pattern \"/user/:userId\" and actual path \"/user/123\"\n * function UserPage() {\n * const params = useParams();\n * \n * console.log(params.userId); // \"123\"\n * \n * return <div>User ID: {params.userId}</div>;\n * }\n * ```\n */\nexport function useParams(): RouteParams {\n const context = useRouteContext();\n \n return useMemo(() => {\n return context.routeParams || {};\n }, [context.routeParams]);\n}\n\n/**\n * Route configuration object\n */\nexport interface RouteObject {\n /**\n * Path for the route\n */\n path: string;\n /**\n * Element to render for this route\n */\n element: React.ReactNode;\n /**\n * Whether to pre-render this route\n */\n prerender?: boolean;\n /**\n * Theme for this route\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino';\n /**\n * Child routes (not supported yet)\n */\n children?: RouteObject[];\n}\n\n/**\n * Props for the Routes component\n */\nexport interface RoutesProps {\n /**\n * Route components as children\n */\n children: React.ReactNode;\n}\n\n/**\n * Routes component that wraps multiple Route components and provides shared context\n * \n * @example\n * ```tsx\n * <Routes sharedData={{ user: currentUser, theme: 'dark' }}>\n * <Route path=\"/\" element={<Home />} />\n * <Route path=\"/about\" element={<About />} />\n * <Route path=\"/profile\" element={<Profile />} />\n * </Routes>\n * ```\n */\n/**\n * Route-specific context provider that only updates when the route is active\n */\nfunction RouteContextProvider({\n patternPath,\n mountedPath,\n children,\n}: {\n patternPath: string;\n mountedPath: string;\n children: React.ReactNode;\n}) {\n const globalContext = useContext(RouteContext);\n\n // Create a route-specific context that only updates when this route is active\n const routeSpecificContext = useMemo(() => {\n const isActive = globalContext.activePath !== undefined && globalContext.activePath === mountedPath;\n const match = isActive ? matchPath(patternPath, mountedPath) : null;\n\n if (isActive && match) {\n const effectiveParams = globalContext.params !== undefined ? globalContext.params : WebFRouter.state;\n\n return {\n path: patternPath,\n mountedPath,\n params: effectiveParams,\n routeParams: match.params,\n activePath: globalContext.activePath,\n routeEventKind: globalContext.routeEventKind\n };\n }\n\n return {\n path: patternPath,\n mountedPath,\n params: undefined,\n routeParams: undefined,\n activePath: globalContext.activePath,\n routeEventKind: undefined\n };\n }, [patternPath, mountedPath, globalContext.activePath, globalContext.params, globalContext.routeEventKind]);\n\n return (\n <RouteContext.Provider value={routeSpecificContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nfunction patternScore(pattern: string): number {\n if (pattern === '*') return 0;\n const segments = pattern.split('/').filter(Boolean);\n let score = 0;\n for (const segment of segments) {\n if (segment === '*') score += 1;\n else if (segment.startsWith(':')) score += 2;\n else score += 3;\n }\n return score * 100 + segments.length;\n}\n\nfunction findBestMatch(patterns: string[], pathname: string): RouteMatch | null {\n let best: { match: RouteMatch; score: number } | null = null;\n for (const pattern of patterns) {\n const match = matchPath(pattern, pathname);\n if (!match) continue;\n const score = patternScore(pattern);\n if (!best || score > best.score) best = { match, score };\n }\n return best?.match ?? null;\n}\n\nfunction escapeAttributeValue(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nexport function Routes({ children }: RoutesProps) {\n // State to track current route information\n const [routeState, setRouteState] = useState<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n activePath: WebFRouter.path, // Initialize with current path\n params: undefined,\n routeParams: undefined,\n routeEventKind: undefined\n });\n\n const [stack, setStack] = useState<HybridRouteStackEntry[]>(() => WebFRouter.stack);\n const [preMountedPaths, setPreMountedPaths] = useState<string[]>([]);\n\n const routePatternsRef = useRef<string[]>([]);\n const pendingEnsureResolversRef = useRef<Map<string, Array<() => void>>>(new Map());\n\n // Keep a stable view of declared route patterns for event handlers.\n useEffect(() => {\n const patterns: string[] = [];\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) return;\n if (child.type !== Route) return;\n patterns.push(child.props.path);\n });\n routePatternsRef.current = patterns;\n }, [children]);\n \n // Listen to hybridrouterchange event\n useEffect(() => {\n const handleRouteChange = (event: Event) => {\n const routeEvent = event as unknown as HybridRouterChangeEvent;\n \n // Check for new event detail structure with params\n const eventDetail = (event as any).detail;\n\n const newActivePath = WebFRouter.path;\n const newStack = WebFRouter.stack;\n setStack(newStack);\n setPreMountedPaths((prev) => prev.filter((p) => newStack.some((entry) => entry.path === p)));\n\n const bestMatch = newActivePath ? findBestMatch(routePatternsRef.current, newActivePath) : null;\n const routeParams = eventDetail?.params || bestMatch?.params || undefined;\n\n const activeEntry = [...newStack].reverse().find((entry) => entry.path === newActivePath);\n const eventState = activeEntry?.state ?? eventDetail?.state ?? routeEvent.state ?? WebFRouter.state;\n\n // Update state based on event kind\n setRouteState({\n path: routeEvent.path,\n mountedPath: routeEvent.path,\n activePath: newActivePath,\n params: eventState,\n routeParams: routeParams, // Use params from Flutter if available\n routeEventKind: routeEvent.kind\n });\n };\n\n // Add event listener\n document.addEventListener('hybridrouterchange', handleRouteChange);\n\n // Cleanup on unmount\n return () => {\n document.removeEventListener('hybridrouterchange', handleRouteChange);\n };\n }, []);\n\n useEffect(() => {\n __unstable_setEnsureRouteMountedCallback((pathname: string) => {\n if (!pathname) return;\n\n const bestMatch = findBestMatch(routePatternsRef.current, pathname);\n if (!bestMatch) return;\n\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (document.querySelector(selector)) return;\n\n let resolveFn: (() => void) | undefined;\n const promise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n\n pendingEnsureResolversRef.current.set(pathname, [\n ...(pendingEnsureResolversRef.current.get(pathname) ?? []),\n resolveFn!,\n ]);\n\n setPreMountedPaths((prev) => (prev.includes(pathname) ? prev : [...prev, pathname]));\n\n return promise;\n });\n\n return () => {\n __unstable_setEnsureRouteMountedCallback(null);\n };\n }, []);\n\n useEffect(() => {\n const pending = pendingEnsureResolversRef.current;\n for (const [pathname, resolvers] of pending.entries()) {\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (!document.querySelector(selector)) continue;\n for (const resolve of resolvers) resolve();\n pending.delete(pathname);\n }\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n // Global context value\n const globalContextValue = useMemo(() => ({\n path: undefined,\n mountedPath: undefined,\n params: routeState.params,\n routeParams: routeState.routeParams, // Pass through route params from Flutter\n activePath: routeState.activePath,\n routeEventKind: routeState.routeEventKind\n }), [routeState.activePath, routeState.params, routeState.routeParams, routeState.routeEventKind]);\n\n const wrappedChildren = useMemo(() => {\n const declaredRoutes: React.ReactElement[] = [];\n const patterns: string[] = [];\n const declaredPaths = new Set<string>();\n\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) {\n declaredRoutes.push(child as any);\n return;\n }\n\n if (child.type !== Route) {\n console.warn('Routes component should only contain Route components as direct children');\n declaredRoutes.push(child);\n return;\n }\n\n const patternPath: string = child.props.path;\n patterns.push(patternPath);\n declaredPaths.add(patternPath);\n const mountedPath: string = child.props.mountedPath ?? patternPath;\n\n declaredRoutes.push(\n <RouteContextProvider key={`declared:${patternPath}`} patternPath={patternPath} mountedPath={mountedPath}>\n {child}\n </RouteContextProvider>\n );\n });\n\n const mountedPaths: string[] = [];\n for (const entry of stack) mountedPaths.push(entry.path);\n for (const path of preMountedPaths) mountedPaths.push(path);\n if (routeState.activePath && !mountedPaths.includes(routeState.activePath)) mountedPaths.push(routeState.activePath);\n\n const dynamicRoutes: React.ReactElement[] = [];\n const seenMountedPaths = new Set<string>();\n for (const mountedPath of mountedPaths) {\n if (seenMountedPaths.has(mountedPath)) continue;\n seenMountedPaths.add(mountedPath);\n if (declaredPaths.has(mountedPath)) continue;\n\n const bestMatch = findBestMatch(patterns, mountedPath);\n if (!bestMatch) continue;\n\n const matchingRouteElement = Children.toArray(children).find((node) => {\n if (!isValidElement(node)) return false;\n if (node.type !== Route) return false;\n return node.props.path === bestMatch.path;\n }) as React.ReactElement | undefined;\n\n if (!matchingRouteElement) continue;\n\n const routeInstance = React.cloneElement(matchingRouteElement, {\n mountedPath,\n });\n\n dynamicRoutes.push(\n <RouteContextProvider key={`dynamic:${mountedPath}`} patternPath={bestMatch.path} mountedPath={mountedPath}>\n {routeInstance}\n </RouteContextProvider>\n );\n }\n\n return [...declaredRoutes, ...dynamicRoutes];\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n return (\n <RouteContext.Provider value={globalContextValue}>\n {wrappedChildren}\n </RouteContext.Provider>\n );\n}\n\n/**\n * Hook to create routes from a configuration object\n * \n * @param routes Array of route configuration objects\n * @returns React element tree of Routes and Route components\n * \n * @example\n * ```tsx\n * function App() {\n * const routes = useRoutes([\n * { path: '/', element: <Home /> },\n * { path: '/about', element: <About /> },\n * { path: '/users', element: <Users /> },\n * { path: '/contact', element: <Contact /> }\n * ]);\n * \n * return routes;\n * }\n * ```\n */\nexport function useRoutes(routes: RouteObject[]): React.ReactElement | null {\n // Convert route objects to Route components\n const routeElements = useMemo(() => {\n return routes.map((route) => {\n if (route.children && route.children.length > 0) {\n console.warn('Nested routes are not supported yet');\n }\n\n return (\n <Route\n key={route.path}\n path={route.path}\n element={route.element}\n prerender={route.prerender}\n theme={route.theme}\n />\n );\n });\n }, [routes]);\n\n // Return Routes component with Route children\n return <Routes>{routeElements}</Routes>;\n}\n\n\n/**\n * Navigation function type\n */\nexport interface NavigateFunction {\n (to: string, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Navigation options\n */\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Extended navigation object with additional methods\n */\nexport interface NavigationMethods {\n /**\n * Navigate to a route or go back\n */\n navigate: NavigateFunction;\n\n /**\n * Close the current screen and return to the previous one\n */\n pop: (result?: any) => void;\n\n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: string) => void;\n\n /**\n * Pop the current route and push a new route\n */\n popAndPush: (path: string, state?: any) => Promise<void>;\n\n /**\n * Push a new route and remove all routes until a specific route\n */\n pushAndRemoveUntil: (newPath: string, untilPath: string, state?: any) => Promise<void>;\n\n /**\n * Check if the navigator can go back\n */\n canPop: () => boolean;\n\n /**\n * Pop the current route if possible\n */\n maybePop: (result?: any) => boolean;\n}\n\n/**\n * Hook to navigate between routes programmatically\n * \n * @example\n * ```tsx\n * function LoginPage() {\n * const { navigate, pop, canPop } = useNavigate();\n * \n * const handleLogin = async () => {\n * await login();\n * navigate('/dashboard');\n * };\n * \n * const handleReplace = () => {\n * navigate('/home', { replace: true });\n * };\n * \n * const handleWithState = () => {\n * navigate('/profile', { state: { from: 'login' } });\n * };\n * \n * const goBack = () => {\n * if (canPop()) {\n * pop();\n * } else {\n * navigate('/');\n * }\n * };\n * }\n * ```\n */\nexport function useNavigate(): NavigationMethods {\n return useMemo(() => {\n function navigate(to: string | number, options?: NavigateOptions): void {\n if (typeof to === 'number') {\n // Handle relative navigation (e.g., -1 for back)\n if (to === -1) {\n WebFRouter.back();\n } else {\n console.warn('Relative navigation other than -1 is not supported yet');\n }\n return;\n }\n\n // Handle absolute navigation\n if (options?.replace) {\n WebFRouter.replace(to, options.state);\n } else {\n WebFRouter.push(to, options?.state);\n }\n }\n\n return {\n navigate: navigate as NavigateFunction,\n pop: WebFRouter.pop,\n popUntil: WebFRouter.popUntil,\n popAndPush: WebFRouter.popAndPushNamed,\n pushAndRemoveUntil: WebFRouter.pushNamedAndRemoveUntilRoute,\n canPop: WebFRouter.canPop,\n maybePop: WebFRouter.maybePop\n };\n }, []);\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,2,3,4]}
package/dist/index.js CHANGED
@@ -343,6 +343,13 @@ const RawWebFRouterLink = reactCoreUi.createWebFComponent({
343
343
  callback(event);
344
344
  },
345
345
  },
346
+ {
347
+ propName: 'onPrerendering',
348
+ eventName: 'prerendering',
349
+ handler: (callback) => (event) => {
350
+ callback(event);
351
+ },
352
+ },
346
353
  ],
347
354
  });
348
355
  const WebFRouterLink = function (props) {
@@ -353,7 +360,12 @@ const WebFRouterLink = function (props) {
353
360
  props.onScreen(event);
354
361
  }
355
362
  };
356
- return (React.createElement(RawWebFRouterLink, { title: props.title, path: props.path, theme: props.theme, onScreen: handleOnScreen, offScreen: props.offScreen }, isRender ? props.children : null));
363
+ const handlePrerendering = (event) => {
364
+ var _a;
365
+ enableRender(true);
366
+ (_a = props.onPrerendering) === null || _a === void 0 ? void 0 : _a.call(props, event);
367
+ };
368
+ return (React.createElement(RawWebFRouterLink, { title: props.title, path: props.path, theme: props.theme, onScreen: handleOnScreen, offScreen: props.offScreen, onPrerendering: handlePrerendering }, isRender ? props.children : null));
357
369
  };
358
370
 
359
371
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.54.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/routes/utils.ts","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/index.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/isDev.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/useMemoizedFn/index.js","../src/utils/RouterLink.tsx","../src/routes/Route.tsx","../src/routes/Routes.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Router management module\n *\n * Encapsulates routing navigation functionality with route guard mechanism for permission checks\n */\nfunction getHybridHistory(): any {\n return (globalThis as any)?.webf?.hybridHistory;\n}\n\ntype RoutePath = string;\n\ntype EnsureRouteMountedCallback = (pathname: string) => Promise<void> | void;\nlet ensureRouteMountedCallback: EnsureRouteMountedCallback | null = null;\n\nexport function __unstable_setEnsureRouteMountedCallback(callback: EnsureRouteMountedCallback | null) {\n ensureRouteMountedCallback = callback;\n}\n\nasync function ensureRouteMounted(pathname: string) {\n if (!ensureRouteMountedCallback) return;\n await ensureRouteMountedCallback(pathname);\n}\n\n/**\n * Single entry in the hybrid router stack.\n * Mirrors the data returned from webf.hybridHistory.buildContextStack.\n */\nexport interface HybridRouteStackEntry {\n path: RoutePath;\n state: any;\n}\n\n/**\n * WebF Router object - provides comprehensive navigation APIs\n * Combines web-like history management with Flutter-like navigation patterns\n */\nexport const WebFRouter = {\n /**\n * Get the current state object associated with the history entry\n */\n get state() {\n return getHybridHistory()?.state;\n },\n\n /**\n * Get the full hybrid router build context stack.\n * The stack is ordered from root route (index 0) to the current top route (last element).\n */\n get stack(): HybridRouteStackEntry[] {\n return (getHybridHistory()?.buildContextStack as HybridRouteStackEntry[]) ?? [];\n },\n \n /**\n * Get the current route path\n */\n get path() {\n return (getHybridHistory()?.path as RoutePath) ?? '/'\n },\n \n /**\n * Navigate to a specified route\n * Applies route guards for permission checks before navigation\n */\n push: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamed(path, { arguments: state })\n },\n \n /**\n * Replace the current route without adding to history\n * Applies route guards for permission checks before navigation\n */\n replace: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushReplacementNamed(path, { arguments: state});\n },\n \n /**\n * Navigate back to the previous route\n */\n back: () => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.back();\n },\n \n /**\n * Close the current screen and return to the previous one\n * Flutter-style navigation method\n */\n pop: (result?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pop(result);\n },\n \n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.popUntil(path)\n },\n \n /**\n * Pop the current route and push a new named route\n */\n popAndPushNamed: async <T extends RoutePath>(path: T, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.popAndPushNamed(path, {arguments: state})\n },\n \n /**\n * Push a new route and remove routes until reaching a specific route\n */\n pushNamedAndRemoveUntil: async <T extends RoutePath>(path: T, state: any, untilPath: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamedAndRemoveUntil(state, path, untilPath)\n },\n \n /**\n * Push a new route and remove all routes until a specific route (Flutter-style)\n */\n pushNamedAndRemoveUntilRoute: async <T extends RoutePath>(newPath: T, untilPath: RoutePath, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(newPath);\n hybridHistory.pushNamedAndRemoveUntilRoute(newPath, untilPath, { arguments: state })\n },\n \n /**\n * Check if the navigator can go back\n */\n canPop: (): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.canPop();\n },\n \n /**\n * Pop the current route if possible\n * Returns true if the pop was successful, false otherwise\n */\n maybePop: (result?: any): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.maybePop(result);\n },\n \n /**\n * Push a new state to the history stack (web-style navigation)\n */\n pushState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pushState(state, name);\n },\n \n /**\n * Replace the current history entry with a new one (web-style navigation)\n */\n replaceState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.replaceState(state, name);\n },\n \n /**\n * Pop and push with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushState: (state: any, name: string): string => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n return hybridHistory.restorablePopAndPushState(state, name);\n },\n \n /**\n * Pop and push named route with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushNamed: async <T extends RoutePath>(path: T, state?: any): Promise<string> => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n return hybridHistory.restorablePopAndPushNamed(path, { arguments: state });\n }\n}\n\n/**\n * Route parameters extracted from dynamic routes\n */\nexport interface RouteParams {\n [key: string]: string;\n}\n\n/**\n * Route match result\n */\nexport interface RouteMatch {\n path: string;\n params: RouteParams;\n isExact: boolean;\n}\n\n/**\n * Convert a route pattern to a regular expression\n * @param pattern Route pattern like \"/user/:userId\" or \"/category/:catId/product/:prodId\"\n * @returns Object with regex and parameter names\n */\nexport function pathToRegex(pattern: string): { regex: RegExp; paramNames: string[] } {\n const paramNames: string[] = [];\n \n if (pattern === '*') {\n paramNames.push('*');\n return { regex: /^(.*)$/, paramNames };\n }\n\n // Escape special regex characters except : and *\n let regexPattern = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n \n // Replace :param with named capture groups\n regexPattern = regexPattern.replace(/:([^\\/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '([^/]+)';\n });\n\n // Replace * with a splat capture group (matches across segments)\n regexPattern = regexPattern.replace(/\\*/g, () => {\n paramNames.push('*');\n return '(.*)';\n });\n \n // Add anchors for exact matching\n regexPattern = `^${regexPattern}$`;\n \n return {\n regex: new RegExp(regexPattern),\n paramNames\n };\n}\n\n/**\n * Match a pathname against a route pattern and extract parameters\n * @param pattern Route pattern like \"/user/:userId\"\n * @param pathname Actual pathname like \"/user/123\"\n * @returns Match result with extracted parameters or null if no match\n */\nexport function matchPath(pattern: string, pathname: string): RouteMatch | null {\n const { regex, paramNames } = pathToRegex(pattern);\n const match = pathname.match(regex);\n \n if (!match) {\n return null;\n }\n \n // Extract parameters from capture groups\n const params: RouteParams = {};\n paramNames.forEach((paramName, index) => {\n params[paramName] = match[index + 1]; // +1 because match[0] is the full match\n });\n \n return {\n path: pattern,\n params,\n isExact: true\n };\n}\n\n/**\n * Find the best matching route from a list of route patterns\n * @param routes Array of route patterns\n * @param pathname Current pathname\n * @returns Best match or null if no routes match\n */\nexport function matchRoutes(routes: string[], pathname: string): RouteMatch | null {\n for (const route of routes) {\n const match = matchPath(route, pathname);\n if (match) {\n return match;\n }\n }\n return null;\n}\n","export var isObject = function (value) {\n return value !== null && typeof value === 'object';\n};\nexport var isFunction = function (value) {\n return typeof value === 'function';\n};\nexport var isString = function (value) { return typeof value === 'string'; };\nexport var isBoolean = function (value) { return typeof value === 'boolean'; };\nexport var isNumber = function (value) { return typeof value === 'number'; };\nexport var isUndef = function (value) { return typeof value === 'undefined'; };\n","var isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\nexport default isDev;\n","import { useMemo, useRef } from 'react';\nimport { isFunction } from '../utils';\nimport isDev from '../utils/isDev';\nvar useMemoizedFn = function (fn) {\n if (isDev) {\n if (!isFunction(fn)) {\n console.error(\"useMemoizedFn expected parameter is a function, got \".concat(typeof fn));\n }\n }\n var fnRef = useRef(fn);\n // why not write `fnRef.current = fn`?\n // https://github.com/alibaba/hooks/issues/728\n fnRef.current = useMemo(function () { return fn; }, [fn]);\n var memoizedFn = useRef(undefined);\n if (!memoizedFn.current) {\n memoizedFn.current = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fnRef.current.apply(this, args);\n };\n }\n return memoizedFn.current;\n};\nexport default useMemoizedFn;\n","import React, { EventHandler, FC, ReactNode, SyntheticEvent, useState } from \"react\";\nimport { createWebFComponent, WebFElementWithMethods } from \"@openwebf/react-core-ui\";\n\nexport interface HybridRouterChangeEvent extends SyntheticEvent {\n readonly state: any;\n readonly kind: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext';\n readonly path: string;\n}\n\nexport type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;\n\nexport interface WebFHybridRouterProps {\n path: string;\n title?: string;\n theme?: 'material' | 'cupertino';\n onScreen?: HybridRouterChangeEventHandler;\n offScreen?: HybridRouterChangeEventHandler;\n children?: ReactNode;\n}\n\n// Define the element interface for WebFRouterLink\nexport interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {}\n\n// Create the raw component using createWebFComponent\nconst RawWebFRouterLink = createWebFComponent<WebFRouterLinkElement, WebFHybridRouterProps>({\n tagName: 'webf-router-link',\n displayName: 'WebFRouterLink',\n\n // Map props to attributes\n attributeProps: ['path', 'title', 'theme'],\n\n // Event handlers\n events: [\n {\n propName: 'onScreen',\n eventName: 'onscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'offScreen',\n eventName: 'offscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n ],\n});\n\nexport const WebFRouterLink: FC<WebFHybridRouterProps> = function (props: WebFHybridRouterProps) {\n const [isRender, enableRender] = useState(false);\n\n const handleOnScreen = (event: HybridRouterChangeEvent) => {\n enableRender(true);\n\n if (props.onScreen) {\n props.onScreen(event);\n }\n };\n\n return (\n <RawWebFRouterLink title={props.title} path={props.path} theme={props.theme} onScreen={handleOnScreen} offScreen={props.offScreen}>\n {isRender ? props.children : null}\n </RawWebFRouterLink>\n );\n}","/**\n * Route Component\n *\n * This component is a core part of the application routing system, responsible for:\n * 1. Managing page rendering and lifecycle\n * 2. Providing route context (RouteContext)\n * 3. Handling page navigation bar (AppBar)\n * 4. Providing page lifecycle hooks\n */\n\nimport React, { useState } from 'react'\n// import { Router, RouterEvents$ } from './router'\nimport { useMemoizedFn } from 'ahooks';\nimport { WebFRouterLink } from '../utils/RouterLink';\n\n/**\n * Route component props interface\n */\nexport interface RouteProps {\n /**\n * Page title\n * Displayed in the center of the navigation bar\n */\n title?: string\n /**\n * Page path\n * Must be a member of the RoutePath enum\n */\n path: string\n /**\n * The concrete path to mount for this route instance.\n * Used internally to support dynamic routes like `/users/:id` mounting at `/users/123`.\n */\n mountedPath?: string\n /**\n * Whether to pre-render\n * If true, the page will be rendered when the app starts, rather than waiting for route navigation\n * Can be used to improve page switching performance or preload data\n *\n * @default false\n */\n prerender?: boolean\n /**\n * Page content\n * The actual page component to render\n */\n element: React.ReactNode\n /**\n * Theme for this route\n * Controls the visual style of the navigation bar and page\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino'\n}\n\n/**\n * Route Component\n *\n * Responsible for managing page rendering, lifecycle and navigation bar\n */\nexport function Route({ path, mountedPath, prerender = false, element, title, theme }: RouteProps) {\n // Mark whether the page has been rendered\n const [hasRendered, updateRender] = useState(false)\n\n /**\n * Rendering control logic\n */\n const shouldPrerender = prerender;\n const shouldRenderChildren = shouldPrerender || hasRendered\n\n /**\n * Handle page display event\n */\n const handleOnScreen = useMemoizedFn(() => {\n updateRender(true);\n })\n\n /**\n * Handle page hide event\n */\n const handleOffScreen = useMemoizedFn(() => {\n })\n\n return (\n <WebFRouterLink path={mountedPath ?? path} title={title} theme={theme} onScreen={handleOnScreen} offScreen={handleOffScreen}>\n {shouldRenderChildren ? element : null}\n </WebFRouterLink>\n )\n}\n","import React, { createContext, useContext, useMemo, Children, isValidElement, useState, useEffect, useRef } from 'react';\nimport { Route } from './Route';\nimport { __unstable_setEnsureRouteMountedCallback, WebFRouter, matchPath } from './utils';\nimport type { HybridRouteStackEntry, RouteMatch, RouteParams } from './utils';\nimport type { HybridRouterChangeEvent } from '../utils/RouterLink';\n\n/**\n * Route context interface\n *\n * Provides page route related state and methods, accessed through the useRouteContext hook\n *\n * @template S - Page state type, defaults to undefined\n */\ninterface RouteContext<S = any> {\n /**\n * Page path\n * Current route path, corresponds to RoutePath enum\n */\n path: string | undefined\n /**\n * The concrete mounted path for this route instance (e.g. `/users/123`).\n */\n mountedPath: string | undefined\n /**\n * Page state\n * State data passed during route navigation\n */\n params: S | undefined\n /**\n * Route parameters extracted from dynamic routes (e.g., :userId in /user/:userId)\n */\n routeParams: RouteParams | undefined\n /**\n * Current active path from router\n */\n activePath: string | undefined\n /**\n * Route event kind\n */\n routeEventKind?: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext'\n}\n\n/**\n * Route context default value\n */\nconst RouteContext = createContext<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n params: undefined,\n routeParams: undefined,\n activePath: undefined,\n routeEventKind: undefined\n});\n\n/**\n * Hook to get route context\n *\n * Use generic parameters to specify the route path and automatically infer the corresponding state type\n *\n * @template T - Route path type, must be a member of the RoutePath enum\n * @returns Type-safe route context object\n *\n * @example\n * ```tsx\n * const { params, path, isActive } = useRouteContext();\n * ```\n */\nexport function useRouteContext() {\n const context = useContext<RouteContext>(RouteContext);\n\n const isActive = context.activePath !== undefined\n && context.mountedPath !== undefined\n && context.activePath === context.mountedPath;\n\n return {\n ...context,\n isActive\n };\n}\n\n/**\n * Location object interface\n */\nexport interface Location {\n /**\n * The path of the current location\n */\n pathname: string;\n /**\n * The state object associated with this location\n */\n state: any;\n /**\n * A unique key for this location\n */\n key?: string;\n}\n\n/**\n * Hook to get the current location\n * \n * @returns Current location object with pathname and state\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const location = useLocation();\n * \n * console.log('Current path:', location.pathname);\n\n * console.log('Location state:', location.state);\n * console.log('Is active:', location.isActive);\n * \n * return <div>Current path: {location.pathname}</div>;\n * }\n * ```\n */\nexport function useLocation(): Location & { isActive: boolean } {\n const context = useRouteContext();\n\n // Create location object from context\n const location = useMemo(() => {\n const pathname = context.activePath || WebFRouter.path;\n \n // Get state - prioritize context params, fallback to WebFRouter.state\n const state = context.isActive\n ? (context.params || WebFRouter.state)\n : WebFRouter.state;\n \n return {\n pathname,\n state,\n isActive: context.isActive,\n key: `${pathname}-${Date.now()}`\n };\n }, [context.isActive, context.activePath, context.params]);\n\n return location;\n}\n\n/**\n * Hook to get route parameters from dynamic routes\n * \n * @returns Route parameters object with parameter names as keys and values as strings\n * \n * @example\n * ```tsx\n * // For route pattern \"/user/:userId\" and actual path \"/user/123\"\n * function UserPage() {\n * const params = useParams();\n * \n * console.log(params.userId); // \"123\"\n * \n * return <div>User ID: {params.userId}</div>;\n * }\n * ```\n */\nexport function useParams(): RouteParams {\n const context = useRouteContext();\n \n return useMemo(() => {\n return context.routeParams || {};\n }, [context.routeParams]);\n}\n\n/**\n * Route configuration object\n */\nexport interface RouteObject {\n /**\n * Path for the route\n */\n path: string;\n /**\n * Element to render for this route\n */\n element: React.ReactNode;\n /**\n * Whether to pre-render this route\n */\n prerender?: boolean;\n /**\n * Theme for this route\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino';\n /**\n * Child routes (not supported yet)\n */\n children?: RouteObject[];\n}\n\n/**\n * Props for the Routes component\n */\nexport interface RoutesProps {\n /**\n * Route components as children\n */\n children: React.ReactNode;\n}\n\n/**\n * Routes component that wraps multiple Route components and provides shared context\n * \n * @example\n * ```tsx\n * <Routes sharedData={{ user: currentUser, theme: 'dark' }}>\n * <Route path=\"/\" element={<Home />} />\n * <Route path=\"/about\" element={<About />} />\n * <Route path=\"/profile\" element={<Profile />} />\n * </Routes>\n * ```\n */\n/**\n * Route-specific context provider that only updates when the route is active\n */\nfunction RouteContextProvider({\n patternPath,\n mountedPath,\n children,\n}: {\n patternPath: string;\n mountedPath: string;\n children: React.ReactNode;\n}) {\n const globalContext = useContext(RouteContext);\n\n // Create a route-specific context that only updates when this route is active\n const routeSpecificContext = useMemo(() => {\n const isActive = globalContext.activePath !== undefined && globalContext.activePath === mountedPath;\n const match = isActive ? matchPath(patternPath, mountedPath) : null;\n\n if (isActive && match) {\n const effectiveParams = globalContext.params !== undefined ? globalContext.params : WebFRouter.state;\n\n return {\n path: patternPath,\n mountedPath,\n params: effectiveParams,\n routeParams: match.params,\n activePath: globalContext.activePath,\n routeEventKind: globalContext.routeEventKind\n };\n }\n\n return {\n path: patternPath,\n mountedPath,\n params: undefined,\n routeParams: undefined,\n activePath: globalContext.activePath,\n routeEventKind: undefined\n };\n }, [patternPath, mountedPath, globalContext.activePath, globalContext.params, globalContext.routeEventKind]);\n\n return (\n <RouteContext.Provider value={routeSpecificContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nfunction patternScore(pattern: string): number {\n if (pattern === '*') return 0;\n const segments = pattern.split('/').filter(Boolean);\n let score = 0;\n for (const segment of segments) {\n if (segment === '*') score += 1;\n else if (segment.startsWith(':')) score += 2;\n else score += 3;\n }\n return score * 100 + segments.length;\n}\n\nfunction findBestMatch(patterns: string[], pathname: string): RouteMatch | null {\n let best: { match: RouteMatch; score: number } | null = null;\n for (const pattern of patterns) {\n const match = matchPath(pattern, pathname);\n if (!match) continue;\n const score = patternScore(pattern);\n if (!best || score > best.score) best = { match, score };\n }\n return best?.match ?? null;\n}\n\nfunction escapeAttributeValue(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nexport function Routes({ children }: RoutesProps) {\n // State to track current route information\n const [routeState, setRouteState] = useState<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n activePath: WebFRouter.path, // Initialize with current path\n params: undefined,\n routeParams: undefined,\n routeEventKind: undefined\n });\n\n const [stack, setStack] = useState<HybridRouteStackEntry[]>(() => WebFRouter.stack);\n const [preMountedPaths, setPreMountedPaths] = useState<string[]>([]);\n\n const routePatternsRef = useRef<string[]>([]);\n const pendingEnsureResolversRef = useRef<Map<string, Array<() => void>>>(new Map());\n\n // Keep a stable view of declared route patterns for event handlers.\n useEffect(() => {\n const patterns: string[] = [];\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) return;\n if (child.type !== Route) return;\n patterns.push(child.props.path);\n });\n routePatternsRef.current = patterns;\n }, [children]);\n \n // Listen to hybridrouterchange event\n useEffect(() => {\n const handleRouteChange = (event: Event) => {\n const routeEvent = event as unknown as HybridRouterChangeEvent;\n \n // Check for new event detail structure with params\n const eventDetail = (event as any).detail;\n\n const newActivePath = WebFRouter.path;\n const newStack = WebFRouter.stack;\n setStack(newStack);\n setPreMountedPaths((prev) => prev.filter((p) => newStack.some((entry) => entry.path === p)));\n\n const bestMatch = newActivePath ? findBestMatch(routePatternsRef.current, newActivePath) : null;\n const routeParams = eventDetail?.params || bestMatch?.params || undefined;\n\n const activeEntry = [...newStack].reverse().find((entry) => entry.path === newActivePath);\n const eventState = activeEntry?.state ?? eventDetail?.state ?? routeEvent.state ?? WebFRouter.state;\n\n // Update state based on event kind\n setRouteState({\n path: routeEvent.path,\n mountedPath: routeEvent.path,\n activePath: newActivePath,\n params: eventState,\n routeParams: routeParams, // Use params from Flutter if available\n routeEventKind: routeEvent.kind\n });\n };\n\n // Add event listener\n document.addEventListener('hybridrouterchange', handleRouteChange);\n\n // Cleanup on unmount\n return () => {\n document.removeEventListener('hybridrouterchange', handleRouteChange);\n };\n }, []);\n\n useEffect(() => {\n __unstable_setEnsureRouteMountedCallback((pathname: string) => {\n if (!pathname) return;\n\n const bestMatch = findBestMatch(routePatternsRef.current, pathname);\n if (!bestMatch) return;\n\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (document.querySelector(selector)) return;\n\n let resolveFn: (() => void) | undefined;\n const promise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n\n pendingEnsureResolversRef.current.set(pathname, [\n ...(pendingEnsureResolversRef.current.get(pathname) ?? []),\n resolveFn!,\n ]);\n\n setPreMountedPaths((prev) => (prev.includes(pathname) ? prev : [...prev, pathname]));\n\n return promise;\n });\n\n return () => {\n __unstable_setEnsureRouteMountedCallback(null);\n };\n }, []);\n\n useEffect(() => {\n const pending = pendingEnsureResolversRef.current;\n for (const [pathname, resolvers] of pending.entries()) {\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (!document.querySelector(selector)) continue;\n for (const resolve of resolvers) resolve();\n pending.delete(pathname);\n }\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n // Global context value\n const globalContextValue = useMemo(() => ({\n path: undefined,\n mountedPath: undefined,\n params: routeState.params,\n routeParams: routeState.routeParams, // Pass through route params from Flutter\n activePath: routeState.activePath,\n routeEventKind: routeState.routeEventKind\n }), [routeState.activePath, routeState.params, routeState.routeParams, routeState.routeEventKind]);\n\n const wrappedChildren = useMemo(() => {\n const declaredRoutes: React.ReactElement[] = [];\n const patterns: string[] = [];\n const declaredPaths = new Set<string>();\n\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) {\n declaredRoutes.push(child as any);\n return;\n }\n\n if (child.type !== Route) {\n console.warn('Routes component should only contain Route components as direct children');\n declaredRoutes.push(child);\n return;\n }\n\n const patternPath: string = child.props.path;\n patterns.push(patternPath);\n declaredPaths.add(patternPath);\n const mountedPath: string = child.props.mountedPath ?? patternPath;\n\n declaredRoutes.push(\n <RouteContextProvider key={`declared:${patternPath}`} patternPath={patternPath} mountedPath={mountedPath}>\n {child}\n </RouteContextProvider>\n );\n });\n\n const mountedPaths: string[] = [];\n for (const entry of stack) mountedPaths.push(entry.path);\n for (const path of preMountedPaths) mountedPaths.push(path);\n if (routeState.activePath && !mountedPaths.includes(routeState.activePath)) mountedPaths.push(routeState.activePath);\n\n const dynamicRoutes: React.ReactElement[] = [];\n const seenMountedPaths = new Set<string>();\n for (const mountedPath of mountedPaths) {\n if (seenMountedPaths.has(mountedPath)) continue;\n seenMountedPaths.add(mountedPath);\n if (declaredPaths.has(mountedPath)) continue;\n\n const bestMatch = findBestMatch(patterns, mountedPath);\n if (!bestMatch) continue;\n\n const matchingRouteElement = Children.toArray(children).find((node) => {\n if (!isValidElement(node)) return false;\n if (node.type !== Route) return false;\n return node.props.path === bestMatch.path;\n }) as React.ReactElement | undefined;\n\n if (!matchingRouteElement) continue;\n\n const routeInstance = React.cloneElement(matchingRouteElement, {\n mountedPath,\n });\n\n dynamicRoutes.push(\n <RouteContextProvider key={`dynamic:${mountedPath}`} patternPath={bestMatch.path} mountedPath={mountedPath}>\n {routeInstance}\n </RouteContextProvider>\n );\n }\n\n return [...declaredRoutes, ...dynamicRoutes];\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n return (\n <RouteContext.Provider value={globalContextValue}>\n {wrappedChildren}\n </RouteContext.Provider>\n );\n}\n\n/**\n * Hook to create routes from a configuration object\n * \n * @param routes Array of route configuration objects\n * @returns React element tree of Routes and Route components\n * \n * @example\n * ```tsx\n * function App() {\n * const routes = useRoutes([\n * { path: '/', element: <Home /> },\n * { path: '/about', element: <About /> },\n * { path: '/users', element: <Users /> },\n * { path: '/contact', element: <Contact /> }\n * ]);\n * \n * return routes;\n * }\n * ```\n */\nexport function useRoutes(routes: RouteObject[]): React.ReactElement | null {\n // Convert route objects to Route components\n const routeElements = useMemo(() => {\n return routes.map((route) => {\n if (route.children && route.children.length > 0) {\n console.warn('Nested routes are not supported yet');\n }\n\n return (\n <Route\n key={route.path}\n path={route.path}\n element={route.element}\n prerender={route.prerender}\n theme={route.theme}\n />\n );\n });\n }, [routes]);\n\n // Return Routes component with Route children\n return <Routes>{routeElements}</Routes>;\n}\n\n\n/**\n * Navigation function type\n */\nexport interface NavigateFunction {\n (to: string, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Navigation options\n */\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Extended navigation object with additional methods\n */\nexport interface NavigationMethods {\n /**\n * Navigate to a route or go back\n */\n navigate: NavigateFunction;\n\n /**\n * Close the current screen and return to the previous one\n */\n pop: (result?: any) => void;\n\n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: string) => void;\n\n /**\n * Pop the current route and push a new route\n */\n popAndPush: (path: string, state?: any) => Promise<void>;\n\n /**\n * Push a new route and remove all routes until a specific route\n */\n pushAndRemoveUntil: (newPath: string, untilPath: string, state?: any) => Promise<void>;\n\n /**\n * Check if the navigator can go back\n */\n canPop: () => boolean;\n\n /**\n * Pop the current route if possible\n */\n maybePop: (result?: any) => boolean;\n}\n\n/**\n * Hook to navigate between routes programmatically\n * \n * @example\n * ```tsx\n * function LoginPage() {\n * const { navigate, pop, canPop } = useNavigate();\n * \n * const handleLogin = async () => {\n * await login();\n * navigate('/dashboard');\n * };\n * \n * const handleReplace = () => {\n * navigate('/home', { replace: true });\n * };\n * \n * const handleWithState = () => {\n * navigate('/profile', { state: { from: 'login' } });\n * };\n * \n * const goBack = () => {\n * if (canPop()) {\n * pop();\n * } else {\n * navigate('/');\n * }\n * };\n * }\n * ```\n */\nexport function useNavigate(): NavigationMethods {\n return useMemo(() => {\n function navigate(to: string | number, options?: NavigateOptions): void {\n if (typeof to === 'number') {\n // Handle relative navigation (e.g., -1 for back)\n if (to === -1) {\n WebFRouter.back();\n } else {\n console.warn('Relative navigation other than -1 is not supported yet');\n }\n return;\n }\n\n // Handle absolute navigation\n if (options?.replace) {\n WebFRouter.replace(to, options.state);\n } else {\n WebFRouter.push(to, options?.state);\n }\n }\n\n return {\n navigate: navigate as NavigateFunction,\n pop: WebFRouter.pop,\n popUntil: WebFRouter.popUntil,\n popAndPush: WebFRouter.popAndPushNamed,\n pushAndRemoveUntil: WebFRouter.pushNamedAndRemoveUntilRoute,\n canPop: WebFRouter.canPop,\n maybePop: WebFRouter.maybePop\n };\n }, []);\n}\n"],"names":["useRef","useMemo","createWebFComponent","useState","createContext","useContext","useEffect","Children","isValidElement"],"mappings":"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","x_google_ignoreList":[0,2,3,4]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.54.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/routes/utils.ts","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/index.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/utils/isDev.js","../node_modules/.pnpm/ahooks@3.9.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/ahooks/es/useMemoizedFn/index.js","../src/utils/RouterLink.tsx","../src/routes/Route.tsx","../src/routes/Routes.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Router management module\n *\n * Encapsulates routing navigation functionality with route guard mechanism for permission checks\n */\nfunction getHybridHistory(): any {\n return (globalThis as any)?.webf?.hybridHistory;\n}\n\ntype RoutePath = string;\n\ntype EnsureRouteMountedCallback = (pathname: string) => Promise<void> | void;\nlet ensureRouteMountedCallback: EnsureRouteMountedCallback | null = null;\n\nexport function __unstable_setEnsureRouteMountedCallback(callback: EnsureRouteMountedCallback | null) {\n ensureRouteMountedCallback = callback;\n}\n\nasync function ensureRouteMounted(pathname: string) {\n if (!ensureRouteMountedCallback) return;\n await ensureRouteMountedCallback(pathname);\n}\n\n/**\n * Single entry in the hybrid router stack.\n * Mirrors the data returned from webf.hybridHistory.buildContextStack.\n */\nexport interface HybridRouteStackEntry {\n path: RoutePath;\n state: any;\n}\n\n/**\n * WebF Router object - provides comprehensive navigation APIs\n * Combines web-like history management with Flutter-like navigation patterns\n */\nexport const WebFRouter = {\n /**\n * Get the current state object associated with the history entry\n */\n get state() {\n return getHybridHistory()?.state;\n },\n\n /**\n * Get the full hybrid router build context stack.\n * The stack is ordered from root route (index 0) to the current top route (last element).\n */\n get stack(): HybridRouteStackEntry[] {\n return (getHybridHistory()?.buildContextStack as HybridRouteStackEntry[]) ?? [];\n },\n \n /**\n * Get the current route path\n */\n get path() {\n return (getHybridHistory()?.path as RoutePath) ?? '/'\n },\n \n /**\n * Navigate to a specified route\n * Applies route guards for permission checks before navigation\n */\n push: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamed(path, { arguments: state })\n },\n \n /**\n * Replace the current route without adding to history\n * Applies route guards for permission checks before navigation\n */\n replace: async <P extends RoutePath>(path: P, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushReplacementNamed(path, { arguments: state});\n },\n \n /**\n * Navigate back to the previous route\n */\n back: () => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.back();\n },\n \n /**\n * Close the current screen and return to the previous one\n * Flutter-style navigation method\n */\n pop: (result?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pop(result);\n },\n \n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.popUntil(path)\n },\n \n /**\n * Pop the current route and push a new named route\n */\n popAndPushNamed: async <T extends RoutePath>(path: T, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.popAndPushNamed(path, {arguments: state})\n },\n \n /**\n * Push a new route and remove routes until reaching a specific route\n */\n pushNamedAndRemoveUntil: async <T extends RoutePath>(path: T, state: any, untilPath: RoutePath) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n hybridHistory.pushNamedAndRemoveUntil(state, path, untilPath)\n },\n \n /**\n * Push a new route and remove all routes until a specific route (Flutter-style)\n */\n pushNamedAndRemoveUntilRoute: async <T extends RoutePath>(newPath: T, untilPath: RoutePath, state?: any) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(newPath);\n hybridHistory.pushNamedAndRemoveUntilRoute(newPath, untilPath, { arguments: state })\n },\n \n /**\n * Check if the navigator can go back\n */\n canPop: (): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.canPop();\n },\n \n /**\n * Pop the current route if possible\n * Returns true if the pop was successful, false otherwise\n */\n maybePop: (result?: any): boolean => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) return false;\n return hybridHistory.maybePop(result);\n },\n \n /**\n * Push a new state to the history stack (web-style navigation)\n */\n pushState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.pushState(state, name);\n },\n \n /**\n * Replace the current history entry with a new one (web-style navigation)\n */\n replaceState: (state: any, name: string) => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n hybridHistory.replaceState(state, name);\n },\n \n /**\n * Pop and push with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushState: (state: any, name: string): string => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n return hybridHistory.restorablePopAndPushState(state, name);\n },\n \n /**\n * Pop and push named route with restoration capability\n * Returns a restoration ID string\n */\n restorablePopAndPushNamed: async <T extends RoutePath>(path: T, state?: any): Promise<string> => {\n const hybridHistory = getHybridHistory();\n if (!hybridHistory) throw new Error('WebF hybridHistory is not available');\n await ensureRouteMounted(path);\n return hybridHistory.restorablePopAndPushNamed(path, { arguments: state });\n }\n}\n\n/**\n * Route parameters extracted from dynamic routes\n */\nexport interface RouteParams {\n [key: string]: string;\n}\n\n/**\n * Route match result\n */\nexport interface RouteMatch {\n path: string;\n params: RouteParams;\n isExact: boolean;\n}\n\n/**\n * Convert a route pattern to a regular expression\n * @param pattern Route pattern like \"/user/:userId\" or \"/category/:catId/product/:prodId\"\n * @returns Object with regex and parameter names\n */\nexport function pathToRegex(pattern: string): { regex: RegExp; paramNames: string[] } {\n const paramNames: string[] = [];\n \n if (pattern === '*') {\n paramNames.push('*');\n return { regex: /^(.*)$/, paramNames };\n }\n\n // Escape special regex characters except : and *\n let regexPattern = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n \n // Replace :param with named capture groups\n regexPattern = regexPattern.replace(/:([^\\/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '([^/]+)';\n });\n\n // Replace * with a splat capture group (matches across segments)\n regexPattern = regexPattern.replace(/\\*/g, () => {\n paramNames.push('*');\n return '(.*)';\n });\n \n // Add anchors for exact matching\n regexPattern = `^${regexPattern}$`;\n \n return {\n regex: new RegExp(regexPattern),\n paramNames\n };\n}\n\n/**\n * Match a pathname against a route pattern and extract parameters\n * @param pattern Route pattern like \"/user/:userId\"\n * @param pathname Actual pathname like \"/user/123\"\n * @returns Match result with extracted parameters or null if no match\n */\nexport function matchPath(pattern: string, pathname: string): RouteMatch | null {\n const { regex, paramNames } = pathToRegex(pattern);\n const match = pathname.match(regex);\n \n if (!match) {\n return null;\n }\n \n // Extract parameters from capture groups\n const params: RouteParams = {};\n paramNames.forEach((paramName, index) => {\n params[paramName] = match[index + 1]; // +1 because match[0] is the full match\n });\n \n return {\n path: pattern,\n params,\n isExact: true\n };\n}\n\n/**\n * Find the best matching route from a list of route patterns\n * @param routes Array of route patterns\n * @param pathname Current pathname\n * @returns Best match or null if no routes match\n */\nexport function matchRoutes(routes: string[], pathname: string): RouteMatch | null {\n for (const route of routes) {\n const match = matchPath(route, pathname);\n if (match) {\n return match;\n }\n }\n return null;\n}\n","export var isObject = function (value) {\n return value !== null && typeof value === 'object';\n};\nexport var isFunction = function (value) {\n return typeof value === 'function';\n};\nexport var isString = function (value) { return typeof value === 'string'; };\nexport var isBoolean = function (value) { return typeof value === 'boolean'; };\nexport var isNumber = function (value) { return typeof value === 'number'; };\nexport var isUndef = function (value) { return typeof value === 'undefined'; };\n","var isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\nexport default isDev;\n","import { useMemo, useRef } from 'react';\nimport { isFunction } from '../utils';\nimport isDev from '../utils/isDev';\nvar useMemoizedFn = function (fn) {\n if (isDev) {\n if (!isFunction(fn)) {\n console.error(\"useMemoizedFn expected parameter is a function, got \".concat(typeof fn));\n }\n }\n var fnRef = useRef(fn);\n // why not write `fnRef.current = fn`?\n // https://github.com/alibaba/hooks/issues/728\n fnRef.current = useMemo(function () { return fn; }, [fn]);\n var memoizedFn = useRef(undefined);\n if (!memoizedFn.current) {\n memoizedFn.current = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fnRef.current.apply(this, args);\n };\n }\n return memoizedFn.current;\n};\nexport default useMemoizedFn;\n","import React, { EventHandler, FC, ReactNode, SyntheticEvent, useState } from \"react\";\nimport { createWebFComponent, WebFElementWithMethods } from \"@openwebf/react-core-ui\";\n\nexport interface HybridRouterChangeEvent extends SyntheticEvent {\n readonly state: any;\n readonly kind: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext';\n readonly path: string;\n}\n\nexport type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;\n\nexport interface HybridRouterPrerenderingEvent extends SyntheticEvent {}\n\nexport type HybridRouterPrerenderingEventHandler = EventHandler<HybridRouterPrerenderingEvent>;\n\nexport interface WebFHybridRouterProps {\n path: string;\n title?: string;\n theme?: 'material' | 'cupertino';\n onScreen?: HybridRouterChangeEventHandler;\n offScreen?: HybridRouterChangeEventHandler;\n onPrerendering?: HybridRouterPrerenderingEventHandler;\n children?: ReactNode;\n}\n\n// Define the element interface for WebFRouterLink\nexport interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {}\n\n// Create the raw component using createWebFComponent\nconst RawWebFRouterLink = createWebFComponent<WebFRouterLinkElement, WebFHybridRouterProps>({\n tagName: 'webf-router-link',\n displayName: 'WebFRouterLink',\n\n // Map props to attributes\n attributeProps: ['path', 'title', 'theme'],\n\n // Event handlers\n events: [\n {\n propName: 'onScreen',\n eventName: 'onscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'offScreen',\n eventName: 'offscreen',\n handler: (callback) => (event) => {\n // Cast through unknown first for proper type conversion\n callback(event as unknown as HybridRouterChangeEvent);\n },\n },\n {\n propName: 'onPrerendering',\n eventName: 'prerendering',\n handler: (callback) => (event) => {\n callback(event as unknown as HybridRouterPrerenderingEvent);\n },\n },\n ],\n});\n\nexport const WebFRouterLink: FC<WebFHybridRouterProps> = function (props: WebFHybridRouterProps) {\n const [isRender, enableRender] = useState(false);\n\n const handleOnScreen = (event: HybridRouterChangeEvent) => {\n enableRender(true);\n\n if (props.onScreen) {\n props.onScreen(event);\n }\n };\n\n const handlePrerendering = (event: HybridRouterPrerenderingEvent) => {\n enableRender(true);\n props.onPrerendering?.(event);\n };\n\n return (\n <RawWebFRouterLink\n title={props.title}\n path={props.path}\n theme={props.theme}\n onScreen={handleOnScreen}\n offScreen={props.offScreen}\n onPrerendering={handlePrerendering}\n >\n {isRender ? props.children : null}\n </RawWebFRouterLink>\n );\n}\n","/**\n * Route Component\n *\n * This component is a core part of the application routing system, responsible for:\n * 1. Managing page rendering and lifecycle\n * 2. Providing route context (RouteContext)\n * 3. Handling page navigation bar (AppBar)\n * 4. Providing page lifecycle hooks\n */\n\nimport React, { useState } from 'react'\n// import { Router, RouterEvents$ } from './router'\nimport { useMemoizedFn } from 'ahooks';\nimport { WebFRouterLink } from '../utils/RouterLink';\n\n/**\n * Route component props interface\n */\nexport interface RouteProps {\n /**\n * Page title\n * Displayed in the center of the navigation bar\n */\n title?: string\n /**\n * Page path\n * Must be a member of the RoutePath enum\n */\n path: string\n /**\n * The concrete path to mount for this route instance.\n * Used internally to support dynamic routes like `/users/:id` mounting at `/users/123`.\n */\n mountedPath?: string\n /**\n * Whether to pre-render\n * If true, the page will be rendered when the app starts, rather than waiting for route navigation\n * Can be used to improve page switching performance or preload data\n *\n * @default false\n */\n prerender?: boolean\n /**\n * Page content\n * The actual page component to render\n */\n element: React.ReactNode\n /**\n * Theme for this route\n * Controls the visual style of the navigation bar and page\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino'\n}\n\n/**\n * Route Component\n *\n * Responsible for managing page rendering, lifecycle and navigation bar\n */\nexport function Route({ path, mountedPath, prerender = false, element, title, theme }: RouteProps) {\n // Mark whether the page has been rendered\n const [hasRendered, updateRender] = useState(false)\n\n /**\n * Rendering control logic\n */\n const shouldPrerender = prerender;\n const shouldRenderChildren = shouldPrerender || hasRendered\n\n /**\n * Handle page display event\n */\n const handleOnScreen = useMemoizedFn(() => {\n updateRender(true);\n })\n\n /**\n * Handle page hide event\n */\n const handleOffScreen = useMemoizedFn(() => {\n })\n\n return (\n <WebFRouterLink path={mountedPath ?? path} title={title} theme={theme} onScreen={handleOnScreen} offScreen={handleOffScreen}>\n {shouldRenderChildren ? element : null}\n </WebFRouterLink>\n )\n}\n","import React, { createContext, useContext, useMemo, Children, isValidElement, useState, useEffect, useRef } from 'react';\nimport { Route } from './Route';\nimport { __unstable_setEnsureRouteMountedCallback, WebFRouter, matchPath } from './utils';\nimport type { HybridRouteStackEntry, RouteMatch, RouteParams } from './utils';\nimport type { HybridRouterChangeEvent } from '../utils/RouterLink';\n\n/**\n * Route context interface\n *\n * Provides page route related state and methods, accessed through the useRouteContext hook\n *\n * @template S - Page state type, defaults to undefined\n */\ninterface RouteContext<S = any> {\n /**\n * Page path\n * Current route path, corresponds to RoutePath enum\n */\n path: string | undefined\n /**\n * The concrete mounted path for this route instance (e.g. `/users/123`).\n */\n mountedPath: string | undefined\n /**\n * Page state\n * State data passed during route navigation\n */\n params: S | undefined\n /**\n * Route parameters extracted from dynamic routes (e.g., :userId in /user/:userId)\n */\n routeParams: RouteParams | undefined\n /**\n * Current active path from router\n */\n activePath: string | undefined\n /**\n * Route event kind\n */\n routeEventKind?: 'didPushNext' | 'didPush' | 'didPop' | 'didPopNext'\n}\n\n/**\n * Route context default value\n */\nconst RouteContext = createContext<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n params: undefined,\n routeParams: undefined,\n activePath: undefined,\n routeEventKind: undefined\n});\n\n/**\n * Hook to get route context\n *\n * Use generic parameters to specify the route path and automatically infer the corresponding state type\n *\n * @template T - Route path type, must be a member of the RoutePath enum\n * @returns Type-safe route context object\n *\n * @example\n * ```tsx\n * const { params, path, isActive } = useRouteContext();\n * ```\n */\nexport function useRouteContext() {\n const context = useContext<RouteContext>(RouteContext);\n\n const isActive = context.activePath !== undefined\n && context.mountedPath !== undefined\n && context.activePath === context.mountedPath;\n\n return {\n ...context,\n isActive\n };\n}\n\n/**\n * Location object interface\n */\nexport interface Location {\n /**\n * The path of the current location\n */\n pathname: string;\n /**\n * The state object associated with this location\n */\n state: any;\n /**\n * A unique key for this location\n */\n key?: string;\n}\n\n/**\n * Hook to get the current location\n * \n * @returns Current location object with pathname and state\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const location = useLocation();\n * \n * console.log('Current path:', location.pathname);\n\n * console.log('Location state:', location.state);\n * console.log('Is active:', location.isActive);\n * \n * return <div>Current path: {location.pathname}</div>;\n * }\n * ```\n */\nexport function useLocation(): Location & { isActive: boolean } {\n const context = useRouteContext();\n\n // Create location object from context\n const location = useMemo(() => {\n const pathname = context.activePath || WebFRouter.path;\n \n // Get state - prioritize context params, fallback to WebFRouter.state\n const state = context.isActive\n ? (context.params || WebFRouter.state)\n : WebFRouter.state;\n \n return {\n pathname,\n state,\n isActive: context.isActive,\n key: `${pathname}-${Date.now()}`\n };\n }, [context.isActive, context.activePath, context.params]);\n\n return location;\n}\n\n/**\n * Hook to get route parameters from dynamic routes\n * \n * @returns Route parameters object with parameter names as keys and values as strings\n * \n * @example\n * ```tsx\n * // For route pattern \"/user/:userId\" and actual path \"/user/123\"\n * function UserPage() {\n * const params = useParams();\n * \n * console.log(params.userId); // \"123\"\n * \n * return <div>User ID: {params.userId}</div>;\n * }\n * ```\n */\nexport function useParams(): RouteParams {\n const context = useRouteContext();\n \n return useMemo(() => {\n return context.routeParams || {};\n }, [context.routeParams]);\n}\n\n/**\n * Route configuration object\n */\nexport interface RouteObject {\n /**\n * Path for the route\n */\n path: string;\n /**\n * Element to render for this route\n */\n element: React.ReactNode;\n /**\n * Whether to pre-render this route\n */\n prerender?: boolean;\n /**\n * Theme for this route\n *\n * @default \"material\"\n */\n theme?: 'material' | 'cupertino';\n /**\n * Child routes (not supported yet)\n */\n children?: RouteObject[];\n}\n\n/**\n * Props for the Routes component\n */\nexport interface RoutesProps {\n /**\n * Route components as children\n */\n children: React.ReactNode;\n}\n\n/**\n * Routes component that wraps multiple Route components and provides shared context\n * \n * @example\n * ```tsx\n * <Routes sharedData={{ user: currentUser, theme: 'dark' }}>\n * <Route path=\"/\" element={<Home />} />\n * <Route path=\"/about\" element={<About />} />\n * <Route path=\"/profile\" element={<Profile />} />\n * </Routes>\n * ```\n */\n/**\n * Route-specific context provider that only updates when the route is active\n */\nfunction RouteContextProvider({\n patternPath,\n mountedPath,\n children,\n}: {\n patternPath: string;\n mountedPath: string;\n children: React.ReactNode;\n}) {\n const globalContext = useContext(RouteContext);\n\n // Create a route-specific context that only updates when this route is active\n const routeSpecificContext = useMemo(() => {\n const isActive = globalContext.activePath !== undefined && globalContext.activePath === mountedPath;\n const match = isActive ? matchPath(patternPath, mountedPath) : null;\n\n if (isActive && match) {\n const effectiveParams = globalContext.params !== undefined ? globalContext.params : WebFRouter.state;\n\n return {\n path: patternPath,\n mountedPath,\n params: effectiveParams,\n routeParams: match.params,\n activePath: globalContext.activePath,\n routeEventKind: globalContext.routeEventKind\n };\n }\n\n return {\n path: patternPath,\n mountedPath,\n params: undefined,\n routeParams: undefined,\n activePath: globalContext.activePath,\n routeEventKind: undefined\n };\n }, [patternPath, mountedPath, globalContext.activePath, globalContext.params, globalContext.routeEventKind]);\n\n return (\n <RouteContext.Provider value={routeSpecificContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nfunction patternScore(pattern: string): number {\n if (pattern === '*') return 0;\n const segments = pattern.split('/').filter(Boolean);\n let score = 0;\n for (const segment of segments) {\n if (segment === '*') score += 1;\n else if (segment.startsWith(':')) score += 2;\n else score += 3;\n }\n return score * 100 + segments.length;\n}\n\nfunction findBestMatch(patterns: string[], pathname: string): RouteMatch | null {\n let best: { match: RouteMatch; score: number } | null = null;\n for (const pattern of patterns) {\n const match = matchPath(pattern, pathname);\n if (!match) continue;\n const score = patternScore(pattern);\n if (!best || score > best.score) best = { match, score };\n }\n return best?.match ?? null;\n}\n\nfunction escapeAttributeValue(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nexport function Routes({ children }: RoutesProps) {\n // State to track current route information\n const [routeState, setRouteState] = useState<RouteContext>({\n path: undefined,\n mountedPath: undefined,\n activePath: WebFRouter.path, // Initialize with current path\n params: undefined,\n routeParams: undefined,\n routeEventKind: undefined\n });\n\n const [stack, setStack] = useState<HybridRouteStackEntry[]>(() => WebFRouter.stack);\n const [preMountedPaths, setPreMountedPaths] = useState<string[]>([]);\n\n const routePatternsRef = useRef<string[]>([]);\n const pendingEnsureResolversRef = useRef<Map<string, Array<() => void>>>(new Map());\n\n // Keep a stable view of declared route patterns for event handlers.\n useEffect(() => {\n const patterns: string[] = [];\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) return;\n if (child.type !== Route) return;\n patterns.push(child.props.path);\n });\n routePatternsRef.current = patterns;\n }, [children]);\n \n // Listen to hybridrouterchange event\n useEffect(() => {\n const handleRouteChange = (event: Event) => {\n const routeEvent = event as unknown as HybridRouterChangeEvent;\n \n // Check for new event detail structure with params\n const eventDetail = (event as any).detail;\n\n const newActivePath = WebFRouter.path;\n const newStack = WebFRouter.stack;\n setStack(newStack);\n setPreMountedPaths((prev) => prev.filter((p) => newStack.some((entry) => entry.path === p)));\n\n const bestMatch = newActivePath ? findBestMatch(routePatternsRef.current, newActivePath) : null;\n const routeParams = eventDetail?.params || bestMatch?.params || undefined;\n\n const activeEntry = [...newStack].reverse().find((entry) => entry.path === newActivePath);\n const eventState = activeEntry?.state ?? eventDetail?.state ?? routeEvent.state ?? WebFRouter.state;\n\n // Update state based on event kind\n setRouteState({\n path: routeEvent.path,\n mountedPath: routeEvent.path,\n activePath: newActivePath,\n params: eventState,\n routeParams: routeParams, // Use params from Flutter if available\n routeEventKind: routeEvent.kind\n });\n };\n\n // Add event listener\n document.addEventListener('hybridrouterchange', handleRouteChange);\n\n // Cleanup on unmount\n return () => {\n document.removeEventListener('hybridrouterchange', handleRouteChange);\n };\n }, []);\n\n useEffect(() => {\n __unstable_setEnsureRouteMountedCallback((pathname: string) => {\n if (!pathname) return;\n\n const bestMatch = findBestMatch(routePatternsRef.current, pathname);\n if (!bestMatch) return;\n\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (document.querySelector(selector)) return;\n\n let resolveFn: (() => void) | undefined;\n const promise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n\n pendingEnsureResolversRef.current.set(pathname, [\n ...(pendingEnsureResolversRef.current.get(pathname) ?? []),\n resolveFn!,\n ]);\n\n setPreMountedPaths((prev) => (prev.includes(pathname) ? prev : [...prev, pathname]));\n\n return promise;\n });\n\n return () => {\n __unstable_setEnsureRouteMountedCallback(null);\n };\n }, []);\n\n useEffect(() => {\n const pending = pendingEnsureResolversRef.current;\n for (const [pathname, resolvers] of pending.entries()) {\n const selector = `webf-router-link[path=\"${escapeAttributeValue(pathname)}\"]`;\n if (!document.querySelector(selector)) continue;\n for (const resolve of resolvers) resolve();\n pending.delete(pathname);\n }\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n // Global context value\n const globalContextValue = useMemo(() => ({\n path: undefined,\n mountedPath: undefined,\n params: routeState.params,\n routeParams: routeState.routeParams, // Pass through route params from Flutter\n activePath: routeState.activePath,\n routeEventKind: routeState.routeEventKind\n }), [routeState.activePath, routeState.params, routeState.routeParams, routeState.routeEventKind]);\n\n const wrappedChildren = useMemo(() => {\n const declaredRoutes: React.ReactElement[] = [];\n const patterns: string[] = [];\n const declaredPaths = new Set<string>();\n\n Children.forEach(children, (child: React.ReactNode) => {\n if (!isValidElement(child)) {\n declaredRoutes.push(child as any);\n return;\n }\n\n if (child.type !== Route) {\n console.warn('Routes component should only contain Route components as direct children');\n declaredRoutes.push(child);\n return;\n }\n\n const patternPath: string = child.props.path;\n patterns.push(patternPath);\n declaredPaths.add(patternPath);\n const mountedPath: string = child.props.mountedPath ?? patternPath;\n\n declaredRoutes.push(\n <RouteContextProvider key={`declared:${patternPath}`} patternPath={patternPath} mountedPath={mountedPath}>\n {child}\n </RouteContextProvider>\n );\n });\n\n const mountedPaths: string[] = [];\n for (const entry of stack) mountedPaths.push(entry.path);\n for (const path of preMountedPaths) mountedPaths.push(path);\n if (routeState.activePath && !mountedPaths.includes(routeState.activePath)) mountedPaths.push(routeState.activePath);\n\n const dynamicRoutes: React.ReactElement[] = [];\n const seenMountedPaths = new Set<string>();\n for (const mountedPath of mountedPaths) {\n if (seenMountedPaths.has(mountedPath)) continue;\n seenMountedPaths.add(mountedPath);\n if (declaredPaths.has(mountedPath)) continue;\n\n const bestMatch = findBestMatch(patterns, mountedPath);\n if (!bestMatch) continue;\n\n const matchingRouteElement = Children.toArray(children).find((node) => {\n if (!isValidElement(node)) return false;\n if (node.type !== Route) return false;\n return node.props.path === bestMatch.path;\n }) as React.ReactElement | undefined;\n\n if (!matchingRouteElement) continue;\n\n const routeInstance = React.cloneElement(matchingRouteElement, {\n mountedPath,\n });\n\n dynamicRoutes.push(\n <RouteContextProvider key={`dynamic:${mountedPath}`} patternPath={bestMatch.path} mountedPath={mountedPath}>\n {routeInstance}\n </RouteContextProvider>\n );\n }\n\n return [...declaredRoutes, ...dynamicRoutes];\n }, [children, stack, preMountedPaths, routeState.activePath]);\n\n return (\n <RouteContext.Provider value={globalContextValue}>\n {wrappedChildren}\n </RouteContext.Provider>\n );\n}\n\n/**\n * Hook to create routes from a configuration object\n * \n * @param routes Array of route configuration objects\n * @returns React element tree of Routes and Route components\n * \n * @example\n * ```tsx\n * function App() {\n * const routes = useRoutes([\n * { path: '/', element: <Home /> },\n * { path: '/about', element: <About /> },\n * { path: '/users', element: <Users /> },\n * { path: '/contact', element: <Contact /> }\n * ]);\n * \n * return routes;\n * }\n * ```\n */\nexport function useRoutes(routes: RouteObject[]): React.ReactElement | null {\n // Convert route objects to Route components\n const routeElements = useMemo(() => {\n return routes.map((route) => {\n if (route.children && route.children.length > 0) {\n console.warn('Nested routes are not supported yet');\n }\n\n return (\n <Route\n key={route.path}\n path={route.path}\n element={route.element}\n prerender={route.prerender}\n theme={route.theme}\n />\n );\n });\n }, [routes]);\n\n // Return Routes component with Route children\n return <Routes>{routeElements}</Routes>;\n}\n\n\n/**\n * Navigation function type\n */\nexport interface NavigateFunction {\n (to: string, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Navigation options\n */\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Extended navigation object with additional methods\n */\nexport interface NavigationMethods {\n /**\n * Navigate to a route or go back\n */\n navigate: NavigateFunction;\n\n /**\n * Close the current screen and return to the previous one\n */\n pop: (result?: any) => void;\n\n /**\n * Pop routes until reaching a specific route\n */\n popUntil: (path: string) => void;\n\n /**\n * Pop the current route and push a new route\n */\n popAndPush: (path: string, state?: any) => Promise<void>;\n\n /**\n * Push a new route and remove all routes until a specific route\n */\n pushAndRemoveUntil: (newPath: string, untilPath: string, state?: any) => Promise<void>;\n\n /**\n * Check if the navigator can go back\n */\n canPop: () => boolean;\n\n /**\n * Pop the current route if possible\n */\n maybePop: (result?: any) => boolean;\n}\n\n/**\n * Hook to navigate between routes programmatically\n * \n * @example\n * ```tsx\n * function LoginPage() {\n * const { navigate, pop, canPop } = useNavigate();\n * \n * const handleLogin = async () => {\n * await login();\n * navigate('/dashboard');\n * };\n * \n * const handleReplace = () => {\n * navigate('/home', { replace: true });\n * };\n * \n * const handleWithState = () => {\n * navigate('/profile', { state: { from: 'login' } });\n * };\n * \n * const goBack = () => {\n * if (canPop()) {\n * pop();\n * } else {\n * navigate('/');\n * }\n * };\n * }\n * ```\n */\nexport function useNavigate(): NavigationMethods {\n return useMemo(() => {\n function navigate(to: string | number, options?: NavigateOptions): void {\n if (typeof to === 'number') {\n // Handle relative navigation (e.g., -1 for back)\n if (to === -1) {\n WebFRouter.back();\n } else {\n console.warn('Relative navigation other than -1 is not supported yet');\n }\n return;\n }\n\n // Handle absolute navigation\n if (options?.replace) {\n WebFRouter.replace(to, options.state);\n } else {\n WebFRouter.push(to, options?.state);\n }\n }\n\n return {\n navigate: navigate as NavigateFunction,\n pop: WebFRouter.pop,\n popUntil: WebFRouter.popUntil,\n popAndPush: WebFRouter.popAndPushNamed,\n pushAndRemoveUntil: WebFRouter.pushNamedAndRemoveUntilRoute,\n canPop: WebFRouter.canPop,\n maybePop: WebFRouter.maybePop\n };\n }, []);\n}\n"],"names":["useRef","useMemo","createWebFComponent","useState","createContext","useContext","useEffect","Children","isValidElement"],"mappings":"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","x_google_ignoreList":[0,2,3,4]}
@@ -6,12 +6,16 @@ export interface HybridRouterChangeEvent extends SyntheticEvent {
6
6
  readonly path: string;
7
7
  }
8
8
  export type HybridRouterChangeEventHandler = EventHandler<HybridRouterChangeEvent>;
9
+ export interface HybridRouterPrerenderingEvent extends SyntheticEvent {
10
+ }
11
+ export type HybridRouterPrerenderingEventHandler = EventHandler<HybridRouterPrerenderingEvent>;
9
12
  export interface WebFHybridRouterProps {
10
13
  path: string;
11
14
  title?: string;
12
15
  theme?: 'material' | 'cupertino';
13
16
  onScreen?: HybridRouterChangeEventHandler;
14
17
  offScreen?: HybridRouterChangeEventHandler;
18
+ onPrerendering?: HybridRouterPrerenderingEventHandler;
15
19
  children?: ReactNode;
16
20
  }
17
21
  export interface WebFRouterLinkElement extends WebFElementWithMethods<{}> {
@@ -1 +1 @@
1
- {"version":3,"file":"RouterLink.d.ts","sourceRoot":"","sources":["../../src/utils/RouterLink.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAY,MAAM,OAAO,CAAC;AACrF,OAAO,EAAuB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,8BAA8B,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAEnF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,8BAA8B,CAAC;IAC1C,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAGD,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB,CAAC,EAAE,CAAC;CAAG;AA+B5E,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,qBAAqB,CAgBpD,CAAA"}
1
+ {"version":3,"file":"RouterLink.d.ts","sourceRoot":"","sources":["../../src/utils/RouterLink.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAY,MAAM,OAAO,CAAC;AACrF,OAAO,EAAuB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,8BAA8B,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAEnF,MAAM,WAAW,6BAA8B,SAAQ,cAAc;CAAG;AAExE,MAAM,MAAM,oCAAoC,GAAG,YAAY,CAAC,6BAA6B,CAAC,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,8BAA8B,CAAC;IAC1C,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,cAAc,CAAC,EAAE,oCAAoC,CAAC;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAGD,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB,CAAC,EAAE,CAAC;CAAG;AAsC5E,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,qBAAqB,CA4BpD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwebf/react-router",
3
- "version": "0.24.0",
3
+ "version": "0.24.1",
4
4
  "description": "React Router implementation for WebF using hybrid history API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "repository": {
26
26
  "type": "git",
27
- "url": "https://github.com/openwebf/webf.git",
27
+ "url": "https://github.com/openwebf/webf",
28
28
  "directory": "packages/react-router"
29
29
  },
30
30
  "keywords": [