@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.
- package/LICENSE +21 -0
- package/README.md +334 -0
- package/dist/cdn/core.global.js +2 -0
- package/dist/cli/generate.cjs +5639 -0
- package/dist/cli/generate.d.ts +7 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +2580 -0
- package/dist/cli/generate.mjs +5644 -0
- package/dist/cli/index.cjs +5639 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2580 -0
- package/dist/cli/index.mjs +5644 -0
- package/dist/cli/run.cjs +64 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +62 -0
- package/dist/cli/run.mjs +40 -0
- package/dist/fluixi.d.ts +5 -0
- package/dist/src/cdn/chunk-RKBFEFZP.mjs +987 -0
- package/dist/src/cdn/core.cjs +1592 -0
- package/dist/src/cdn/core.d.ts +16 -0
- package/dist/src/cdn/core.d.ts.map +1 -0
- package/dist/src/cdn/core.js +15 -0
- package/dist/src/cdn/core.mjs +714 -0
- package/dist/src/cdn/router-V2THK27H.mjs +74 -0
- package/dist/src/index.cjs +1711 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +11 -0
- package/dist/src/index.mjs +1833 -0
- package/dist/src/jsx-dev-runtime.cjs +26 -0
- package/dist/src/jsx-dev-runtime.d.ts +2 -0
- package/dist/src/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/src/jsx-dev-runtime.js +1 -0
- package/dist/src/jsx-dev-runtime.mjs +24 -0
- package/dist/src/jsx-runtime.cjs +26 -0
- package/dist/src/jsx-runtime.d.ts +7 -0
- package/dist/src/jsx-runtime.d.ts.map +1 -0
- package/dist/src/jsx-runtime.js +8 -0
- package/dist/src/jsx-runtime.mjs +24 -0
- package/dist/src/lib/client/chunk-FDOPDB6Z.mjs +53 -0
- package/dist/src/lib/client/index.cjs +1210 -0
- package/dist/src/lib/client/index.d.ts +51 -0
- package/dist/src/lib/client/index.d.ts.map +1 -0
- package/dist/src/lib/client/index.js +174 -0
- package/dist/src/lib/client/index.mjs +293 -0
- package/dist/src/lib/client/router-4PTBPZLQ.mjs +891 -0
- package/dist/src/lib/context/context.cjs +81 -0
- package/dist/src/lib/context/context.d.ts +73 -0
- package/dist/src/lib/context/context.d.ts.map +1 -0
- package/dist/src/lib/context/context.js +93 -0
- package/dist/src/lib/context/context.mjs +64 -0
- package/dist/src/lib/context/index.cjs +83 -0
- package/dist/src/lib/context/index.d.ts +3 -0
- package/dist/src/lib/context/index.d.ts.map +1 -0
- package/dist/src/lib/context/index.js +1 -0
- package/dist/src/lib/context/index.mjs +64 -0
- package/dist/src/lib/control-flow.cjs +35 -0
- package/dist/src/lib/control-flow.d.ts +4 -0
- package/dist/src/lib/control-flow.d.ts.map +1 -0
- package/dist/src/lib/control-flow.js +1 -0
- package/dist/src/lib/control-flow.mjs +25 -0
- package/dist/src/lib/core.cjs +1710 -0
- package/dist/src/lib/core.d.ts +91 -0
- package/dist/src/lib/core.d.ts.map +1 -0
- package/dist/src/lib/core.js +158 -0
- package/dist/src/lib/core.mjs +1833 -0
- package/dist/src/lib/env/index.cjs +44 -0
- package/dist/src/lib/env/index.d.ts +26 -0
- package/dist/src/lib/env/index.d.ts.map +1 -0
- package/dist/src/lib/env/index.js +31 -0
- package/dist/src/lib/env/index.mjs +23 -0
- package/dist/src/lib/i18n/index.cjs +123 -0
- package/dist/src/lib/i18n/index.d.ts +110 -0
- package/dist/src/lib/i18n/index.d.ts.map +1 -0
- package/dist/src/lib/i18n/index.js +164 -0
- package/dist/src/lib/i18n/index.mjs +103 -0
- package/dist/src/lib/index.cjs +598 -0
- package/dist/src/lib/index.d.ts +81 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +130 -0
- package/dist/src/lib/index.mjs +688 -0
- package/dist/src/lib/isomorphic.cjs +90 -0
- package/dist/src/lib/isomorphic.d.ts +114 -0
- package/dist/src/lib/isomorphic.d.ts.map +1 -0
- package/dist/src/lib/isomorphic.js +132 -0
- package/dist/src/lib/isomorphic.mjs +69 -0
- package/dist/src/lib/jsx-runtime/index.cjs +21 -0
- package/dist/src/lib/jsx-runtime/index.d.ts +13 -0
- package/dist/src/lib/jsx-runtime/index.d.ts.map +1 -0
- package/dist/src/lib/jsx-runtime/index.js +13 -0
- package/dist/src/lib/jsx-runtime/index.mjs +4 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.cjs +21 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts +2 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.js +1 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.mjs +4 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.cjs +302 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts +35 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts.map +1 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.js +118 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.mjs +271 -0
- package/dist/src/lib/plugins/index.cjs +311 -0
- package/dist/src/lib/plugins/index.d.ts +6 -0
- package/dist/src/lib/plugins/index.d.ts.map +1 -0
- package/dist/src/lib/plugins/index.js +7 -0
- package/dist/src/lib/plugins/index.mjs +279 -0
- package/dist/src/lib/plugins/route-codegen.cjs +73 -0
- package/dist/src/lib/plugins/route-codegen.d.ts +12 -0
- package/dist/src/lib/plugins/route-codegen.d.ts.map +1 -0
- package/dist/src/lib/plugins/route-codegen.js +80 -0
- package/dist/src/lib/plugins/route-codegen.mjs +52 -0
- package/dist/src/lib/plugins/route-scanner.cjs +189 -0
- package/dist/src/lib/plugins/route-scanner.d.ts +38 -0
- package/dist/src/lib/plugins/route-scanner.d.ts.map +1 -0
- package/dist/src/lib/plugins/route-scanner.js +215 -0
- package/dist/src/lib/plugins/route-scanner.mjs +158 -0
- package/dist/src/lib/plugins/vite.cjs +27 -0
- package/dist/src/lib/plugins/vite.d.ts +3 -0
- package/dist/src/lib/plugins/vite.d.ts.map +1 -0
- package/dist/src/lib/plugins/vite.js +1 -0
- package/dist/src/lib/plugins/vite.mjs +6 -0
- package/dist/src/lib/render/await.cjs +38 -0
- package/dist/src/lib/render/await.d.ts +26 -0
- package/dist/src/lib/render/await.d.ts.map +1 -0
- package/dist/src/lib/render/await.js +45 -0
- package/dist/src/lib/render/await.mjs +17 -0
- package/dist/src/lib/render/component.cjs +221 -0
- package/dist/src/lib/render/component.d.ts +296 -0
- package/dist/src/lib/render/component.d.ts.map +1 -0
- package/dist/src/lib/render/component.js +514 -0
- package/dist/src/lib/render/component.mjs +214 -0
- package/dist/src/lib/render/deferred.cjs +175 -0
- package/dist/src/lib/render/deferred.d.ts +36 -0
- package/dist/src/lib/render/deferred.d.ts.map +1 -0
- package/dist/src/lib/render/deferred.js +141 -0
- package/dist/src/lib/render/deferred.mjs +158 -0
- package/dist/src/lib/render/index.cjs +573 -0
- package/dist/src/lib/render/index.d.ts +98 -0
- package/dist/src/lib/render/index.d.ts.map +1 -0
- package/dist/src/lib/render/index.js +180 -0
- package/dist/src/lib/render/index.mjs +590 -0
- package/dist/src/lib/render/lazy.cjs +67 -0
- package/dist/src/lib/render/lazy.d.ts +49 -0
- package/dist/src/lib/render/lazy.d.ts.map +1 -0
- package/dist/src/lib/render/lazy.js +105 -0
- package/dist/src/lib/render/lazy.mjs +50 -0
- package/dist/src/lib/render/suspense.cjs +141 -0
- package/dist/src/lib/render/suspense.d.ts +65 -0
- package/dist/src/lib/render/suspense.d.ts.map +1 -0
- package/dist/src/lib/render/suspense.js +196 -0
- package/dist/src/lib/render/suspense.mjs +136 -0
- package/dist/src/lib/render/versions.cjs +35 -0
- package/dist/src/lib/render/versions.d.ts +2 -0
- package/dist/src/lib/render/versions.d.ts.map +1 -0
- package/dist/src/lib/render/versions.js +21 -0
- package/dist/src/lib/render/versions.mjs +14 -0
- package/dist/src/lib/router/data.cjs +228 -0
- package/dist/src/lib/router/data.d.ts +142 -0
- package/dist/src/lib/router/data.d.ts.map +1 -0
- package/dist/src/lib/router/data.js +258 -0
- package/dist/src/lib/router/data.mjs +214 -0
- package/dist/src/lib/router/index.cjs +921 -0
- package/dist/src/lib/router/index.d.ts +274 -0
- package/dist/src/lib/router/index.d.ts.map +1 -0
- package/dist/src/lib/router/index.js +904 -0
- package/dist/src/lib/router/index.mjs +938 -0
- package/dist/src/lib/router/scroll.cjs +79 -0
- package/dist/src/lib/router/scroll.d.ts +19 -0
- package/dist/src/lib/router/scroll.d.ts.map +1 -0
- package/dist/src/lib/router/scroll.js +68 -0
- package/dist/src/lib/router/scroll.mjs +58 -0
- package/dist/src/lib/router/transition.cjs +75 -0
- package/dist/src/lib/router/transition.d.ts +81 -0
- package/dist/src/lib/router/transition.d.ts.map +1 -0
- package/dist/src/lib/router/transition.js +136 -0
- package/dist/src/lib/router/transition.mjs +54 -0
- package/dist/src/lib/server/hydration.cjs +169 -0
- package/dist/src/lib/server/hydration.d.ts +198 -0
- package/dist/src/lib/server/hydration.d.ts.map +1 -0
- package/dist/src/lib/server/hydration.js +345 -0
- package/dist/src/lib/server/hydration.mjs +148 -0
- package/dist/src/lib/server/index.cjs +406 -0
- package/dist/src/lib/server/index.d.ts +115 -0
- package/dist/src/lib/server/index.d.ts.map +1 -0
- package/dist/src/lib/server/index.js +164 -0
- package/dist/src/lib/server/index.mjs +384 -0
- package/dist/src/lib/server/reactive.cjs +197 -0
- package/dist/src/lib/server/reactive.d.ts +239 -0
- package/dist/src/lib/server/reactive.d.ts.map +1 -0
- package/dist/src/lib/server/reactive.js +413 -0
- package/dist/src/lib/server/reactive.mjs +176 -0
- package/dist/src/lib/storage/cache.cjs +51 -0
- package/dist/src/lib/storage/cache.d.ts +18 -0
- package/dist/src/lib/storage/cache.d.ts.map +1 -0
- package/dist/src/lib/storage/cache.js +42 -0
- package/dist/src/lib/storage/cache.mjs +30 -0
- package/dist/src/lib/storage/index.cjs +246 -0
- package/dist/src/lib/storage/index.d.ts +83 -0
- package/dist/src/lib/storage/index.d.ts.map +1 -0
- package/dist/src/lib/storage/index.js +179 -0
- package/dist/src/lib/storage/index.mjs +231 -0
- package/dist/src/lib/storage/persisted.cjs +91 -0
- package/dist/src/lib/storage/persisted.d.ts +53 -0
- package/dist/src/lib/storage/persisted.d.ts.map +1 -0
- package/dist/src/lib/storage/persisted.js +75 -0
- package/dist/src/lib/storage/persisted.mjs +70 -0
- package/dist/src/lib/theme/color-scheme.cjs +281 -0
- package/dist/src/lib/theme/color-scheme.d.ts +61 -0
- package/dist/src/lib/theme/color-scheme.d.ts.map +1 -0
- package/dist/src/lib/theme/color-scheme.js +120 -0
- package/dist/src/lib/theme/color-scheme.mjs +265 -0
- package/dist/src/lib/theme/index.cjs +267 -0
- package/dist/src/lib/theme/index.d.ts +78 -0
- package/dist/src/lib/theme/index.d.ts.map +1 -0
- package/dist/src/lib/theme/index.js +135 -0
- package/dist/src/lib/theme/index.mjs +251 -0
- package/dist/src/lib/theme/provider.cjs +346 -0
- package/dist/src/lib/theme/provider.d.ts +34 -0
- package/dist/src/lib/theme/provider.d.ts.map +1 -0
- package/dist/src/lib/theme/provider.js +60 -0
- package/dist/src/lib/theme/provider.mjs +332 -0
- package/dist/src/lib/utils/index.cjs +209 -0
- package/dist/src/lib/utils/index.d.ts +286 -0
- package/dist/src/lib/utils/index.d.ts.map +1 -0
- package/dist/src/lib/utils/index.js +434 -0
- package/dist/src/lib/utils/index.mjs +188 -0
- package/dist/src/routes.cjs +37 -0
- package/dist/src/routes.d.ts +22 -0
- package/dist/src/routes.d.ts.map +1 -0
- package/dist/src/routes.js +20 -0
- package/dist/src/routes.mjs +17 -0
- package/dist/src/server.cjs +405 -0
- package/dist/src/server.d.ts +63 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +62 -0
- package/dist/src/server.mjs +382 -0
- package/dist/src/utils.cjs +21 -0
- package/dist/src/utils.d.ts +10 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +9 -0
- package/dist/src/utils.mjs +4 -0
- package/dist/src/version.generated.cjs +26 -0
- package/dist/src/version.generated.d.ts +3 -0
- package/dist/src/version.generated.d.ts.map +1 -0
- package/dist/src/version.generated.js +3 -0
- package/dist/src/version.generated.mjs +5 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +164 -0
- package/src/index.ts +19 -0
- package/types/fluixi.d.ts +5 -0
- 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 @@
|
|
|
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
|
+
};
|