@bysages/solid 0.3.1 → 0.4.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/{ai-response-slzE03wh.mjs → ai-response-D2uINBIi.mjs} +13 -5
- package/dist/chevron-BHQrYKPM.mjs +8 -0
- package/dist/components/accordion/index.d.mts +22 -2
- package/dist/components/accordion/index.mjs +68 -2
- package/dist/components/affix/index.d.mts +3 -1
- package/dist/components/affix/index.mjs +5 -4
- package/dist/components/ai/index.d.mts +1 -1
- package/dist/components/ai/index.mjs +6 -5
- package/dist/components/ai-action/index.d.mts +3 -1
- package/dist/components/ai-action/index.mjs +3 -2
- package/dist/components/ai-attachments/index.d.mts +8 -4
- package/dist/components/ai-attachments/index.mjs +38 -36
- package/dist/components/ai-message/index.d.mts +3 -1
- package/dist/components/ai-message/index.mjs +3 -2
- package/dist/components/ai-prompt-input/index.d.mts +3 -1
- package/dist/components/ai-prompt-input/index.mjs +47 -43
- package/dist/components/ai-reasoning/index.d.mts +3 -1
- package/dist/components/ai-reasoning/index.mjs +4 -3
- package/dist/components/ai-response/index.d.mts +3 -1
- package/dist/components/ai-response/index.mjs +1 -1
- package/dist/components/ai-source/index.d.mts +6 -2
- package/dist/components/ai-source/index.mjs +5 -4
- package/dist/components/ai-suggestion/index.d.mts +3 -1
- package/dist/components/ai-suggestion/index.mjs +3 -2
- package/dist/components/ai-tool/index.d.mts +3 -1
- package/dist/components/ai-tool/index.mjs +4 -3
- package/dist/components/alert/index.mjs +31 -34
- package/dist/components/angle-slider/index.d.mts +1 -1
- package/dist/components/angle-slider/index.mjs +13 -5
- package/dist/components/aspect-ratio/index.d.mts +3 -1
- package/dist/components/aspect-ratio/index.mjs +3 -2
- package/dist/components/autocomplete/index.d.mts +4 -1
- package/dist/components/autocomplete/index.mjs +10 -1
- package/dist/components/avatar/index.d.mts +1 -1
- package/dist/components/avatar/index.mjs +10 -1
- package/dist/components/avatar-group/index.d.mts +3 -1
- package/dist/components/avatar-group/index.mjs +3 -2
- package/dist/components/back-top/index.d.mts +3 -1
- package/dist/components/back-top/index.mjs +9 -5
- package/dist/components/badge/index.d.mts +3 -1
- package/dist/components/badge/index.mjs +3 -2
- package/dist/components/banner/index.mjs +6 -2
- package/dist/components/block-ui/index.d.mts +3 -1
- package/dist/components/block-ui/index.mjs +3 -2
- package/dist/components/button/index.d.mts +3 -1
- package/dist/components/button/index.mjs +3 -2
- package/dist/components/calendar/index.d.mts +3 -1
- package/dist/components/calendar/index.mjs +29 -21
- package/dist/components/carousel/index.d.mts +5 -1
- package/dist/components/carousel/index.mjs +13 -1
- package/dist/components/cascade-select/index.d.mts +3 -1
- package/dist/components/cascade-select/index.mjs +73 -72
- package/dist/components/checkbox/index.d.mts +1 -1
- package/dist/components/checkbox/index.mjs +13 -5
- package/dist/components/checkbox-group/index.d.mts +4 -9
- package/dist/components/checkbox-group/index.mjs +65 -68
- package/dist/components/chip/index.d.mts +3 -1
- package/dist/components/chip/index.mjs +3 -2
- package/dist/components/client-only/index.d.mts +7 -2
- package/dist/components/client-only/index.mjs +8 -1
- package/dist/components/clipboard/index.d.mts +1 -1
- package/dist/components/clipboard/index.mjs +13 -5
- package/dist/components/collapsible/index.d.mts +15 -1
- package/dist/components/collapsible/index.mjs +39 -2
- package/dist/components/color-picker/index.d.mts +13 -2
- package/dist/components/color-picker/index.mjs +95 -8
- package/dist/components/combobox/index.d.mts +24 -1
- package/dist/components/combobox/index.mjs +129 -8
- package/dist/components/command/index.d.mts +4 -1
- package/dist/components/command/index.mjs +13 -1
- package/dist/components/comment/index.d.mts +3 -1
- package/dist/components/comment/index.mjs +3 -2
- package/dist/components/config-provider/index.d.mts +3 -1
- package/dist/components/config-provider/index.mjs +3 -2
- package/dist/components/container/index.d.mts +3 -1
- package/dist/components/container/index.mjs +3 -2
- package/dist/components/data-view/index.d.mts +3 -1
- package/dist/components/data-view/index.mjs +5 -6
- package/dist/components/date-input/index.d.mts +1 -1
- package/dist/components/date-input/index.mjs +13 -5
- package/dist/components/date-picker/index.d.mts +1 -1
- package/dist/components/date-picker/index.mjs +13 -5
- package/dist/components/deferred-content/index.d.mts +3 -1
- package/dist/components/deferred-content/index.mjs +3 -2
- package/dist/components/descriptions/index.d.mts +7 -0
- package/dist/components/descriptions/index.mjs +21 -2
- package/dist/components/dialog/index.d.mts +17 -1
- package/dist/components/dialog/index.mjs +84 -2
- package/dist/components/download-trigger/index.d.mts +7 -2
- package/dist/components/download-trigger/index.mjs +8 -1
- package/dist/components/drawer/index.d.mts +17 -1
- package/dist/components/drawer/index.mjs +83 -2
- package/dist/components/dynamic-input/index.d.mts +3 -1
- package/dist/components/dynamic-input/index.mjs +10 -6
- package/dist/components/editable/index.d.mts +1 -1
- package/dist/components/editable/index.mjs +13 -5
- package/dist/components/ellipsis/index.d.mts +3 -1
- package/dist/components/ellipsis/index.mjs +3 -2
- package/dist/components/field/index.d.mts +5 -1
- package/dist/components/field/index.mjs +13 -1
- package/dist/components/fieldset/index.d.mts +5 -1
- package/dist/components/fieldset/index.mjs +13 -1
- package/dist/components/file-upload/index.d.mts +1 -7
- package/dist/components/file-upload/index.mjs +13 -5
- package/dist/components/floating-panel/index.d.mts +5 -1
- package/dist/components/floating-panel/index.mjs +13 -1
- package/dist/components/focus-trap/index.d.mts +7 -2
- package/dist/components/focus-trap/index.mjs +8 -1
- package/dist/components/form/index.d.mts +1 -1
- package/dist/components/form/index.mjs +10 -4
- package/dist/components/frame/index.d.mts +6 -1
- package/dist/components/frame/index.mjs +10 -1
- package/dist/components/grid/index.d.mts +3 -1
- package/dist/components/grid/index.mjs +3 -2
- package/dist/components/highlight/index.d.mts +3 -1
- package/dist/components/highlight/index.mjs +2 -1
- package/dist/components/hover-card/index.d.mts +19 -1
- package/dist/components/hover-card/index.mjs +91 -2
- package/dist/components/icon/index.d.mts +8 -7
- package/dist/components/icon/index.mjs +4 -3
- package/dist/components/image/index.d.mts +4 -2
- package/dist/components/image/index.mjs +34 -33
- package/dist/components/image-cropper/index.d.mts +5 -1
- package/dist/components/image-cropper/index.mjs +13 -1
- package/dist/components/image-viewer/index.d.mts +2 -23
- package/dist/components/image-viewer/index.mjs +3 -159
- package/dist/components/input/index.d.mts +3 -1
- package/dist/components/input/index.mjs +1 -1
- package/dist/components/json-tree-view/index.d.mts +5 -4
- package/dist/components/json-tree-view/index.mjs +15 -18
- package/dist/components/kbd/index.d.mts +3 -1
- package/dist/components/kbd/index.mjs +3 -2
- package/dist/components/link/index.d.mts +3 -1
- package/dist/components/link/index.mjs +3 -2
- package/dist/components/listbox/index.d.mts +1 -1
- package/dist/components/listbox/index.mjs +13 -5
- package/dist/components/marquee/index.d.mts +5 -1
- package/dist/components/marquee/index.mjs +13 -1
- package/dist/components/masonry/index.d.mts +3 -1
- package/dist/components/masonry/index.mjs +3 -2
- package/dist/components/media-player/index.d.mts +2 -0
- package/dist/components/media-player/index.mjs +2 -0
- package/dist/components/mentions/index.d.mts +1 -1
- package/dist/components/mentions/index.mjs +2 -2
- package/dist/components/menu/index.d.mts +21 -1
- package/dist/components/menu/index.mjs +62 -5
- package/dist/components/menubar/index.d.mts +3 -1
- package/dist/components/menubar/index.mjs +30 -9
- package/dist/components/navigation-menu/index.d.mts +5 -1
- package/dist/components/navigation-menu/index.mjs +13 -1
- package/dist/components/number-input/index.d.mts +1 -1
- package/dist/components/number-input/index.mjs +13 -5
- package/dist/components/order-list/index.d.mts +3 -1
- package/dist/components/order-list/index.mjs +67 -63
- package/dist/components/pagination/index.d.mts +1 -1
- package/dist/components/pagination/index.mjs +13 -5
- package/dist/components/password-input/index.d.mts +1 -1
- package/dist/components/password-input/index.mjs +13 -5
- package/dist/components/pin-input/index.d.mts +1 -1
- package/dist/components/pin-input/index.mjs +13 -5
- package/dist/components/popconfirm/index.d.mts +3 -1
- package/dist/components/popconfirm/index.mjs +16 -8
- package/dist/components/popover/index.d.mts +19 -1
- package/dist/components/popover/index.mjs +91 -2
- package/dist/components/presence/index.d.mts +10 -2
- package/dist/components/presence/index.mjs +9 -1
- package/dist/components/progress/index.d.mts +1 -1
- package/dist/components/progress/index.mjs +13 -5
- package/dist/components/progress-group/index.d.mts +3 -1
- package/dist/components/progress-group/index.mjs +4 -3
- package/dist/components/qr-code/index.d.mts +5 -1
- package/dist/components/qr-code/index.mjs +13 -1
- package/dist/components/radio-group/index.d.mts +1 -1
- package/dist/components/radio-group/index.mjs +13 -5
- package/dist/components/rating-group/index.d.mts +2 -2
- package/dist/components/rating-group/index.mjs +13 -5
- package/dist/components/result/index.d.mts +1 -1
- package/dist/components/result/index.mjs +5 -3
- package/dist/components/scroll-area/index.d.mts +5 -1
- package/dist/components/scroll-area/index.mjs +13 -1
- package/dist/components/segment-group/index.d.mts +1 -1
- package/dist/components/segment-group/index.mjs +11 -6
- package/dist/components/select/index.d.mts +2 -2
- package/dist/components/select/index.mjs +1 -1
- package/dist/components/separator/index.d.mts +3 -1
- package/dist/components/separator/index.mjs +3 -2
- package/dist/components/signature-pad/index.d.mts +5 -1
- package/dist/components/signature-pad/index.mjs +13 -1
- package/dist/components/skeleton/index.d.mts +3 -1
- package/dist/components/skeleton/index.mjs +3 -2
- package/dist/components/slider/index.d.mts +1 -1
- package/dist/components/slider/index.mjs +13 -5
- package/dist/components/spinner/index.d.mts +3 -1
- package/dist/components/spinner/index.mjs +3 -2
- package/dist/components/split-button/index.d.mts +3 -1
- package/dist/components/split-button/index.mjs +14 -3
- package/dist/components/splitter/index.d.mts +5 -1
- package/dist/components/splitter/index.mjs +13 -1
- package/dist/components/spotlight/index.d.mts +3 -1
- package/dist/components/spotlight/index.mjs +3 -2
- package/dist/components/stack/index.d.mts +3 -1
- package/dist/components/stack/index.mjs +6 -5
- package/dist/components/steps/index.d.mts +20 -3
- package/dist/components/steps/index.mjs +66 -7
- package/dist/components/swap/index.d.mts +5 -1
- package/dist/components/swap/index.mjs +13 -1
- package/dist/components/switch/index.d.mts +1 -1
- package/dist/components/switch/index.mjs +13 -5
- package/dist/components/table/index.d.mts +3 -1
- package/dist/components/table/index.mjs +169 -151
- package/dist/components/tabs/index.d.mts +20 -2
- package/dist/components/tabs/index.mjs +59 -3
- package/dist/components/tags-input/index.d.mts +1 -1
- package/dist/components/tags-input/index.mjs +13 -5
- package/dist/components/terminal/index.d.mts +3 -1
- package/dist/components/terminal/index.mjs +3 -2
- package/dist/components/textarea/index.d.mts +3 -1
- package/dist/components/textarea/index.mjs +3 -2
- package/dist/components/timer/index.d.mts +5 -1
- package/dist/components/timer/index.mjs +13 -1
- package/dist/components/toast/index.d.mts +8 -2
- package/dist/components/toast/index.mjs +14 -2
- package/dist/components/toc/index.d.mts +11 -2
- package/dist/components/toc/index.mjs +1 -1
- package/dist/components/toggle/index.d.mts +5 -1
- package/dist/components/toggle/index.mjs +13 -1
- package/dist/components/toggle-group/index.d.mts +1 -1
- package/dist/components/toggle-group/index.mjs +13 -5
- package/dist/components/toolbar/index.d.mts +3 -1
- package/dist/components/toolbar/index.mjs +3 -2
- package/dist/components/tooltip/index.d.mts +16 -1
- package/dist/components/tooltip/index.mjs +55 -2
- package/dist/components/tour/index.d.mts +16 -3
- package/dist/components/tour/index.mjs +74 -9
- package/dist/components/transfer/index.d.mts +3 -1
- package/dist/components/transfer/index.mjs +54 -50
- package/dist/components/tree-select/index.d.mts +3 -1
- package/dist/components/tree-select/index.mjs +37 -30
- package/dist/components/tree-view/index.d.mts +1 -8
- package/dist/components/tree-view/index.mjs +16 -21
- package/dist/components/user/index.d.mts +3 -1
- package/dist/components/user/index.mjs +8 -2
- package/dist/components/virtual-list/index.d.mts +3 -1
- package/dist/components/virtual-list/index.mjs +13 -9
- package/dist/components/watermark/index.d.mts +3 -1
- package/dist/components/watermark/index.mjs +4 -3
- package/dist/element-dGIhOTJ6.mjs +16 -0
- package/dist/family-Cmd8HEyK.mjs +11 -0
- package/dist/icon-DTqmJCd5.mjs +48 -0
- package/dist/id-2ygNzPHF.mjs +12 -0
- package/dist/image-viewer-B9A5lXsk.mjs +228 -0
- package/dist/{index-B1xiJ5ki.d.mts → index-B1-quIrl.d.mts} +6 -2
- package/dist/{index-DDX7x8aT.d.mts → index-DEArHiFI.d.mts} +16 -7
- package/dist/index-DhripUtf.d.mts +39 -0
- package/dist/{index-YPUiqD3n.d.mts → index-ID48LCMU.d.mts} +28 -2
- package/dist/{index-IfofF-SW.d.mts → index-nFXK_8hJ.d.mts} +53 -23
- package/dist/index-wW28BYf1.d.mts +124 -0
- package/dist/index.d.mts +23 -22
- package/dist/index.mjs +13 -12
- package/dist/{input-DoFQ7RXh.mjs → input-CPAJdwDb.mjs} +3 -2
- package/dist/media-player-BC8D_d29.mjs +796 -0
- package/dist/{mentions-f5Js_2W7.mjs → mentions-CeG5u8Qm.mjs} +67 -51
- package/dist/select-7YjMSBGx.mjs +292 -0
- package/dist/{toc-CZmYEaQR.mjs → toc-DYKaKQ_X.mjs} +12 -2
- package/package.json +3 -3
- package/dist/chevron-D5RzcayK.mjs +0 -9
- package/dist/index-DdsnfV4f.d.mts +0 -16
- package/dist/select-CX6OuQlU.mjs +0 -123
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { spread, template } from "@solidjs/web";
|
|
2
|
+
import { getIcon } from "@bysages/core/icons";
|
|
3
|
+
//#region src/internal/icon.tsx
|
|
4
|
+
var _tmpl$ = /* @__PURE__ */ template(`<svg>`);
|
|
5
|
+
function resolve(name) {
|
|
6
|
+
const icon = getIcon(name);
|
|
7
|
+
if (!icon) throw new Error(`Unknown icon "${name}" in the curated core registry`);
|
|
8
|
+
return icon;
|
|
9
|
+
}
|
|
10
|
+
/** Render a curated core icon as a bare svg node — the components' own
|
|
11
|
+
* default icons. No span shell: the part rules size the svg directly.
|
|
12
|
+
* Extra body appends after the icon's own body, for composed marks. */
|
|
13
|
+
function iconNode(name, attrs = {}, extraBody = "") {
|
|
14
|
+
const icon = resolve(name);
|
|
15
|
+
var _el$ = _tmpl$();
|
|
16
|
+
spread(_el$, [
|
|
17
|
+
{
|
|
18
|
+
get viewBox() {
|
|
19
|
+
return `0 0 ${icon.width} ${icon.height}`;
|
|
20
|
+
},
|
|
21
|
+
"aria-hidden": "true"
|
|
22
|
+
},
|
|
23
|
+
attrs,
|
|
24
|
+
{ get innerHTML() {
|
|
25
|
+
return icon.body + extraBody;
|
|
26
|
+
} }
|
|
27
|
+
], false);
|
|
28
|
+
return _el$;
|
|
29
|
+
}
|
|
30
|
+
/** The same curated icon as an HTML string, for enhancements that write
|
|
31
|
+
* innerHTML rather than mount elements. */
|
|
32
|
+
function iconHtml(name, attrs = {}) {
|
|
33
|
+
const icon = resolve(name);
|
|
34
|
+
const attributes = {
|
|
35
|
+
width: String(icon.width),
|
|
36
|
+
height: String(icon.height),
|
|
37
|
+
viewBox: `0 0 ${icon.width} ${icon.height}`,
|
|
38
|
+
"aria-hidden": "true",
|
|
39
|
+
...attrs
|
|
40
|
+
};
|
|
41
|
+
return `<svg${Object.entries(attributes).map(([key, value]) => ` ${key}="${value}"`).join("")}>${icon.body}</svg>`;
|
|
42
|
+
}
|
|
43
|
+
/** The curated icon's drawing body, for composed marks that share one svg. */
|
|
44
|
+
function iconBody(name) {
|
|
45
|
+
return resolve(name).body;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { iconHtml as n, iconNode as r, iconBody as t };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createUniqueId } from "solid-js";
|
|
2
|
+
//#region src/internal/id.ts
|
|
3
|
+
/** Generates an SSR-stable machine base id while honoring an explicit id. */
|
|
4
|
+
function useElementId(scope, explicit) {
|
|
5
|
+
const generated = createUniqueId();
|
|
6
|
+
return () => {
|
|
7
|
+
const id = explicit?.();
|
|
8
|
+
return typeof id === "string" && id ? id : `bs-${scope}-${generated}`;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { useElementId as t };
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { t as defineFamily } from "./family-Cmd8HEyK.mjs";
|
|
2
|
+
import { r as iconNode } from "./icon-DTqmJCd5.mjs";
|
|
3
|
+
import { t as useElementId } from "./id-2ygNzPHF.mjs";
|
|
4
|
+
import { Button } from "./components/button/index.mjs";
|
|
5
|
+
import { n as useComponentMessages } from "./use-component-messages-C4SCVYjD.mjs";
|
|
6
|
+
import { ButtonGroup } from "./components/button-group/index.mjs";
|
|
7
|
+
import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
|
|
8
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
9
|
+
import { createComponent, effect, insert, memo, mergeProps, setAttribute, setStyleProperty, spread, template } from "@solidjs/web";
|
|
10
|
+
import { Show, createEffect, createSignal, splitProps } from "solid-js";
|
|
11
|
+
import { Portal } from "solid-js/web";
|
|
12
|
+
import { Dialog } from "@ark-ui/solid/dialog";
|
|
13
|
+
//#region src/components/image-viewer/preview.tsx
|
|
14
|
+
var _tmpl$$1 = /* @__PURE__ */ template(`<span data-part=preview-label>`);
|
|
15
|
+
var _tmpl$2$1 = /* @__PURE__ */ template(`<span data-scope=image-viewer data-part=preview-overlay aria-hidden=true><!><!>`);
|
|
16
|
+
var _tmpl$3 = /* @__PURE__ */ template(`<span>`);
|
|
17
|
+
/** The default doorway is the curated preview icon; custom content keeps
|
|
18
|
+
* that icon as its hover and focus affordance. */
|
|
19
|
+
function ImageViewerPreview(props) {
|
|
20
|
+
injectComponentStyle("image-viewer");
|
|
21
|
+
const messages = useComponentMessages();
|
|
22
|
+
const [own, triggerProps, rest] = splitProps(props, ["label", "children"], ["data-part"]);
|
|
23
|
+
const parts = [triggerProps["data-part"], "preview"].filter(Boolean).join(" ");
|
|
24
|
+
const isIcon = () => own.children == null;
|
|
25
|
+
var _el$ = _tmpl$3();
|
|
26
|
+
spread(_el$, [
|
|
27
|
+
rest,
|
|
28
|
+
{
|
|
29
|
+
"data-scope": "image-viewer",
|
|
30
|
+
"data-part": parts
|
|
31
|
+
},
|
|
32
|
+
() => {
|
|
33
|
+
return isIcon() ? {
|
|
34
|
+
"data-empty": "true",
|
|
35
|
+
"aria-label": messages().imageViewer.preview
|
|
36
|
+
} : {};
|
|
37
|
+
}
|
|
38
|
+
], true);
|
|
39
|
+
insert(_el$, createComponent(Show, {
|
|
40
|
+
get when() {
|
|
41
|
+
return own.children;
|
|
42
|
+
},
|
|
43
|
+
get fallback() {
|
|
44
|
+
return iconNode("eye");
|
|
45
|
+
},
|
|
46
|
+
get children() {
|
|
47
|
+
return [memo(() => {
|
|
48
|
+
return own.children;
|
|
49
|
+
}), (() => {
|
|
50
|
+
var _el$2 = _tmpl$2$1();
|
|
51
|
+
var _el$3 = _el$2.firstChild;
|
|
52
|
+
var _el$5 = _el$3.nextSibling;
|
|
53
|
+
insert(_el$2, () => {
|
|
54
|
+
return iconNode("eye");
|
|
55
|
+
}, _el$3);
|
|
56
|
+
insert(_el$2, createComponent(Show, {
|
|
57
|
+
get when() {
|
|
58
|
+
return own.label;
|
|
59
|
+
},
|
|
60
|
+
get children() {
|
|
61
|
+
var _el$4 = _tmpl$$1();
|
|
62
|
+
insert(_el$4, () => {
|
|
63
|
+
return own.label;
|
|
64
|
+
});
|
|
65
|
+
return _el$4;
|
|
66
|
+
}
|
|
67
|
+
}), _el$5);
|
|
68
|
+
return _el$2;
|
|
69
|
+
})()];
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
return _el$;
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/components/image-viewer/index.tsx
|
|
76
|
+
var _tmpl$ = /* @__PURE__ */ template(`<img data-scope=image-viewer data-part=viewport>`);
|
|
77
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<div data-scope=image-viewer data-part=toolbar>`);
|
|
78
|
+
const MIN_SCALE = .5;
|
|
79
|
+
const MAX_SCALE = 3;
|
|
80
|
+
const SCALE_STEP = .25;
|
|
81
|
+
/** The toolbar's icons, drawn from the house icon set. */
|
|
82
|
+
const TOOL_ICONS = {
|
|
83
|
+
zoomIn: () => iconNode("zoom-in"),
|
|
84
|
+
zoomOut: () => iconNode("zoom-out"),
|
|
85
|
+
rotate: () => iconNode("rotate-cw"),
|
|
86
|
+
close: () => iconNode("x")
|
|
87
|
+
};
|
|
88
|
+
function ImageViewerImpl(props) {
|
|
89
|
+
injectComponentStyle("image-viewer");
|
|
90
|
+
const [own] = splitProps(props, [
|
|
91
|
+
"src",
|
|
92
|
+
"alt",
|
|
93
|
+
"width",
|
|
94
|
+
"height",
|
|
95
|
+
"open",
|
|
96
|
+
"zoomable",
|
|
97
|
+
"onOpenChange",
|
|
98
|
+
"children"
|
|
99
|
+
]);
|
|
100
|
+
const id = useElementId("image-viewer");
|
|
101
|
+
const messages = useComponentMessages();
|
|
102
|
+
const [localOpen, setLocalOpen] = createSignal(false);
|
|
103
|
+
const [scale, setScale] = createSignal(1);
|
|
104
|
+
const [rotation, setRotation] = createSignal(0);
|
|
105
|
+
const isOpen = () => own.open ?? localOpen();
|
|
106
|
+
const setOpen = (value) => {
|
|
107
|
+
if (own.open === void 0) setLocalOpen(value);
|
|
108
|
+
own.onOpenChange?.(value);
|
|
109
|
+
};
|
|
110
|
+
createEffect(() => {
|
|
111
|
+
if (isOpen()) {
|
|
112
|
+
setScale(1);
|
|
113
|
+
setRotation(0);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
function zoom(step) {
|
|
117
|
+
setScale(Math.min(MAX_SCALE, Math.max(MIN_SCALE, scale() + step)));
|
|
118
|
+
}
|
|
119
|
+
function rotate() {
|
|
120
|
+
setRotation((rotation() + 90) % 360);
|
|
121
|
+
}
|
|
122
|
+
function toolButton(label, icon, onClick) {
|
|
123
|
+
return createComponent(Button, {
|
|
124
|
+
variant: "ghost",
|
|
125
|
+
square: true,
|
|
126
|
+
size: "lg",
|
|
127
|
+
"aria-label": label,
|
|
128
|
+
onClick,
|
|
129
|
+
get children() {
|
|
130
|
+
return icon();
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return createComponent(Dialog.Root, {
|
|
135
|
+
get id() {
|
|
136
|
+
return id();
|
|
137
|
+
},
|
|
138
|
+
get open() {
|
|
139
|
+
return isOpen();
|
|
140
|
+
},
|
|
141
|
+
onOpenChange: (details) => setOpen(details.open),
|
|
142
|
+
lazyMount: true,
|
|
143
|
+
unmountOnExit: true,
|
|
144
|
+
get children() {
|
|
145
|
+
return [createComponent(Dialog.Trigger, {
|
|
146
|
+
asChild: () => own.children ?? createComponent(ImageViewerPreview, {}),
|
|
147
|
+
"data-scope": "image-viewer",
|
|
148
|
+
"data-part": "trigger"
|
|
149
|
+
}), createComponent(Portal, { get children() {
|
|
150
|
+
return [createComponent(Dialog.Backdrop, { class: "bs-image-viewer-backdrop" }), createComponent(Dialog.Positioner, {
|
|
151
|
+
class: "bs-image-viewer-positioner",
|
|
152
|
+
get children() {
|
|
153
|
+
return createComponent(Dialog.Content, {
|
|
154
|
+
class: "bs-image-viewer-content",
|
|
155
|
+
get "aria-label"() {
|
|
156
|
+
return own.alt || "Image preview";
|
|
157
|
+
},
|
|
158
|
+
onClick: (event) => {
|
|
159
|
+
if (event.target === event.currentTarget) setOpen(false);
|
|
160
|
+
},
|
|
161
|
+
get children() {
|
|
162
|
+
return [(() => {
|
|
163
|
+
var _el$ = _tmpl$();
|
|
164
|
+
effect(() => {
|
|
165
|
+
return {
|
|
166
|
+
e: own.src,
|
|
167
|
+
t: own.alt ?? "",
|
|
168
|
+
a: own.width,
|
|
169
|
+
o: own.height,
|
|
170
|
+
i: `scale(${scale()}) rotate(${rotation()}deg)`
|
|
171
|
+
};
|
|
172
|
+
}, ({ e, t, a, o, i }, _p$) => {
|
|
173
|
+
e !== _p$?.e && setAttribute(_el$, "src", e);
|
|
174
|
+
t !== _p$?.t && setAttribute(_el$, "alt", t);
|
|
175
|
+
a !== _p$?.a && setAttribute(_el$, "width", a);
|
|
176
|
+
o !== _p$?.o && setAttribute(_el$, "height", o);
|
|
177
|
+
i !== _p$?.i && setStyleProperty(_el$, "--bs-image-viewer-transform", i);
|
|
178
|
+
});
|
|
179
|
+
return _el$;
|
|
180
|
+
})(), (() => {
|
|
181
|
+
var _el$2 = _tmpl$2();
|
|
182
|
+
insert(_el$2, createComponent(ButtonGroup, { get children() {
|
|
183
|
+
return [
|
|
184
|
+
createComponent(Show, {
|
|
185
|
+
get when() {
|
|
186
|
+
return own.zoomable ?? true;
|
|
187
|
+
},
|
|
188
|
+
get children() {
|
|
189
|
+
return [memo(() => {
|
|
190
|
+
return toolButton(messages().imageViewer.zoomIn, TOOL_ICONS.zoomIn, () => zoom(SCALE_STEP));
|
|
191
|
+
}), memo(() => {
|
|
192
|
+
return toolButton(messages().imageViewer.zoomOut, TOOL_ICONS.zoomOut, () => zoom(-.25));
|
|
193
|
+
})];
|
|
194
|
+
}
|
|
195
|
+
}),
|
|
196
|
+
memo(() => {
|
|
197
|
+
return toolButton(messages().imageViewer.rotate, TOOL_ICONS.rotate, rotate);
|
|
198
|
+
}),
|
|
199
|
+
createComponent(Dialog.CloseTrigger, { asChild: (closeProps) => createComponent(Button, mergeProps(closeProps, {
|
|
200
|
+
variant: "ghost",
|
|
201
|
+
square: true,
|
|
202
|
+
size: "lg",
|
|
203
|
+
get "aria-label"() {
|
|
204
|
+
return messages().imageViewer.close;
|
|
205
|
+
},
|
|
206
|
+
get children() {
|
|
207
|
+
return TOOL_ICONS.close();
|
|
208
|
+
}
|
|
209
|
+
})) })
|
|
210
|
+
];
|
|
211
|
+
} }));
|
|
212
|
+
return _el$2;
|
|
213
|
+
})()];
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
})];
|
|
218
|
+
} })];
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
const viewerParts = {
|
|
223
|
+
...Dialog$1,
|
|
224
|
+
Preview: ImageViewerPreview
|
|
225
|
+
};
|
|
226
|
+
const ImageViewer = defineFamily(ImageViewerImpl, viewerParts);
|
|
227
|
+
//#endregion
|
|
228
|
+
export { ImageViewer as t };
|
|
@@ -1787,7 +1787,9 @@ interface AnyFormApi {
|
|
|
1787
1787
|
interface FormProps extends JSX.FormHTMLAttributes<HTMLFormElement> {
|
|
1788
1788
|
form: AnyFormApi;
|
|
1789
1789
|
}
|
|
1790
|
-
declare
|
|
1790
|
+
declare const Form: ((props: FormProps) => JSX.Element) & {
|
|
1791
|
+
Root: (props: FormProps) => JSX.Element;
|
|
1792
|
+
};
|
|
1791
1793
|
/**
|
|
1792
1794
|
* The named slot in the grid: label, control, hint — and the engine's
|
|
1793
1795
|
* errors for this name, shown through the same parts the standalone
|
|
@@ -1806,6 +1808,8 @@ interface FormFieldProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "child
|
|
|
1806
1808
|
disabled?: boolean;
|
|
1807
1809
|
children?: JSX.Element | ((field: any) => JSX.Element);
|
|
1808
1810
|
}
|
|
1809
|
-
declare
|
|
1811
|
+
declare const FormField: ((props: FormFieldProps) => JSX.Element) & {
|
|
1812
|
+
Root: (props: FormFieldProps) => JSX.Element;
|
|
1813
|
+
};
|
|
1810
1814
|
//#endregion
|
|
1811
1815
|
export { SolidFormApi as a, FormApi as c, FormProps as i, FieldApi as l, FormField as n, createField as o, FormFieldProps as r, createForm as s, Form as t };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Popover } from "./components/popover/index.mjs";
|
|
1
2
|
import { Accessor, JSX } from "solid-js";
|
|
2
3
|
//#region src/components/mentions/use-mentions.d.ts
|
|
3
4
|
interface UseMentionsOptions {
|
|
@@ -33,6 +34,9 @@ declare function useMentions(options: Accessor<UseMentionsOptions>, textarea: Ac
|
|
|
33
34
|
};
|
|
34
35
|
//#endregion
|
|
35
36
|
//#region src/components/mentions/index.d.ts
|
|
37
|
+
/** The Anchor's polymorphic wiring is div-typed at the API boundary; the
|
|
38
|
+
* textarea host supplies the concrete element type. */
|
|
39
|
+
type MentionsAnchorProps = JSX.HTMLAttributes<HTMLTextAreaElement>;
|
|
36
40
|
interface MentionEntry {
|
|
37
41
|
label: string;
|
|
38
42
|
value: string;
|
|
@@ -49,13 +53,17 @@ interface MentionsVesselProps {
|
|
|
49
53
|
onInsert?: (entry: MentionEntry) => void;
|
|
50
54
|
onActiveChange?: (index: number) => void;
|
|
51
55
|
onOpenChange?: (open: boolean) => void;
|
|
56
|
+
/** The host's field, rendered with the popover Anchor's wiring. When
|
|
57
|
+
* absent, the vessel falls back to the `anchor` rectangle. */
|
|
58
|
+
children?: JSX.Element | ((anchorProps: MentionsAnchorProps) => JSX.Element);
|
|
52
59
|
}
|
|
53
|
-
/** The vessel: the candidates themselves as a floating card.
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
/** The vessel: the candidates themselves as a floating card. A host can
|
|
61
|
+
* render its field through the Anchor; the rectangle fallback keeps the
|
|
62
|
+
* textarea in the host's own anatomy. Shares the detection state with
|
|
63
|
+
* the host through `useMentions`. */
|
|
64
|
+
declare const MentionsVessel: ((props: MentionsVesselProps) => JSX.Element) & {
|
|
65
|
+
Root: (props: MentionsVesselProps) => JSX.Element;
|
|
66
|
+
};
|
|
59
67
|
interface MentionsProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onInput"> {
|
|
60
68
|
/** The candidates offered once the trigger character is typed. */
|
|
61
69
|
items?: MentionEntry[];
|
|
@@ -90,6 +98,7 @@ interface MentionsProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onInpu
|
|
|
90
98
|
* own field anatomy (the AI prompt input) skip this shell and wire
|
|
91
99
|
* `useMentions` plus `MentionsVessel` themselves.
|
|
92
100
|
*/
|
|
93
|
-
declare function
|
|
101
|
+
declare function MentionsImpl(props: MentionsProps): JSX.Element;
|
|
102
|
+
declare const Mentions: typeof MentionsImpl & typeof Popover;
|
|
94
103
|
//#endregion
|
|
95
104
|
export { MentionsVesselProps as a, useMentions as c, MentionsVessel as i, Mentions as n, UseMentionsHandlers as o, MentionsProps as r, UseMentionsOptions as s, MentionEntry as t };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Dialog } from "./components/dialog/index.mjs";
|
|
2
|
+
import { JSX } from "solid-js";
|
|
3
|
+
//#region src/components/image-viewer/preview.d.ts
|
|
4
|
+
interface ImageViewerPreviewProps extends Omit<JSX.HTMLAttributes<HTMLElement>, "children"> {
|
|
5
|
+
/** Visible beside the affordance over custom content. */
|
|
6
|
+
label?: string;
|
|
7
|
+
"data-part"?: string;
|
|
8
|
+
/** Custom doorway content; omit it for the default curated icon. */
|
|
9
|
+
children?: JSX.Element;
|
|
10
|
+
}
|
|
11
|
+
/** The default doorway is the curated preview icon; custom content keeps
|
|
12
|
+
* that icon as its hover and focus affordance. */
|
|
13
|
+
declare function ImageViewerPreview(props: ImageViewerPreviewProps): JSX.Element;
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/components/image-viewer/index.d.ts
|
|
16
|
+
/**
|
|
17
|
+
* Opens the full lightbox from a curated icon by default, or from any
|
|
18
|
+
* wrapped button, image or other doorway. Zoom, rotation, Escape and the scrim
|
|
19
|
+
* stay in the viewer. Anatomy remains available on `ImageViewer.Root`.
|
|
20
|
+
*/
|
|
21
|
+
interface ImageViewerProps {
|
|
22
|
+
src: string;
|
|
23
|
+
alt?: string;
|
|
24
|
+
/** The large image handed to the lightbox. */
|
|
25
|
+
width?: number | string;
|
|
26
|
+
height?: number | string;
|
|
27
|
+
/** The wrapped content that opens the lightbox. */
|
|
28
|
+
children?: JSX.Element;
|
|
29
|
+
open?: boolean;
|
|
30
|
+
zoomable?: boolean;
|
|
31
|
+
/** The openness changed — from the scrim, Escape or the toolbar. */
|
|
32
|
+
onOpenChange?: (open: boolean) => void;
|
|
33
|
+
}
|
|
34
|
+
declare function ImageViewerImpl(props: ImageViewerProps): JSX.Element;
|
|
35
|
+
declare const ImageViewer: typeof ImageViewerImpl & (typeof Dialog & {
|
|
36
|
+
Preview: typeof ImageViewerPreview;
|
|
37
|
+
});
|
|
38
|
+
//#endregion
|
|
39
|
+
export { ImageViewerProps as n, ImageViewer as t };
|
|
@@ -35,8 +35,34 @@ type SelectOwnProps = {
|
|
|
35
35
|
size?: "sm" | "md" | "lg";
|
|
36
36
|
};
|
|
37
37
|
declare function SelectRoot<T extends CollectionItem>(props: SelectRootProps<T> & SelectOwnProps): import("solid-js").JSX.Element;
|
|
38
|
-
|
|
38
|
+
type SelectFacadeValue = string | string[];
|
|
39
|
+
type SelectParts = Omit<typeof Select, "Root"> & {
|
|
39
40
|
Root: typeof SelectRoot;
|
|
40
41
|
};
|
|
42
|
+
interface SelectFacadeProps {
|
|
43
|
+
value?: SelectFacadeValue;
|
|
44
|
+
defaultValue?: SelectFacadeValue;
|
|
45
|
+
options: NativeSelectOption[];
|
|
46
|
+
multiple?: boolean;
|
|
47
|
+
deselectable?: boolean;
|
|
48
|
+
/** Show the clear-value control when the machine allows it. */
|
|
49
|
+
clearable?: boolean;
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
invalid?: boolean;
|
|
52
|
+
required?: boolean;
|
|
53
|
+
readOnly?: boolean;
|
|
54
|
+
label?: string;
|
|
55
|
+
/** Heading above the flat option list. */
|
|
56
|
+
groupLabel?: string;
|
|
57
|
+
placeholder?: string;
|
|
58
|
+
name?: string;
|
|
59
|
+
form?: string;
|
|
60
|
+
autoComplete?: string;
|
|
61
|
+
/** One rung of the control-height ladder for the trigger. */
|
|
62
|
+
size?: "sm" | "md" | "lg";
|
|
63
|
+
onValueChange?: (value: string | string[]) => void;
|
|
64
|
+
}
|
|
65
|
+
declare function SelectFacade(props: SelectFacadeProps): import("solid-js").JSX.Element;
|
|
66
|
+
declare const Select$1: typeof SelectFacade & SelectParts;
|
|
41
67
|
//#endregion
|
|
42
|
-
export { NativeSelectProps as i,
|
|
68
|
+
export { NativeSelectProps as a, NativeSelectOption as i, SelectFacadeProps as n, NativeSelect as r, Select$1 as t };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { ActionProps } from "./components/ai-action/index.mjs";
|
|
2
|
+
import { MessageProps } from "./components/ai-message/index.mjs";
|
|
3
|
+
import { PromptInputProps } from "./components/ai-prompt-input/index.mjs";
|
|
4
|
+
import { ReasoningProps } from "./components/ai-reasoning/index.mjs";
|
|
5
|
+
import { ResponseProps } from "./components/ai-response/index.mjs";
|
|
6
|
+
import { SourceProps } from "./components/ai-source/index.mjs";
|
|
7
|
+
import { SuggestionProps } from "./components/ai-suggestion/index.mjs";
|
|
8
|
+
import { ToolProps } from "./components/ai-tool/index.mjs";
|
|
9
9
|
import { JSX } from "solid-js";
|
|
10
10
|
import { JSONSchema7, JSONSchema7 as JSONSchema7$1 } from "json-schema";
|
|
11
11
|
import { $ZodType } from "zod/v4/core";
|
|
@@ -10330,27 +10330,57 @@ declare global {
|
|
|
10330
10330
|
declare const AiConversation: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10331
10331
|
/** The bubble's inner measure — content that belongs to neither side
|
|
10332
10332
|
* specifically. */
|
|
10333
|
-
declare const AiContent: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element
|
|
10333
|
+
declare const AiContent: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10334
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10335
|
+
};
|
|
10334
10336
|
/** The quiet row under a message — copy, retry, feedback. */
|
|
10335
|
-
declare const AiActions: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element
|
|
10337
|
+
declare const AiActions: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10338
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10339
|
+
};
|
|
10336
10340
|
/** The while-it-works whisper for the in-flight turns. */
|
|
10337
|
-
declare const AiLoader: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element
|
|
10341
|
+
declare const AiLoader: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10342
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10343
|
+
};
|
|
10338
10344
|
/** The whole family under one handle — `Ai.Conversation`,
|
|
10339
10345
|
* `Ai.MessageContent`, and the rest. */
|
|
10340
10346
|
declare const Ai: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10341
10347
|
Conversation: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10342
|
-
MessageContent: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element
|
|
10343
|
-
|
|
10344
|
-
|
|
10345
|
-
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
|
|
10353
|
-
|
|
10348
|
+
MessageContent: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10349
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10350
|
+
};
|
|
10351
|
+
Actions: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10352
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10353
|
+
};
|
|
10354
|
+
Loader: ((props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
10355
|
+
Root: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
10356
|
+
};
|
|
10357
|
+
Message: ((props: MessageProps) => JSX.Element) & {
|
|
10358
|
+
Root: (props: MessageProps) => JSX.Element;
|
|
10359
|
+
};
|
|
10360
|
+
Response: ((props: ResponseProps) => JSX.Element) & {
|
|
10361
|
+
Root: (props: ResponseProps) => JSX.Element;
|
|
10362
|
+
};
|
|
10363
|
+
Reasoning: ((props: ReasoningProps) => JSX.Element) & {
|
|
10364
|
+
Root: (props: ReasoningProps) => JSX.Element;
|
|
10365
|
+
};
|
|
10366
|
+
Tool: ((props: ToolProps) => JSX.Element) & {
|
|
10367
|
+
Root: (props: ToolProps) => JSX.Element;
|
|
10368
|
+
};
|
|
10369
|
+
Sources: ((props: JSX.HTMLAttributes<HTMLOListElement>) => JSX.Element) & {
|
|
10370
|
+
Root: (props: JSX.HTMLAttributes<HTMLOListElement>) => JSX.Element;
|
|
10371
|
+
};
|
|
10372
|
+
Source: ((props: SourceProps) => JSX.Element) & {
|
|
10373
|
+
Root: (props: SourceProps) => JSX.Element;
|
|
10374
|
+
};
|
|
10375
|
+
Action: ((props: ActionProps) => JSX.Element) & {
|
|
10376
|
+
Root: (props: ActionProps) => JSX.Element;
|
|
10377
|
+
};
|
|
10378
|
+
Suggestion: ((props: SuggestionProps) => JSX.Element) & {
|
|
10379
|
+
Root: (props: SuggestionProps) => JSX.Element;
|
|
10380
|
+
};
|
|
10381
|
+
PromptInput: ((props: PromptInputProps) => JSX.Element) & {
|
|
10382
|
+
Root: (props: PromptInputProps) => JSX.Element;
|
|
10383
|
+
};
|
|
10354
10384
|
};
|
|
10355
10385
|
//#endregion
|
|
10356
10386
|
export { AiLoader as a, ReasoningUIPart as c, StepStartUIPart as d, TextUIPart as f, UIMessagePart as h, AiConversation as i, SourceDocumentUIPart as l, UIMessage as m, AiActions as n, DataUIPart as o, ToolUIPart as p, AiContent as r, FileUIPart as s, Ai as t, SourceUrlUIPart as u };
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Accessor, Component, JSX } from "solid-js";
|
|
2
|
+
//#region src/components/media-player/parts.d.ts
|
|
3
|
+
type MediaPartProps = JSX.HTMLAttributes<HTMLElement>;
|
|
4
|
+
type ButtonPartProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
5
|
+
label?: string;
|
|
6
|
+
};
|
|
7
|
+
type InputPartProps = JSX.InputHTMLAttributes<HTMLInputElement> & {
|
|
8
|
+
label?: string;
|
|
9
|
+
};
|
|
10
|
+
type DivPartProps = JSX.HTMLAttributes<HTMLDivElement> & {
|
|
11
|
+
children?: JSX.Element;
|
|
12
|
+
};
|
|
13
|
+
type LabeledDivPartProps = DivPartProps & {
|
|
14
|
+
label?: string;
|
|
15
|
+
};
|
|
16
|
+
/** The native media element, framed by the shared shell's state machine. */
|
|
17
|
+
declare function Media(props: MediaPartProps): JSX.Element;
|
|
18
|
+
/** Play and pause share one seal-cut control: the state changes the mark,
|
|
19
|
+
* never the control's place in the hand. */
|
|
20
|
+
declare function PlayButton(props: ButtonPartProps): JSX.Element;
|
|
21
|
+
/** The elapsed and total time bracket the timeline. */
|
|
22
|
+
declare function Time(props: JSX.HTMLAttributes<HTMLSpanElement>): JSX.Element;
|
|
23
|
+
/** The timeline is the sheet on which the listener writes their place. */
|
|
24
|
+
declare function Timeline(props: InputPartProps): JSX.Element;
|
|
25
|
+
/** Muting stays at the left of the volume well, the way a hand expects. */
|
|
26
|
+
declare function MuteButton(props: ButtonPartProps): JSX.Element;
|
|
27
|
+
declare function Volume(props: InputPartProps): JSX.Element;
|
|
28
|
+
/** Playback rate is a real choice, not hidden behind native menus. */
|
|
29
|
+
declare function Rate(props: LabeledDivPartProps): JSX.Element;
|
|
30
|
+
/** Text tracks use the browser's native model; the control chooses a
|
|
31
|
+
* track index, while rendering stays with the media element. */
|
|
32
|
+
declare function Captions(props: LabeledDivPartProps): JSX.Element;
|
|
33
|
+
/** Picture-in-picture is video-only and capability-detected. */
|
|
34
|
+
declare function PipButton(props: ButtonPartProps): JSX.Element;
|
|
35
|
+
/** Fullscreen takes the whole vessel, not just the moving picture. */
|
|
36
|
+
declare function FullscreenButton(props: ButtonPartProps): JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/components/media-player/use-media-controls.d.ts
|
|
39
|
+
/** One alternative encoding offered to the browser before playback. */
|
|
40
|
+
interface MediaSourceOption {
|
|
41
|
+
src: string;
|
|
42
|
+
type?: string;
|
|
43
|
+
}
|
|
44
|
+
/** A WebVTT track handed to the native text-track model. */
|
|
45
|
+
interface MediaTextTrackOption {
|
|
46
|
+
src: string;
|
|
47
|
+
kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
|
|
48
|
+
label?: string;
|
|
49
|
+
srcLang?: string;
|
|
50
|
+
default?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** A compact clock for player chrome: hours only when the media asks
|
|
53
|
+
* for them, stable digits so the time never jitters the controls. */
|
|
54
|
+
declare function formatMediaTime(seconds: number): string;
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/components/media-player/shell.d.ts
|
|
57
|
+
type MediaEventName = "onPlay" | "onPause" | "onEnded" | "onTimeupdate" | "onVolumechange" | "onRatechange" | "onError";
|
|
58
|
+
interface MediaPlayerProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, MediaEventName | "onPlay" | "onPause"> {
|
|
59
|
+
label?: string;
|
|
60
|
+
src?: string;
|
|
61
|
+
sources?: MediaSourceOption[];
|
|
62
|
+
tracks?: MediaTextTrackOption[];
|
|
63
|
+
autoplay?: boolean;
|
|
64
|
+
loop?: boolean;
|
|
65
|
+
muted?: boolean;
|
|
66
|
+
preload?: "none" | "metadata" | "auto";
|
|
67
|
+
volume?: number;
|
|
68
|
+
playbackRate?: number;
|
|
69
|
+
playbackRates?: number[];
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
poster?: string;
|
|
72
|
+
playsInline?: boolean;
|
|
73
|
+
onPlay?: (event: Event) => void;
|
|
74
|
+
onPause?: (event: Event) => void;
|
|
75
|
+
onEnded?: (event: Event) => void;
|
|
76
|
+
onTimeupdate?: (event: Event) => void;
|
|
77
|
+
onVolumechange?: (event: Event) => void;
|
|
78
|
+
onRatechange?: (event: Event) => void;
|
|
79
|
+
onError?: (event: Event) => void;
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/components/media-player/index.d.ts
|
|
83
|
+
/** Audio and video share one instrument: the same state, the same keys,
|
|
84
|
+
* and the same control rhythm, while each face keeps its native element's
|
|
85
|
+
* own semantics. The parts — Root, Stage, Media, Controls, PlayButton,
|
|
86
|
+
* Timeline, Time, MuteButton, Volume, Rate, Captions, PipButton,
|
|
87
|
+
* FullscreenButton. */
|
|
88
|
+
declare const Audio: Component<MediaPlayerProps> & {
|
|
89
|
+
Root: Component<MediaPlayerProps>;
|
|
90
|
+
Stage: (props: JSX.HTMLAttributes<HTMLDivElement> & {
|
|
91
|
+
children?: JSX.Element;
|
|
92
|
+
}) => JSX.Element;
|
|
93
|
+
Media: typeof Media;
|
|
94
|
+
Controls: (props: JSX.HTMLAttributes<HTMLDivElement> & {
|
|
95
|
+
children?: JSX.Element;
|
|
96
|
+
}) => JSX.Element;
|
|
97
|
+
PlayButton: typeof PlayButton;
|
|
98
|
+
Timeline: typeof Timeline;
|
|
99
|
+
Time: typeof Time;
|
|
100
|
+
MuteButton: typeof MuteButton;
|
|
101
|
+
Volume: typeof Volume;
|
|
102
|
+
Rate: typeof Rate;
|
|
103
|
+
};
|
|
104
|
+
declare const Video: Component<MediaPlayerProps> & {
|
|
105
|
+
Root: Component<MediaPlayerProps>;
|
|
106
|
+
Stage: (props: JSX.HTMLAttributes<HTMLDivElement> & {
|
|
107
|
+
children?: JSX.Element;
|
|
108
|
+
}) => JSX.Element;
|
|
109
|
+
Media: typeof Media;
|
|
110
|
+
Controls: (props: JSX.HTMLAttributes<HTMLDivElement> & {
|
|
111
|
+
children?: JSX.Element;
|
|
112
|
+
}) => JSX.Element;
|
|
113
|
+
PlayButton: typeof PlayButton;
|
|
114
|
+
Timeline: typeof Timeline;
|
|
115
|
+
Time: typeof Time;
|
|
116
|
+
MuteButton: typeof MuteButton;
|
|
117
|
+
Volume: typeof Volume;
|
|
118
|
+
Rate: typeof Rate;
|
|
119
|
+
Captions: typeof Captions;
|
|
120
|
+
PipButton: typeof PipButton;
|
|
121
|
+
FullscreenButton: typeof FullscreenButton;
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
export { MediaTextTrackOption as a, MediaSourceOption as i, Video as n, formatMediaTime as o, MediaPlayerProps as r, Audio as t };
|