@astryx-vue/core 0.1.1 → 0.2.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/AlertDialog/index.js +1 -1
- package/dist/{AlertDialog-BylcA4vV.js → AlertDialog-ovx4cBjM.js} +1 -1
- package/dist/AppShell/index.d.ts +2 -0
- package/dist/AppShell/index.js +2 -0
- package/dist/AppShell-EiGyPFbA.js +249 -0
- package/dist/AspectRatio/index.d.ts +2 -0
- package/dist/AspectRatio/index.js +2 -0
- package/dist/AspectRatio-Bij7e-tq.js +40 -0
- package/dist/AvatarGroup/index.d.ts +1 -1
- package/dist/Banner/index.d.ts +1 -1
- package/dist/BottomSheet/index.d.ts +1 -1
- package/dist/Button/index.d.ts +1 -1
- package/dist/ButtonGroup/index.d.ts +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/{Calendar-BEyrkUtr.js → Calendar-BG7wEsro.js} +1 -1
- package/dist/Carousel/index.d.ts +2 -0
- package/dist/Carousel/index.js +2 -0
- package/dist/Carousel-BTtHkKea.js +363 -0
- package/dist/Chat/index.js +1 -1
- package/dist/{Chat-CO3mCs9A.js → Chat-DjNxw5gv.js} +2 -2
- package/dist/CheckboxInput/index.d.ts +1 -1
- package/dist/CheckboxInput/index.js +1 -1
- package/dist/{CheckboxInput-C86o3XoG.js → CheckboxInput-CMsEE1_4.js} +4 -2
- package/dist/CheckboxList/index.d.ts +1 -1
- package/dist/CheckboxList/index.js +1 -1
- package/dist/{CheckboxList-BL2sDOWK.js → CheckboxList-EsIEXjK_.js} +2 -2
- package/dist/Citation/index.js +1 -1
- package/dist/{Citation-BqwJvw7o.js → Citation-DijdbUUu.js} +2 -2
- package/dist/ClickableCard/index.d.ts +2 -0
- package/dist/ClickableCard/index.js +2 -0
- package/dist/ClickableCard-Bhds4RRe.js +112 -0
- package/dist/Code/index.d.ts +3 -2
- package/dist/Code/index.js +4 -2
- package/dist/Code-yb_KOFtJ.js +299 -0
- package/dist/{CodeBlock-BQdooQy2.js → CodeBlock-CxTb6j9_.js} +8 -2
- package/dist/Collapsible/index.d.ts +2 -2
- package/dist/Collapsible/index.js +2 -2
- package/dist/Collapsible-9MC08X39.js +192 -0
- package/dist/CommandPalette/index.d.ts +2 -0
- package/dist/CommandPalette/index.js +2 -0
- package/dist/CommandPalette-BD2iODF5.js +489 -0
- package/dist/ComplexSelector/index.d.ts +2 -0
- package/dist/ComplexSelector/index.js +2 -0
- package/dist/ComplexSelector-D9iXd5cH.js +293 -0
- package/dist/ContextMenu/index.d.ts +1 -1
- package/dist/ContextMenu/index.js +1 -1
- package/dist/{ContextMenu-dA-ppaRQ.js → ContextMenu-HS_WqYIg.js} +1 -1
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.js +1 -1
- package/dist/{DateInput-BOIb0zAp.js → DateInput-DE2TN1Rq.js} +2 -2
- package/dist/DateRangeInput/index.d.ts +1 -1
- package/dist/DateRangeInput/index.js +1 -1
- package/dist/{DateRangeInput-DLcbgUBi.js → DateRangeInput-1bhPGG2s.js} +4 -4
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.js +1 -1
- package/dist/{DateTimeInput-RitYX_Yx.js → DateTimeInput-SnPdgk6P.js} +4 -4
- package/dist/Divider/index.d.ts +1 -1
- package/dist/DropdownMenu/index.js +1 -1
- package/dist/{DropdownMenu-B0gogrvG.js → DropdownMenu-UJGych6v.js} +1 -1
- package/dist/EmptyState/index.js +1 -1
- package/dist/{EmptyState-Bhlqgsg4.js → EmptyState-CUJdTYKV.js} +1 -1
- package/dist/Field/index.js +2 -2
- package/dist/{Field-VlTBsIEo.js → Field-8zRxzDHE.js} +11 -3
- package/dist/{FieldLabel-B1NRyQlS.js → FieldLabel-DmmJyX7w.js} +6 -1
- package/dist/FileInput/index.d.ts +1 -1
- package/dist/FileInput/index.js +1 -1
- package/dist/{FileInput-CYvEV503.js → FileInput-BQiwE-GB.js} +3 -3
- package/dist/FormLayout/index.d.ts +2 -0
- package/dist/FormLayout/index.js +2 -0
- package/dist/FormLayout-D47FjiOq.js +40 -0
- package/dist/HoverCard/index.d.ts +1 -1
- package/dist/Icon/index.d.ts +3 -0
- package/dist/Icon/index.js +2 -0
- package/dist/{Icon-5MdZQ18k.js → Icon-Dfr4k6-S.js} +1 -1
- package/dist/Layout/index.d.ts +2 -0
- package/dist/Layout/index.js +3 -0
- package/dist/Layout-Bed3kP0M.js +56 -0
- package/dist/LayoutPanel-C34uOq3e.js +358 -0
- package/dist/Lightbox/index.d.ts +2 -0
- package/dist/Lightbox/index.js +2 -0
- package/dist/Lightbox-CshKoB0r.js +384 -0
- package/dist/Link/index.d.ts +1 -1
- package/dist/List/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.js +1 -1
- package/dist/{Markdown-Dnlp8cVx.js → Markdown-D-Ua055V.js} +2 -2
- package/dist/MetadataList/index.js +1 -1
- package/dist/{MetadataList-DIsqS1Qb.js → MetadataList-sYph_d8Q.js} +1 -1
- package/dist/MobileNav/index.d.ts +1 -1
- package/dist/MobileNav/index.js +1 -1
- package/dist/{MobileNavToggle-aUZiDwHm.js → MobileNavToggle-DD9D01aj.js} +19 -12
- package/dist/MoreMenu/index.d.ts +1 -1
- package/dist/MoreMenu/index.js +1 -1
- package/dist/{MoreMenu-BXL6Dqsu.js → MoreMenu-BVrK5kkk.js} +1 -1
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.js +1 -1
- package/dist/{MultiSelector-Bh8or2S6.js → MultiSelector-DiYov9sF.js} +3 -3
- package/dist/NavItem/index.d.ts +1 -1
- package/dist/NavMenu/index.d.ts +1 -1
- package/dist/NavMenu/index.js +1 -1
- package/dist/{NavMenuItem-mzNQESpB.js → NavMenuItem-B-k7olt5.js} +2 -1
- package/dist/NumberInput/index.d.ts +1 -1
- package/dist/NumberInput/index.js +1 -1
- package/dist/{NumberInput-C3S-4dIu.js → NumberInput-CTYiQxHq.js} +1 -1
- package/dist/Outline/index.d.ts +2 -0
- package/dist/Outline/index.js +2 -0
- package/dist/Outline-DQfEBxlc.js +325 -0
- package/dist/OverflowList/index.d.ts +1 -1
- package/dist/OverflowList/index.js +1 -1
- package/dist/{OverflowList-Kr4iJrNV.js → OverflowList-BU5VCntl.js} +2 -2
- package/dist/Overlay/index.d.ts +1 -1
- package/dist/Pagination/index.js +1 -1
- package/dist/{Pagination-BRStpeSB.js → Pagination-HdhtykeF.js} +2 -2
- package/dist/Popover/index.d.ts +2 -1
- package/dist/Radio/index.d.ts +1 -1
- package/dist/Radio/index.js +1 -1
- package/dist/{RadioGroup-DS6oTV_j.js → RadioGroup-BqjdSCfJ.js} +1 -1
- package/dist/RadioList/index.d.ts +1 -1
- package/dist/RadioList/index.js +1 -1
- package/dist/{RadioList-pwr93I-z.js → RadioList-DI8ujXcT.js} +1 -1
- package/dist/Resizable/index.d.ts +2 -0
- package/dist/Resizable/index.js +2 -0
- package/dist/Resizable-BhSMfO5B.js +261 -0
- package/dist/ScrollableArea/index.d.ts +2 -0
- package/dist/ScrollableArea/index.js +2 -0
- package/dist/ScrollableArea-DQDYjnxO.js +78 -0
- package/dist/Section/index.d.ts +2 -0
- package/dist/Section/index.js +2 -0
- package/dist/Section-C48Wqfc7.js +68 -0
- package/dist/SelectableCard/index.d.ts +2 -0
- package/dist/SelectableCard/index.js +2 -0
- package/dist/SelectableCard-Bj5s_tIN.js +108 -0
- package/dist/Selector/index.d.ts +1 -1
- package/dist/Selector/index.js +1 -1
- package/dist/{Selector-DvEUIVEC.js → Selector-Da-2BO3q.js} +1 -1
- package/dist/SideNav/index.d.ts +1 -1
- package/dist/SideNav/index.js +2 -1
- package/dist/{SideNav-B7LX4RcP.js → SideNav-B-Om6Bz3.js} +49 -27
- package/dist/Slider/index.js +1 -1
- package/dist/{Slider-DTnWxtnb.js → Slider-D8h_RKcF.js} +1 -1
- package/dist/Stepper/index.d.ts +2 -0
- package/dist/Stepper/index.js +2 -0
- package/dist/Stepper-BZ_8SEZt.js +423 -0
- package/dist/Switch/index.d.ts +1 -1
- package/dist/Switch/index.js +1 -1
- package/dist/{Switch-CNdnr5TP.js → Switch-SesQzPGZ.js} +4 -2
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.js +2 -2
- package/dist/TabList-Cnc2Hs1H.js +380 -0
- package/dist/Table/index.d.ts +2 -1
- package/dist/Table/index.js +1 -1
- package/dist/{Table-D5zWaITo.js → Table-D-LhAy_J.js} +6 -6
- package/dist/Text/index.d.ts +3 -2
- package/dist/Text/index.js +1 -1
- package/dist/{Text-CKd7e3gK.js → Text-BHVghsWo.js} +12 -2
- package/dist/TextArea/index.d.ts +1 -1
- package/dist/TextArea/index.js +1 -1
- package/dist/{TextArea-BL0NuB99.js → TextArea-Cv9UVbzS.js} +5 -3
- package/dist/TextInput/index.d.ts +1 -1
- package/dist/TextInput/index.js +1 -1
- package/dist/{TextInput-B0IKC7g5.js → TextInput-BasnjVvy.js} +5 -3
- package/dist/Theme/index.d.ts +2 -0
- package/dist/Theme/index.js +2 -0
- package/dist/Theme-BuUiiJNr.js +429 -0
- package/dist/Thumbnail/index.js +1 -1
- package/dist/{Thumbnail-DMOgWncm.js → Thumbnail-Dc1UpykG.js} +2 -2
- package/dist/{TimeField-DeQ1ukHl.js → TimeField-C7t9Knq9.js} +2 -2
- package/dist/TimeInput/index.d.ts +1 -1
- package/dist/TimeInput/index.js +1 -1
- package/dist/{TimeInput-jb1nLqZk.js → TimeInput-BXxCOY98.js} +2 -2
- package/dist/Timer/index.d.ts +2 -0
- package/dist/Timer/index.js +2 -0
- package/dist/Timer-B7GV6hqd.js +134 -0
- package/dist/Timestamp/index.d.ts +1 -1
- package/dist/Timestamp/index.js +1 -1
- package/dist/{Timestamp-DrWwVQBL.js → Timestamp-DlZSmgCJ.js} +3 -3
- package/dist/ToggleButton/index.d.ts +1 -1
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.js +1 -1
- package/dist/{Token-CV2J94bn.js → Token-wt4e80IM.js} +1 -1
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.js +1 -1
- package/dist/{Tokenizer-DF9r4hTW.js → Tokenizer-nmTqdS9n.js} +3 -3
- package/dist/Toolbar/index.d.ts +1 -1
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/TopNav/index.d.ts +1 -1
- package/dist/TopNav/index.js +1 -1
- package/dist/{TopNav-BH_s3uap.js → TopNav-notp-mJx.js} +58 -32
- package/dist/TreeList/index.js +1 -1
- package/dist/{TreeList-D9cR-w7r.js → TreeList-s1xBQ0qq.js} +2 -2
- package/dist/Typeahead/index.d.ts +1 -1
- package/dist/Typeahead/index.js +1 -1
- package/dist/{Typeahead-s4DC1Qem.js → Typeahead-VAuiCurV.js} +3 -3
- package/dist/composables/index.d.ts +3 -2
- package/dist/composables/index.js +5 -2
- package/dist/composables-CVfjp9h4.js +502 -0
- package/dist/context-BjNya0v8.js +19 -0
- package/dist/context-Cfjh8te1.js +29 -0
- package/dist/{context-BshXcNYX.js → context-Dbo22sck.js} +138 -0
- package/dist/context-O2Vb8cJl.js +57 -0
- package/dist/index-1AZ4KZhg.d.ts +96 -0
- package/dist/index-1uRMrk63.d.ts +54 -0
- package/dist/{index-FEy8qFSD.d.ts → index-BHqRH7QW.d.ts} +2 -2
- package/dist/index-BMrggCw-.d.ts +52 -0
- package/dist/{index-BlWLperN.d.ts → index-BUXNRekN.d.ts} +2 -2
- package/dist/index-Bainr_3n.d.ts +31 -0
- package/dist/index-Be1czg3M.d.ts +167 -0
- package/dist/{index-Dbmgcm8a.d.ts → index-BeR-1LgF.d.ts} +2 -0
- package/dist/{index-DXDGk38y.d.ts → index-Bn_odHQ9.d.ts} +1 -1
- package/dist/index-BrJzFA5X.d.ts +38 -0
- package/dist/{index-AkMWQ97a.d.ts → index-BtPZKO20.d.ts} +3 -3
- package/dist/index-Bu0Zd1uw.d.ts +38 -0
- package/dist/{index-BDZCJ9ri.d.ts → index-BuubzuE8.d.ts} +2 -2
- package/dist/index-By2mSzUA.d.ts +67 -0
- package/dist/index-C59PdX9L.d.ts +141 -0
- package/dist/{index-BkIgRYGz.d.ts → index-C5p2NeCr.d.ts} +2 -2
- package/dist/{index-CQ9F1f_F.d.ts → index-C6iJwTL0.d.ts} +324 -145
- package/dist/{index-B4OOtNP8.d.ts → index-C7mxUcDR.d.ts} +2 -2
- package/dist/{index-BSRk8MFK.d.ts → index-C8wDPDcP.d.ts} +1 -1
- package/dist/index-CDdRQQF3.d.ts +170 -0
- package/dist/index-COqjznX0.d.ts +47 -0
- package/dist/index-CRizexSC.d.ts +147 -0
- package/dist/{index-Bc0dgVM5.d.ts → index-CTolyeii.d.ts} +4 -4
- package/dist/index-CVn0GBdB.d.ts +115 -0
- package/dist/index-Cm_TiLXU.d.ts +22 -0
- package/dist/index-Cn-sSds-.d.ts +68 -0
- package/dist/index-CsVS37na.d.ts +81 -0
- package/dist/{index-5R_pi3eT.d.ts → index-D-ZuubCK.d.ts} +3 -3
- package/dist/{index-g03bmR4K.d.ts → index-D0TlUOtG.d.ts} +2 -2
- package/dist/index-DA52oIdw.d.ts +171 -0
- package/dist/{index-D3V7yRUP.d.ts → index-DOUEn7V0.d.ts} +4 -4
- package/dist/{index-CCA4R0Mf.d.ts → index-DT9S92sh.d.ts} +31 -6
- package/dist/{index-CR6sUmRT.d.ts → index-DXSs3rwa.d.ts} +3 -107
- package/dist/{index--dh0s8Li.d.ts → index-DfgHJE7H.d.ts} +1 -1
- package/dist/{index-CNcQmDrK.d.ts → index-DoFCm2Q2.d.ts} +71 -0
- package/dist/{index-mQ6EPmaG.d.ts → index-DsyKhauk.d.ts} +78 -9
- package/dist/{index-12ObcW99.d.ts → index-DtjAdYEc.d.ts} +2 -2
- package/dist/{index-Byar3h1e.d.ts → index-HV6W3xCx.d.ts} +1 -1
- package/dist/{index-CsJpQElv.d.ts → index-NzLDrOkk.d.ts} +2 -2
- package/dist/{index-BnNh5Iml.d.ts → index-SMh42NI8.d.ts} +99 -2
- package/dist/{index-Q4gqBSIZ.d.ts → index-fa72tWIU.d.ts} +1 -1
- package/dist/{index-Bqb_Fyju.d.ts → index-jdjcb3Js.d.ts} +2 -2
- package/dist/{index-BhYFxnjV.d.ts → index-kaKBOZSU.d.ts} +2 -2
- package/dist/index-nKlTsNfV.d.ts +42 -0
- package/dist/index.d.ts +84 -63
- package/dist/index.js +118 -91
- package/dist/locale/index.d.ts +1 -1
- package/dist/locale/index.js +1 -1
- package/dist/size-BuTzpgnR.d.ts +14 -0
- package/dist/size-xcIqExkS.js +79 -0
- package/dist/syntaxTheme-Bcs1YMF7.d.ts +38 -0
- package/dist/syntaxTheme-ClpWALZX.js +75 -0
- package/dist/types-Bt-lSgYX.d.ts +65 -0
- package/dist/types-DZoEm_DG.d.ts +97 -0
- package/dist/{index-Bovw9_8d.d.ts → types-Db3Owy8Q.d.ts} +1 -36
- package/dist/types-JktRxujg.d.ts +107 -0
- package/dist/useAppShellMobile-DTsyuAJ4.js +19 -0
- package/dist/useClickableContainer-DyNpnSEa.js +112 -0
- package/dist/useResizable-CeESZS1v.d.ts +72 -0
- package/dist/useScrollableArea-DDk_CluT.js +172 -0
- package/package.json +73 -1
- package/styles/app-shell.css +151 -0
- package/styles/aspect-ratio.css +49 -0
- package/styles/card.css +5 -1
- package/styles/carousel.css +120 -0
- package/styles/clickable-card.css +101 -0
- package/styles/collapsible.css +37 -0
- package/styles/command-palette.css +183 -0
- package/styles/complex-selector.css +114 -0
- package/styles/field.css +12 -0
- package/styles/form-layout.css +31 -0
- package/styles/heading.css +25 -19
- package/styles/layout.css +280 -0
- package/styles/lightbox.css +144 -0
- package/styles/media-theme.css +51 -0
- package/styles/outline.css +124 -0
- package/styles/resize-handle.css +128 -0
- package/styles/scrollable-area.css +50 -0
- package/styles/section.css +60 -0
- package/styles/side-nav.css +26 -0
- package/styles/stepper.css +357 -0
- package/styles/tab-menu.css +91 -0
- package/styles/text.css +63 -14
- package/styles/theme.css +29 -0
- package/styles/timer.css +34 -0
- package/styles.css +18 -0
- package/dist/Collapsible-BYg9soTk.js +0 -102
- package/dist/TabList-LV1U4ZD6.js +0 -184
- package/dist/composables-Dq9RS33w.js +0 -111
- package/dist/index-BzqRns96.d.ts +0 -64
- package/dist/index-TnaIHsCS.d.ts +0 -87
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { t as useMediaQuery } from "./useMediaQuery-GMmgp28-.js";
|
|
2
|
-
import { computed, ref, toValue, watch } from "vue";
|
|
3
|
-
//#region src/composables/useControllableState.ts
|
|
4
|
-
/**
|
|
5
|
-
* 受控或自己管的 v-model。
|
|
6
|
-
*
|
|
7
|
-
* Astryx 没有同名 hook。各组件原来各自判断「外面传了值就听外面的,没传就自己记」,
|
|
8
|
-
* 这里收成一个函数,方便以后的 v-model 共用。
|
|
9
|
-
*/
|
|
10
|
-
function useControllableState(options) {
|
|
11
|
-
const { modelValue, onChange } = options;
|
|
12
|
-
const controlled = modelValue.value !== void 0;
|
|
13
|
-
const local = ref(toValue(options.defaultValue));
|
|
14
|
-
const isControlled = computed(() => controlled);
|
|
15
|
-
const value = computed(() => controlled ? modelValue.value : local.value);
|
|
16
|
-
function setValue(next) {
|
|
17
|
-
if (Object.is(value.value, next)) return;
|
|
18
|
-
if (controlled) modelValue.value = next;
|
|
19
|
-
else local.value = next;
|
|
20
|
-
onChange?.(next);
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
isControlled,
|
|
24
|
-
setValue,
|
|
25
|
-
value
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//#endregion
|
|
29
|
-
//#region src/composables/useStreamingText.ts
|
|
30
|
-
const CHARS_PER_TICK = {
|
|
31
|
-
natural: 10,
|
|
32
|
-
fast: 4,
|
|
33
|
-
instant: Number.POSITIVE_INFINITY
|
|
34
|
-
};
|
|
35
|
-
const FALLBACK_DURATION_MS = 95;
|
|
36
|
-
function parseCssDuration(value) {
|
|
37
|
-
const milliseconds = /^([\d.]+)ms$/.exec(value.trim());
|
|
38
|
-
if (milliseconds?.[1] != null) return Number(milliseconds[1]);
|
|
39
|
-
const seconds = /^([\d.]+)s$/.exec(value.trim());
|
|
40
|
-
if (seconds?.[1] != null) return Number(seconds[1]) * 1e3;
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
function motionDuration() {
|
|
44
|
-
if (typeof document === "undefined") return FALLBACK_DURATION_MS;
|
|
45
|
-
return parseCssDuration(getComputedStyle(document.documentElement).getPropertyValue("--astryx-duration-fast-min")) ?? FALLBACK_DURATION_MS;
|
|
46
|
-
}
|
|
47
|
-
function tickInterval(speed) {
|
|
48
|
-
if (speed === "instant") return 0;
|
|
49
|
-
const duration = motionDuration();
|
|
50
|
-
const tick = speed === "fast" ? duration / 20 : duration / 10;
|
|
51
|
-
return Math.max(4, Math.round(tick));
|
|
52
|
-
}
|
|
53
|
-
const graphemeSegmenter = typeof Intl.Segmenter === "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null;
|
|
54
|
-
function isLowSurrogate(codeUnit) {
|
|
55
|
-
return codeUnit >= 56320 && codeUnit <= 57343;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Move `offset` back to the start of the grapheme it lands inside, so a slice
|
|
59
|
-
* never cuts a surrogate pair, a flag, or a ZWJ sequence in half.
|
|
60
|
-
*/
|
|
61
|
-
function snapToGraphemeBoundary(text, offset) {
|
|
62
|
-
if (offset <= 0 || offset >= text.length) return offset;
|
|
63
|
-
if (graphemeSegmenter != null) return graphemeSegmenter.segment(text).containing(offset)?.index ?? offset;
|
|
64
|
-
return isLowSurrogate(text.charCodeAt(offset)) ? offset - 1 : offset;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Smooth a burst of streamed text into a steady reveal.
|
|
68
|
-
* While `isStreaming` is false, or the user prefers reduced motion, the full
|
|
69
|
-
* source is returned. The reveal steps by UTF-16 units and then snaps back to
|
|
70
|
-
* a grapheme boundary.
|
|
71
|
-
*/
|
|
72
|
-
function useStreamingText(targetText, isStreaming = false, options) {
|
|
73
|
-
const displayedLen = ref(0);
|
|
74
|
-
const prefersReducedMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
|
|
75
|
-
const target = computed(() => toValue(targetText));
|
|
76
|
-
const streaming = computed(() => toValue(isStreaming));
|
|
77
|
-
const speed = computed(() => toValue(options)?.speed ?? "natural");
|
|
78
|
-
const instant = computed(() => !streaming.value || speed.value === "instant" || prefersReducedMotion.value);
|
|
79
|
-
watch(target, (next, previous) => {
|
|
80
|
-
if (next.length === 0 && (previous?.length ?? 0) > 0) displayedLen.value = 0;
|
|
81
|
-
});
|
|
82
|
-
watch(streaming, (next) => {
|
|
83
|
-
if (!next) displayedLen.value = target.value.length;
|
|
84
|
-
});
|
|
85
|
-
watch(instant, (isInstant, _, onCleanup) => {
|
|
86
|
-
if (isInstant) return;
|
|
87
|
-
let frame = 0;
|
|
88
|
-
let lastTick = 0;
|
|
89
|
-
const tick = (now) => {
|
|
90
|
-
const interval = tickInterval(speed.value);
|
|
91
|
-
if (now - lastTick >= interval) {
|
|
92
|
-
lastTick = now;
|
|
93
|
-
const goal = target.value.length;
|
|
94
|
-
if (displayedLen.value < goal) {
|
|
95
|
-
const step = CHARS_PER_TICK[speed.value];
|
|
96
|
-
displayedLen.value = Math.min(displayedLen.value + step, goal);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
frame = requestAnimationFrame(tick);
|
|
100
|
-
};
|
|
101
|
-
frame = requestAnimationFrame(tick);
|
|
102
|
-
onCleanup(() => cancelAnimationFrame(frame));
|
|
103
|
-
}, { immediate: true });
|
|
104
|
-
return computed(() => {
|
|
105
|
-
const text = target.value;
|
|
106
|
-
if (instant.value) return text;
|
|
107
|
-
return text.slice(0, snapToGraphemeBoundary(text, displayedLen.value));
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
//#endregion
|
|
111
|
-
export { useStreamingText as n, useControllableState as r, snapToGraphemeBoundary as t };
|
package/dist/index-BzqRns96.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
//#region src/Text/types.d.ts
|
|
2
|
-
type TextType = 'body' | 'large' | 'label' | 'supporting' | 'code' | 'display-1' | 'display-2' | 'display-3';
|
|
3
|
-
type TextSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
-
type TextColor = 'primary' | 'secondary' | 'accent' | 'inherit';
|
|
5
|
-
type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';
|
|
6
|
-
type TextDisplay = 'block' | 'inline';
|
|
7
|
-
type TextAs = 'span' | 'p' | 'div' | 'label';
|
|
8
|
-
interface TextProps {
|
|
9
|
-
/**
|
|
10
|
-
* Semantic text type. Determines size, weight, and line-height.
|
|
11
|
-
* @default 'body'
|
|
12
|
-
*/
|
|
13
|
-
type?: TextType;
|
|
14
|
-
/**
|
|
15
|
-
* Explicit font size override.
|
|
16
|
-
*/
|
|
17
|
-
size?: TextSize;
|
|
18
|
-
/**
|
|
19
|
-
* Text color.
|
|
20
|
-
* @default 'primary'
|
|
21
|
-
*/
|
|
22
|
-
color?: TextColor;
|
|
23
|
-
/**
|
|
24
|
-
* Font weight override.
|
|
25
|
-
*/
|
|
26
|
-
weight?: TextWeight;
|
|
27
|
-
/**
|
|
28
|
-
* Display type.
|
|
29
|
-
* @default 'inline'
|
|
30
|
-
*/
|
|
31
|
-
display?: TextDisplay;
|
|
32
|
-
/**
|
|
33
|
-
* HTML element to render.
|
|
34
|
-
* @default 'span'
|
|
35
|
-
*/
|
|
36
|
-
as?: TextAs;
|
|
37
|
-
/**
|
|
38
|
-
* Maximum lines before truncation. 0 means no truncation.
|
|
39
|
-
* @default 0
|
|
40
|
-
*/
|
|
41
|
-
maxLines?: number;
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
//#region src/Text/Text.vue.d.ts
|
|
45
|
-
declare var __VLS_7: {};
|
|
46
|
-
type __VLS_Slots = {} & {
|
|
47
|
-
default?: (props: typeof __VLS_7) => any;
|
|
48
|
-
};
|
|
49
|
-
declare const __VLS_base: import("vue").DefineComponent<TextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TextProps> & Readonly<{}>, {
|
|
50
|
-
type: TextType;
|
|
51
|
-
as: TextAs;
|
|
52
|
-
color: TextColor;
|
|
53
|
-
display: TextDisplay;
|
|
54
|
-
maxLines: number;
|
|
55
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
56
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
57
|
-
declare const _default: typeof __VLS_export;
|
|
58
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
59
|
-
new (): {
|
|
60
|
-
$slots: S;
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
//#endregion
|
|
64
|
-
export { TextProps as a, TextWeight as c, TextDisplay as i, TextAs as n, TextSize as o, TextColor as r, TextType as s, _default as t };
|
package/dist/index-TnaIHsCS.d.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { VNode } from "vue";
|
|
2
|
-
//#region src/Collapsible/types.d.ts
|
|
3
|
-
/**
|
|
4
|
-
* Logical side of the trigger label that carries the disclosure chevron.
|
|
5
|
-
*
|
|
6
|
-
* `end` is a trailing status indicator: it follows the label, points down while
|
|
7
|
-
* the content is collapsed, and flips up when it expands. `start` is a leading
|
|
8
|
-
* disclosure arrow: it sits before the label, points inward toward the content
|
|
9
|
-
* while collapsed — mirrored under RTL — and turns down when it expands.
|
|
10
|
-
*/
|
|
11
|
-
type CollapsibleChevronPosition = 'start' | 'end';
|
|
12
|
-
interface CollapsibleProps {
|
|
13
|
-
/**
|
|
14
|
-
* Plain-text trigger label.
|
|
15
|
-
*
|
|
16
|
-
* Use the `trigger` slot when the label needs markup, a heading, or
|
|
17
|
-
* additional controls; the slot replaces this prop entirely.
|
|
18
|
-
*/
|
|
19
|
-
trigger?: string;
|
|
20
|
-
/**
|
|
21
|
-
* Open state the component starts in while `isOpen` stays unbound.
|
|
22
|
-
* @default true
|
|
23
|
-
*/
|
|
24
|
-
defaultIsOpen?: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Whether the trigger can be operated.
|
|
27
|
-
*
|
|
28
|
-
* A disabled trigger is dimmed, announces itself as disabled, and leaves the
|
|
29
|
-
* tab order. Disabling never collapses content that is already open.
|
|
30
|
-
* @default false
|
|
31
|
-
*/
|
|
32
|
-
isDisabled?: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Logical side of the trigger label that carries the disclosure chevron.
|
|
35
|
-
* @default 'end'
|
|
36
|
-
*/
|
|
37
|
-
chevronPosition?: CollapsibleChevronPosition;
|
|
38
|
-
/**
|
|
39
|
-
* Controlled open state, bound with `v-model:isOpen`. Leave it unbound to let
|
|
40
|
-
* the component own its state, starting from `defaultIsOpen`.
|
|
41
|
-
*/
|
|
42
|
-
isOpen?: boolean;
|
|
43
|
-
}
|
|
44
|
-
interface CollapsibleEmits {
|
|
45
|
-
/**
|
|
46
|
-
* Emitted with the open state the trigger asks for. In uncontrolled usage it
|
|
47
|
-
* reports the change; in controlled usage it is the request to update the
|
|
48
|
-
* bound state.
|
|
49
|
-
*/
|
|
50
|
-
openChange: [isOpen: boolean];
|
|
51
|
-
}
|
|
52
|
-
interface CollapsibleSlots {
|
|
53
|
-
/** The content hidden while collapsed and revealed while expanded. */
|
|
54
|
-
default?: () => VNode[];
|
|
55
|
-
/** The trigger label. Replaces the `trigger` prop. */
|
|
56
|
-
trigger?: () => VNode[];
|
|
57
|
-
}
|
|
58
|
-
//#endregion
|
|
59
|
-
//#region src/Collapsible/Collapsible.vue.d.ts
|
|
60
|
-
type __VLS_Props = Omit<CollapsibleProps, 'isOpen'>;
|
|
61
|
-
type __VLS_Slots = CollapsibleSlots;
|
|
62
|
-
type __VLS_ModelProps = {
|
|
63
|
-
'isOpen'?: boolean | undefined;
|
|
64
|
-
};
|
|
65
|
-
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
66
|
-
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
|
|
67
|
-
element: import("vue").ComputedRef<HTMLDivElement | null>;
|
|
68
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
69
|
-
openChange: (isOpen: boolean) => any;
|
|
70
|
-
"update:isOpen": (value: boolean | undefined) => any;
|
|
71
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
72
|
-
onOpenChange?: ((isOpen: boolean) => any) | undefined;
|
|
73
|
-
"onUpdate:isOpen"?: ((value: boolean | undefined) => any) | undefined;
|
|
74
|
-
}>, {
|
|
75
|
-
isDisabled: boolean;
|
|
76
|
-
defaultIsOpen: boolean;
|
|
77
|
-
chevronPosition: CollapsibleChevronPosition;
|
|
78
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
79
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
80
|
-
declare const _default: typeof __VLS_export;
|
|
81
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
82
|
-
new (): {
|
|
83
|
-
$slots: S;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
//#endregion
|
|
87
|
-
export { CollapsibleSlots as a, CollapsibleProps as i, CollapsibleChevronPosition as n, CollapsibleEmits as r, _default as t };
|