foldkit 0.26.0 → 0.28.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/dist/route/parser.d.ts +11 -14
- package/dist/route/parser.d.ts.map +1 -1
- package/dist/route/parser.js +44 -48
- package/dist/ui/combobox/multi.d.ts +178 -0
- package/dist/ui/combobox/multi.d.ts.map +1 -0
- package/dist/ui/combobox/multi.js +53 -0
- package/dist/ui/combobox/multiPublic.d.ts +3 -0
- package/dist/ui/combobox/multiPublic.d.ts.map +1 -0
- package/dist/ui/combobox/multiPublic.js +1 -0
- package/dist/ui/combobox/public.d.ts +8 -0
- package/dist/ui/combobox/public.d.ts.map +1 -0
- package/dist/ui/combobox/public.js +4 -0
- package/dist/ui/combobox/shared.d.ts +236 -0
- package/dist/ui/combobox/shared.d.ts.map +1 -0
- package/dist/ui/combobox/shared.js +560 -0
- package/dist/ui/combobox/single.d.ts +183 -0
- package/dist/ui/combobox/single.d.ts.map +1 -0
- package/dist/ui/combobox/single.js +73 -0
- package/dist/ui/dialog/index.d.ts +3 -0
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +11 -0
- package/dist/ui/dialog/public.d.ts +1 -1
- package/dist/ui/dialog/public.d.ts.map +1 -1
- package/dist/ui/dialog/public.js +1 -1
- package/dist/ui/disclosure/index.d.ts +3 -0
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +11 -0
- package/dist/ui/disclosure/public.d.ts +1 -1
- package/dist/ui/disclosure/public.d.ts.map +1 -1
- package/dist/ui/disclosure/public.js +1 -1
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -0
- package/dist/ui/listbox/multi.d.ts +26 -21
- package/dist/ui/listbox/multi.d.ts.map +1 -1
- package/dist/ui/listbox/multi.js +11 -0
- package/dist/ui/listbox/multiPublic.d.ts +1 -1
- package/dist/ui/listbox/multiPublic.d.ts.map +1 -1
- package/dist/ui/listbox/multiPublic.js +1 -1
- package/dist/ui/listbox/public.d.ts +1 -1
- package/dist/ui/listbox/public.d.ts.map +1 -1
- package/dist/ui/listbox/public.js +1 -1
- package/dist/ui/listbox/shared.d.ts +9 -8
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +10 -3
- package/dist/ui/listbox/single.d.ts +26 -21
- package/dist/ui/listbox/single.d.ts.map +1 -1
- package/dist/ui/listbox/single.js +11 -0
- package/dist/ui/menu/index.d.ts +4 -0
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +21 -3
- package/dist/ui/menu/public.d.ts +1 -1
- package/dist/ui/menu/public.d.ts.map +1 -1
- package/dist/ui/menu/public.js +1 -1
- package/dist/ui/popover/index.d.ts +3 -0
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +11 -0
- package/dist/ui/popover/public.d.ts +1 -1
- package/dist/ui/popover/public.d.ts.map +1 -1
- package/dist/ui/popover/public.js +1 -1
- package/dist/ui/radioGroup/index.d.ts +72 -0
- package/dist/ui/radioGroup/index.d.ts.map +1 -0
- package/dist/ui/radioGroup/index.js +147 -0
- package/dist/ui/radioGroup/public.d.ts +3 -0
- package/dist/ui/radioGroup/public.d.ts.map +1 -0
- package/dist/ui/radioGroup/public.js +1 -0
- package/dist/ui/switch/index.d.ts +3 -0
- package/dist/ui/switch/index.d.ts.map +1 -1
- package/dist/ui/switch/index.js +11 -0
- package/dist/ui/switch/public.d.ts +1 -1
- package/dist/ui/switch/public.d.ts.map +1 -1
- package/dist/ui/switch/public.js +1 -1
- package/dist/ui/tabs/index.d.ts +3 -0
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +11 -0
- package/dist/ui/tabs/public.d.ts +1 -1
- package/dist/ui/tabs/public.d.ts.map +1 -1
- package/dist/ui/tabs/public.js +1 -1
- package/package.json +10 -2
package/dist/route/parser.d.ts
CHANGED
|
@@ -32,18 +32,22 @@ export type Biparser<A> = {
|
|
|
32
32
|
parse: (segments: ReadonlyArray<string>, search?: string) => Effect.Effect<ParseResult<A>, ParseError>;
|
|
33
33
|
print: (value: A, state: PrintState) => Effect.Effect<PrintState, ParseError>;
|
|
34
34
|
};
|
|
35
|
+
type BuildFn<A> = A extends {
|
|
36
|
+
_tag: string;
|
|
37
|
+
} ? keyof Omit<A, '_tag'> extends never ? (value?: Omit<A, '_tag'>) => string : (value: Omit<A, '_tag'>) => string : never;
|
|
35
38
|
/**
|
|
36
39
|
* A parser with a `build` method that can reconstruct URLs from parsed values.
|
|
37
40
|
*
|
|
38
41
|
* Created by applying `mapTo` to a `Biparser`, binding it to a tagged
|
|
39
42
|
* type constructor so parsed values carry a discriminant tag and URLs can be
|
|
40
43
|
* built from tag payloads.
|
|
44
|
+
*
|
|
45
|
+
* Routers are callable — `homeRouter()` or `personRouter({ id: 42 })` —
|
|
46
|
+
* and also expose `.build` as an alias and `.parse` for URL matching.
|
|
41
47
|
*/
|
|
42
|
-
export type Router<A> = {
|
|
48
|
+
export type Router<A> = BuildFn<A> & {
|
|
43
49
|
parse: (segments: ReadonlyArray<string>, search?: string) => Effect.Effect<ParseResult<A>, ParseError>;
|
|
44
|
-
build:
|
|
45
|
-
_tag: string;
|
|
46
|
-
} ? Omit<A, '_tag'> : never) => string;
|
|
50
|
+
build: BuildFn<A>;
|
|
47
51
|
};
|
|
48
52
|
/**
|
|
49
53
|
* A `Biparser` that has been terminated (e.g. by `query`) and cannot
|
|
@@ -104,22 +108,15 @@ export declare const root: Biparser<{}>;
|
|
|
104
108
|
export type Parser<A> = {
|
|
105
109
|
parse: (segments: ReadonlyArray<string>, search?: string) => Effect.Effect<ParseResult<A>, ParseError>;
|
|
106
110
|
};
|
|
111
|
+
type ParserInput = Biparser<any> | Parser<any>;
|
|
112
|
+
type InferParsed<P> = P extends Biparser<infer A> ? A : P extends Parser<infer A> ? A : never;
|
|
107
113
|
/**
|
|
108
114
|
* Combines multiple parsers, trying each in order until one succeeds.
|
|
109
115
|
*
|
|
110
116
|
* Returns a `Parser` (parse-only) since the union of different route
|
|
111
117
|
* shapes cannot provide a single unified print function.
|
|
112
118
|
*/
|
|
113
|
-
export declare
|
|
114
|
-
export declare function oneOf<A, B = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>): Parser<A | B>;
|
|
115
|
-
export declare function oneOf<A, B = never, C = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>): Parser<A | B | C>;
|
|
116
|
-
export declare function oneOf<A, B = never, C = never, D = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>): Parser<A | B | C | D>;
|
|
117
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>): Parser<A | B | C | D | E>;
|
|
118
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never, F = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>, p6: Biparser<F> | Parser<F>): Parser<A | B | C | D | E | F>;
|
|
119
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never, F = never, G = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>, p6: Biparser<F> | Parser<F>, p7: Biparser<G> | Parser<G>): Parser<A | B | C | D | E | F | G>;
|
|
120
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>, p6: Biparser<F> | Parser<F>, p7: Biparser<G> | Parser<G>, p8: Biparser<H> | Parser<H>): Parser<A | B | C | D | E | F | G | H>;
|
|
121
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>, p6: Biparser<F> | Parser<F>, p7: Biparser<G> | Parser<G>, p8: Biparser<H> | Parser<H>, p9: Biparser<I> | Parser<I>): Parser<A | B | C | D | E | F | G | H | I>;
|
|
122
|
-
export declare function oneOf<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never>(p1: Biparser<A> | Parser<A>, p2: Biparser<B> | Parser<B>, p3: Biparser<C> | Parser<C>, p4: Biparser<D> | Parser<D>, p5: Biparser<E> | Parser<E>, p6: Biparser<F> | Parser<F>, p7: Biparser<G> | Parser<G>, p8: Biparser<H> | Parser<H>, p9: Biparser<I> | Parser<I>, p10: Biparser<J> | Parser<J>): Parser<A | B | C | D | E | F | G | H | I | J>;
|
|
119
|
+
export declare const oneOf: <Parsers extends ReadonlyArray<ParserInput>>(...parsers: Parsers) => Parser<InferParsed<Parsers[number]>>;
|
|
123
120
|
/**
|
|
124
121
|
* Converts a `Biparser` into a `Router` by mapping parsed values to a
|
|
125
122
|
* tagged type constructor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/route/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAGN,MAAM,EACN,MAAM,EAIP,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;;;;AAE5B;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAC;CAAG;AAEL;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAEvD,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,KAAK,EAAE,CACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC9C,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;CAC9E,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/route/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAGN,MAAM,EACN,MAAM,EAIP,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;;;;AAE5B;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAC;CAAG;AAEL;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAEvD,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,KAAK,EAAE,CACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC9C,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;CAC9E,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,KAAK,GACjC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,GACnC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,GACpC,KAAK,CAAA;AAET;;;;;;;;;GASG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IACnC,KAAK,EAAE,CACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC9C,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAA;AAM3E;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,KAAG,QAAQ,CAAC,EAAE,CA6BnD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,OAAO,MAAM,EACb,OAAO,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,EACxD,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,KAC1B,QAAQ,CAAC,CAAC,CAwBX,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EACrC,MAAM,CAAC,KACN,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAM1B,CAAA;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAkBvE,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,EAAE,CAc7B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IACtB,KAAK,EAAE,CACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;AAE9C,KAAK,WAAW,CAAC,CAAC,IAChB,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,SAAS,aAAa,CAAC,WAAW,CAAC,EAC9D,GAAG,SAAS,OAAO,KAClB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAcpC,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,CAAC,EAAE,mBAAmB,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC,CAAA;KACd,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE;QAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;KACrB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;CAoBvC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,SAAS,QAAQ,CAAC,CAAC,CAAC,MAGpB,SAAS,QAAQ,CAAC,CAAC,CAAC,GAAG;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;IAC3B,QAAQ,CAAC,kEAAkE,CAAC,EAAE,KAAK,CAAA;CACpF,KACA,QAAQ,CAAC,CAAC,GAAG,CAAC,CAmBf,CAAA;AAEJ;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAE5B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAClB,cAAc,CAAC,CAAC,GAAG,CAAC,CAgEtB,CAAA;AA4BH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC9B,CAAC,EAAE,CAAC,EACH,QAAQ,MAAM,CAAC,CAAC,CAAC,EACjB,0BAA0B;IAAE,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,CAAC,CAAA;CAAE,MAElE,KAAK,GAAG,KAAG,CAAC,GAAG,CAQb,CAAA"}
|
package/dist/route/parser.js
CHANGED
|
@@ -110,20 +110,20 @@ export const root = {
|
|
|
110
110
|
}),
|
|
111
111
|
print: (_, state) => Effect.succeed(state),
|
|
112
112
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
}
|
|
113
|
+
/**
|
|
114
|
+
* Combines multiple parsers, trying each in order until one succeeds.
|
|
115
|
+
*
|
|
116
|
+
* Returns a `Parser` (parse-only) since the union of different route
|
|
117
|
+
* shapes cannot provide a single unified print function.
|
|
118
|
+
*/
|
|
119
|
+
export const oneOf = (...parsers) => ({
|
|
120
|
+
parse: (segments, search) => Array.matchLeft(parsers, {
|
|
121
|
+
onEmpty: () => Effect.fail(new ParseError({
|
|
122
|
+
message: `No parsers provided for path: /${Array.join(segments, '/')}`,
|
|
123
|
+
})),
|
|
124
|
+
onNonEmpty: () => Effect.firstSuccessOf(Array.map(parsers, parser => parser.parse(segments, search))),
|
|
125
|
+
}),
|
|
126
|
+
});
|
|
127
127
|
/**
|
|
128
128
|
* Converts a `Biparser` into a `Router` by mapping parsed values to a
|
|
129
129
|
* tagged type constructor.
|
|
@@ -138,15 +138,17 @@ export function oneOf(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {
|
|
|
138
138
|
*/
|
|
139
139
|
export const mapTo = (appRouteConstructor) => {
|
|
140
140
|
return (parser) => {
|
|
141
|
-
|
|
141
|
+
const build = buildUrl(parser);
|
|
142
|
+
const router = Object.assign(build, {
|
|
142
143
|
parse: (segments, search) => pipe(parser.parse(segments, search), Effect.map(([value, remaining]) => {
|
|
143
144
|
const result = appRouteConstructor.make.length === 0
|
|
144
145
|
? appRouteConstructor.make()
|
|
145
146
|
: appRouteConstructor.make(value);
|
|
146
147
|
return [result, remaining];
|
|
147
148
|
})),
|
|
148
|
-
build
|
|
149
|
-
};
|
|
149
|
+
build,
|
|
150
|
+
});
|
|
151
|
+
return router;
|
|
150
152
|
};
|
|
151
153
|
};
|
|
152
154
|
/**
|
|
@@ -185,35 +187,31 @@ export const slash = (parserB) => (parserA) => ({
|
|
|
185
187
|
*/
|
|
186
188
|
export const query = (schema) => (parser) => {
|
|
187
189
|
const queryParser = {
|
|
188
|
-
parse: (segments, search) => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
[{ ...pathValue, ...queryValue }, remainingSegments]));
|
|
199
|
-
}));
|
|
200
|
-
},
|
|
201
|
-
print: (value, state) => pipe(parser.print(value, state), Effect.flatMap(newState => {
|
|
202
|
-
return pipe(Schema.encode(schema)(value), Effect.map(queryValue => {
|
|
203
|
-
const newQueryParams = new URLSearchParams(newState.queryParams);
|
|
204
|
-
pipe(queryValue, Record.toEntries, Array.forEach(([key, val]) => {
|
|
205
|
-
if (Predicate.isNotNullable(val)) {
|
|
206
|
-
newQueryParams.set(key, val.toString());
|
|
207
|
-
}
|
|
208
|
-
}));
|
|
209
|
-
return {
|
|
210
|
-
...newState,
|
|
211
|
-
queryParams: newQueryParams,
|
|
212
|
-
};
|
|
213
|
-
}), Effect.mapError(error => new ParseError({
|
|
214
|
-
message: `Query parameter encoding failed: ${error.message}`,
|
|
215
|
-
})));
|
|
190
|
+
parse: (segments, search) => pipe(parser.parse(segments, search), Effect.flatMap(([pathValue, remainingSegments]) => {
|
|
191
|
+
const searchParams = new URLSearchParams(search ?? '');
|
|
192
|
+
const queryRecord = Record.fromEntries(searchParams.entries());
|
|
193
|
+
return pipe(queryRecord, Schema.decodeUnknown(schema), Effect.mapError(error => new ParseError({
|
|
194
|
+
message: `Query parameter validation failed: ${error.message}`,
|
|
195
|
+
expected: 'valid query parameters',
|
|
196
|
+
actual: search || 'empty',
|
|
197
|
+
})), Effect.map(queryValue =>
|
|
198
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
199
|
+
[{ ...pathValue, ...queryValue }, remainingSegments]));
|
|
216
200
|
})),
|
|
201
|
+
print: (value, state) => pipe(parser.print(value, state), Effect.flatMap(newState => pipe(Schema.encode(schema)(value), Effect.map(queryValue => {
|
|
202
|
+
const newQueryParams = new URLSearchParams(newState.queryParams);
|
|
203
|
+
pipe(queryValue, Record.toEntries, Array.forEach(([key, val]) => {
|
|
204
|
+
if (Predicate.isNotNullable(val)) {
|
|
205
|
+
newQueryParams.set(key, val.toString());
|
|
206
|
+
}
|
|
207
|
+
}));
|
|
208
|
+
return {
|
|
209
|
+
...newState,
|
|
210
|
+
queryParams: newQueryParams,
|
|
211
|
+
};
|
|
212
|
+
}), Effect.mapError(error => new ParseError({
|
|
213
|
+
message: `Query parameter encoding failed: ${error.message}`,
|
|
214
|
+
}))))),
|
|
217
215
|
};
|
|
218
216
|
return makeTerminalParser(queryParser);
|
|
219
217
|
};
|
|
@@ -228,9 +226,7 @@ const complete = ([value, remaining]) => Array.match(remaining, {
|
|
|
228
226
|
}));
|
|
229
227
|
},
|
|
230
228
|
});
|
|
231
|
-
const parseUrl = (parser) => (url) =>
|
|
232
|
-
return pipe(pathToSegments(url.pathname), segments => parser.parse(segments, Option.getOrUndefined(url.search)), Effect.flatMap(complete));
|
|
233
|
-
};
|
|
229
|
+
const parseUrl = (parser) => (url) => pipe(pathToSegments(url.pathname), segments => parser.parse(segments, Option.getOrUndefined(url.search)), Effect.flatMap(complete));
|
|
234
230
|
/**
|
|
235
231
|
* Parses a URL against a parser, falling back to a not-found route if no
|
|
236
232
|
* parser matches.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import type { Html } from '../../html';
|
|
3
|
+
import { type BaseInitConfig, type BaseViewConfig } from './shared';
|
|
4
|
+
/** Schema for the multi-select combobox component's state, tracking open/closed status, active item, input value, and selected items. */
|
|
5
|
+
export declare const Model: S.extend<S.Struct<{
|
|
6
|
+
id: typeof S.String;
|
|
7
|
+
isOpen: typeof S.Boolean;
|
|
8
|
+
isAnimated: typeof S.Boolean;
|
|
9
|
+
isModal: typeof S.Boolean;
|
|
10
|
+
nullable: typeof S.Boolean;
|
|
11
|
+
immediate: typeof S.Boolean;
|
|
12
|
+
selectInputOnFocus: typeof S.Boolean;
|
|
13
|
+
transitionState: S.Literal<["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
14
|
+
maybeActiveItemIndex: S.OptionFromSelf<typeof S.Number>;
|
|
15
|
+
activationTrigger: S.Literal<["Pointer", "Keyboard"]>;
|
|
16
|
+
inputValue: typeof S.String;
|
|
17
|
+
maybeLastPointerPosition: S.OptionFromSelf<S.Struct<{
|
|
18
|
+
screenX: typeof S.Number;
|
|
19
|
+
screenY: typeof S.Number;
|
|
20
|
+
}>>;
|
|
21
|
+
}>, S.Struct<{
|
|
22
|
+
selectedItems: S.Array$<typeof S.String>;
|
|
23
|
+
}>>;
|
|
24
|
+
export type Model = typeof Model.Type;
|
|
25
|
+
/** Configuration for creating a multi-select combobox model with `init`. `isAnimated` enables CSS transition coordination (default `false`). `isModal` locks page scroll and inerts other elements when open (default `false`). `selectedItems` sets the initial selection (default `[]`). */
|
|
26
|
+
export type InitConfig = BaseInitConfig & Readonly<{
|
|
27
|
+
selectedItems?: ReadonlyArray<string>;
|
|
28
|
+
}>;
|
|
29
|
+
/** Creates an initial multi-select combobox model from a config. Defaults to closed with no active item, empty input, and no selection. */
|
|
30
|
+
export declare const init: (config: InitConfig) => Model;
|
|
31
|
+
/** Processes a combobox message and returns the next model and commands. Stays open on selection and toggles item membership (multi-select behavior). */
|
|
32
|
+
export declare const update: (model: {
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly isOpen: boolean;
|
|
35
|
+
readonly isAnimated: boolean;
|
|
36
|
+
readonly isModal: boolean;
|
|
37
|
+
readonly nullable: boolean;
|
|
38
|
+
readonly immediate: boolean;
|
|
39
|
+
readonly selectInputOnFocus: boolean;
|
|
40
|
+
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
41
|
+
readonly maybeActiveItemIndex: import("effect/Option").Option<number>;
|
|
42
|
+
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
43
|
+
readonly inputValue: string;
|
|
44
|
+
readonly maybeLastPointerPosition: import("effect/Option").Option<{
|
|
45
|
+
readonly screenX: number;
|
|
46
|
+
readonly screenY: number;
|
|
47
|
+
}>;
|
|
48
|
+
} & {
|
|
49
|
+
readonly selectedItems: readonly string[];
|
|
50
|
+
}, message: import("./shared").Message) => [{
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly isOpen: boolean;
|
|
53
|
+
readonly isAnimated: boolean;
|
|
54
|
+
readonly isModal: boolean;
|
|
55
|
+
readonly nullable: boolean;
|
|
56
|
+
readonly immediate: boolean;
|
|
57
|
+
readonly selectInputOnFocus: boolean;
|
|
58
|
+
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
59
|
+
readonly maybeActiveItemIndex: import("effect/Option").Option<number>;
|
|
60
|
+
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
61
|
+
readonly inputValue: string;
|
|
62
|
+
readonly maybeLastPointerPosition: import("effect/Option").Option<{
|
|
63
|
+
readonly screenX: number;
|
|
64
|
+
readonly screenY: number;
|
|
65
|
+
}>;
|
|
66
|
+
} & {
|
|
67
|
+
readonly selectedItems: readonly string[];
|
|
68
|
+
}, readonly import("../../command").Command<{
|
|
69
|
+
readonly _tag: "Opened";
|
|
70
|
+
readonly maybeActiveItemIndex: import("effect/Option").Option<number>;
|
|
71
|
+
} | {
|
|
72
|
+
readonly _tag: "Closed";
|
|
73
|
+
} | {
|
|
74
|
+
readonly _tag: "ClosedByTab";
|
|
75
|
+
} | {
|
|
76
|
+
readonly _tag: "ActivatedItem";
|
|
77
|
+
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
78
|
+
readonly index: number;
|
|
79
|
+
readonly maybeImmediateSelection: import("effect/Option").Option<{
|
|
80
|
+
readonly item: string;
|
|
81
|
+
readonly displayText: string;
|
|
82
|
+
}>;
|
|
83
|
+
} | {
|
|
84
|
+
readonly _tag: "DeactivatedItem";
|
|
85
|
+
} | {
|
|
86
|
+
readonly _tag: "SelectedItem";
|
|
87
|
+
readonly item: string;
|
|
88
|
+
readonly displayText: string;
|
|
89
|
+
} | {
|
|
90
|
+
readonly _tag: "MovedPointerOverItem";
|
|
91
|
+
readonly screenX: number;
|
|
92
|
+
readonly screenY: number;
|
|
93
|
+
readonly index: number;
|
|
94
|
+
} | {
|
|
95
|
+
readonly _tag: "RequestedItemClick";
|
|
96
|
+
readonly index: number;
|
|
97
|
+
} | {
|
|
98
|
+
readonly _tag: "NoOp";
|
|
99
|
+
} | {
|
|
100
|
+
readonly _tag: "AdvancedTransitionFrame";
|
|
101
|
+
} | {
|
|
102
|
+
readonly _tag: "EndedTransition";
|
|
103
|
+
} | {
|
|
104
|
+
readonly _tag: "DetectedInputMovement";
|
|
105
|
+
} | {
|
|
106
|
+
readonly _tag: "UpdatedInputValue";
|
|
107
|
+
readonly value: string;
|
|
108
|
+
} | {
|
|
109
|
+
readonly _tag: "PressedToggleButton";
|
|
110
|
+
}>[]];
|
|
111
|
+
/** Configuration for rendering a multi-select combobox with `view`. */
|
|
112
|
+
export type ViewConfig<Message, Item extends string> = BaseViewConfig<Message, Item, Model>;
|
|
113
|
+
/** Renders a headless multi-select combobox with keyboard navigation, selection tracking, and aria-activedescendant focus management. */
|
|
114
|
+
export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
115
|
+
model: {
|
|
116
|
+
readonly id: string;
|
|
117
|
+
readonly isOpen: boolean;
|
|
118
|
+
readonly isAnimated: boolean;
|
|
119
|
+
readonly isModal: boolean;
|
|
120
|
+
readonly nullable: boolean;
|
|
121
|
+
readonly immediate: boolean;
|
|
122
|
+
readonly selectInputOnFocus: boolean;
|
|
123
|
+
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
124
|
+
readonly maybeActiveItemIndex: import("effect/Option").Option<number>;
|
|
125
|
+
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
126
|
+
readonly inputValue: string;
|
|
127
|
+
readonly maybeLastPointerPosition: import("effect/Option").Option<{
|
|
128
|
+
readonly screenX: number;
|
|
129
|
+
readonly screenY: number;
|
|
130
|
+
}>;
|
|
131
|
+
} & {
|
|
132
|
+
readonly selectedItems: readonly string[];
|
|
133
|
+
};
|
|
134
|
+
toMessage: (message: import("./shared").Opened | import("./shared").Closed | import("./shared").ClosedByTab | import("./shared").ActivatedItem | import("./shared").DeactivatedItem | import("./shared").SelectedItem | import("./shared").MovedPointerOverItem | import("./shared").RequestedItemClick | import("./shared").UpdatedInputValue | import("./shared").PressedToggleButton | import("./shared").NoOp) => Message;
|
|
135
|
+
items: readonly Item[];
|
|
136
|
+
itemToConfig: (item: Item, context: Readonly<{
|
|
137
|
+
isActive: boolean;
|
|
138
|
+
isDisabled: boolean;
|
|
139
|
+
isSelected: boolean;
|
|
140
|
+
}>) => Readonly<{
|
|
141
|
+
className: string;
|
|
142
|
+
content: Html;
|
|
143
|
+
}>;
|
|
144
|
+
itemToValue: (item: Item, index: number) => string;
|
|
145
|
+
itemToDisplayText: (item: Item, index: number) => string;
|
|
146
|
+
isItemDisabled?: (item: Item, index: number) => boolean;
|
|
147
|
+
inputClassName: string;
|
|
148
|
+
inputPlaceholder?: string;
|
|
149
|
+
itemsClassName: string;
|
|
150
|
+
itemsScrollClassName?: string;
|
|
151
|
+
backdropClassName: string;
|
|
152
|
+
className?: string;
|
|
153
|
+
inputWrapperClassName?: string;
|
|
154
|
+
buttonContent?: Html;
|
|
155
|
+
buttonClassName?: string;
|
|
156
|
+
formName?: string;
|
|
157
|
+
isDisabled?: boolean;
|
|
158
|
+
isInvalid?: boolean;
|
|
159
|
+
openOnFocus?: boolean;
|
|
160
|
+
itemGroupKey?: (item: Item, index: number) => string;
|
|
161
|
+
groupToHeading?: (groupKey: string) => Readonly<{
|
|
162
|
+
content: Html;
|
|
163
|
+
className: string;
|
|
164
|
+
}> | undefined;
|
|
165
|
+
groupClassName?: string;
|
|
166
|
+
separatorClassName?: string;
|
|
167
|
+
anchor?: Readonly<{
|
|
168
|
+
placement?: import("@floating-ui/dom").Placement;
|
|
169
|
+
gap?: number;
|
|
170
|
+
offset?: number;
|
|
171
|
+
padding?: number;
|
|
172
|
+
portal?: boolean;
|
|
173
|
+
}>;
|
|
174
|
+
}>) => Html;
|
|
175
|
+
/** Creates a memoized multi-select combobox view. Static config is captured in a closure;
|
|
176
|
+
* only `model` and `toMessage` are compared per render via `createLazy`. */
|
|
177
|
+
export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "toMessage">) => ((model: Model, toMessage: BaseViewConfig<Message, Item, Model>["toMessage"]) => Html);
|
|
178
|
+
//# sourceMappingURL=multi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGtC,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,yIAAyI;AACzI,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;GAEjB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,8RAA8R;AAC9R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACtC,CAAC,CAAA;AAEJ,2IAA2I;AAC3I,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAcF,yJAAyJ;AACzJ,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwBjB,CAAA;AAIF,uEAAuE;AACvE,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACnE,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAA;AAED,yIAAyI;AACzI,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAIf,CAAA;AAEF;6EAC6E;AAC7E,eAAO,MAAM,IAAI,GAAI,OAAO,EAAE,IAAI,SAAS,MAAM,EAC/C,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,KACnE,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,KACzD,IAAI,CAgBR,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Array, Schema as S } from 'effect';
|
|
2
|
+
import { createLazy } from '../../html/lazy';
|
|
3
|
+
import { evo } from '../../struct';
|
|
4
|
+
import { BaseModel, baseInit, closedBaseModel, makeUpdate, makeView, } from './shared';
|
|
5
|
+
// MODEL
|
|
6
|
+
/** Schema for the multi-select combobox component's state, tracking open/closed status, active item, input value, and selected items. */
|
|
7
|
+
export const Model = BaseModel.pipe(S.extend(S.Struct({ selectedItems: S.Array(S.String) })));
|
|
8
|
+
/** Creates an initial multi-select combobox model from a config. Defaults to closed with no active item, empty input, and no selection. */
|
|
9
|
+
export const init = (config) => ({
|
|
10
|
+
...baseInit(config),
|
|
11
|
+
selectedItems: config.selectedItems ?? [],
|
|
12
|
+
});
|
|
13
|
+
// UPDATE
|
|
14
|
+
const toggleItem = (selectedItems, item) => Array.contains(selectedItems, item)
|
|
15
|
+
? Array.filter(selectedItems, selected => selected !== item)
|
|
16
|
+
: Array.append(selectedItems, item);
|
|
17
|
+
const emptySelection = [];
|
|
18
|
+
/** Processes a combobox message and returns the next model and commands. Stays open on selection and toggles item membership (multi-select behavior). */
|
|
19
|
+
export const update = makeUpdate({
|
|
20
|
+
handleClose: model => {
|
|
21
|
+
if (model.nullable && model.inputValue === '') {
|
|
22
|
+
return evo(closedBaseModel(model), {
|
|
23
|
+
selectedItems: () => emptySelection,
|
|
24
|
+
inputValue: () => '',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return evo(closedBaseModel(model), {
|
|
28
|
+
inputValue: () => '',
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
handleSelectedItem: (model, item) => {
|
|
32
|
+
const nextSelectedItems = toggleItem(model.selectedItems, item);
|
|
33
|
+
return [evo(model, { selectedItems: () => nextSelectedItems }), []];
|
|
34
|
+
},
|
|
35
|
+
handleImmediateActivation: (model, item) => evo(model, {
|
|
36
|
+
selectedItems: () => toggleItem(model.selectedItems, item),
|
|
37
|
+
}),
|
|
38
|
+
});
|
|
39
|
+
/** Renders a headless multi-select combobox with keyboard navigation, selection tracking, and aria-activedescendant focus management. */
|
|
40
|
+
export const view = makeView({
|
|
41
|
+
isItemSelected: (model, itemValue) => Array.contains(model.selectedItems, itemValue),
|
|
42
|
+
ariaMultiSelectable: true,
|
|
43
|
+
});
|
|
44
|
+
/** Creates a memoized multi-select combobox view. Static config is captured in a closure;
|
|
45
|
+
* only `model` and `toMessage` are compared per render via `createLazy`. */
|
|
46
|
+
export const lazy = (staticConfig) => {
|
|
47
|
+
const lazyView = createLazy();
|
|
48
|
+
return (model, toMessage) => lazyView((currentModel, currentToMessage) => view({
|
|
49
|
+
...staticConfig,
|
|
50
|
+
model: currentModel,
|
|
51
|
+
toMessage: currentToMessage,
|
|
52
|
+
}), [model, toMessage]);
|
|
53
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiPublic.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/multiPublic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACzD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { init, update, view, lazy, Model } from './multi';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { init, update, view, lazy, Model } from './single';
|
|
2
|
+
export { Message } from './shared';
|
|
3
|
+
export { TransitionState } from '../transition';
|
|
4
|
+
export type { ActivationTrigger, Opened, Closed, ClosedByTab, ActivatedItem, DeactivatedItem, SelectedItem, MovedPointerOverItem, RequestedItemClick, UpdatedInputValue, PressedToggleButton, NoOp, AdvancedTransitionFrame, EndedTransition, DetectedInputMovement, ItemConfig, GroupHeading, } from './shared';
|
|
5
|
+
export type { InitConfig, ViewConfig } from './single';
|
|
6
|
+
export type { AnchorConfig } from '../anchor';
|
|
7
|
+
export * as Multi from './multiPublic';
|
|
8
|
+
//# sourceMappingURL=public.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,IAAI,EACJ,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,YAAY,GACb,MAAM,UAAU,CAAA;AAEjB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEtD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA"}
|