@fluixi/core 1.0.0-alpha.100

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.
Files changed (253) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +334 -0
  3. package/dist/cdn/core.global.js +2 -0
  4. package/dist/cli/generate.cjs +5639 -0
  5. package/dist/cli/generate.d.ts +7 -0
  6. package/dist/cli/generate.d.ts.map +1 -0
  7. package/dist/cli/generate.js +2580 -0
  8. package/dist/cli/generate.mjs +5644 -0
  9. package/dist/cli/index.cjs +5639 -0
  10. package/dist/cli/index.d.ts +7 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2580 -0
  13. package/dist/cli/index.mjs +5644 -0
  14. package/dist/cli/run.cjs +64 -0
  15. package/dist/cli/run.d.ts +3 -0
  16. package/dist/cli/run.d.ts.map +1 -0
  17. package/dist/cli/run.js +62 -0
  18. package/dist/cli/run.mjs +40 -0
  19. package/dist/fluixi.d.ts +5 -0
  20. package/dist/src/cdn/chunk-RKBFEFZP.mjs +987 -0
  21. package/dist/src/cdn/core.cjs +1592 -0
  22. package/dist/src/cdn/core.d.ts +16 -0
  23. package/dist/src/cdn/core.d.ts.map +1 -0
  24. package/dist/src/cdn/core.js +15 -0
  25. package/dist/src/cdn/core.mjs +714 -0
  26. package/dist/src/cdn/router-V2THK27H.mjs +74 -0
  27. package/dist/src/index.cjs +1711 -0
  28. package/dist/src/index.d.ts +4 -0
  29. package/dist/src/index.d.ts.map +1 -0
  30. package/dist/src/index.js +11 -0
  31. package/dist/src/index.mjs +1833 -0
  32. package/dist/src/jsx-dev-runtime.cjs +26 -0
  33. package/dist/src/jsx-dev-runtime.d.ts +2 -0
  34. package/dist/src/jsx-dev-runtime.d.ts.map +1 -0
  35. package/dist/src/jsx-dev-runtime.js +1 -0
  36. package/dist/src/jsx-dev-runtime.mjs +24 -0
  37. package/dist/src/jsx-runtime.cjs +26 -0
  38. package/dist/src/jsx-runtime.d.ts +7 -0
  39. package/dist/src/jsx-runtime.d.ts.map +1 -0
  40. package/dist/src/jsx-runtime.js +8 -0
  41. package/dist/src/jsx-runtime.mjs +24 -0
  42. package/dist/src/lib/client/chunk-FDOPDB6Z.mjs +53 -0
  43. package/dist/src/lib/client/index.cjs +1210 -0
  44. package/dist/src/lib/client/index.d.ts +51 -0
  45. package/dist/src/lib/client/index.d.ts.map +1 -0
  46. package/dist/src/lib/client/index.js +174 -0
  47. package/dist/src/lib/client/index.mjs +293 -0
  48. package/dist/src/lib/client/router-4PTBPZLQ.mjs +891 -0
  49. package/dist/src/lib/context/context.cjs +81 -0
  50. package/dist/src/lib/context/context.d.ts +73 -0
  51. package/dist/src/lib/context/context.d.ts.map +1 -0
  52. package/dist/src/lib/context/context.js +93 -0
  53. package/dist/src/lib/context/context.mjs +64 -0
  54. package/dist/src/lib/context/index.cjs +83 -0
  55. package/dist/src/lib/context/index.d.ts +3 -0
  56. package/dist/src/lib/context/index.d.ts.map +1 -0
  57. package/dist/src/lib/context/index.js +1 -0
  58. package/dist/src/lib/context/index.mjs +64 -0
  59. package/dist/src/lib/control-flow.cjs +35 -0
  60. package/dist/src/lib/control-flow.d.ts +4 -0
  61. package/dist/src/lib/control-flow.d.ts.map +1 -0
  62. package/dist/src/lib/control-flow.js +1 -0
  63. package/dist/src/lib/control-flow.mjs +25 -0
  64. package/dist/src/lib/core.cjs +1710 -0
  65. package/dist/src/lib/core.d.ts +91 -0
  66. package/dist/src/lib/core.d.ts.map +1 -0
  67. package/dist/src/lib/core.js +158 -0
  68. package/dist/src/lib/core.mjs +1833 -0
  69. package/dist/src/lib/env/index.cjs +44 -0
  70. package/dist/src/lib/env/index.d.ts +26 -0
  71. package/dist/src/lib/env/index.d.ts.map +1 -0
  72. package/dist/src/lib/env/index.js +31 -0
  73. package/dist/src/lib/env/index.mjs +23 -0
  74. package/dist/src/lib/i18n/index.cjs +123 -0
  75. package/dist/src/lib/i18n/index.d.ts +110 -0
  76. package/dist/src/lib/i18n/index.d.ts.map +1 -0
  77. package/dist/src/lib/i18n/index.js +164 -0
  78. package/dist/src/lib/i18n/index.mjs +103 -0
  79. package/dist/src/lib/index.cjs +598 -0
  80. package/dist/src/lib/index.d.ts +81 -0
  81. package/dist/src/lib/index.d.ts.map +1 -0
  82. package/dist/src/lib/index.js +130 -0
  83. package/dist/src/lib/index.mjs +688 -0
  84. package/dist/src/lib/isomorphic.cjs +90 -0
  85. package/dist/src/lib/isomorphic.d.ts +114 -0
  86. package/dist/src/lib/isomorphic.d.ts.map +1 -0
  87. package/dist/src/lib/isomorphic.js +132 -0
  88. package/dist/src/lib/isomorphic.mjs +69 -0
  89. package/dist/src/lib/jsx-runtime/index.cjs +21 -0
  90. package/dist/src/lib/jsx-runtime/index.d.ts +13 -0
  91. package/dist/src/lib/jsx-runtime/index.d.ts.map +1 -0
  92. package/dist/src/lib/jsx-runtime/index.js +13 -0
  93. package/dist/src/lib/jsx-runtime/index.mjs +4 -0
  94. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.cjs +21 -0
  95. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts +2 -0
  96. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts.map +1 -0
  97. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.js +1 -0
  98. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.mjs +4 -0
  99. package/dist/src/lib/plugins/fluixi-routes-plugin.cjs +302 -0
  100. package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts +35 -0
  101. package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts.map +1 -0
  102. package/dist/src/lib/plugins/fluixi-routes-plugin.js +118 -0
  103. package/dist/src/lib/plugins/fluixi-routes-plugin.mjs +271 -0
  104. package/dist/src/lib/plugins/index.cjs +311 -0
  105. package/dist/src/lib/plugins/index.d.ts +6 -0
  106. package/dist/src/lib/plugins/index.d.ts.map +1 -0
  107. package/dist/src/lib/plugins/index.js +7 -0
  108. package/dist/src/lib/plugins/index.mjs +279 -0
  109. package/dist/src/lib/plugins/route-codegen.cjs +73 -0
  110. package/dist/src/lib/plugins/route-codegen.d.ts +12 -0
  111. package/dist/src/lib/plugins/route-codegen.d.ts.map +1 -0
  112. package/dist/src/lib/plugins/route-codegen.js +80 -0
  113. package/dist/src/lib/plugins/route-codegen.mjs +52 -0
  114. package/dist/src/lib/plugins/route-scanner.cjs +189 -0
  115. package/dist/src/lib/plugins/route-scanner.d.ts +38 -0
  116. package/dist/src/lib/plugins/route-scanner.d.ts.map +1 -0
  117. package/dist/src/lib/plugins/route-scanner.js +215 -0
  118. package/dist/src/lib/plugins/route-scanner.mjs +158 -0
  119. package/dist/src/lib/plugins/vite.cjs +27 -0
  120. package/dist/src/lib/plugins/vite.d.ts +3 -0
  121. package/dist/src/lib/plugins/vite.d.ts.map +1 -0
  122. package/dist/src/lib/plugins/vite.js +1 -0
  123. package/dist/src/lib/plugins/vite.mjs +6 -0
  124. package/dist/src/lib/render/await.cjs +38 -0
  125. package/dist/src/lib/render/await.d.ts +26 -0
  126. package/dist/src/lib/render/await.d.ts.map +1 -0
  127. package/dist/src/lib/render/await.js +45 -0
  128. package/dist/src/lib/render/await.mjs +17 -0
  129. package/dist/src/lib/render/component.cjs +221 -0
  130. package/dist/src/lib/render/component.d.ts +296 -0
  131. package/dist/src/lib/render/component.d.ts.map +1 -0
  132. package/dist/src/lib/render/component.js +514 -0
  133. package/dist/src/lib/render/component.mjs +214 -0
  134. package/dist/src/lib/render/deferred.cjs +175 -0
  135. package/dist/src/lib/render/deferred.d.ts +36 -0
  136. package/dist/src/lib/render/deferred.d.ts.map +1 -0
  137. package/dist/src/lib/render/deferred.js +141 -0
  138. package/dist/src/lib/render/deferred.mjs +158 -0
  139. package/dist/src/lib/render/index.cjs +573 -0
  140. package/dist/src/lib/render/index.d.ts +98 -0
  141. package/dist/src/lib/render/index.d.ts.map +1 -0
  142. package/dist/src/lib/render/index.js +180 -0
  143. package/dist/src/lib/render/index.mjs +590 -0
  144. package/dist/src/lib/render/lazy.cjs +67 -0
  145. package/dist/src/lib/render/lazy.d.ts +49 -0
  146. package/dist/src/lib/render/lazy.d.ts.map +1 -0
  147. package/dist/src/lib/render/lazy.js +105 -0
  148. package/dist/src/lib/render/lazy.mjs +50 -0
  149. package/dist/src/lib/render/suspense.cjs +141 -0
  150. package/dist/src/lib/render/suspense.d.ts +65 -0
  151. package/dist/src/lib/render/suspense.d.ts.map +1 -0
  152. package/dist/src/lib/render/suspense.js +196 -0
  153. package/dist/src/lib/render/suspense.mjs +136 -0
  154. package/dist/src/lib/render/versions.cjs +35 -0
  155. package/dist/src/lib/render/versions.d.ts +2 -0
  156. package/dist/src/lib/render/versions.d.ts.map +1 -0
  157. package/dist/src/lib/render/versions.js +21 -0
  158. package/dist/src/lib/render/versions.mjs +14 -0
  159. package/dist/src/lib/router/data.cjs +228 -0
  160. package/dist/src/lib/router/data.d.ts +142 -0
  161. package/dist/src/lib/router/data.d.ts.map +1 -0
  162. package/dist/src/lib/router/data.js +258 -0
  163. package/dist/src/lib/router/data.mjs +214 -0
  164. package/dist/src/lib/router/index.cjs +921 -0
  165. package/dist/src/lib/router/index.d.ts +274 -0
  166. package/dist/src/lib/router/index.d.ts.map +1 -0
  167. package/dist/src/lib/router/index.js +904 -0
  168. package/dist/src/lib/router/index.mjs +938 -0
  169. package/dist/src/lib/router/scroll.cjs +79 -0
  170. package/dist/src/lib/router/scroll.d.ts +19 -0
  171. package/dist/src/lib/router/scroll.d.ts.map +1 -0
  172. package/dist/src/lib/router/scroll.js +68 -0
  173. package/dist/src/lib/router/scroll.mjs +58 -0
  174. package/dist/src/lib/router/transition.cjs +75 -0
  175. package/dist/src/lib/router/transition.d.ts +81 -0
  176. package/dist/src/lib/router/transition.d.ts.map +1 -0
  177. package/dist/src/lib/router/transition.js +136 -0
  178. package/dist/src/lib/router/transition.mjs +54 -0
  179. package/dist/src/lib/server/hydration.cjs +169 -0
  180. package/dist/src/lib/server/hydration.d.ts +198 -0
  181. package/dist/src/lib/server/hydration.d.ts.map +1 -0
  182. package/dist/src/lib/server/hydration.js +345 -0
  183. package/dist/src/lib/server/hydration.mjs +148 -0
  184. package/dist/src/lib/server/index.cjs +406 -0
  185. package/dist/src/lib/server/index.d.ts +115 -0
  186. package/dist/src/lib/server/index.d.ts.map +1 -0
  187. package/dist/src/lib/server/index.js +164 -0
  188. package/dist/src/lib/server/index.mjs +384 -0
  189. package/dist/src/lib/server/reactive.cjs +197 -0
  190. package/dist/src/lib/server/reactive.d.ts +239 -0
  191. package/dist/src/lib/server/reactive.d.ts.map +1 -0
  192. package/dist/src/lib/server/reactive.js +413 -0
  193. package/dist/src/lib/server/reactive.mjs +176 -0
  194. package/dist/src/lib/storage/cache.cjs +51 -0
  195. package/dist/src/lib/storage/cache.d.ts +18 -0
  196. package/dist/src/lib/storage/cache.d.ts.map +1 -0
  197. package/dist/src/lib/storage/cache.js +42 -0
  198. package/dist/src/lib/storage/cache.mjs +30 -0
  199. package/dist/src/lib/storage/index.cjs +246 -0
  200. package/dist/src/lib/storage/index.d.ts +83 -0
  201. package/dist/src/lib/storage/index.d.ts.map +1 -0
  202. package/dist/src/lib/storage/index.js +179 -0
  203. package/dist/src/lib/storage/index.mjs +231 -0
  204. package/dist/src/lib/storage/persisted.cjs +91 -0
  205. package/dist/src/lib/storage/persisted.d.ts +53 -0
  206. package/dist/src/lib/storage/persisted.d.ts.map +1 -0
  207. package/dist/src/lib/storage/persisted.js +75 -0
  208. package/dist/src/lib/storage/persisted.mjs +70 -0
  209. package/dist/src/lib/theme/color-scheme.cjs +281 -0
  210. package/dist/src/lib/theme/color-scheme.d.ts +61 -0
  211. package/dist/src/lib/theme/color-scheme.d.ts.map +1 -0
  212. package/dist/src/lib/theme/color-scheme.js +120 -0
  213. package/dist/src/lib/theme/color-scheme.mjs +265 -0
  214. package/dist/src/lib/theme/index.cjs +267 -0
  215. package/dist/src/lib/theme/index.d.ts +78 -0
  216. package/dist/src/lib/theme/index.d.ts.map +1 -0
  217. package/dist/src/lib/theme/index.js +135 -0
  218. package/dist/src/lib/theme/index.mjs +251 -0
  219. package/dist/src/lib/theme/provider.cjs +346 -0
  220. package/dist/src/lib/theme/provider.d.ts +34 -0
  221. package/dist/src/lib/theme/provider.d.ts.map +1 -0
  222. package/dist/src/lib/theme/provider.js +60 -0
  223. package/dist/src/lib/theme/provider.mjs +332 -0
  224. package/dist/src/lib/utils/index.cjs +209 -0
  225. package/dist/src/lib/utils/index.d.ts +286 -0
  226. package/dist/src/lib/utils/index.d.ts.map +1 -0
  227. package/dist/src/lib/utils/index.js +434 -0
  228. package/dist/src/lib/utils/index.mjs +188 -0
  229. package/dist/src/routes.cjs +37 -0
  230. package/dist/src/routes.d.ts +22 -0
  231. package/dist/src/routes.d.ts.map +1 -0
  232. package/dist/src/routes.js +20 -0
  233. package/dist/src/routes.mjs +17 -0
  234. package/dist/src/server.cjs +405 -0
  235. package/dist/src/server.d.ts +63 -0
  236. package/dist/src/server.d.ts.map +1 -0
  237. package/dist/src/server.js +62 -0
  238. package/dist/src/server.mjs +382 -0
  239. package/dist/src/utils.cjs +21 -0
  240. package/dist/src/utils.d.ts +10 -0
  241. package/dist/src/utils.d.ts.map +1 -0
  242. package/dist/src/utils.js +9 -0
  243. package/dist/src/utils.mjs +4 -0
  244. package/dist/src/version.generated.cjs +26 -0
  245. package/dist/src/version.generated.d.ts +3 -0
  246. package/dist/src/version.generated.d.ts.map +1 -0
  247. package/dist/src/version.generated.js +3 -0
  248. package/dist/src/version.generated.mjs +5 -0
  249. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  250. package/package.json +164 -0
  251. package/src/index.ts +19 -0
  252. package/types/fluixi.d.ts +5 -0
  253. package/types/vinxi.d.ts +50 -0
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/context/context.ts
21
+ var context_exports = {};
22
+ __export(context_exports, {
23
+ composeProviders: () => composeProviders,
24
+ createContext: () => createContext,
25
+ createProvider: () => createProvider,
26
+ requireContext: () => requireContext,
27
+ useContext: () => useContext
28
+ });
29
+ module.exports = __toCommonJS(context_exports);
30
+ var import_dom = require("@fluixi/dom");
31
+ var import_signal = require("@fluixi/reactive/signal");
32
+ function createContext(defaultValue, name) {
33
+ const context = (0, import_signal.createContext)(defaultValue, name);
34
+ const Provider = (props) => (
35
+ // Children stay a getter: the reactive Provider reads them after stamping the value on
36
+ // its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
37
+ // before the context exists.
38
+ context.Provider({
39
+ value: props.value,
40
+ get children() {
41
+ return props.children;
42
+ },
43
+ debug: props.debug
44
+ })
45
+ );
46
+ return {
47
+ id: context.id,
48
+ Provider: (0, import_dom.asProvider)(Provider),
49
+ defaultValue
50
+ };
51
+ }
52
+ function useContext(context) {
53
+ const value = (0, import_signal.useContext)(context);
54
+ return value !== void 0 ? value : context.defaultValue;
55
+ }
56
+ function createProvider(context, value, props) {
57
+ const resolved = typeof value === "function" ? value() : value;
58
+ return context.Provider({
59
+ value: resolved,
60
+ get children() {
61
+ return props.children;
62
+ }
63
+ });
64
+ }
65
+ function composeProviders(providers, props) {
66
+ const outermost = providers.reduceRight(
67
+ (inner, [context, value]) => ({
68
+ get children() {
69
+ return createProvider(context, value, inner);
70
+ }
71
+ }),
72
+ props
73
+ );
74
+ return outermost.children;
75
+ }
76
+ function requireContext(context, message) {
77
+ for (let owner = (0, import_signal.getOwner)(); owner; owner = owner.parent) {
78
+ if (owner.contexts?.has(context.id)) return useContext(context);
79
+ }
80
+ throw new Error(message ?? `[fluixi] No Provider for ${context.id.description ?? "this context"} above this component.`);
81
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Context: a value provided by a component and read by any component below it.
3
+ *
4
+ * The owner tree holds it (`@fluixi/reactive`), so `useContext` finds the nearest
5
+ * `<Ctx.Provider>` above the component that asks. The same object is the key custom elements use
6
+ * with `@fluixi/web-components`: an element reads what a Provider around it gives, and the
7
+ * components an element renders read what the element provides.
8
+ */
9
+ import { type ComponentChild } from '@fluixi/dom';
10
+ import { type Accessor, type Context } from '@fluixi/reactive/signal';
11
+ /**
12
+ * A context with a default for components that have no Provider above them. `name` is what
13
+ * devtools show for it.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const Theme = createContext<'light' | 'dark'>('light', 'theme');
18
+ *
19
+ * <Theme.Provider value="dark"><Toolbar /></Theme.Provider>
20
+ * ```
21
+ */
22
+ export declare function createContext<T>(defaultValue?: T, name?: string): {
23
+ id: symbol;
24
+ Provider: (props: {
25
+ value: T;
26
+ children?: any;
27
+ debug?: boolean;
28
+ }) => any;
29
+ defaultValue: T;
30
+ };
31
+ /** The value of the nearest Provider above the calling component, or the context's default. */
32
+ export declare function useContext<T>(context: {
33
+ id: symbol;
34
+ defaultValue: T;
35
+ [key: string]: any;
36
+ }): T;
37
+ /**
38
+ * A Provider as a function call, for a component that provides without JSX. `value` may be an
39
+ * accessor, read once. Pass the component's own props so `children` stays lazy.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const ThemeProvider = (props) => createProvider(Theme, 'dark', props);
44
+ * ```
45
+ */
46
+ export declare function createProvider<T>(context: Context<T>, value: T | Accessor<T>, props: {
47
+ children?: any;
48
+ }): ComponentChild;
49
+ /**
50
+ * Several Providers as one, outermost first, for an app shell that would otherwise nest a
51
+ * Provider per context. Values may be accessors, as in `createProvider`; children stay lazy.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const AppProviders = (props) =>
56
+ * composeProviders([[Theme, 'dark'], [Locale, () => locale()], [Session, session]], props);
57
+ * ```
58
+ */
59
+ export declare function composeProviders(providers: ReadonlyArray<readonly [Context<any>, unknown]>, props: {
60
+ children?: any;
61
+ }): ComponentChild;
62
+ /**
63
+ * `useContext` for a value that has to come from a Provider: throws when none is above,
64
+ * instead of handing back the default. For parts that only work inside their parent, a tab
65
+ * outside its tabs.
66
+ */
67
+ export declare function requireContext<T>(context: {
68
+ id: symbol;
69
+ defaultValue?: T;
70
+ [key: string]: any;
71
+ }, message?: string): T;
72
+ export type { Context };
73
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/lib/context/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC;IACxE,YAAY,EAAE,CAAC,CAAC;CACjB,CAoBA;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,CAAC,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,CAAC,CAG7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GACxB,cAAc,CAQhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAC1D,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GACxB,cAAc,CAUhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKpH;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Context: a value provided by a component and read by any component below it.
3
+ *
4
+ * The owner tree holds it (`@fluixi/reactive`), so `useContext` finds the nearest
5
+ * `<Ctx.Provider>` above the component that asks. The same object is the key custom elements use
6
+ * with `@fluixi/web-components`: an element reads what a Provider around it gives, and the
7
+ * components an element renders read what the element provides.
8
+ */
9
+ import { asProvider } from '@fluixi/dom';
10
+ import { createContext as createReactiveContext, getOwner, useContext as useReactiveContext, } from '@fluixi/reactive/signal';
11
+ /**
12
+ * A context with a default for components that have no Provider above them. `name` is what
13
+ * devtools show for it.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const Theme = createContext<'light' | 'dark'>('light', 'theme');
18
+ *
19
+ * <Theme.Provider value="dark"><Toolbar /></Theme.Provider>
20
+ * ```
21
+ */
22
+ export function createContext(defaultValue, name) {
23
+ const context = createReactiveContext(defaultValue, name);
24
+ const Provider = (props) =>
25
+ // Children stay a getter: the reactive Provider reads them after stamping the value on
26
+ // its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
27
+ // before the context exists.
28
+ context.Provider({
29
+ value: props.value,
30
+ get children() {
31
+ return props.children;
32
+ },
33
+ debug: props.debug,
34
+ });
35
+ return {
36
+ id: context.id,
37
+ Provider: asProvider(Provider),
38
+ defaultValue: defaultValue,
39
+ };
40
+ }
41
+ /** The value of the nearest Provider above the calling component, or the context's default. */
42
+ export function useContext(context) {
43
+ const value = useReactiveContext(context);
44
+ return value !== undefined ? value : context.defaultValue;
45
+ }
46
+ /**
47
+ * A Provider as a function call, for a component that provides without JSX. `value` may be an
48
+ * accessor, read once. Pass the component's own props so `children` stays lazy.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const ThemeProvider = (props) => createProvider(Theme, 'dark', props);
53
+ * ```
54
+ */
55
+ export function createProvider(context, value, props) {
56
+ const resolved = typeof value === 'function' ? value() : value;
57
+ return context.Provider({
58
+ value: resolved,
59
+ get children() {
60
+ return props.children;
61
+ },
62
+ });
63
+ }
64
+ /**
65
+ * Several Providers as one, outermost first, for an app shell that would otherwise nest a
66
+ * Provider per context. Values may be accessors, as in `createProvider`; children stay lazy.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const AppProviders = (props) =>
71
+ * composeProviders([[Theme, 'dark'], [Locale, () => locale()], [Session, session]], props);
72
+ * ```
73
+ */
74
+ export function composeProviders(providers, props) {
75
+ const outermost = providers.reduceRight((inner, [context, value]) => ({
76
+ get children() {
77
+ return createProvider(context, value, inner);
78
+ },
79
+ }), props);
80
+ return outermost.children;
81
+ }
82
+ /**
83
+ * `useContext` for a value that has to come from a Provider: throws when none is above,
84
+ * instead of handing back the default. For parts that only work inside their parent, a tab
85
+ * outside its tabs.
86
+ */
87
+ export function requireContext(context, message) {
88
+ for (let owner = getOwner(); owner; owner = owner.parent) {
89
+ if (owner.contexts?.has(context.id))
90
+ return useContext(context);
91
+ }
92
+ throw new Error(message ?? `[fluixi] No Provider for ${context.id.description ?? 'this context'} above this component.`);
93
+ }
@@ -0,0 +1,64 @@
1
+ // src/lib/context/context.ts
2
+ import { asProvider } from "@fluixi/dom";
3
+ import {
4
+ createContext as createReactiveContext,
5
+ getOwner,
6
+ useContext as useReactiveContext
7
+ } from "@fluixi/reactive/signal";
8
+ function createContext(defaultValue, name) {
9
+ const context = createReactiveContext(defaultValue, name);
10
+ const Provider = (props) => (
11
+ // Children stay a getter: the reactive Provider reads them after stamping the value on
12
+ // its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
13
+ // before the context exists.
14
+ context.Provider({
15
+ value: props.value,
16
+ get children() {
17
+ return props.children;
18
+ },
19
+ debug: props.debug
20
+ })
21
+ );
22
+ return {
23
+ id: context.id,
24
+ Provider: asProvider(Provider),
25
+ defaultValue
26
+ };
27
+ }
28
+ function useContext(context) {
29
+ const value = useReactiveContext(context);
30
+ return value !== void 0 ? value : context.defaultValue;
31
+ }
32
+ function createProvider(context, value, props) {
33
+ const resolved = typeof value === "function" ? value() : value;
34
+ return context.Provider({
35
+ value: resolved,
36
+ get children() {
37
+ return props.children;
38
+ }
39
+ });
40
+ }
41
+ function composeProviders(providers, props) {
42
+ const outermost = providers.reduceRight(
43
+ (inner, [context, value]) => ({
44
+ get children() {
45
+ return createProvider(context, value, inner);
46
+ }
47
+ }),
48
+ props
49
+ );
50
+ return outermost.children;
51
+ }
52
+ function requireContext(context, message) {
53
+ for (let owner = getOwner(); owner; owner = owner.parent) {
54
+ if (owner.contexts?.has(context.id)) return useContext(context);
55
+ }
56
+ throw new Error(message ?? `[fluixi] No Provider for ${context.id.description ?? "this context"} above this component.`);
57
+ }
58
+ export {
59
+ composeProviders,
60
+ createContext,
61
+ createProvider,
62
+ requireContext,
63
+ useContext
64
+ };
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/context/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ composeProviders: () => composeProviders,
24
+ createContext: () => createContext,
25
+ createProvider: () => createProvider,
26
+ requireContext: () => requireContext,
27
+ useContext: () => useContext
28
+ });
29
+ module.exports = __toCommonJS(index_exports);
30
+
31
+ // src/lib/context/context.ts
32
+ var import_dom = require("@fluixi/dom");
33
+ var import_signal = require("@fluixi/reactive/signal");
34
+ function createContext(defaultValue, name) {
35
+ const context = (0, import_signal.createContext)(defaultValue, name);
36
+ const Provider = (props) => (
37
+ // Children stay a getter: the reactive Provider reads them after stamping the value on
38
+ // its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
39
+ // before the context exists.
40
+ context.Provider({
41
+ value: props.value,
42
+ get children() {
43
+ return props.children;
44
+ },
45
+ debug: props.debug
46
+ })
47
+ );
48
+ return {
49
+ id: context.id,
50
+ Provider: (0, import_dom.asProvider)(Provider),
51
+ defaultValue
52
+ };
53
+ }
54
+ function useContext(context) {
55
+ const value = (0, import_signal.useContext)(context);
56
+ return value !== void 0 ? value : context.defaultValue;
57
+ }
58
+ function createProvider(context, value, props) {
59
+ const resolved = typeof value === "function" ? value() : value;
60
+ return context.Provider({
61
+ value: resolved,
62
+ get children() {
63
+ return props.children;
64
+ }
65
+ });
66
+ }
67
+ function composeProviders(providers, props) {
68
+ const outermost = providers.reduceRight(
69
+ (inner, [context, value]) => ({
70
+ get children() {
71
+ return createProvider(context, value, inner);
72
+ }
73
+ }),
74
+ props
75
+ );
76
+ return outermost.children;
77
+ }
78
+ function requireContext(context, message) {
79
+ for (let owner = (0, import_signal.getOwner)(); owner; owner = owner.parent) {
80
+ if (owner.contexts?.has(context.id)) return useContext(context);
81
+ }
82
+ throw new Error(message ?? `[fluixi] No Provider for ${context.id.description ?? "this context"} above this component.`);
83
+ }
@@ -0,0 +1,3 @@
1
+ export { createContext, useContext, createProvider, composeProviders, requireContext } from './context.js';
2
+ export type { Context } from './context.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3G,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ export { createContext, useContext, createProvider, composeProviders, requireContext } from './context.js';
@@ -0,0 +1,64 @@
1
+ // src/lib/context/context.ts
2
+ import { asProvider } from "@fluixi/dom";
3
+ import {
4
+ createContext as createReactiveContext,
5
+ getOwner,
6
+ useContext as useReactiveContext
7
+ } from "@fluixi/reactive/signal";
8
+ function createContext(defaultValue, name) {
9
+ const context = createReactiveContext(defaultValue, name);
10
+ const Provider = (props) => (
11
+ // Children stay a getter: the reactive Provider reads them after stamping the value on
12
+ // its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
13
+ // before the context exists.
14
+ context.Provider({
15
+ value: props.value,
16
+ get children() {
17
+ return props.children;
18
+ },
19
+ debug: props.debug
20
+ })
21
+ );
22
+ return {
23
+ id: context.id,
24
+ Provider: asProvider(Provider),
25
+ defaultValue
26
+ };
27
+ }
28
+ function useContext(context) {
29
+ const value = useReactiveContext(context);
30
+ return value !== void 0 ? value : context.defaultValue;
31
+ }
32
+ function createProvider(context, value, props) {
33
+ const resolved = typeof value === "function" ? value() : value;
34
+ return context.Provider({
35
+ value: resolved,
36
+ get children() {
37
+ return props.children;
38
+ }
39
+ });
40
+ }
41
+ function composeProviders(providers, props) {
42
+ const outermost = providers.reduceRight(
43
+ (inner, [context, value]) => ({
44
+ get children() {
45
+ return createProvider(context, value, inner);
46
+ }
47
+ }),
48
+ props
49
+ );
50
+ return outermost.children;
51
+ }
52
+ function requireContext(context, message) {
53
+ for (let owner = getOwner(); owner; owner = owner.parent) {
54
+ if (owner.contexts?.has(context.id)) return useContext(context);
55
+ }
56
+ throw new Error(message ?? `[fluixi] No Provider for ${context.id.description ?? "this context"} above this component.`);
57
+ }
58
+ export {
59
+ composeProviders,
60
+ createContext,
61
+ createProvider,
62
+ requireContext,
63
+ useContext
64
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/control-flow.ts
21
+ var control_flow_exports = {};
22
+ __export(control_flow_exports, {
23
+ ClientOnly: () => import_dom.ClientOnly,
24
+ Dynamic: () => import_dom.Dynamic,
25
+ ErrorBoundary: () => import_dom.ErrorBoundary,
26
+ For: () => import_dom.For,
27
+ Index: () => import_dom.Index,
28
+ Match: () => import_dom.Match,
29
+ NoSsr: () => import_dom.NoSsr,
30
+ Portal: () => import_dom.Portal,
31
+ Show: () => import_dom.Show,
32
+ Switch: () => import_dom.Switch
33
+ });
34
+ module.exports = __toCommonJS(control_flow_exports);
35
+ var import_dom = require("@fluixi/dom");
@@ -0,0 +1,4 @@
1
+ import { type ShowProps as _ShowProps } from '@fluixi/dom';
2
+ export type ShowProps<T> = _ShowProps<T, JSX.Element>;
3
+ export { Show, For, Index, Switch, Match, Dynamic, ErrorBoundary, Portal, ClientOnly, NoSsr, type ForProps, type ForPropsKeyed, type ForPropsUnkeyed, type IndexProps, type SwitchProps, type MatchProps, type MatchNode, type DynamicProps, type ErrorBoundaryProps, type PortalProps, type ClientOnlyProps, type NoSsrProps, } from '@fluixi/dom';
4
+ //# sourceMappingURL=control-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-flow.d.ts","sourceRoot":"","sources":["../../../src/lib/control-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACtD,OAAO,EACL,IAAI,EACJ,GAAG,EACH,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,aAAa,EACb,MAAM,EACN,UAAU,EACV,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { Show, For, Index, Switch, Match, Dynamic, ErrorBoundary, Portal, ClientOnly, NoSsr, } from '@fluixi/dom';
@@ -0,0 +1,25 @@
1
+ // src/lib/control-flow.ts
2
+ import {
3
+ Show,
4
+ For,
5
+ Index,
6
+ Switch,
7
+ Match,
8
+ Dynamic,
9
+ ErrorBoundary,
10
+ Portal,
11
+ ClientOnly,
12
+ NoSsr
13
+ } from "@fluixi/dom";
14
+ export {
15
+ ClientOnly,
16
+ Dynamic,
17
+ ErrorBoundary,
18
+ For,
19
+ Index,
20
+ Match,
21
+ NoSsr,
22
+ Portal,
23
+ Show,
24
+ Switch
25
+ };