aeon-ui-engine 1.0.2 → 1.0.3
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/CHANGELOG.md +13 -0
- package/CONSUMER.md +86 -0
- package/INTEGRATION.md +2 -0
- package/README.md +15 -4
- package/package.json +17 -1
- package/packages/core/dist/index.d.ts +257 -0
- package/packages/core/dist/index.js +378 -0
- package/packages/core/node_modules/.bin/esbuild +21 -0
- package/packages/core/node_modules/.bin/jiti +21 -0
- package/packages/core/node_modules/.bin/tsc +21 -0
- package/packages/core/node_modules/.bin/tsserver +21 -0
- package/packages/core/node_modules/.bin/tsup +21 -0
- package/packages/core/node_modules/.bin/tsup-node +21 -0
- package/packages/core/node_modules/.bin/tsx +21 -0
- package/packages/core/node_modules/.bin/vite +21 -0
- package/packages/core/node_modules/.bin/vitest +21 -0
- package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/geometry/dist/index.d.ts +50 -0
- package/packages/geometry/dist/index.js +88 -0
- package/packages/geometry/node_modules/.bin/esbuild +21 -0
- package/packages/geometry/node_modules/.bin/jiti +21 -0
- package/packages/geometry/node_modules/.bin/tsc +21 -0
- package/packages/geometry/node_modules/.bin/tsserver +21 -0
- package/packages/geometry/node_modules/.bin/tsup +21 -0
- package/packages/geometry/node_modules/.bin/tsup-node +21 -0
- package/packages/geometry/node_modules/.bin/tsx +21 -0
- package/packages/primitives/dist/chunk-5S4DIRL4.js +42 -0
- package/packages/primitives/dist/chunk-H4KOEPYC.js +52 -0
- package/packages/primitives/dist/chunk-HONROWUG.js +41 -0
- package/packages/primitives/dist/chunk-J6JHKMVM.js +90 -0
- package/packages/primitives/dist/chunk-JBAG5E6W.js +46 -0
- package/packages/primitives/dist/chunk-LVNCD5F2.js +43 -0
- package/packages/primitives/dist/chunk-PB3LFHXU.js +72 -0
- package/packages/primitives/dist/chunk-SZV6KGXN.js +49 -0
- package/packages/primitives/dist/chunk-WVICCOQH.js +56 -0
- package/packages/primitives/dist/chunk-ZMGRX64G.js +74 -0
- package/packages/primitives/dist/index.d.ts +11 -0
- package/packages/primitives/dist/index.js +60 -0
- package/packages/primitives/dist/machines/accordion.d.ts +34 -0
- package/packages/primitives/dist/machines/accordion.js +6 -0
- package/packages/primitives/dist/machines/async.d.ts +111 -0
- package/packages/primitives/dist/machines/async.js +12 -0
- package/packages/primitives/dist/machines/button.d.ts +45 -0
- package/packages/primitives/dist/machines/button.js +8 -0
- package/packages/primitives/dist/machines/dialog.d.ts +57 -0
- package/packages/primitives/dist/machines/dialog.js +6 -0
- package/packages/primitives/dist/machines/field.d.ts +72 -0
- package/packages/primitives/dist/machines/field.js +12 -0
- package/packages/primitives/dist/machines/popover.d.ts +54 -0
- package/packages/primitives/dist/machines/popover.js +6 -0
- package/packages/primitives/dist/machines/slider.d.ts +71 -0
- package/packages/primitives/dist/machines/slider.js +10 -0
- package/packages/primitives/dist/machines/tabs.d.ts +39 -0
- package/packages/primitives/dist/machines/tabs.js +6 -0
- package/packages/primitives/dist/machines/toast.d.ts +31 -0
- package/packages/primitives/dist/machines/toast.js +6 -0
- package/packages/primitives/dist/machines/toggle.d.ts +54 -0
- package/packages/primitives/dist/machines/toggle.js +6 -0
- package/packages/primitives/node_modules/.bin/jiti +21 -0
- package/packages/primitives/node_modules/.bin/tsc +21 -0
- package/packages/primitives/node_modules/.bin/tsserver +21 -0
- package/packages/primitives/node_modules/.bin/tsup +21 -0
- package/packages/primitives/node_modules/.bin/tsup-node +21 -0
- package/packages/primitives/node_modules/.bin/tsx +21 -0
- package/packages/primitives/node_modules/.bin/vitest +21 -0
- package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/react/dist/index.d.ts +564 -0
- package/packages/react/dist/index.js +3461 -0
- package/packages/react/node_modules/.bin/jiti +21 -0
- package/packages/react/node_modules/.bin/tsc +21 -0
- package/packages/react/node_modules/.bin/tsserver +21 -0
- package/packages/react/node_modules/.bin/tsup +21 -0
- package/packages/react/node_modules/.bin/tsup-node +21 -0
- package/packages/react/node_modules/.bin/tsx +21 -0
- package/packages/react/node_modules/.bin/vitest +21 -0
- package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/react-scene/dist/index.d.ts +121 -0
- package/packages/react-scene/dist/index.js +430 -0
- package/packages/react-scene/node_modules/.bin/jiti +21 -0
- package/packages/react-scene/node_modules/.bin/tsc +21 -0
- package/packages/react-scene/node_modules/.bin/tsserver +21 -0
- package/packages/react-scene/node_modules/.bin/tsup +21 -0
- package/packages/react-scene/node_modules/.bin/tsup-node +21 -0
- package/packages/react-scene/node_modules/.bin/tsx +21 -0
- package/packages/scene/dist/index.d.ts +46 -0
- package/packages/scene/dist/index.js +54 -0
- package/packages/scene/node_modules/.bin/jiti +21 -0
- package/packages/scene/node_modules/.bin/tsc +21 -0
- package/packages/scene/node_modules/.bin/tsserver +21 -0
- package/packages/scene/node_modules/.bin/tsup +21 -0
- package/packages/scene/node_modules/.bin/tsup-node +21 -0
- package/packages/scene/node_modules/.bin/tsx +21 -0
- package/packages/signal/dist/index.d.ts +54 -0
- package/packages/signal/dist/index.js +169 -0
- package/packages/signal/node_modules/.bin/jiti +21 -0
- package/packages/signal/node_modules/.bin/tsc +21 -0
- package/packages/signal/node_modules/.bin/tsserver +21 -0
- package/packages/signal/node_modules/.bin/tsup +21 -0
- package/packages/signal/node_modules/.bin/tsup-node +21 -0
- package/packages/signal/node_modules/.bin/tsx +21 -0
- package/packages/site/dist/index.d.ts +31 -0
- package/packages/site/dist/index.js +62 -0
- package/packages/site/node_modules/.bin/jiti +21 -0
- package/packages/site/node_modules/.bin/tsc +21 -0
- package/packages/site/node_modules/.bin/tsserver +21 -0
- package/packages/site/node_modules/.bin/tsup +21 -0
- package/packages/site/node_modules/.bin/tsup-node +21 -0
- package/packages/site/node_modules/.bin/tsx +21 -0
- package/packages/solid/dist/index.d.ts +30 -0
- package/packages/solid/dist/index.js +174 -0
- package/packages/solid/node_modules/.bin/jiti +21 -0
- package/packages/solid/node_modules/.bin/tsc +21 -0
- package/packages/solid/node_modules/.bin/tsserver +21 -0
- package/packages/solid/node_modules/.bin/tsup +21 -0
- package/packages/solid/node_modules/.bin/tsup-node +21 -0
- package/packages/solid/node_modules/.bin/tsx +21 -0
- package/packages/surface/dist/index.d.ts +8 -0
- package/packages/surface/dist/index.js +14 -0
- package/packages/surface/node_modules/.bin/jiti +21 -0
- package/packages/surface/node_modules/.bin/tsc +21 -0
- package/packages/surface/node_modules/.bin/tsserver +21 -0
- package/packages/surface/node_modules/.bin/tsup +21 -0
- package/packages/surface/node_modules/.bin/tsup-node +21 -0
- package/packages/surface/node_modules/.bin/tsx +21 -0
- package/packages/svelte/dist/index.d.ts +12 -0
- package/packages/svelte/dist/index.js +15 -0
- package/packages/svelte/node_modules/.bin/acorn +21 -0
- package/packages/svelte/node_modules/.bin/jiti +21 -0
- package/packages/svelte/node_modules/.bin/svelte-check +21 -0
- package/packages/svelte/node_modules/.bin/tsc +21 -0
- package/packages/svelte/node_modules/.bin/tsserver +21 -0
- package/packages/svelte/node_modules/.bin/tsup +21 -0
- package/packages/svelte/node_modules/.bin/tsup-node +21 -0
- package/packages/svelte/node_modules/.bin/tsx +21 -0
- package/packages/svelte/node_modules/.bin/vite +21 -0
- package/packages/ui/dist/index.d.ts +200 -0
- package/packages/ui/dist/index.js +429 -0
- package/packages/ui/node_modules/.bin/jiti +21 -0
- package/packages/ui/node_modules/.bin/tsc +21 -0
- package/packages/ui/node_modules/.bin/tsserver +21 -0
- package/packages/ui/node_modules/.bin/tsup +21 -0
- package/packages/ui/node_modules/.bin/tsup-node +21 -0
- package/packages/ui/node_modules/.bin/tsx +21 -0
- package/packages/vue/dist/index.d.ts +71 -0
- package/packages/vue/dist/index.js +193 -0
- package/packages/vue/node_modules/.bin/jiti +21 -0
- package/packages/vue/node_modules/.bin/tsc +21 -0
- package/packages/vue/node_modules/.bin/tsserver +21 -0
- package/packages/vue/node_modules/.bin/tsup +21 -0
- package/packages/vue/node_modules/.bin/tsup-node +21 -0
- package/packages/vue/node_modules/.bin/tsx +21 -0
- package/scripts/vite-aliases.mjs +125 -0
- package/.changeset/README.md +0 -23
- package/.changeset/combobox-and-changesets.md +0 -9
- package/.changeset/config.json +0 -31
- package/.changeset/framework-adapters.md +0 -12
- package/.changeset/scene-3d.md +0 -6
- package/.changeset/scene-plane.md +0 -8
- package/.changeset/site-og.md +0 -5
- package/.cursor/rules/aeon-ui.mdc +0 -22
- package/ACCESSIBILITY.md +0 -32
- package/AGENTS.md +0 -226
- package/COMPONENTS.md +0 -41
- package/FRAMEWORKS.md +0 -57
- package/PHILOSOPHY.md +0 -71
- package/PUBLISHING.md +0 -105
- package/SCENE.md +0 -113
- package/STATES.md +0 -243
- package/apps/demo/index.html +0 -31
- package/apps/demo/og.config.mjs +0 -20
- package/apps/demo/package.json +0 -41
- package/apps/demo/public/favicon.svg +0 -16
- package/apps/demo/public/og-aeon-ui-engine.png +0 -0
- package/apps/demo/public/og.svg +0 -35
- package/apps/demo/scripts/generate-og-png.mjs +0 -62
- package/apps/demo/src/App.tsx +0 -31
- package/apps/demo/src/aeonDiagrams.ts +0 -42
- package/apps/demo/src/app.css +0 -16
- package/apps/demo/src/components/ActionCluster.tsx +0 -20
- package/apps/demo/src/components/AsyncMachineDemo.tsx +0 -97
- package/apps/demo/src/components/ButtonLifecycleDemo.tsx +0 -63
- package/apps/demo/src/components/CodeExample.tsx +0 -7
- package/apps/demo/src/components/ComboboxDemo.tsx +0 -30
- package/apps/demo/src/components/DiagramsSection.tsx +0 -37
- package/apps/demo/src/components/FieldStateDemo.tsx +0 -51
- package/apps/demo/src/components/GridMesh.tsx +0 -8
- package/apps/demo/src/components/HeroInstall.tsx +0 -13
- package/apps/demo/src/components/LandingFaq.tsx +0 -29
- package/apps/demo/src/components/LandingFooter.tsx +0 -30
- package/apps/demo/src/components/LandingHeader.tsx +0 -62
- package/apps/demo/src/components/LandingHero.tsx +0 -55
- package/apps/demo/src/components/LayersSection.tsx +0 -47
- package/apps/demo/src/components/MermaidDiagram.tsx +0 -86
- package/apps/demo/src/components/PhilosophySection.tsx +0 -31
- package/apps/demo/src/components/PlaygroundBlock.tsx +0 -18
- package/apps/demo/src/components/PlaygroundControlsDemo.tsx +0 -63
- package/apps/demo/src/components/PlaygroundSection.tsx +0 -120
- package/apps/demo/src/components/ScrollRegionDemo.tsx +0 -74
- package/apps/demo/src/components/ThemeSwitcher.tsx +0 -79
- package/apps/demo/src/demo-layout.css +0 -293
- package/apps/demo/src/landing.css +0 -1143
- package/apps/demo/src/main.tsx +0 -14
- package/apps/demo/src/nav.ts +0 -9
- package/apps/demo/src/site.ts +0 -218
- package/apps/demo/tsconfig.json +0 -17
- package/apps/demo/vite-plugins/og-meta.ts +0 -30
- package/apps/demo/vite.config.ts +0 -69
- package/docs/API_PATTERNS.md +0 -234
- package/docs/ARCHITECTURE.md +0 -125
- package/docs/COMPONENT_CHECKLIST.md +0 -103
- package/docs/FILE_MAP.md +0 -122
- package/docs/GLOSSARY.md +0 -125
- package/docs/INDEX.md +0 -53
- package/docs/LAYOUT_COORDINATES.md +0 -178
- package/docs/MACHINES.md +0 -171
- package/docs/MIGRATION_FROM_ARK.md +0 -295
- package/docs/VITE_CONSUMER.md +0 -114
- package/pnpm-workspace.yaml +0 -3
- package/vercel.json +0 -12
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// src/scene-attrs.ts
|
|
2
|
+
import { scopeAttrs } from "@aeon-ui/core";
|
|
3
|
+
function sceneAttrs(part, state) {
|
|
4
|
+
return scopeAttrs("scene", part, state ? { state } : void 0);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// src/patterns.ts
|
|
8
|
+
function gridPatternStyle(options) {
|
|
9
|
+
const cell = options?.cell ?? 32;
|
|
10
|
+
const color = options?.lineColor ?? "rgba(255, 255, 255, 0.06)";
|
|
11
|
+
const w = options?.lineWidth ?? 1;
|
|
12
|
+
const line = `${w}px ${color}`;
|
|
13
|
+
return {
|
|
14
|
+
backgroundImage: [
|
|
15
|
+
`linear-gradient(${line} 0 0)`,
|
|
16
|
+
`linear-gradient(90deg, ${line} 0 0)`
|
|
17
|
+
].join(", "),
|
|
18
|
+
backgroundSize: `${cell}px ${cell}px`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function wavePath(width, height, options) {
|
|
22
|
+
const wavelength = options?.wavelength ?? 48;
|
|
23
|
+
const amplitude = options?.amplitude ?? height * 0.2;
|
|
24
|
+
const mid = height / 2;
|
|
25
|
+
const steps = Math.max(8, Math.ceil(width / (wavelength / 4)));
|
|
26
|
+
const points = [];
|
|
27
|
+
for (let i = 0; i <= steps; i++) {
|
|
28
|
+
const t = i / steps;
|
|
29
|
+
const x = t * width;
|
|
30
|
+
const y = mid + Math.sin(t * (width / wavelength) * Math.PI * 2) * amplitude;
|
|
31
|
+
points.push(`${i === 0 ? "M" : "L"}${x.toFixed(2)},${y.toFixed(2)}`);
|
|
32
|
+
}
|
|
33
|
+
return points.join(" ");
|
|
34
|
+
}
|
|
35
|
+
function vignetteStyle(options) {
|
|
36
|
+
const s = options?.strength ?? 0.55;
|
|
37
|
+
return {
|
|
38
|
+
background: `radial-gradient(ellipse 80% 70% at 50% 45%, transparent 0%, rgba(0,0,0,${s}) 100%)`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/svg.ts
|
|
43
|
+
var DEFAULT_FILLS = [
|
|
44
|
+
"#8B5CF6",
|
|
45
|
+
"#6366F1",
|
|
46
|
+
"#4F8FF7",
|
|
47
|
+
"#38BDF8",
|
|
48
|
+
"#2DD4BF",
|
|
49
|
+
"#FBBF24",
|
|
50
|
+
"#F472B6"
|
|
51
|
+
];
|
|
52
|
+
function barLayout(options) {
|
|
53
|
+
const count = options.count;
|
|
54
|
+
const viewW = options.viewWidth;
|
|
55
|
+
const viewH = options.viewHeight;
|
|
56
|
+
const barW = options.barWidth ?? Math.min(10, (viewW - (count - 1) * (options.gap ?? 4)) / count);
|
|
57
|
+
const gap = options.gap ?? 4;
|
|
58
|
+
const fills = options.fills ?? DEFAULT_FILLS;
|
|
59
|
+
const totalW = count * barW + (count - 1) * gap;
|
|
60
|
+
const startX = (viewW - totalW) / 2;
|
|
61
|
+
const bars = [];
|
|
62
|
+
for (let i = 0; i < count; i++) {
|
|
63
|
+
const h = viewH * (0.42 + i / Math.max(1, count - 1) * 0.58);
|
|
64
|
+
const y = (viewH - h) / 2;
|
|
65
|
+
const x = startX + i * (barW + gap);
|
|
66
|
+
bars.push({
|
|
67
|
+
x,
|
|
68
|
+
y,
|
|
69
|
+
w: barW,
|
|
70
|
+
h,
|
|
71
|
+
fill: fills[i % fills.length]
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return bars;
|
|
75
|
+
}
|
|
76
|
+
function barScaleTransform(bar, scaleY) {
|
|
77
|
+
const cx = bar.x + bar.w / 2;
|
|
78
|
+
const cy = bar.y + bar.h / 2;
|
|
79
|
+
return `translate(${cx} ${cy}) scale(1 ${scaleY}) translate(${-cx} ${-cy})`;
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
barLayout,
|
|
83
|
+
barScaleTransform,
|
|
84
|
+
gridPatternStyle,
|
|
85
|
+
sceneAttrs,
|
|
86
|
+
vignetteStyle,
|
|
87
|
+
wavePath
|
|
88
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.27.7/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/esbuild" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/esbuild" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsc" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../tsup/dist/cli-default.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../tsup/dist/cli-default.js" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../tsup/dist/cli-node.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../tsup/dist/cli-node.js" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/machines/toast.ts
|
|
2
|
+
import { setup } from "xstate";
|
|
3
|
+
var toastMachine = setup({
|
|
4
|
+
types: {
|
|
5
|
+
context: {},
|
|
6
|
+
events: {},
|
|
7
|
+
input: {}
|
|
8
|
+
},
|
|
9
|
+
guards: {
|
|
10
|
+
hasDuration: ({ context }) => context.durationMs > 0
|
|
11
|
+
},
|
|
12
|
+
delays: {
|
|
13
|
+
VISIBLE_TIMEOUT: ({ context }) => context.durationMs
|
|
14
|
+
}
|
|
15
|
+
}).createMachine({
|
|
16
|
+
id: "toast",
|
|
17
|
+
context: ({ input }) => ({ durationMs: input.durationMs ?? 5e3 }),
|
|
18
|
+
initial: "hidden",
|
|
19
|
+
states: {
|
|
20
|
+
hidden: {
|
|
21
|
+
on: {
|
|
22
|
+
SHOW: "visible"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
visible: {
|
|
26
|
+
on: {
|
|
27
|
+
DISMISS: "hidden",
|
|
28
|
+
TIMEOUT: "hidden"
|
|
29
|
+
},
|
|
30
|
+
after: {
|
|
31
|
+
VISIBLE_TIMEOUT: {
|
|
32
|
+
target: "hidden",
|
|
33
|
+
guard: "hasDuration"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
toastMachine
|
|
42
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// src/machines/toggle.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
var toggleMachine = setup({
|
|
4
|
+
types: {
|
|
5
|
+
context: {},
|
|
6
|
+
events: {},
|
|
7
|
+
input: {}
|
|
8
|
+
},
|
|
9
|
+
guards: {
|
|
10
|
+
notDisabled: ({ context }) => !context.disabled
|
|
11
|
+
},
|
|
12
|
+
actions: {
|
|
13
|
+
flip: assign({
|
|
14
|
+
checked: ({ context }) => !context.checked
|
|
15
|
+
}),
|
|
16
|
+
setChecked: assign({
|
|
17
|
+
checked: ({ event }) => event.type === "SET_CHECKED" ? event.checked : false
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
}).createMachine({
|
|
21
|
+
id: "toggle",
|
|
22
|
+
context: ({ input }) => ({
|
|
23
|
+
checked: input.checked ?? false,
|
|
24
|
+
disabled: input.disabled ?? false
|
|
25
|
+
}),
|
|
26
|
+
initial: "interaction",
|
|
27
|
+
states: {
|
|
28
|
+
interaction: {
|
|
29
|
+
initial: "idle",
|
|
30
|
+
states: {
|
|
31
|
+
idle: {
|
|
32
|
+
on: {
|
|
33
|
+
POINTER_DOWN: { target: "pressed", guard: "notDisabled" },
|
|
34
|
+
TOGGLE: { actions: "flip", guard: "notDisabled" },
|
|
35
|
+
SET_CHECKED: { actions: "setChecked" }
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
pressed: {
|
|
39
|
+
on: {
|
|
40
|
+
/* Flip on TOGGLE (click/keyboard) only — pointer up is visual press state. */
|
|
41
|
+
POINTER_UP: "idle",
|
|
42
|
+
POINTER_LEAVE: "idle"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
toggleMachine
|
|
52
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// src/machines/tabs.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
var tabsMachine = setup({
|
|
4
|
+
types: {
|
|
5
|
+
context: {},
|
|
6
|
+
events: {},
|
|
7
|
+
input: {}
|
|
8
|
+
},
|
|
9
|
+
guards: {
|
|
10
|
+
notDisabled: ({ context }) => !context.disabled,
|
|
11
|
+
hasValue: ({ event }) => event.type === "SELECT" && Boolean(event.value)
|
|
12
|
+
},
|
|
13
|
+
actions: {
|
|
14
|
+
select: assign({
|
|
15
|
+
value: ({ event }) => event.type === "SELECT" ? event.value : ""
|
|
16
|
+
}),
|
|
17
|
+
setValue: assign({
|
|
18
|
+
value: ({ event }) => event.type === "SET_VALUE" ? event.value : ""
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
}).createMachine({
|
|
22
|
+
id: "tabs",
|
|
23
|
+
context: ({ input }) => ({
|
|
24
|
+
value: input.value ?? "",
|
|
25
|
+
disabled: input.disabled ?? false
|
|
26
|
+
}),
|
|
27
|
+
/** Single stable region: which trigger is active. */
|
|
28
|
+
initial: "active",
|
|
29
|
+
states: {
|
|
30
|
+
active: {
|
|
31
|
+
on: {
|
|
32
|
+
SELECT: { actions: "select", guard: "hasValue" },
|
|
33
|
+
SET_VALUE: { actions: "setValue" }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
tabsMachine
|
|
41
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// src/machines/async.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
var ASYNC_LIFECYCLE_STATES = [
|
|
4
|
+
"idle",
|
|
5
|
+
"loading",
|
|
6
|
+
"success",
|
|
7
|
+
"failure",
|
|
8
|
+
"empty"
|
|
9
|
+
];
|
|
10
|
+
function isEmptyAsyncData(data) {
|
|
11
|
+
if (data == null) return true;
|
|
12
|
+
if (typeof data === "string") return data.length === 0;
|
|
13
|
+
if (Array.isArray(data)) return data.length === 0;
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
function createAsyncMachine() {
|
|
17
|
+
return setup({
|
|
18
|
+
types: {
|
|
19
|
+
context: {},
|
|
20
|
+
events: {}
|
|
21
|
+
},
|
|
22
|
+
actions: {
|
|
23
|
+
clear: assign({ data: null, error: null }),
|
|
24
|
+
resolve: assign({
|
|
25
|
+
data: ({ event }) => event.type === "RESOLVE" ? event.data : null,
|
|
26
|
+
error: null,
|
|
27
|
+
stale: false
|
|
28
|
+
}),
|
|
29
|
+
markStale: assign({ stale: true }),
|
|
30
|
+
clearStale: assign({ stale: false }),
|
|
31
|
+
reject: assign({
|
|
32
|
+
error: ({ event }) => event.type === "REJECT" ? event.error : null,
|
|
33
|
+
data: null
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}).createMachine({
|
|
37
|
+
id: "async",
|
|
38
|
+
context: { data: null, error: null },
|
|
39
|
+
initial: "idle",
|
|
40
|
+
states: {
|
|
41
|
+
idle: {
|
|
42
|
+
on: {
|
|
43
|
+
FETCH: "loading",
|
|
44
|
+
RESET: { actions: "clear" }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
loading: {
|
|
48
|
+
on: {
|
|
49
|
+
RESOLVE: [
|
|
50
|
+
{
|
|
51
|
+
target: "empty",
|
|
52
|
+
actions: "resolve",
|
|
53
|
+
guard: ({ event }) => event.type === "RESOLVE" && isEmptyAsyncData(event.data)
|
|
54
|
+
},
|
|
55
|
+
{ target: "success", actions: "resolve" }
|
|
56
|
+
],
|
|
57
|
+
REJECT: { target: "failure", actions: "reject" }
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
empty: {
|
|
61
|
+
on: {
|
|
62
|
+
FETCH: "loading",
|
|
63
|
+
RESET: { target: "idle", actions: "clear" }
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
success: {
|
|
67
|
+
on: {
|
|
68
|
+
FETCH: { target: "loading", actions: "clearStale" },
|
|
69
|
+
STALE: { actions: "markStale" },
|
|
70
|
+
REFRESH: { actions: "clearStale" },
|
|
71
|
+
RESET: { target: "idle", actions: "clear" }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
failure: {
|
|
75
|
+
on: {
|
|
76
|
+
FETCH: "loading",
|
|
77
|
+
RESET: { target: "idle", actions: "clear" }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
var asyncMachine = createAsyncMachine();
|
|
84
|
+
|
|
85
|
+
export {
|
|
86
|
+
ASYNC_LIFECYCLE_STATES,
|
|
87
|
+
isEmptyAsyncData,
|
|
88
|
+
createAsyncMachine,
|
|
89
|
+
asyncMachine
|
|
90
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/machines/accordion.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
function toggleItem(items, item, multiple, collapsible) {
|
|
4
|
+
const isOpen = items.includes(item);
|
|
5
|
+
if (!multiple) {
|
|
6
|
+
if (isOpen) return collapsible ? [] : items;
|
|
7
|
+
return [item];
|
|
8
|
+
}
|
|
9
|
+
if (isOpen) return items.filter((i) => i !== item);
|
|
10
|
+
return [...items, item];
|
|
11
|
+
}
|
|
12
|
+
var accordionMachine = setup({
|
|
13
|
+
types: {
|
|
14
|
+
context: {},
|
|
15
|
+
events: {},
|
|
16
|
+
input: {}
|
|
17
|
+
},
|
|
18
|
+
actions: {
|
|
19
|
+
toggle: assign({
|
|
20
|
+
value: ({ context, event }) => event.type === "TOGGLE" ? toggleItem(context.value, event.item, context.multiple, context.collapsible) : context.value
|
|
21
|
+
}),
|
|
22
|
+
setValue: assign({
|
|
23
|
+
value: ({ event }) => event.type === "SET_VALUE" ? event.value : []
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
}).createMachine({
|
|
27
|
+
id: "accordion",
|
|
28
|
+
context: ({ input }) => ({
|
|
29
|
+
value: input.value ?? [],
|
|
30
|
+
multiple: input.multiple ?? false,
|
|
31
|
+
collapsible: input.collapsible ?? true
|
|
32
|
+
}),
|
|
33
|
+
initial: "managing",
|
|
34
|
+
states: {
|
|
35
|
+
managing: {
|
|
36
|
+
on: {
|
|
37
|
+
TOGGLE: { actions: "toggle" },
|
|
38
|
+
SET_VALUE: { actions: "setValue" }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
export {
|
|
45
|
+
accordionMachine
|
|
46
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/machines/popover.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
var popoverMachine = setup({
|
|
4
|
+
types: {
|
|
5
|
+
context: {},
|
|
6
|
+
events: {},
|
|
7
|
+
input: {}
|
|
8
|
+
},
|
|
9
|
+
actions: {
|
|
10
|
+
markOpen: assign({ open: true }),
|
|
11
|
+
markClosed: assign({ open: false }),
|
|
12
|
+
toggleOpen: assign({ open: ({ context }) => !context.open }),
|
|
13
|
+
setOpen: assign({
|
|
14
|
+
open: ({ event }) => event.type === "SET_OPEN" ? event.open : false
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
}).createMachine({
|
|
18
|
+
id: "popover",
|
|
19
|
+
context: ({ input }) => ({ open: input.open ?? false }),
|
|
20
|
+
initial: "closed",
|
|
21
|
+
states: {
|
|
22
|
+
closed: {
|
|
23
|
+
on: {
|
|
24
|
+
OPEN: { target: "open", actions: "markOpen" },
|
|
25
|
+
TOGGLE: { target: "open", actions: "markOpen" },
|
|
26
|
+
SET_OPEN: [{ target: "open", actions: "markOpen", guard: ({ event }) => event.open }]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
open: {
|
|
30
|
+
on: {
|
|
31
|
+
CLOSE: { target: "closed", actions: "markClosed" },
|
|
32
|
+
ESCAPE: { target: "closed", actions: "markClosed" },
|
|
33
|
+
POINTER_DOWN_OUTSIDE: { target: "closed", actions: "markClosed" },
|
|
34
|
+
TOGGLE: { target: "closed", actions: "markClosed" },
|
|
35
|
+
SET_OPEN: [{ target: "closed", actions: "markClosed", guard: ({ event }) => !event.open }]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
popoverMachine
|
|
43
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// src/machines/slider.ts
|
|
2
|
+
import { assign, setup } from "xstate";
|
|
3
|
+
function clamp(value, min, max) {
|
|
4
|
+
return Math.min(max, Math.max(min, value));
|
|
5
|
+
}
|
|
6
|
+
function snap(value, min, max, step) {
|
|
7
|
+
if (step <= 0) return clamp(value, min, max);
|
|
8
|
+
const snapped = min + Math.round((value - min) / step) * step;
|
|
9
|
+
return clamp(snapped, min, max);
|
|
10
|
+
}
|
|
11
|
+
var sliderMachine = setup({
|
|
12
|
+
types: {
|
|
13
|
+
context: {},
|
|
14
|
+
events: {},
|
|
15
|
+
input: {}
|
|
16
|
+
},
|
|
17
|
+
guards: {
|
|
18
|
+
notDisabled: ({ context }) => !context.disabled
|
|
19
|
+
},
|
|
20
|
+
actions: {
|
|
21
|
+
setValue: assign({
|
|
22
|
+
value: ({ context, event }) => event.type === "SET_VALUE" ? snap(event.value, context.min, context.max, context.step) : context.value
|
|
23
|
+
}),
|
|
24
|
+
step: assign({
|
|
25
|
+
value: ({ context, event }) => event.type === "STEP" ? snap(context.value + event.delta, context.min, context.max, context.step) : context.value
|
|
26
|
+
}),
|
|
27
|
+
home: assign({
|
|
28
|
+
value: ({ context }) => context.min
|
|
29
|
+
}),
|
|
30
|
+
end: assign({
|
|
31
|
+
value: ({ context }) => context.max
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
}).createMachine({
|
|
35
|
+
id: "slider",
|
|
36
|
+
context: ({ input }) => ({
|
|
37
|
+
value: snap(input.value ?? input.min, input.min, input.max, input.step),
|
|
38
|
+
min: input.min,
|
|
39
|
+
max: input.max,
|
|
40
|
+
step: input.step,
|
|
41
|
+
disabled: input.disabled ?? false
|
|
42
|
+
}),
|
|
43
|
+
initial: "interaction",
|
|
44
|
+
states: {
|
|
45
|
+
interaction: {
|
|
46
|
+
initial: "idle",
|
|
47
|
+
states: {
|
|
48
|
+
idle: {
|
|
49
|
+
on: {
|
|
50
|
+
SET_VALUE: { actions: "setValue", guard: "notDisabled" },
|
|
51
|
+
STEP: { actions: "step", guard: "notDisabled" },
|
|
52
|
+
HOME: { actions: "home", guard: "notDisabled" },
|
|
53
|
+
END: { actions: "end", guard: "notDisabled" },
|
|
54
|
+
POINTER_DOWN: { target: "dragging", guard: "notDisabled" }
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
dragging: {
|
|
58
|
+
on: {
|
|
59
|
+
SET_VALUE: { actions: "setValue" },
|
|
60
|
+
POINTER_UP: "idle"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
clamp,
|
|
70
|
+
snap,
|
|
71
|
+
sliderMachine
|
|
72
|
+
};
|