foldkit 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/devtools/overlay-styles.d.ts +1 -1
  2. package/dist/devtools/overlay-styles.d.ts.map +1 -1
  3. package/dist/devtools/overlay-styles.js +5 -1
  4. package/dist/devtools/overlay.d.ts.map +1 -1
  5. package/dist/devtools/overlay.js +52 -19
  6. package/dist/html/index.d.ts +3 -3
  7. package/dist/html/index.d.ts.map +1 -1
  8. package/dist/html/lazy.d.ts +7 -5
  9. package/dist/html/lazy.d.ts.map +1 -1
  10. package/dist/html/lazy.js +12 -8
  11. package/dist/runtime/runtime.d.ts.map +1 -1
  12. package/dist/runtime/runtime.js +2 -4
  13. package/dist/test/apps/disabledButton.d.ts +11 -3
  14. package/dist/test/apps/disabledButton.d.ts.map +1 -1
  15. package/dist/ui/combobox/multi.d.ts +31 -10
  16. package/dist/ui/combobox/multi.d.ts.map +1 -1
  17. package/dist/ui/combobox/public.d.ts +1 -2
  18. package/dist/ui/combobox/public.d.ts.map +1 -1
  19. package/dist/ui/combobox/public.js +1 -2
  20. package/dist/ui/combobox/shared.d.ts +33 -33
  21. package/dist/ui/combobox/shared.d.ts.map +1 -1
  22. package/dist/ui/combobox/shared.js +89 -112
  23. package/dist/ui/combobox/single.d.ts +31 -10
  24. package/dist/ui/combobox/single.d.ts.map +1 -1
  25. package/dist/ui/combobox/single.js +1 -5
  26. package/dist/ui/dialog/index.d.ts +10 -15
  27. package/dist/ui/dialog/index.d.ts.map +1 -1
  28. package/dist/ui/dialog/index.js +68 -73
  29. package/dist/ui/dialog/public.d.ts +1 -1
  30. package/dist/ui/dialog/public.d.ts.map +1 -1
  31. package/dist/ui/dialog/public.js +1 -1
  32. package/dist/ui/listbox/multi.d.ts +30 -9
  33. package/dist/ui/listbox/multi.d.ts.map +1 -1
  34. package/dist/ui/listbox/public.d.ts +1 -2
  35. package/dist/ui/listbox/public.d.ts.map +1 -1
  36. package/dist/ui/listbox/public.js +1 -2
  37. package/dist/ui/listbox/shared.d.ts +35 -36
  38. package/dist/ui/listbox/shared.d.ts.map +1 -1
  39. package/dist/ui/listbox/shared.js +106 -104
  40. package/dist/ui/listbox/single.d.ts +30 -9
  41. package/dist/ui/listbox/single.d.ts.map +1 -1
  42. package/dist/ui/listbox/single.js +9 -12
  43. package/dist/ui/menu/index.d.ts +22 -26
  44. package/dist/ui/menu/index.d.ts.map +1 -1
  45. package/dist/ui/menu/index.js +103 -91
  46. package/dist/ui/menu/public.d.ts +1 -2
  47. package/dist/ui/menu/public.d.ts.map +1 -1
  48. package/dist/ui/menu/public.js +1 -2
  49. package/dist/ui/popover/index.d.ts +21 -22
  50. package/dist/ui/popover/index.d.ts.map +1 -1
  51. package/dist/ui/popover/index.js +92 -75
  52. package/dist/ui/popover/public.d.ts +1 -2
  53. package/dist/ui/popover/public.d.ts.map +1 -1
  54. package/dist/ui/popover/public.js +1 -2
  55. package/dist/ui/transition/index.d.ts +8 -58
  56. package/dist/ui/transition/index.d.ts.map +1 -1
  57. package/dist/ui/transition/index.js +21 -111
  58. package/dist/ui/transition/public.d.ts +1 -1
  59. package/dist/ui/transition/public.d.ts.map +1 -1
  60. package/dist/ui/transition/public.js +1 -1
  61. package/dist/ui/transition/schema.d.ts +43 -0
  62. package/dist/ui/transition/schema.d.ts.map +1 -0
  63. package/dist/ui/transition/schema.js +35 -0
  64. package/dist/ui/transition/update.d.ts +22 -0
  65. package/dist/ui/transition/update.d.ts.map +1 -0
  66. package/dist/ui/transition/update.js +68 -0
  67. package/package.json +1 -1
  68. package/dist/ui/transition.d.ts +0 -5
  69. package/dist/ui/transition.d.ts.map +0 -1
  70. package/dist/ui/transition.js +0 -3
@@ -0,0 +1,22 @@
1
+ import { Option } from 'effect';
2
+ import * as Command from '../../command';
3
+ import { type Message, type Model, type OutMessage } from './schema';
4
+ type UpdateReturn = readonly [
5
+ Model,
6
+ ReadonlyArray<Command.Command<Message>>,
7
+ Option.Option<OutMessage>
8
+ ];
9
+ /** Advances the transition's enter/leave animation by waiting a double-rAF. */
10
+ export declare const RequestFrame: Command.CommandDefinition<"RequestFrame", {
11
+ readonly _tag: "AdvancedTransitionFrame";
12
+ }>;
13
+ /** Waits for all CSS transitions on the transition element to complete. */
14
+ export declare const WaitForTransitions: Command.CommandDefinition<"WaitForTransitions", {
15
+ readonly _tag: "EndedTransition";
16
+ }>;
17
+ /** Processes a transition message and returns the next model, commands, and optional OutMessage. */
18
+ export declare const update: (model: Model, message: Message) => UpdateReturn;
19
+ /** Creates the standard leave-phase command that waits for CSS transitions on the transition element. Use this when handling the `StartedLeaveAnimating` OutMessage for components that don't need custom leave behavior. */
20
+ export declare const defaultLeaveCommand: (model: Model) => Command.Command<Message>;
21
+ export {};
22
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/ui/transition/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEnD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,UAAU,EAGhB,MAAM,UAAU,CAAA;AAMjB,KAAK,YAAY,GAAG,SAAS;IAC3B,KAAK;IACL,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;CAC1B,CAAA;AAGD,+EAA+E;AAC/E,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB;;EAG9B,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YAiFvD,CAAA;AAED,6NAA6N;AAC7N,eAAO,MAAM,mBAAmB,GAAI,OAAO,KAAK,KAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAKvE,CAAA"}
@@ -0,0 +1,68 @@
1
+ import { Effect, Match as M, Option } from 'effect';
2
+ import * as Command from '../../command';
3
+ import { evo } from '../../struct';
4
+ import * as Task from '../../task';
5
+ import { AdvancedTransitionFrame, EndedTransition, StartedLeaveAnimating, TransitionedOut, } from './schema';
6
+ // UPDATE
7
+ const elementSelector = (id) => `#${id}`;
8
+ const withUpdateReturn = M.withReturnType();
9
+ /** Advances the transition's enter/leave animation by waiting a double-rAF. */
10
+ export const RequestFrame = Command.define('RequestFrame', AdvancedTransitionFrame);
11
+ /** Waits for all CSS transitions on the transition element to complete. */
12
+ export const WaitForTransitions = Command.define('WaitForTransitions', EndedTransition);
13
+ /** Processes a transition message and returns the next model, commands, and optional OutMessage. */
14
+ export const update = (model, message) => {
15
+ const maybeNextFrame = RequestFrame(Task.nextFrame.pipe(Effect.as(AdvancedTransitionFrame())));
16
+ return M.value(message).pipe(withUpdateReturn, M.tagsExhaustive({
17
+ Showed: () => {
18
+ if (model.isShowing) {
19
+ return [model, [], Option.none()];
20
+ }
21
+ return [
22
+ evo(model, {
23
+ isShowing: () => true,
24
+ transitionState: () => 'EnterStart',
25
+ }),
26
+ [maybeNextFrame],
27
+ Option.none(),
28
+ ];
29
+ },
30
+ Hidden: () => {
31
+ const isLeaving = model.transitionState === 'LeaveStart' ||
32
+ model.transitionState === 'LeaveAnimating';
33
+ if (isLeaving || !model.isShowing) {
34
+ return [model, [], Option.none()];
35
+ }
36
+ return [
37
+ evo(model, {
38
+ isShowing: () => false,
39
+ transitionState: () => 'LeaveStart',
40
+ }),
41
+ [maybeNextFrame],
42
+ Option.none(),
43
+ ];
44
+ },
45
+ AdvancedTransitionFrame: () => M.value(model.transitionState).pipe(withUpdateReturn, M.when('EnterStart', () => [
46
+ evo(model, { transitionState: () => 'EnterAnimating' }),
47
+ [
48
+ WaitForTransitions(Task.waitForTransitions(elementSelector(model.id)).pipe(Effect.as(EndedTransition()))),
49
+ ],
50
+ Option.none(),
51
+ ]), M.when('LeaveStart', () => [
52
+ evo(model, { transitionState: () => 'LeaveAnimating' }),
53
+ [],
54
+ Option.some(StartedLeaveAnimating()),
55
+ ]), M.orElse(() => [model, [], Option.none()])),
56
+ EndedTransition: () => M.value(model.transitionState).pipe(withUpdateReturn, M.when('EnterAnimating', () => [
57
+ evo(model, { transitionState: () => 'Idle' }),
58
+ [],
59
+ Option.none(),
60
+ ]), M.when('LeaveAnimating', () => [
61
+ evo(model, { transitionState: () => 'Idle' }),
62
+ [],
63
+ Option.some(TransitionedOut()),
64
+ ]), M.orElse(() => [model, [], Option.none()])),
65
+ }));
66
+ };
67
+ /** Creates the standard leave-phase command that waits for CSS transitions on the transition element. Use this when handling the `StartedLeaveAnimating` OutMessage for components that don't need custom leave behavior. */
68
+ export const defaultLeaveCommand = (model) => WaitForTransitions(Task.waitForTransitions(elementSelector(model.id)).pipe(Effect.as(EndedTransition())));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foldkit",
3
- "version": "0.56.0",
3
+ "version": "0.57.0",
4
4
  "description": "A frontend framework for TypeScript, built on Effect, using The Elm Architecture",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,5 +0,0 @@
1
- import { Schema as S } from 'effect';
2
- /** Schema for the transition animation state, tracking enter/leave phases for CSS transition coordination. */
3
- export declare const TransitionState: S.Literal<["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
4
- export type TransitionState = typeof TransitionState.Type;
5
- //# sourceMappingURL=transition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/ui/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,8GAA8G;AAC9G,eAAO,MAAM,eAAe,qFAM3B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA"}
@@ -1,3 +0,0 @@
1
- import { Schema as S } from 'effect';
2
- /** Schema for the transition animation state, tracking enter/leave phases for CSS transition coordination. */
3
- export const TransitionState = S.Literal('Idle', 'EnterStart', 'EnterAnimating', 'LeaveStart', 'LeaveAnimating');