@chenzy-design/core 0.1.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/LICENSE +21 -0
- package/dist/back-top.d.ts +16 -0
- package/dist/back-top.d.ts.map +1 -0
- package/dist/back-top.js +29 -0
- package/dist/back-top.js.map +1 -0
- package/dist/back-top.test.d.ts +2 -0
- package/dist/back-top.test.d.ts.map +1 -0
- package/dist/back-top.test.js +44 -0
- package/dist/back-top.test.js.map +1 -0
- package/dist/banner.d.ts +19 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +20 -0
- package/dist/banner.js.map +1 -0
- package/dist/banner.test.d.ts +2 -0
- package/dist/banner.test.d.ts.map +1 -0
- package/dist/banner.test.js +29 -0
- package/dist/banner.test.js.map +1 -0
- package/dist/breakpoints.d.ts +30 -0
- package/dist/breakpoints.d.ts.map +1 -0
- package/dist/breakpoints.js +45 -0
- package/dist/breakpoints.js.map +1 -0
- package/dist/breakpoints.test.d.ts +2 -0
- package/dist/breakpoints.test.d.ts.map +1 -0
- package/dist/breakpoints.test.js +46 -0
- package/dist/breakpoints.test.js.map +1 -0
- package/dist/calendar.d.ts +63 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +94 -0
- package/dist/calendar.js.map +1 -0
- package/dist/calendar.test.d.ts +2 -0
- package/dist/calendar.test.d.ts.map +1 -0
- package/dist/calendar.test.js +88 -0
- package/dist/calendar.test.js.map +1 -0
- package/dist/cascader.d.ts +64 -0
- package/dist/cascader.d.ts.map +1 -0
- package/dist/cascader.js +79 -0
- package/dist/cascader.js.map +1 -0
- package/dist/cascader.test.d.ts +2 -0
- package/dist/cascader.test.d.ts.map +1 -0
- package/dist/cascader.test.js +107 -0
- package/dist/cascader.test.js.map +1 -0
- package/dist/color.d.ts +70 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +217 -0
- package/dist/color.js.map +1 -0
- package/dist/color.test.d.ts +2 -0
- package/dist/color.test.d.ts.map +1 -0
- package/dist/color.test.js +161 -0
- package/dist/color.test.js.map +1 -0
- package/dist/config-provider.d.ts +57 -0
- package/dist/config-provider.d.ts.map +1 -0
- package/dist/config-provider.js +49 -0
- package/dist/config-provider.js.map +1 -0
- package/dist/config-provider.test.d.ts +2 -0
- package/dist/config-provider.test.d.ts.map +1 -0
- package/dist/config-provider.test.js +76 -0
- package/dist/config-provider.test.js.map +1 -0
- package/dist/copyable.d.ts +43 -0
- package/dist/copyable.d.ts.map +1 -0
- package/dist/copyable.js +102 -0
- package/dist/copyable.js.map +1 -0
- package/dist/copyable.test.d.ts +2 -0
- package/dist/copyable.test.d.ts.map +1 -0
- package/dist/copyable.test.js +97 -0
- package/dist/copyable.test.js.map +1 -0
- package/dist/date.d.ts +86 -0
- package/dist/date.d.ts.map +1 -0
- package/dist/date.js +226 -0
- package/dist/date.js.map +1 -0
- package/dist/date.test.d.ts +2 -0
- package/dist/date.test.d.ts.map +1 -0
- package/dist/date.test.js +171 -0
- package/dist/date.test.js.map +1 -0
- package/dist/dismiss.d.ts +28 -0
- package/dist/dismiss.d.ts.map +1 -0
- package/dist/dismiss.js +42 -0
- package/dist/dismiss.js.map +1 -0
- package/dist/editable.d.ts +59 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +85 -0
- package/dist/editable.js.map +1 -0
- package/dist/editable.test.d.ts +2 -0
- package/dist/editable.test.d.ts.map +1 -0
- package/dist/editable.test.js +111 -0
- package/dist/editable.test.js.map +1 -0
- package/dist/ellipsis.d.ts +76 -0
- package/dist/ellipsis.d.ts.map +1 -0
- package/dist/ellipsis.js +99 -0
- package/dist/ellipsis.js.map +1 -0
- package/dist/ellipsis.test.d.ts +2 -0
- package/dist/ellipsis.test.d.ts.map +1 -0
- package/dist/ellipsis.test.js +94 -0
- package/dist/ellipsis.test.js.map +1 -0
- package/dist/floating.d.ts +78 -0
- package/dist/floating.d.ts.map +1 -0
- package/dist/floating.js +169 -0
- package/dist/floating.js.map +1 -0
- package/dist/floating.test.d.ts +2 -0
- package/dist/floating.test.d.ts.map +1 -0
- package/dist/floating.test.js +169 -0
- package/dist/floating.test.js.map +1 -0
- package/dist/focus-trap.d.ts +24 -0
- package/dist/focus-trap.d.ts.map +1 -0
- package/dist/focus-trap.js +64 -0
- package/dist/focus-trap.js.map +1 -0
- package/dist/form.d.ts +131 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +257 -0
- package/dist/form.js.map +1 -0
- package/dist/form.test.d.ts +2 -0
- package/dist/form.test.d.ts.map +1 -0
- package/dist/form.test.js +323 -0
- package/dist/form.test.js.map +1 -0
- package/dist/highlight.d.ts +57 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/highlight.js +124 -0
- package/dist/highlight.js.map +1 -0
- package/dist/highlight.test.d.ts +2 -0
- package/dist/highlight.test.d.ts.map +1 -0
- package/dist/highlight.test.js +155 -0
- package/dist/highlight.test.js.map +1 -0
- package/dist/id.d.ts +4 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +14 -0
- package/dist/id.js.map +1 -0
- package/dist/id.test.d.ts +2 -0
- package/dist/id.test.d.ts.map +1 -0
- package/dist/id.test.js +13 -0
- package/dist/id.test.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/inert-background.d.ts +27 -0
- package/dist/inert-background.d.ts.map +1 -0
- package/dist/inert-background.js +92 -0
- package/dist/inert-background.js.map +1 -0
- package/dist/inert-background.test.d.ts +2 -0
- package/dist/inert-background.test.d.ts.map +1 -0
- package/dist/inert-background.test.js +62 -0
- package/dist/inert-background.test.js.map +1 -0
- package/dist/input-number.d.ts +34 -0
- package/dist/input-number.d.ts.map +1 -0
- package/dist/input-number.js +69 -0
- package/dist/input-number.js.map +1 -0
- package/dist/input-number.test.d.ts +2 -0
- package/dist/input-number.test.d.ts.map +1 -0
- package/dist/input-number.test.js +74 -0
- package/dist/input-number.test.js.map +1 -0
- package/dist/list-selection.d.ts +38 -0
- package/dist/list-selection.d.ts.map +1 -0
- package/dist/list-selection.js +61 -0
- package/dist/list-selection.js.map +1 -0
- package/dist/list-selection.test.d.ts +2 -0
- package/dist/list-selection.test.d.ts.map +1 -0
- package/dist/list-selection.test.js +61 -0
- package/dist/list-selection.test.js.map +1 -0
- package/dist/live-announcer.d.ts +38 -0
- package/dist/live-announcer.d.ts.map +1 -0
- package/dist/live-announcer.js +89 -0
- package/dist/live-announcer.js.map +1 -0
- package/dist/live-announcer.test.d.ts +2 -0
- package/dist/live-announcer.test.d.ts.map +1 -0
- package/dist/live-announcer.test.js +70 -0
- package/dist/live-announcer.test.js.map +1 -0
- package/dist/lottie-icon.d.ts +88 -0
- package/dist/lottie-icon.d.ts.map +1 -0
- package/dist/lottie-icon.js +84 -0
- package/dist/lottie-icon.js.map +1 -0
- package/dist/lottie-icon.test.d.ts +2 -0
- package/dist/lottie-icon.test.d.ts.map +1 -0
- package/dist/lottie-icon.test.js +88 -0
- package/dist/lottie-icon.test.js.map +1 -0
- package/dist/notification.d.ts +61 -0
- package/dist/notification.d.ts.map +1 -0
- package/dist/notification.js +133 -0
- package/dist/notification.js.map +1 -0
- package/dist/notification.test.d.ts +2 -0
- package/dist/notification.test.d.ts.map +1 -0
- package/dist/notification.test.js +103 -0
- package/dist/notification.test.js.map +1 -0
- package/dist/overflow-list.d.ts +102 -0
- package/dist/overflow-list.d.ts.map +1 -0
- package/dist/overflow-list.js +159 -0
- package/dist/overflow-list.js.map +1 -0
- package/dist/overflow-list.test.d.ts +2 -0
- package/dist/overflow-list.test.d.ts.map +1 -0
- package/dist/overflow-list.test.js +223 -0
- package/dist/overflow-list.test.js.map +1 -0
- package/dist/pagination.d.ts +51 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +127 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pagination.test.d.ts +2 -0
- package/dist/pagination.test.d.ts.map +1 -0
- package/dist/pagination.test.js +147 -0
- package/dist/pagination.test.js.map +1 -0
- package/dist/progress.d.ts +64 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +92 -0
- package/dist/progress.js.map +1 -0
- package/dist/progress.test.d.ts +2 -0
- package/dist/progress.test.d.ts.map +1 -0
- package/dist/progress.test.js +79 -0
- package/dist/progress.test.js.map +1 -0
- package/dist/resize-observer.d.ts +133 -0
- package/dist/resize-observer.d.ts.map +1 -0
- package/dist/resize-observer.js +358 -0
- package/dist/resize-observer.js.map +1 -0
- package/dist/resize-observer.test.d.ts +2 -0
- package/dist/resize-observer.test.d.ts.map +1 -0
- package/dist/resize-observer.test.js +377 -0
- package/dist/resize-observer.test.js.map +1 -0
- package/dist/roving.d.ts +26 -0
- package/dist/roving.d.ts.map +1 -0
- package/dist/roving.js +61 -0
- package/dist/roving.js.map +1 -0
- package/dist/roving.test.d.ts +2 -0
- package/dist/roving.test.d.ts.map +1 -0
- package/dist/roving.test.js +48 -0
- package/dist/roving.test.js.map +1 -0
- package/dist/scroll-list.d.ts +81 -0
- package/dist/scroll-list.d.ts.map +1 -0
- package/dist/scroll-list.js +175 -0
- package/dist/scroll-list.js.map +1 -0
- package/dist/scroll-list.test.d.ts +2 -0
- package/dist/scroll-list.test.d.ts.map +1 -0
- package/dist/scroll-list.test.js +135 -0
- package/dist/scroll-list.test.js.map +1 -0
- package/dist/scroll-lock.d.ts +11 -0
- package/dist/scroll-lock.d.ts.map +1 -0
- package/dist/scroll-lock.js +45 -0
- package/dist/scroll-lock.js.map +1 -0
- package/dist/scroll-lock.test.d.ts +2 -0
- package/dist/scroll-lock.test.d.ts.map +1 -0
- package/dist/scroll-lock.test.js +55 -0
- package/dist/scroll-lock.test.js.map +1 -0
- package/dist/sider.d.ts +26 -0
- package/dist/sider.d.ts.map +1 -0
- package/dist/sider.js +55 -0
- package/dist/sider.js.map +1 -0
- package/dist/sider.test.d.ts +2 -0
- package/dist/sider.test.d.ts.map +1 -0
- package/dist/sider.test.js +29 -0
- package/dist/sider.test.js.map +1 -0
- package/dist/spin.d.ts +25 -0
- package/dist/spin.d.ts.map +1 -0
- package/dist/spin.js +96 -0
- package/dist/spin.js.map +1 -0
- package/dist/spin.test.d.ts +2 -0
- package/dist/spin.test.d.ts.map +1 -0
- package/dist/spin.test.js +80 -0
- package/dist/spin.test.js.map +1 -0
- package/dist/table.d.ts +101 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +244 -0
- package/dist/table.js.map +1 -0
- package/dist/table.test.d.ts +2 -0
- package/dist/table.test.d.ts.map +1 -0
- package/dist/table.test.js +184 -0
- package/dist/table.test.js.map +1 -0
- package/dist/textarea.d.ts +48 -0
- package/dist/textarea.d.ts.map +1 -0
- package/dist/textarea.js +76 -0
- package/dist/textarea.js.map +1 -0
- package/dist/textarea.test.d.ts +2 -0
- package/dist/textarea.test.d.ts.map +1 -0
- package/dist/textarea.test.js +77 -0
- package/dist/textarea.test.js.map +1 -0
- package/dist/time.d.ts +93 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +181 -0
- package/dist/time.js.map +1 -0
- package/dist/time.test.d.ts +2 -0
- package/dist/time.test.d.ts.map +1 -0
- package/dist/time.test.js +159 -0
- package/dist/time.test.js.map +1 -0
- package/dist/toast.d.ts +60 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +135 -0
- package/dist/toast.js.map +1 -0
- package/dist/toast.test.d.ts +2 -0
- package/dist/toast.test.d.ts.map +1 -0
- package/dist/toast.test.js +127 -0
- package/dist/toast.test.js.map +1 -0
- package/dist/tree.d.ts +129 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +351 -0
- package/dist/tree.js.map +1 -0
- package/dist/tree.test.d.ts +2 -0
- package/dist/tree.test.d.ts.map +1 -0
- package/dist/tree.test.js +291 -0
- package/dist/tree.test.js.map +1 -0
- package/dist/upload.d.ts +62 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +85 -0
- package/dist/upload.js.map +1 -0
- package/dist/upload.test.d.ts +2 -0
- package/dist/upload.test.d.ts.map +1 -0
- package/dist/upload.test.js +169 -0
- package/dist/upload.test.js.map +1 -0
- package/dist/virtual-list.d.ts +83 -0
- package/dist/virtual-list.d.ts.map +1 -0
- package/dist/virtual-list.js +143 -0
- package/dist/virtual-list.js.map +1 -0
- package/dist/virtual-list.test.d.ts +2 -0
- package/dist/virtual-list.test.d.ts.map +1 -0
- package/dist/virtual-list.test.js +148 -0
- package/dist/virtual-list.test.js.map +1 -0
- package/package.json +22 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* highlight — framework-agnostic text highlight chunking with overlap merging.
|
|
3
|
+
* Pure: given a source string + search words (or precomputed match ranges),
|
|
4
|
+
* returns a flat, ordered, non-overlapping sequence of chunks
|
|
5
|
+
* [{ text, matched }] covering the whole source. No DOM, no regex side effects
|
|
6
|
+
* on caller input. The render layer maps chunks → <mark>/snippet.
|
|
7
|
+
*
|
|
8
|
+
* Overlap handling: when multiple search words match overlapping regions, the
|
|
9
|
+
* ranges are merged so a character is wrapped at most once (no nested/duplicated
|
|
10
|
+
* markup). Adjacent (touching) matched ranges are also coalesced.
|
|
11
|
+
* See specs/components/show/Highlight.spec.md.
|
|
12
|
+
*/
|
|
13
|
+
/** A half-open match range [start, end) into the source string. */
|
|
14
|
+
export interface HighlightRange {
|
|
15
|
+
start: number;
|
|
16
|
+
end: number;
|
|
17
|
+
}
|
|
18
|
+
/** One contiguous piece of the source: either a match or plain text. */
|
|
19
|
+
export interface HighlightChunk {
|
|
20
|
+
text: string;
|
|
21
|
+
matched: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface FindRangesOptions {
|
|
24
|
+
/** match case-sensitively (default false) */
|
|
25
|
+
caseSensitive?: boolean;
|
|
26
|
+
/** match all occurrences (default true); false = first occurrence only */
|
|
27
|
+
highlightAll?: boolean;
|
|
28
|
+
/** treat words as literal text by escaping regex (default true) */
|
|
29
|
+
autoEscape?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Find raw (possibly overlapping) match ranges of `words` in `source`.
|
|
33
|
+
*
|
|
34
|
+
* Each word is scanned independently, so ranges from different words may
|
|
35
|
+
* overlap (e.g. "ab" and "bc" in "abc" → [0,2] and [1,3]); feed the result to
|
|
36
|
+
* mergeRanges / chunksFromRanges to normalize. Returns ranges in document
|
|
37
|
+
* order. An invalid regex source (autoEscape=false misuse) for any word is
|
|
38
|
+
* silently skipped (that word contributes no ranges).
|
|
39
|
+
*/
|
|
40
|
+
export declare function findRanges(source: string, words: string | string[], options?: FindRangesOptions): HighlightRange[];
|
|
41
|
+
/**
|
|
42
|
+
* Merge overlapping or adjacent ranges into a sorted, non-overlapping set.
|
|
43
|
+
* Handles: overlap, containment, adjacency (touching ends), and duplicates.
|
|
44
|
+
*/
|
|
45
|
+
export declare function mergeRanges(ranges: HighlightRange[]): HighlightRange[];
|
|
46
|
+
/**
|
|
47
|
+
* Slice `source` into an ordered, gap-free chunk sequence using `ranges`.
|
|
48
|
+
* `ranges` may overlap; they are merged first, so output chunks never overlap
|
|
49
|
+
* and concatenating their text reproduces `source` exactly.
|
|
50
|
+
*/
|
|
51
|
+
export declare function chunksFromRanges(source: string, ranges: HighlightRange[]): HighlightChunk[];
|
|
52
|
+
/**
|
|
53
|
+
* One-shot: find matches of `words` in `source` and return merged,
|
|
54
|
+
* non-overlapping chunks. The render layer iterates the result directly.
|
|
55
|
+
*/
|
|
56
|
+
export declare function highlightChunks(source: string, words: string | string[], options?: FindRangesOptions): HighlightChunk[];
|
|
57
|
+
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,GAAE,iBAAsB,GAC9B,cAAc,EAAE,CA8BlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAmBtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAgB3F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,GAAE,iBAAsB,GAC9B,cAAc,EAAE,CAIlB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* highlight — framework-agnostic text highlight chunking with overlap merging.
|
|
3
|
+
* Pure: given a source string + search words (or precomputed match ranges),
|
|
4
|
+
* returns a flat, ordered, non-overlapping sequence of chunks
|
|
5
|
+
* [{ text, matched }] covering the whole source. No DOM, no regex side effects
|
|
6
|
+
* on caller input. The render layer maps chunks → <mark>/snippet.
|
|
7
|
+
*
|
|
8
|
+
* Overlap handling: when multiple search words match overlapping regions, the
|
|
9
|
+
* ranges are merged so a character is wrapped at most once (no nested/duplicated
|
|
10
|
+
* markup). Adjacent (touching) matched ranges are also coalesced.
|
|
11
|
+
* See specs/components/show/Highlight.spec.md.
|
|
12
|
+
*/
|
|
13
|
+
const RE_SPECIAL = /[.*+?^${}()|[\]\\]/g;
|
|
14
|
+
function escapeRegExp(s) {
|
|
15
|
+
return s.replace(RE_SPECIAL, '\\$&');
|
|
16
|
+
}
|
|
17
|
+
function normalizeWords(words) {
|
|
18
|
+
const arr = Array.isArray(words) ? words : [words];
|
|
19
|
+
return arr.filter((w) => typeof w === 'string' && w.length > 0);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Find raw (possibly overlapping) match ranges of `words` in `source`.
|
|
23
|
+
*
|
|
24
|
+
* Each word is scanned independently, so ranges from different words may
|
|
25
|
+
* overlap (e.g. "ab" and "bc" in "abc" → [0,2] and [1,3]); feed the result to
|
|
26
|
+
* mergeRanges / chunksFromRanges to normalize. Returns ranges in document
|
|
27
|
+
* order. An invalid regex source (autoEscape=false misuse) for any word is
|
|
28
|
+
* silently skipped (that word contributes no ranges).
|
|
29
|
+
*/
|
|
30
|
+
export function findRanges(source, words, options = {}) {
|
|
31
|
+
if (!source)
|
|
32
|
+
return [];
|
|
33
|
+
const list = normalizeWords(words);
|
|
34
|
+
if (list.length === 0)
|
|
35
|
+
return [];
|
|
36
|
+
const { caseSensitive = false, highlightAll = true, autoEscape = true } = options;
|
|
37
|
+
const flags = `${caseSensitive ? '' : 'i'}g`;
|
|
38
|
+
const ranges = [];
|
|
39
|
+
for (const word of list) {
|
|
40
|
+
const src = autoEscape ? escapeRegExp(word) : word;
|
|
41
|
+
let re;
|
|
42
|
+
try {
|
|
43
|
+
re = new RegExp(src, flags);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue; // skip this word, keep the rest highlighting
|
|
47
|
+
}
|
|
48
|
+
let m;
|
|
49
|
+
while ((m = re.exec(source)) !== null) {
|
|
50
|
+
const matched = m[0];
|
|
51
|
+
if (matched.length === 0) {
|
|
52
|
+
re.lastIndex += 1; // avoid infinite loop on zero-length match
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
ranges.push({ start: m.index, end: m.index + matched.length });
|
|
56
|
+
if (!highlightAll)
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
ranges.sort((a, b) => a.start - b.start || a.end - b.end);
|
|
61
|
+
return ranges;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Merge overlapping or adjacent ranges into a sorted, non-overlapping set.
|
|
65
|
+
* Handles: overlap, containment, adjacency (touching ends), and duplicates.
|
|
66
|
+
*/
|
|
67
|
+
export function mergeRanges(ranges) {
|
|
68
|
+
const valid = ranges.filter((r) => r.end > r.start);
|
|
69
|
+
if (valid.length <= 1)
|
|
70
|
+
return valid.slice();
|
|
71
|
+
const sorted = valid.slice().sort((a, b) => a.start - b.start || a.end - b.end);
|
|
72
|
+
const first = sorted[0];
|
|
73
|
+
const merged = [{ start: first.start, end: first.end }];
|
|
74
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
75
|
+
const cur = sorted[i];
|
|
76
|
+
const last = merged[merged.length - 1];
|
|
77
|
+
// overlap or adjacency (cur.start <= last.end) → extend
|
|
78
|
+
if (cur.start <= last.end) {
|
|
79
|
+
if (cur.end > last.end)
|
|
80
|
+
last.end = cur.end;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
merged.push({ start: cur.start, end: cur.end });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return merged;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Slice `source` into an ordered, gap-free chunk sequence using `ranges`.
|
|
90
|
+
* `ranges` may overlap; they are merged first, so output chunks never overlap
|
|
91
|
+
* and concatenating their text reproduces `source` exactly.
|
|
92
|
+
*/
|
|
93
|
+
export function chunksFromRanges(source, ranges) {
|
|
94
|
+
if (!source)
|
|
95
|
+
return [];
|
|
96
|
+
const merged = mergeRanges(ranges);
|
|
97
|
+
if (merged.length === 0)
|
|
98
|
+
return [{ text: source, matched: false }];
|
|
99
|
+
const chunks = [];
|
|
100
|
+
let cursor = 0;
|
|
101
|
+
for (const { start, end } of merged) {
|
|
102
|
+
const s = Math.max(0, Math.min(start, source.length));
|
|
103
|
+
const e = Math.max(s, Math.min(end, source.length));
|
|
104
|
+
if (s > cursor)
|
|
105
|
+
chunks.push({ text: source.slice(cursor, s), matched: false });
|
|
106
|
+
if (e > s)
|
|
107
|
+
chunks.push({ text: source.slice(s, e), matched: true });
|
|
108
|
+
cursor = e;
|
|
109
|
+
}
|
|
110
|
+
if (cursor < source.length)
|
|
111
|
+
chunks.push({ text: source.slice(cursor), matched: false });
|
|
112
|
+
return chunks;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* One-shot: find matches of `words` in `source` and return merged,
|
|
116
|
+
* non-overlapping chunks. The render layer iterates the result directly.
|
|
117
|
+
*/
|
|
118
|
+
export function highlightChunks(source, words, options = {}) {
|
|
119
|
+
if (!source)
|
|
120
|
+
return [];
|
|
121
|
+
const ranges = findRanges(source, words, options);
|
|
122
|
+
return chunksFromRanges(source, ranges);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.test.d.ts","sourceRoot":"","sources":["../src/highlight.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { chunksFromRanges, findRanges, highlightChunks, mergeRanges, } from './highlight.js';
|
|
3
|
+
describe('mergeRanges', () => {
|
|
4
|
+
it('returns empty for empty input', () => {
|
|
5
|
+
expect(mergeRanges([])).toEqual([]);
|
|
6
|
+
});
|
|
7
|
+
it('drops zero-length / inverted ranges', () => {
|
|
8
|
+
expect(mergeRanges([{ start: 3, end: 3 }, { start: 5, end: 2 }])).toEqual([]);
|
|
9
|
+
});
|
|
10
|
+
it('sorts disjoint ranges', () => {
|
|
11
|
+
expect(mergeRanges([
|
|
12
|
+
{ start: 5, end: 7 },
|
|
13
|
+
{ start: 0, end: 2 },
|
|
14
|
+
])).toEqual([
|
|
15
|
+
{ start: 0, end: 2 },
|
|
16
|
+
{ start: 5, end: 7 },
|
|
17
|
+
]);
|
|
18
|
+
});
|
|
19
|
+
it('merges overlapping ranges', () => {
|
|
20
|
+
expect(mergeRanges([
|
|
21
|
+
{ start: 0, end: 4 },
|
|
22
|
+
{ start: 2, end: 6 },
|
|
23
|
+
])).toEqual([{ start: 0, end: 6 }]);
|
|
24
|
+
});
|
|
25
|
+
it('merges adjacent (touching) ranges', () => {
|
|
26
|
+
expect(mergeRanges([
|
|
27
|
+
{ start: 0, end: 3 },
|
|
28
|
+
{ start: 3, end: 6 },
|
|
29
|
+
])).toEqual([{ start: 0, end: 6 }]);
|
|
30
|
+
});
|
|
31
|
+
it('absorbs a contained range', () => {
|
|
32
|
+
expect(mergeRanges([
|
|
33
|
+
{ start: 0, end: 10 },
|
|
34
|
+
{ start: 3, end: 5 },
|
|
35
|
+
])).toEqual([{ start: 0, end: 10 }]);
|
|
36
|
+
});
|
|
37
|
+
it('collapses duplicates', () => {
|
|
38
|
+
expect(mergeRanges([
|
|
39
|
+
{ start: 1, end: 4 },
|
|
40
|
+
{ start: 1, end: 4 },
|
|
41
|
+
])).toEqual([{ start: 1, end: 4 }]);
|
|
42
|
+
});
|
|
43
|
+
it('does not mutate the input array', () => {
|
|
44
|
+
const input = [
|
|
45
|
+
{ start: 5, end: 7 },
|
|
46
|
+
{ start: 0, end: 2 },
|
|
47
|
+
];
|
|
48
|
+
const snapshot = JSON.parse(JSON.stringify(input));
|
|
49
|
+
mergeRanges(input);
|
|
50
|
+
expect(input).toEqual(snapshot);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('findRanges', () => {
|
|
54
|
+
it('finds all occurrences by default', () => {
|
|
55
|
+
expect(findRanges('a-a-a', 'a')).toEqual([
|
|
56
|
+
{ start: 0, end: 1 },
|
|
57
|
+
{ start: 2, end: 3 },
|
|
58
|
+
{ start: 4, end: 5 },
|
|
59
|
+
]);
|
|
60
|
+
});
|
|
61
|
+
it('honors highlightAll=false (first only)', () => {
|
|
62
|
+
expect(findRanges('a-a-a', 'a', { highlightAll: false })).toEqual([{ start: 0, end: 1 }]);
|
|
63
|
+
});
|
|
64
|
+
it('is case-insensitive by default', () => {
|
|
65
|
+
expect(findRanges('Foo', 'foo')).toEqual([{ start: 0, end: 3 }]);
|
|
66
|
+
});
|
|
67
|
+
it('honors caseSensitive', () => {
|
|
68
|
+
expect(findRanges('Foo foo', 'foo', { caseSensitive: true })).toEqual([{ start: 4, end: 7 }]);
|
|
69
|
+
});
|
|
70
|
+
it('escapes regex special chars by default', () => {
|
|
71
|
+
expect(findRanges('a.b a*b', '.')).toEqual([{ start: 1, end: 2 }]);
|
|
72
|
+
});
|
|
73
|
+
it('treats words as regex when autoEscape=false', () => {
|
|
74
|
+
expect(findRanges('a1b2', '\\d', { autoEscape: false })).toEqual([
|
|
75
|
+
{ start: 1, end: 2 },
|
|
76
|
+
{ start: 3, end: 4 },
|
|
77
|
+
]);
|
|
78
|
+
});
|
|
79
|
+
it('returns [] for invalid regex source (autoEscape misuse)', () => {
|
|
80
|
+
expect(findRanges('abc', '(', { autoEscape: false })).toEqual([]);
|
|
81
|
+
});
|
|
82
|
+
it('returns [] when no words or empty source', () => {
|
|
83
|
+
expect(findRanges('', 'a')).toEqual([]);
|
|
84
|
+
expect(findRanges('abc', [])).toEqual([]);
|
|
85
|
+
expect(findRanges('abc', ['', ''])).toEqual([]);
|
|
86
|
+
});
|
|
87
|
+
it('finds multiple words', () => {
|
|
88
|
+
expect(findRanges('foo bar baz', ['foo', 'baz'])).toEqual([
|
|
89
|
+
{ start: 0, end: 3 },
|
|
90
|
+
{ start: 8, end: 11 },
|
|
91
|
+
]);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('chunksFromRanges', () => {
|
|
95
|
+
it('returns single unmatched chunk when no ranges', () => {
|
|
96
|
+
expect(chunksFromRanges('hello', [])).toEqual([{ text: 'hello', matched: false }]);
|
|
97
|
+
});
|
|
98
|
+
it('returns [] for empty source', () => {
|
|
99
|
+
expect(chunksFromRanges('', [{ start: 0, end: 1 }])).toEqual([]);
|
|
100
|
+
});
|
|
101
|
+
it('splits into matched/unmatched and preserves the whole string', () => {
|
|
102
|
+
const chunks = chunksFromRanges('hello world', [{ start: 6, end: 11 }]);
|
|
103
|
+
expect(chunks).toEqual([
|
|
104
|
+
{ text: 'hello ', matched: false },
|
|
105
|
+
{ text: 'world', matched: true },
|
|
106
|
+
]);
|
|
107
|
+
expect(chunks.map((c) => c.text).join('')).toBe('hello world');
|
|
108
|
+
});
|
|
109
|
+
it('clamps out-of-bound ranges', () => {
|
|
110
|
+
expect(chunksFromRanges('abc', [{ start: -2, end: 99 }])).toEqual([
|
|
111
|
+
{ text: 'abc', matched: true },
|
|
112
|
+
]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('highlightChunks (integration: overlap merge)', () => {
|
|
116
|
+
it('default <mark> behavior unchanged for single word', () => {
|
|
117
|
+
expect(highlightChunks('hello world', 'world')).toEqual([
|
|
118
|
+
{ text: 'hello ', matched: false },
|
|
119
|
+
{ text: 'world', matched: true },
|
|
120
|
+
]);
|
|
121
|
+
});
|
|
122
|
+
it('merges overlapping multi-word matches without nesting', () => {
|
|
123
|
+
// "ab" matches [0,2], "bc" matches [1,3] → merged [0,3] = "abc"
|
|
124
|
+
const chunks = highlightChunks('abcd', ['ab', 'bc']);
|
|
125
|
+
expect(chunks).toEqual([
|
|
126
|
+
{ text: 'abc', matched: true },
|
|
127
|
+
{ text: 'd', matched: false },
|
|
128
|
+
]);
|
|
129
|
+
// exactly one matched chunk: no double-wrap
|
|
130
|
+
expect(chunks.filter((c) => c.matched)).toHaveLength(1);
|
|
131
|
+
});
|
|
132
|
+
it('merges a contained word into the larger match', () => {
|
|
133
|
+
// "ell" inside "hello"
|
|
134
|
+
const chunks = highlightChunks('hello', ['hello', 'ell']);
|
|
135
|
+
expect(chunks).toEqual([{ text: 'hello', matched: true }]);
|
|
136
|
+
});
|
|
137
|
+
it('coalesces adjacent matches from different words', () => {
|
|
138
|
+
// "foo" [0,3] + "bar" [3,6] are touching → single matched chunk "foobar"
|
|
139
|
+
const chunks = highlightChunks('foobar', ['foo', 'bar']);
|
|
140
|
+
expect(chunks).toEqual([{ text: 'foobar', matched: true }]);
|
|
141
|
+
});
|
|
142
|
+
it('keeps disjoint multi-word matches separate', () => {
|
|
143
|
+
expect(highlightChunks('foo x bar', ['foo', 'bar'])).toEqual([
|
|
144
|
+
{ text: 'foo', matched: true },
|
|
145
|
+
{ text: ' x ', matched: false },
|
|
146
|
+
{ text: 'bar', matched: true },
|
|
147
|
+
]);
|
|
148
|
+
});
|
|
149
|
+
it('always reproduces the source by concatenation', () => {
|
|
150
|
+
const src = 'the quick brown fox';
|
|
151
|
+
const chunks = highlightChunks(src, ['quick', 'ick br', 'fox']);
|
|
152
|
+
expect(chunks.map((c) => c.text).join('')).toBe(src);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=highlight.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.test.js","sourceRoot":"","sources":["../src/highlight.test.ts"],"names":[],"mappings":"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"}
|
package/dist/id.d.ts
ADDED
package/dist/id.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAMA,wBAAgB,KAAK,CAAC,MAAM,SAAO,GAAG,MAAM,CAG3C;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/id.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useId — stable unique id generation for aria relationships.
|
|
3
|
+
* Framework-agnostic: no DOM, no framework deps.
|
|
4
|
+
*/
|
|
5
|
+
let counter = 0;
|
|
6
|
+
export function useId(prefix = 'cd') {
|
|
7
|
+
counter += 1;
|
|
8
|
+
return `${prefix}-${counter}`;
|
|
9
|
+
}
|
|
10
|
+
/** reset for test determinism */
|
|
11
|
+
export function __resetIdCounter() {
|
|
12
|
+
counter = 0;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=id.js.map
|
package/dist/id.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,MAAM,UAAU,KAAK,CAAC,MAAM,GAAG,IAAI;IACjC,OAAO,IAAI,CAAC,CAAC;IACb,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.test.d.ts","sourceRoot":"","sources":["../src/id.test.ts"],"names":[],"mappings":""}
|
package/dist/id.test.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, expect, it, beforeEach } from 'vitest';
|
|
2
|
+
import { useId, __resetIdCounter } from './id.js';
|
|
3
|
+
describe('useId', () => {
|
|
4
|
+
beforeEach(() => __resetIdCounter());
|
|
5
|
+
it('generates unique incrementing ids', () => {
|
|
6
|
+
expect(useId()).toBe('cd-1');
|
|
7
|
+
expect(useId()).toBe('cd-2');
|
|
8
|
+
});
|
|
9
|
+
it('honors a custom prefix', () => {
|
|
10
|
+
expect(useId('modal')).toBe('modal-1');
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=id.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.test.js","sourceRoot":"","sources":["../src/id.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAElD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAErC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @chenzy-design/core — framework-agnostic headless primitives.
|
|
3
|
+
* ZERO framework dependencies. Render layers (svelte, future vue/react) bind these.
|
|
4
|
+
* See specs/00-foundation/mvvm-adapter.spec.md.
|
|
5
|
+
*/
|
|
6
|
+
export { useId, __resetIdCounter } from './id.js';
|
|
7
|
+
export { clampWithMode, boundaryHitOf, roundToPrecision, decimalsOf as decimalsOfNumber, addStep as addNumberStep, formatWithLocale, __resetNumberFormatCache, type BoundaryMode, } from './input-number.js';
|
|
8
|
+
export { useFocusTrap, type FocusTrap } from './focus-trap.js';
|
|
9
|
+
export { useLiveAnnouncer, __resetLiveAnnouncer, type LiveAnnouncer, type Politeness, } from './live-announcer.js';
|
|
10
|
+
export { useDismiss, type DismissOptions, type DismissReason } from './dismiss.js';
|
|
11
|
+
export { useScrollLock, __resetScrollLock } from './scroll-lock.js';
|
|
12
|
+
export { useInertBackground, __resetInertBackground, } from './inert-background.js';
|
|
13
|
+
export { createSider, type SiderApi, type SiderOptions, type SiderTrigger, } from './sider.js';
|
|
14
|
+
export { createForm, type FormApi, type FormOptions, type FormState, type FormValues, type FieldConfig, type FieldErrors, type Rule, type MessageDescriptor, type ValidateTrigger, } from './form.js';
|
|
15
|
+
export { findRanges, mergeRanges, chunksFromRanges, highlightChunks, type HighlightRange, type HighlightChunk, type FindRangesOptions, } from './highlight.js';
|
|
16
|
+
export { isSameDay, startOfDay, addMonths, addWeeks, addDays, getMonthGrid, getWeekGrid, getDayHours, weekdayOrder, daysBetween, formatDate, parseDateString, gridFocusMove, type DayCell, type GridFocusKey, } from './date.js';
|
|
17
|
+
export { flattenVisible, findNode, collectExpandable, collectExpandableToDepth, conduct, toggleCheck, normalizeToLeaves, computeFilteredKeys, computeDropPosition, isAncestorOrSelf, collectCheckedByStrategy, siblingKeys, accordionExpand, type CheckedStrategy, type TreeKey, type TreeNodeData, type FlatNode, type CheckState, type DropPosition, } from './tree.js';
|
|
18
|
+
export { flattenCascaderPaths, filterCascaderPaths, resolveColumnWidth, type CascaderKey, type CascaderPathNode, type CascaderFlatPath, type CascaderFilterFn, } from './cascader.js';
|
|
19
|
+
export { nextSortOrder, toggleSort, applySort, paginate, pageCount, selectAllState, toggleSelectAll, toggleRow, flattenTreeRows, conductRows, normalizeRowsToLeaves, toggleRowCheck, type RowKey, type SortOrder, type SortState, type SelectAllState, type FlatRow, } from './table.js';
|
|
20
|
+
export { eventCoversDay, eventsForDay, groupEventsByDays, timelineForDay, dayKey, isPastDay, type CalendarEvent, type CalendarEventKey, type DayEvents, type DayTimeline, } from './calendar.js';
|
|
21
|
+
export { offsetToIndex, indexToOffset, indexOfValue, nextEnabledIndex, firstEnabledIndex, lastEnabledIndex, keyboardTarget, wrapIndex, cyclicVirtualCount, cyclicCenterIndex, cyclicRecenter, momentumStep, projectSettleIndex, type ScrollListValue, type ScrollListItem, type ScrollListKey, type MomentumStep, } from './scroll-list.js';
|
|
22
|
+
export { computeVisibleCount, computeOverflowPartition, applyHysteresis, computeTabOverflow, type OverflowComputeInput, type OverflowComputeResult, type OverflowPartitionInput, type OverflowPartitionResult, type CollapseFrom, type TabOverflowInput, type TabOverflowResult, } from './overflow-list.js';
|
|
23
|
+
export { createSpinController, type SpinController, type SpinOptions, } from './spin.js';
|
|
24
|
+
export { clampPercent, resolveStatus, getCirclePathProps, getRootAriaProps, type ProgressStatus, type ProgressType, type GapPosition, type CirclePathProps, type RootAriaProps, } from './progress.js';
|
|
25
|
+
export { resolveBannerRole, type BannerType, type BannerRoleProps, } from './banner.js';
|
|
26
|
+
export { createToastStore, type ToastStore, type ToastItem, type ToastOptions, type ToastType, type ToastPosition, type ToastTheme, type ToastCloseReason, } from './toast.js';
|
|
27
|
+
export { createNotificationStore, type NotificationStore, type NotificationItem, type NotificationOptions, type NotificationType, type NotificationPlacement, type NotificationCloseReason, type NotificationTheme, type NotificationDirection, } from './notification.js';
|
|
28
|
+
export { easeInOutCubic, isAboveThreshold, scrollPositionAt } from './back-top.js';
|
|
29
|
+
export { mergeConfig, DEFAULT_CONFIG, resolveAppliedTheme, resolveReducedMotion, type ConfigInput, type ResolvedConfig, type ConfigTheme, type AppliedTheme, type ConfigDir, type ConfigSize, type ReducedMotionInput, } from './config-provider.js';
|
|
30
|
+
export { createResizeObserver, normalizeEntry, isResizeObserverSupported, resolveSchedule, createScheduler, advanceResizePhase, endResizePhase, getGlobalResizeObserver, type ResizeBox, type ResizeSchedule, type CDResizeEntry, type ResizeObserverApi, type ResizeObserverOptions, } from './resize-observer.js';
|
|
31
|
+
export { resolveSize, resolveAnimated, shouldAutoplay, resolveSegments, isLottieSrc, resolveRenderer, type LottieTrigger, type LottieSize, type LottieSegments, type LottieRenderer, type LottiePlayerAdapter, type LottiePlayerFactory, } from './lottie-icon.js';
|
|
32
|
+
export { computePosition, parsePlacement, makePlacement, type Placement, type Side, type Align, type Rect, type Viewport, type ComputePositionInput, type ComputePositionResult, } from './floating.js';
|
|
33
|
+
export { BREAKPOINTS, BREAKPOINT_ORDER, resolveActiveBreakpoint, resolveResponsiveValue, type Breakpoint, } from './breakpoints.js';
|
|
34
|
+
export { computeAutosizeHeight, countCharacters, type AutosizeInput, type AutosizeResult, } from './textarea.js';
|
|
35
|
+
export { createCopyable, writeClipboard, type CopyableApi, type CopyableOptions, } from './copyable.js';
|
|
36
|
+
export { createEditable, clampLength, resolveEditableKey, type EditableApi, type EditableOptions, type EditableSnapshot, type EditableTrigger, type EditableKeyEvent, type EditableKeyAction, } from './editable.js';
|
|
37
|
+
export { createEllipsis, isOverflowing, truncateText, type EllipsisApi, type EllipsisOptions, type EllipsisSnapshot, type EllipsisMeasureInput, type EllipsisPos, } from './ellipsis.js';
|
|
38
|
+
export { computeUploadPercent, isUploadOk, createUploadQueue, resolveBeforeUpload, validateFileSize, } from './upload.js';
|
|
39
|
+
export type { UploadTask, UploadQueue, BeforeUploadResult, BeforeUploadDecision, UploadSizeError, } from './upload.js';
|
|
40
|
+
export { fixedRange, buildOffsets, totalFromOffsets, offsetToIndex as virtualOffsetToIndex, dynamicRange, scrollOffsetForIndex, windowScrollTop, type VirtualRange, type ScrollAlign, } from './virtual-list.js';
|
|
41
|
+
export { rovingKeyFromEvent, nextRovingIndex, type RovingKey, } from './roving.js';
|
|
42
|
+
export { toggleSelection, rangeSelection, type ListKey, type SelectionMode, } from './list-selection.js';
|
|
43
|
+
export { pageCount as paginationPageCount, clampPage, isPageInRange, clampPageSize, parseJumpInput, pageRange, type PageCell, } from './pagination.js';
|
|
44
|
+
export { clamp01 as colorClamp01, parseHex, rgbToHex, rgbToHsv, hsvToRgb, hsvToHsl, hslToHsv, rgbToHsl, hslToRgb, hexToHsv, hsvToHex, formatColor, parseColor, type Rgb, type Hsv, type Hsl, type ColorFormat, type RgbToHexOptions, type FormatOptions, } from './color.js';
|
|
45
|
+
export { buildRange as buildTimeRange, to12Hour, meridiemOf, from12Hour, buildHourOptions, buildMinuteOptions, buildSecondOptions, applyHideDisabled, isTimeDisabled, parseFormatSpec, formatTime, parseTimeString, type Meridiem, type TimeOption, type DisabledTime, type TimeParts, type FormatSpec, } from './time.js';
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,IAAI,gBAAgB,EAC9B,OAAO,IAAI,aAAa,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,IAAI,oBAAoB,EACrC,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,IAAI,mBAAmB,EAChC,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,QAAQ,EACR,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @chenzy-design/core — framework-agnostic headless primitives.
|
|
3
|
+
* ZERO framework dependencies. Render layers (svelte, future vue/react) bind these.
|
|
4
|
+
* See specs/00-foundation/mvvm-adapter.spec.md.
|
|
5
|
+
*/
|
|
6
|
+
export { useId, __resetIdCounter } from './id.js';
|
|
7
|
+
export { clampWithMode, boundaryHitOf, roundToPrecision, decimalsOf as decimalsOfNumber, addStep as addNumberStep, formatWithLocale, __resetNumberFormatCache, } from './input-number.js';
|
|
8
|
+
export { useFocusTrap } from './focus-trap.js';
|
|
9
|
+
export { useLiveAnnouncer, __resetLiveAnnouncer, } from './live-announcer.js';
|
|
10
|
+
export { useDismiss } from './dismiss.js';
|
|
11
|
+
export { useScrollLock, __resetScrollLock } from './scroll-lock.js';
|
|
12
|
+
export { useInertBackground, __resetInertBackground, } from './inert-background.js';
|
|
13
|
+
export { createSider, } from './sider.js';
|
|
14
|
+
export { createForm, } from './form.js';
|
|
15
|
+
export { findRanges, mergeRanges, chunksFromRanges, highlightChunks, } from './highlight.js';
|
|
16
|
+
export { isSameDay, startOfDay, addMonths, addWeeks, addDays, getMonthGrid, getWeekGrid, getDayHours, weekdayOrder, daysBetween, formatDate, parseDateString, gridFocusMove, } from './date.js';
|
|
17
|
+
export { flattenVisible, findNode, collectExpandable, collectExpandableToDepth, conduct, toggleCheck, normalizeToLeaves, computeFilteredKeys, computeDropPosition, isAncestorOrSelf, collectCheckedByStrategy, siblingKeys, accordionExpand, } from './tree.js';
|
|
18
|
+
export { flattenCascaderPaths, filterCascaderPaths, resolveColumnWidth, } from './cascader.js';
|
|
19
|
+
export { nextSortOrder, toggleSort, applySort, paginate, pageCount, selectAllState, toggleSelectAll, toggleRow, flattenTreeRows, conductRows, normalizeRowsToLeaves, toggleRowCheck, } from './table.js';
|
|
20
|
+
export { eventCoversDay, eventsForDay, groupEventsByDays, timelineForDay, dayKey, isPastDay, } from './calendar.js';
|
|
21
|
+
export { offsetToIndex, indexToOffset, indexOfValue, nextEnabledIndex, firstEnabledIndex, lastEnabledIndex, keyboardTarget, wrapIndex, cyclicVirtualCount, cyclicCenterIndex, cyclicRecenter, momentumStep, projectSettleIndex, } from './scroll-list.js';
|
|
22
|
+
export { computeVisibleCount, computeOverflowPartition, applyHysteresis, computeTabOverflow, } from './overflow-list.js';
|
|
23
|
+
export { createSpinController, } from './spin.js';
|
|
24
|
+
export { clampPercent, resolveStatus, getCirclePathProps, getRootAriaProps, } from './progress.js';
|
|
25
|
+
export { resolveBannerRole, } from './banner.js';
|
|
26
|
+
export { createToastStore, } from './toast.js';
|
|
27
|
+
export { createNotificationStore, } from './notification.js';
|
|
28
|
+
export { easeInOutCubic, isAboveThreshold, scrollPositionAt } from './back-top.js';
|
|
29
|
+
export { mergeConfig, DEFAULT_CONFIG, resolveAppliedTheme, resolveReducedMotion, } from './config-provider.js';
|
|
30
|
+
export { createResizeObserver, normalizeEntry, isResizeObserverSupported, resolveSchedule, createScheduler, advanceResizePhase, endResizePhase, getGlobalResizeObserver, } from './resize-observer.js';
|
|
31
|
+
export { resolveSize, resolveAnimated, shouldAutoplay, resolveSegments, isLottieSrc, resolveRenderer, } from './lottie-icon.js';
|
|
32
|
+
export { computePosition, parsePlacement, makePlacement, } from './floating.js';
|
|
33
|
+
export { BREAKPOINTS, BREAKPOINT_ORDER, resolveActiveBreakpoint, resolveResponsiveValue, } from './breakpoints.js';
|
|
34
|
+
export { computeAutosizeHeight, countCharacters, } from './textarea.js';
|
|
35
|
+
export { createCopyable, writeClipboard, } from './copyable.js';
|
|
36
|
+
export { createEditable, clampLength, resolveEditableKey, } from './editable.js';
|
|
37
|
+
export { createEllipsis, isOverflowing, truncateText, } from './ellipsis.js';
|
|
38
|
+
export { computeUploadPercent, isUploadOk, createUploadQueue, resolveBeforeUpload, validateFileSize, } from './upload.js';
|
|
39
|
+
export { fixedRange, buildOffsets, totalFromOffsets, offsetToIndex as virtualOffsetToIndex, dynamicRange, scrollOffsetForIndex, windowScrollTop, } from './virtual-list.js';
|
|
40
|
+
export { rovingKeyFromEvent, nextRovingIndex, } from './roving.js';
|
|
41
|
+
export { toggleSelection, rangeSelection, } from './list-selection.js';
|
|
42
|
+
export { pageCount as paginationPageCount, clampPage, isPageInRange, clampPageSize, parseJumpInput, pageRange, } from './pagination.js';
|
|
43
|
+
export { clamp01 as colorClamp01, parseHex, rgbToHex, rgbToHsv, hsvToRgb, hsvToHsl, hslToHsv, rgbToHsl, hslToRgb, hexToHsv, hsvToHex, formatColor, parseColor, } from './color.js';
|
|
44
|
+
export { buildRange as buildTimeRange, to12Hour, meridiemOf, from12Hour, buildHourOptions, buildMinuteOptions, buildSecondOptions, applyHideDisabled, isTimeDisabled, parseFormatSpec, formatTime, parseTimeString, } from './time.js';
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useInertBackground — hide page content behind a modal overlay from assistive
|
|
3
|
+
* tech and pointer/keyboard interaction while the overlay is open.
|
|
4
|
+
*
|
|
5
|
+
* Pass the overlay's portal root (the element appended to body/getContainer).
|
|
6
|
+
* Every *sibling* of that root (the rest of the page, plus any overlay opened
|
|
7
|
+
* earlier) is marked `inert` + `aria-hidden="true"`; on release the originals
|
|
8
|
+
* are restored. See specs/components/feedback/Modal.spec.md §6 ("背景内容对 SR
|
|
9
|
+
* aria-hidden/inert").
|
|
10
|
+
*
|
|
11
|
+
* Stacked overlays: a module-level stack tracks every active overlay root. Only
|
|
12
|
+
* the *topmost* (most recently activated) overlay drives the inert set — its
|
|
13
|
+
* siblings (including lower overlays) get hidden, while the topmost overlay
|
|
14
|
+
* itself stays interactive. When it releases, the previous overlay re-applies.
|
|
15
|
+
* This keeps nested Modal/Drawer/SideSheet correct without inerting the layer
|
|
16
|
+
* the user is currently working in.
|
|
17
|
+
*
|
|
18
|
+
* No framework deps; client-only (guards document). Returned function releases.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Mark `root`'s siblings inert/aria-hidden. `root` should be the overlay's
|
|
22
|
+
* portal root element. Returns a release function (idempotent).
|
|
23
|
+
*/
|
|
24
|
+
export declare function useInertBackground(root: HTMLElement): () => void;
|
|
25
|
+
/** test-only reset of internal state */
|
|
26
|
+
export declare function __resetInertBackground(): void;
|
|
27
|
+
//# sourceMappingURL=inert-background.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inert-background.d.ts","sourceRoot":"","sources":["../src/inert-background.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgDH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CAgBhE;AAED,wCAAwC;AACxC,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
|