foldkit 0.16.0 → 0.18.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.
- package/README.md +3 -8
- package/dist/{fieldValidation.d.ts → fieldValidation/index.d.ts} +9 -9
- package/dist/fieldValidation/index.d.ts.map +1 -0
- package/dist/{fieldValidation.js → fieldValidation/index.js} +5 -4
- package/dist/fieldValidation/public.d.ts +3 -0
- package/dist/fieldValidation/public.d.ts.map +1 -0
- package/dist/fieldValidation/public.js +1 -0
- package/dist/{html.d.ts → html/index.d.ts} +40 -4
- package/dist/html/index.d.ts.map +1 -0
- package/dist/{html.js → html/index.js} +31 -4
- package/dist/html/public.d.ts +3 -0
- package/dist/html/public.d.ts.map +1 -0
- package/dist/html/public.js +1 -0
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -8
- package/dist/{navigation.d.ts → navigation/index.d.ts} +1 -1
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/public.d.ts +2 -0
- package/dist/navigation/public.d.ts.map +1 -0
- package/dist/navigation/public.js +1 -0
- package/dist/route/index.d.ts +2 -0
- package/dist/route/index.d.ts.map +1 -0
- package/dist/{parser.d.ts → route/parser.d.ts} +1 -1
- package/dist/route/parser.d.ts.map +1 -0
- package/dist/route/public.d.ts +3 -0
- package/dist/route/public.d.ts.map +1 -0
- package/dist/route/public.js +1 -0
- package/dist/runtime/browserListeners.d.ts.map +1 -1
- package/dist/runtime/browserListeners.js +2 -2
- package/dist/runtime/public.d.ts +5 -0
- package/dist/runtime/public.d.ts.map +1 -0
- package/dist/runtime/public.js +2 -0
- package/dist/runtime/runtime.d.ts +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/urlRequest.d.ts +4 -4
- package/dist/runtime/urlRequest.d.ts.map +1 -1
- package/dist/runtime/urlRequest.js +3 -2
- package/dist/schema/index.d.ts +26 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +14 -0
- package/dist/schema/public.d.ts +3 -0
- package/dist/schema/public.d.ts.map +1 -0
- package/dist/schema/public.js +1 -0
- package/dist/{struct.d.ts → struct/index.d.ts} +2 -1
- package/dist/struct/index.d.ts.map +1 -0
- package/dist/struct/index.js +3 -0
- package/dist/struct/public.d.ts +2 -0
- package/dist/struct/public.d.ts.map +1 -0
- package/dist/struct/public.js +1 -0
- package/dist/task/index.d.ts +109 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +168 -0
- package/dist/task/public.d.ts +2 -0
- package/dist/task/public.d.ts.map +1 -0
- package/dist/task/public.js +1 -0
- package/dist/ui/dialog/index.d.ts +46 -0
- package/dist/ui/dialog/index.d.ts.map +1 -0
- package/dist/ui/dialog/index.js +67 -0
- package/dist/ui/dialog/public.d.ts +3 -0
- package/dist/ui/dialog/public.d.ts.map +1 -0
- package/dist/ui/dialog/public.js +1 -0
- package/dist/ui/disclosure/index.d.ts +47 -0
- package/dist/ui/disclosure/index.d.ts.map +1 -0
- package/dist/ui/disclosure/index.js +90 -0
- package/dist/ui/disclosure/public.d.ts +3 -0
- package/dist/ui/disclosure/public.d.ts.map +1 -0
- package/dist/ui/disclosure/public.js +1 -0
- package/dist/ui/index.d.ts +4 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +4 -1
- package/dist/ui/keyboard.d.ts +4 -0
- package/dist/ui/keyboard.d.ts.map +1 -0
- package/dist/ui/keyboard.js +7 -0
- package/dist/ui/menu/index.d.ts +136 -0
- package/dist/ui/menu/index.d.ts.map +1 -0
- package/dist/ui/menu/index.js +297 -0
- package/dist/ui/menu/public.d.ts +3 -0
- package/dist/ui/menu/public.d.ts.map +1 -0
- package/dist/ui/menu/public.js +1 -0
- package/dist/ui/tabs/index.d.ts +76 -0
- package/dist/ui/tabs/index.d.ts.map +1 -0
- package/dist/ui/{tabs.js → tabs/index.js} +25 -25
- package/dist/ui/tabs/public.d.ts +3 -0
- package/dist/ui/tabs/public.d.ts.map +1 -0
- package/dist/ui/tabs/public.js +1 -0
- package/dist/{url.d.ts → url/index.d.ts} +2 -2
- package/dist/url/index.d.ts.map +1 -0
- package/dist/{url.js → url/index.js} +1 -1
- package/dist/url/public.d.ts +2 -0
- package/dist/url/public.d.ts.map +1 -0
- package/dist/url/public.js +1 -0
- package/package.json +32 -19
- package/dist/fieldValidation.d.ts.map +0 -1
- package/dist/html.d.ts.map +0 -1
- package/dist/navigation.d.ts.map +0 -1
- package/dist/parser.d.ts.map +0 -1
- package/dist/route.d.ts +0 -2
- package/dist/route.d.ts.map +0 -1
- package/dist/schema.d.ts +0 -20
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -16
- package/dist/struct.d.ts.map +0 -1
- package/dist/struct.js +0 -2
- package/dist/task.d.ts +0 -64
- package/dist/task.d.ts.map +0 -1
- package/dist/task.js +0 -87
- package/dist/ui/tabs.d.ts +0 -65
- package/dist/ui/tabs.d.ts.map +0 -1
- package/dist/url.d.ts.map +0 -1
- /package/dist/{navigation.js → navigation/index.js} +0 -0
- /package/dist/{route.js → route/index.js} +0 -0
- /package/dist/{parser.js → route/parser.js} +0 -0
package/dist/task.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { DateTime, Effect, Option } from 'effect';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a command that gets the current UTC time and passes it to a message constructor.
|
|
4
|
-
* This is similar to Elm's `Task.perform` with `Time.now`.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* Task.getTime(utc => GotTime.make({ utc }))
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
export const getTime = (f) => Effect.map(DateTime.now, f);
|
|
12
|
-
/**
|
|
13
|
-
* Creates a command that gets the system timezone and passes it to a message constructor.
|
|
14
|
-
* This is similar to Elm's `Task.perform` with `Time.here`.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* Task.getTimeZone(zone => GotTimeZone.make({ zone }))
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export const getTimeZone = (f) => Effect.sync(() => f(DateTime.zoneMakeLocal()));
|
|
22
|
-
/**
|
|
23
|
-
* Creates a command that gets the current time in the system timezone and passes it to a message constructor.
|
|
24
|
-
* This combines both time and timezone in a single task.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* Task.getZonedTime(zoned => GotTime.make({ zoned }))
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export const getZonedTime = (f) => Effect.gen(function* () {
|
|
32
|
-
const utc = yield* DateTime.now;
|
|
33
|
-
const zone = DateTime.zoneMakeLocal();
|
|
34
|
-
const zoned = DateTime.setZone(utc, zone);
|
|
35
|
-
return f(zoned);
|
|
36
|
-
});
|
|
37
|
-
/**
|
|
38
|
-
* Creates a command that gets the current time in a specific timezone and passes it to a message constructor.
|
|
39
|
-
* If the timezone is invalid, the effect will fail with an error string.
|
|
40
|
-
*
|
|
41
|
-
* @example
|
|
42
|
-
* ```typescript
|
|
43
|
-
* Task.getZonedTimeIn('America/New_York', zoned => GotNYTime.make({ zoned }))
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
export const getZonedTimeIn = (zoneId, f) => Effect.gen(function* () {
|
|
47
|
-
const utc = yield* DateTime.now;
|
|
48
|
-
const maybeZone = DateTime.zoneMakeNamed(zoneId);
|
|
49
|
-
if (Option.isNone(maybeZone)) {
|
|
50
|
-
return yield* Effect.fail(`Invalid timezone: ${zoneId}`);
|
|
51
|
-
}
|
|
52
|
-
const zoned = DateTime.setZone(utc, maybeZone.value);
|
|
53
|
-
return f(zoned);
|
|
54
|
-
});
|
|
55
|
-
/**
|
|
56
|
-
* Creates a command that focuses an element by selector and passes the result to a message constructor.
|
|
57
|
-
* Returns true if the element was found and focused, false otherwise.
|
|
58
|
-
* Uses requestAnimationFrame to ensure the DOM tree is updated and nodes exist before attempting to focus.
|
|
59
|
-
* This follows the same approach as Elm's Browser.Dom.focus.
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* Task.focus('#email-input', success => InputFocused.make({ success }))
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
|
-
export const focus = (selector, f) => Effect.async((resume) => {
|
|
67
|
-
requestAnimationFrame(() => {
|
|
68
|
-
const element = document.querySelector(selector);
|
|
69
|
-
if (element instanceof HTMLElement) {
|
|
70
|
-
element.focus();
|
|
71
|
-
resume(Effect.succeed(f(true)));
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
resume(Effect.succeed(f(false)));
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
/**
|
|
79
|
-
* Creates a command that generates a random integer between min (inclusive) and max (exclusive)
|
|
80
|
-
* and passes it to a message constructor.
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```typescript
|
|
84
|
-
* Task.randomInt(0, 100, value => GotRandom.make({ value }))
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export const randomInt = (min, max, f) => Effect.sync(() => f(Math.floor(Math.random() * (max - min)) + min));
|
package/dist/ui/tabs.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Schema as S } from 'effect';
|
|
2
|
-
import type { Html, TagName } from '../html';
|
|
3
|
-
import type { Command } from '../runtime/runtime';
|
|
4
|
-
export declare const Orientation: S.Literal<["Horizontal", "Vertical"]>;
|
|
5
|
-
export type Orientation = typeof Orientation.Type;
|
|
6
|
-
export declare const ActivationMode: S.Literal<["Automatic", "Manual"]>;
|
|
7
|
-
export type ActivationMode = typeof ActivationMode.Type;
|
|
8
|
-
export declare const Model: S.Struct<{
|
|
9
|
-
id: typeof S.String;
|
|
10
|
-
activeIndex: typeof S.Number;
|
|
11
|
-
focusedIndex: typeof S.Number;
|
|
12
|
-
orientation: S.Literal<["Horizontal", "Vertical"]>;
|
|
13
|
-
activationMode: S.Literal<["Automatic", "Manual"]>;
|
|
14
|
-
}>;
|
|
15
|
-
export type Model = typeof Model.Type;
|
|
16
|
-
export declare const TabSelected: S.TaggedStruct<"TabSelected", {
|
|
17
|
-
index: typeof S.Number;
|
|
18
|
-
}>;
|
|
19
|
-
export declare const TabFocused: S.TaggedStruct<"TabFocused", {
|
|
20
|
-
index: typeof S.Number;
|
|
21
|
-
}>;
|
|
22
|
-
export declare const NoOp: S.TaggedStruct<"NoOp", {}>;
|
|
23
|
-
export declare const Message: S.Union<[S.TaggedStruct<"TabSelected", {
|
|
24
|
-
index: typeof S.Number;
|
|
25
|
-
}>, S.TaggedStruct<"TabFocused", {
|
|
26
|
-
index: typeof S.Number;
|
|
27
|
-
}>, S.TaggedStruct<"NoOp", {}>]>;
|
|
28
|
-
export type TabSelected = typeof TabSelected.Type;
|
|
29
|
-
export type TabFocused = typeof TabFocused.Type;
|
|
30
|
-
export type NoOp = typeof NoOp.Type;
|
|
31
|
-
export type Message = typeof Message.Type;
|
|
32
|
-
export type InitConfig = {
|
|
33
|
-
readonly id: string;
|
|
34
|
-
readonly activeIndex?: number;
|
|
35
|
-
readonly orientation?: Orientation;
|
|
36
|
-
readonly activationMode?: ActivationMode;
|
|
37
|
-
};
|
|
38
|
-
export declare const init: (config: InitConfig) => Model;
|
|
39
|
-
export declare const update: (model: Model, message: Message) => [Model, ReadonlyArray<Command<Message>>];
|
|
40
|
-
export type TabConfig = {
|
|
41
|
-
readonly buttonClassName: string;
|
|
42
|
-
readonly buttonContent: Html;
|
|
43
|
-
readonly panelClassName: string;
|
|
44
|
-
readonly panelContent: Html;
|
|
45
|
-
};
|
|
46
|
-
export type ViewConfig<Message, Tab extends string> = {
|
|
47
|
-
readonly model: Model;
|
|
48
|
-
readonly toMessage: (message: TabSelected | TabFocused | NoOp) => Message;
|
|
49
|
-
readonly tabs: ReadonlyArray<Tab>;
|
|
50
|
-
readonly tabToConfig: (tab: Tab, context: {
|
|
51
|
-
isActive: boolean;
|
|
52
|
-
}) => TabConfig;
|
|
53
|
-
readonly isTabDisabled?: (tab: Tab, index: number) => boolean;
|
|
54
|
-
readonly persistPanels?: boolean;
|
|
55
|
-
readonly tabListElement?: TagName;
|
|
56
|
-
readonly tabElement?: TagName;
|
|
57
|
-
readonly panelElement?: TagName;
|
|
58
|
-
readonly className?: string;
|
|
59
|
-
readonly tabListClassName?: string;
|
|
60
|
-
};
|
|
61
|
-
export declare const wrapIndex: (index: number, length: number) => number;
|
|
62
|
-
export declare const findFirstEnabledIndex: (tabCount: number, focusedIndex: number, isDisabled: (index: number) => boolean) => (startIndex: number, direction: 1 | -1) => number;
|
|
63
|
-
export declare const keyToIndex: (nextKey: string, previousKey: string, tabCount: number, focusedIndex: number, isDisabled: (index: number) => boolean) => ((key: string) => number);
|
|
64
|
-
export declare const view: <Message, Tab extends string>(config: ViewConfig<Message, Tab>) => Html;
|
|
65
|
-
//# sourceMappingURL=tabs.d.ts.map
|
package/dist/ui/tabs.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/ui/tabs.ts"],"names":[],"mappings":"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"}
|
package/dist/url.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAe,MAAM,IAAI,CAAC,EAAU,MAAM,QAAQ,CAAA;AAIzE,qGAAqG;AACrG,eAAO,MAAM,GAAG;;;;;;;EAOd,CAAA;AACF,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,IAAI,CAAA;AA+EjC,4EAA4E;AAC5E,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM;;;;;;;EAAuC,CAAA;AAC7E,2CAA2C;AAC3C,eAAO,MAAM,QAAQ,GAAI,KAAK,GAAG,WAAqC,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|