@number10/jsx-components 5.0.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 +667 -0
- package/README.md +43 -0
- package/dist/Accordion.cjs +1 -0
- package/dist/Accordion.d.ts +43 -0
- package/dist/Accordion.d.ts.map +1 -0
- package/dist/Accordion.js +71 -0
- package/dist/Accordion.test.d.ts +2 -0
- package/dist/Accordion.test.d.ts.map +1 -0
- package/dist/ActivityIndicator.cjs +1 -0
- package/dist/ActivityIndicator.d.ts +21 -0
- package/dist/ActivityIndicator.d.ts.map +1 -0
- package/dist/ActivityIndicator.js +133 -0
- package/dist/AlertDialog.cjs +1 -0
- package/dist/AlertDialog.d.ts +53 -0
- package/dist/AlertDialog.d.ts.map +1 -0
- package/dist/AlertDialog.js +76 -0
- package/dist/Badge.cjs +1 -0
- package/dist/Badge.d.ts +96 -0
- package/dist/Badge.d.ts.map +1 -0
- package/dist/Badge.js +238 -0
- package/dist/Badge.test.d.ts +2 -0
- package/dist/Badge.test.d.ts.map +1 -0
- package/dist/BottomSheet.cjs +1 -0
- package/dist/BottomSheet.d.ts +72 -0
- package/dist/BottomSheet.d.ts.map +1 -0
- package/dist/BottomSheet.js +132 -0
- package/dist/Button.cjs +1 -0
- package/dist/Button.d.ts +61 -0
- package/dist/Button.d.ts.map +1 -0
- package/dist/Button.js +251 -0
- package/dist/Checkbox.cjs +1 -0
- package/dist/Checkbox.d.ts +40 -0
- package/dist/Checkbox.d.ts.map +1 -0
- package/dist/Checkbox.js +84 -0
- package/dist/Checkbox.test.d.ts +2 -0
- package/dist/Checkbox.test.d.ts.map +1 -0
- package/dist/ColorPicker.cjs +1 -0
- package/dist/ColorPicker.d.ts +48 -0
- package/dist/ColorPicker.d.ts.map +1 -0
- package/dist/ColorPicker.js +256 -0
- package/dist/DebugPanel.cjs +1 -0
- package/dist/DebugPanel.d.ts +63 -0
- package/dist/DebugPanel.d.ts.map +1 -0
- package/dist/DebugPanel.js +116 -0
- package/dist/Dialog.cjs +1 -0
- package/dist/Dialog.d.ts +59 -0
- package/dist/Dialog.d.ts.map +1 -0
- package/dist/Dialog.js +142 -0
- package/dist/Divider.cjs +1 -0
- package/dist/Divider.d.ts +19 -0
- package/dist/Divider.d.ts.map +1 -0
- package/dist/Divider.js +15 -0
- package/dist/Divider.test.d.ts +2 -0
- package/dist/Divider.test.d.ts.map +1 -0
- package/dist/Dropdown.cjs +1 -0
- package/dist/Dropdown.d.ts +35 -0
- package/dist/Dropdown.d.ts.map +1 -0
- package/dist/Dropdown.js +222 -0
- package/dist/Icon.cjs +1 -0
- package/dist/Icon.d.ts +71 -0
- package/dist/Icon.d.ts.map +1 -0
- package/dist/Icon.js +57 -0
- package/dist/Icon.test.d.ts +2 -0
- package/dist/Icon.test.d.ts.map +1 -0
- package/dist/Image.cjs +1 -0
- package/dist/Image.d.ts +10 -0
- package/dist/Image.d.ts.map +1 -0
- package/dist/Image.js +18 -0
- package/dist/Joystick.cjs +1 -0
- package/dist/Joystick.d.ts +32 -0
- package/dist/Joystick.d.ts.map +1 -0
- package/dist/Joystick.js +185 -0
- package/dist/ListBox.cjs +1 -0
- package/dist/ListBox.d.ts +67 -0
- package/dist/ListBox.d.ts.map +1 -0
- package/dist/ListBox.js +104 -0
- package/dist/ListBox.test.d.ts +2 -0
- package/dist/ListBox.test.d.ts.map +1 -0
- package/dist/MenuButton.cjs +1 -0
- package/dist/MenuButton.d.ts +33 -0
- package/dist/MenuButton.d.ts.map +1 -0
- package/dist/MenuButton.js +63 -0
- package/dist/Modal.cjs +1 -0
- package/dist/Modal.d.ts +27 -0
- package/dist/Modal.d.ts.map +1 -0
- package/dist/Modal.js +174 -0
- package/dist/Modal.test.d.ts +2 -0
- package/dist/Modal.test.d.ts.map +1 -0
- package/dist/NineSlice.cjs +1 -0
- package/dist/NineSlice.d.ts +40 -0
- package/dist/NineSlice.d.ts.map +1 -0
- package/dist/NineSlice.js +314 -0
- package/dist/NineSlice.props.test.d.ts +2 -0
- package/dist/NineSlice.props.test.d.ts.map +1 -0
- package/dist/NineSlice.test.d.ts +2 -0
- package/dist/NineSlice.test.d.ts.map +1 -0
- package/dist/NineSliceButton.cjs +1 -0
- package/dist/NineSliceButton.d.ts +94 -0
- package/dist/NineSliceButton.d.ts.map +1 -0
- package/dist/NineSliceButton.js +61 -0
- package/dist/NineSliceButton.test.d.ts +2 -0
- package/dist/NineSliceButton.test.d.ts.map +1 -0
- package/dist/NumberInput.cjs +1 -0
- package/dist/NumberInput.d.ts +90 -0
- package/dist/NumberInput.d.ts.map +1 -0
- package/dist/NumberInput.js +222 -0
- package/dist/NumberInput.test.d.ts +2 -0
- package/dist/NumberInput.test.d.ts.map +1 -0
- package/dist/PalettePicker.cjs +1 -0
- package/dist/PalettePicker.d.ts +49 -0
- package/dist/PalettePicker.d.ts.map +1 -0
- package/dist/PalettePicker.js +152 -0
- package/dist/PalettePicker.test.d.ts +2 -0
- package/dist/PalettePicker.test.d.ts.map +1 -0
- package/dist/Popover.cjs +1 -0
- package/dist/Popover.d.ts +95 -0
- package/dist/Popover.d.ts.map +1 -0
- package/dist/Popover.js +267 -0
- package/dist/Portal.cjs +1 -0
- package/dist/Portal.d.ts +30 -0
- package/dist/Portal.d.ts.map +1 -0
- package/dist/Portal.js +64 -0
- package/dist/Portal.test.d.ts +2 -0
- package/dist/Portal.test.d.ts.map +1 -0
- package/dist/ProgressBar.cjs +1 -0
- package/dist/ProgressBar.d.ts +61 -0
- package/dist/ProgressBar.d.ts.map +1 -0
- package/dist/ProgressBar.js +80 -0
- package/dist/ProgressBar.test.d.ts +2 -0
- package/dist/ProgressBar.test.d.ts.map +1 -0
- package/dist/ProgressView.cjs +1 -0
- package/dist/ProgressView.d.ts +37 -0
- package/dist/ProgressView.d.ts.map +1 -0
- package/dist/ProgressView.js +71 -0
- package/dist/RadioButton.cjs +1 -0
- package/dist/RadioButton.d.ts +21 -0
- package/dist/RadioButton.d.ts.map +1 -0
- package/dist/RadioButton.js +53 -0
- package/dist/RadioGroup.cjs +1 -0
- package/dist/RadioGroup.d.ts +26 -0
- package/dist/RadioGroup.d.ts.map +1 -0
- package/dist/RadioGroup.js +32 -0
- package/dist/RatingBar.cjs +1 -0
- package/dist/RatingBar.d.ts +24 -0
- package/dist/RatingBar.d.ts.map +1 -0
- package/dist/RatingBar.js +84 -0
- package/dist/ScrollSlider.cjs +1 -0
- package/dist/ScrollSlider.d.ts +48 -0
- package/dist/ScrollSlider.d.ts.map +1 -0
- package/dist/ScrollSlider.js +93 -0
- package/dist/ScrollView.cjs +1 -0
- package/dist/ScrollView.d.ts +121 -0
- package/dist/ScrollView.d.ts.map +1 -0
- package/dist/ScrollView.js +541 -0
- package/dist/ScrollView.test.d.ts +2 -0
- package/dist/ScrollView.test.d.ts.map +1 -0
- package/dist/SegmentedControl.cjs +1 -0
- package/dist/SegmentedControl.d.ts +50 -0
- package/dist/SegmentedControl.d.ts.map +1 -0
- package/dist/SegmentedControl.js +201 -0
- package/dist/SegmentedControl.test.d.ts +2 -0
- package/dist/SegmentedControl.test.d.ts.map +1 -0
- package/dist/Sidebar.cjs +1 -0
- package/dist/Sidebar.d.ts +36 -0
- package/dist/Sidebar.d.ts.map +1 -0
- package/dist/Sidebar.js +122 -0
- package/dist/Slider.cjs +1 -0
- package/dist/Slider.d.ts +80 -0
- package/dist/Slider.d.ts.map +1 -0
- package/dist/Slider.js +233 -0
- package/dist/Tabs.cjs +1 -0
- package/dist/Tabs.d.ts +23 -0
- package/dist/Tabs.d.ts.map +1 -0
- package/dist/Tabs.js +101 -0
- package/dist/TextInput.cjs +17 -0
- package/dist/TextInput.d.ts +82 -0
- package/dist/TextInput.d.ts.map +1 -0
- package/dist/TextInput.js +441 -0
- package/dist/Toast.cjs +1 -0
- package/dist/Toast.d.ts +66 -0
- package/dist/Toast.d.ts.map +1 -0
- package/dist/Toast.js +188 -0
- package/dist/Toast.test.d.ts +2 -0
- package/dist/Toast.test.d.ts.map +1 -0
- package/dist/Toggle.cjs +1 -0
- package/dist/Toggle.d.ts +14 -0
- package/dist/Toggle.d.ts.map +1 -0
- package/dist/Toggle.js +135 -0
- package/dist/Toolbar.cjs +1 -0
- package/dist/Toolbar.d.ts +129 -0
- package/dist/Toolbar.d.ts.map +1 -0
- package/dist/Toolbar.js +159 -0
- package/dist/Toolbar.test.d.ts +2 -0
- package/dist/Toolbar.test.d.ts.map +1 -0
- package/dist/TransformOriginView.cjs +1 -0
- package/dist/TransformOriginView.d.ts +8 -0
- package/dist/TransformOriginView.d.ts.map +1 -0
- package/dist/TransformOriginView.js +38 -0
- package/dist/WheelPicker.cjs +1 -0
- package/dist/WheelPicker.d.ts +58 -0
- package/dist/WheelPicker.d.ts.map +1 -0
- package/dist/WheelPicker.js +167 -0
- package/dist/WrapText.cjs +1 -0
- package/dist/WrapText.d.ts +83 -0
- package/dist/WrapText.d.ts.map +1 -0
- package/dist/WrapText.js +93 -0
- package/dist/WrapText.test.d.ts +2 -0
- package/dist/WrapText.test.d.ts.map +1 -0
- package/dist/contrast-slot-map.d.ts +33 -0
- package/dist/contrast-slot-map.d.ts.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/primitives/Image.cjs +1 -0
- package/dist/primitives/Image.d.ts +11 -0
- package/dist/primitives/Image.d.ts.map +1 -0
- package/dist/primitives/Image.js +7 -0
- package/dist/primitives/Sprite.cjs +1 -0
- package/dist/primitives/Sprite.d.ts +11 -0
- package/dist/primitives/Sprite.d.ts.map +1 -0
- package/dist/primitives/Sprite.js +7 -0
- package/dist/primitives/Text.cjs +1 -0
- package/dist/primitives/Text.d.ts +14 -0
- package/dist/primitives/Text.d.ts.map +1 -0
- package/dist/primitives/Text.js +15 -0
- package/dist/primitives/VectorDrawContent.cjs +1 -0
- package/dist/primitives/VectorDrawContent.d.ts +3 -0
- package/dist/primitives/VectorDrawContent.d.ts.map +1 -0
- package/dist/primitives/VectorDrawContent.js +7 -0
- package/dist/primitives/View.cjs +1 -0
- package/dist/primitives/View.d.ts +13 -0
- package/dist/primitives/View.d.ts.map +1 -0
- package/dist/primitives/View.js +7 -0
- package/dist/primitives/index.d.ts +13 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/primitives.test.d.ts +2 -0
- package/dist/primitives/primitives.test.d.ts.map +1 -0
- package/dist/primitives.cjs +1 -0
- package/dist/primitives.d.ts +2 -0
- package/dist/primitives.js +6 -0
- package/dist/theme-defaults.cjs +1 -0
- package/dist/theme-defaults.d.ts +12 -0
- package/dist/theme-defaults.d.ts.map +1 -0
- package/dist/theme-defaults.js +1288 -0
- package/dist/theme-defaults.test.d.ts +2 -0
- package/dist/theme-defaults.test.d.ts.map +1 -0
- package/dist/theme-types.cjs +0 -0
- package/dist/theme-types.d.ts +708 -0
- package/dist/theme-types.d.ts.map +1 -0
- package/dist/theme-types.js +0 -0
- package/dist/useOverlayPresence.cjs +1 -0
- package/dist/useOverlayPresence.d.ts +24 -0
- package/dist/useOverlayPresence.d.ts.map +1 -0
- package/dist/useOverlayPresence.js +19 -0
- package/package.json +83 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { View as e } from "./primitives/View.js";
|
|
2
|
+
import "./primitives.js";
|
|
3
|
+
import { NineSlice as t } from "./NineSlice.js";
|
|
4
|
+
import { applyEffect as n, createElement as r, resolveEffect as i, useEffect as a, useRef as o, useState as s } from "@number10/jsx-core";
|
|
5
|
+
import { jsx as c } from "@number10/jsx-core/jsx-runtime";
|
|
6
|
+
//#region src/NineSliceButton.tsx
|
|
7
|
+
function l(l) {
|
|
8
|
+
let { texture: u, frame: d, leftWidth: f, rightWidth: p, topHeight: m = 0, bottomHeight: h = 0, width: g, height: _, tint: v, onClick: y, disabled: b, children: x, alignItems: S = "center", justifyContent: C = "center", gap: w, padding: T, renderMode: E, theme: D, key: O, effect: k, effectConfig: A } = l, j = o(null), [M, N] = s(!1);
|
|
9
|
+
a(() => {
|
|
10
|
+
N(!0);
|
|
11
|
+
}, []);
|
|
12
|
+
let P = b ? void 0 : (e) => {
|
|
13
|
+
let t = i({
|
|
14
|
+
effect: k,
|
|
15
|
+
effectConfig: A
|
|
16
|
+
}, {});
|
|
17
|
+
n(j.current, t.effect, t.effectConfig), y?.();
|
|
18
|
+
}, F = P ? { onTouch: P } : {}, I = x != null && x !== !1;
|
|
19
|
+
return /* @__PURE__ */ r(e, {
|
|
20
|
+
ref: j,
|
|
21
|
+
direction: "stack",
|
|
22
|
+
width: g,
|
|
23
|
+
height: _,
|
|
24
|
+
visible: M,
|
|
25
|
+
enableGestures: !b,
|
|
26
|
+
...F,
|
|
27
|
+
key: O,
|
|
28
|
+
theme: D
|
|
29
|
+
}, I ? /* @__PURE__ */ c(t, {
|
|
30
|
+
texture: u,
|
|
31
|
+
frame: d,
|
|
32
|
+
leftWidth: f,
|
|
33
|
+
rightWidth: p,
|
|
34
|
+
topHeight: m,
|
|
35
|
+
bottomHeight: h,
|
|
36
|
+
width: g,
|
|
37
|
+
height: _,
|
|
38
|
+
tint: v,
|
|
39
|
+
renderMode: E,
|
|
40
|
+
alignItems: S,
|
|
41
|
+
justifyContent: C,
|
|
42
|
+
gap: w,
|
|
43
|
+
padding: T,
|
|
44
|
+
theme: D,
|
|
45
|
+
children: x
|
|
46
|
+
}) : /* @__PURE__ */ c(t, {
|
|
47
|
+
texture: u,
|
|
48
|
+
frame: d,
|
|
49
|
+
leftWidth: f,
|
|
50
|
+
rightWidth: p,
|
|
51
|
+
topHeight: m,
|
|
52
|
+
bottomHeight: h,
|
|
53
|
+
width: g,
|
|
54
|
+
height: _,
|
|
55
|
+
tint: v,
|
|
56
|
+
renderMode: E,
|
|
57
|
+
theme: D
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { l as NineSliceButton };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NineSliceButton.test.d.ts","sourceRoot":"","sources":["../src/NineSliceButton.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./primitives/Text.cjs`),t=require(`./primitives/VectorDrawContent.cjs`),n=require(`./primitives/View.cjs`);require(`./primitives.cjs`);const r=require(`./Button.cjs`);let i=require(`@number10/jsx-core`),a=require(`@number10/jsx-core/jsx-runtime`);var o={decrement:`-`,increment:`+`,value:`Value`};function s(e){return e===`decrement`?`left`:`right`}function c(e,t,n){let r=n/2,i=n*.32,a=n*.68,o=n*.3,s=n*.7;e.beginPath(),t===`left`?e.moveTo(a,o).lineTo(i,r).lineTo(a,s):t===`right`?e.moveTo(i,o).lineTo(a,r).lineTo(i,s):t===`up`?e.moveTo(i,s).lineTo(r,o).lineTo(a,s):e.moveTo(i,o).lineTo(r,s).lineTo(a,o),e.strokePath()}function l(e,t,n){let r=n/2,i=n*.3,a=n*.7;e.beginPath().moveTo(i,r).lineTo(a,r).strokePath(),t===`increment`&&e.beginPath().moveTo(r,i).lineTo(r,a).strokePath()}function u(e){let{variant:n=`sign`,action:r=`increment`,direction:i,size:o=24,color:u=16777215,activeColor:d=u,disabled:f=!1,framed:p=!1,backgroundAlpha:m=.12,borderAlpha:h=1,...g}=e,_=i??s(r);return(0,a.jsx)(t.VectorDrawContent,{...g,width:o,height:o,dependencies:[n,r,_,o,u,d,f,p,m,h],onDraw:e=>{let t=f?.45:1,i=Math.max(3,Math.round(o*.16)),a=Math.max(2,Math.round(o*.12)),s=f?u:d;e.clear(),p&&e.fillStyle(s,m*t).lineStyle(2,s,h*t).fillRoundedRect(i,i,o-i*2,o-i*2,o*.18).strokeRoundedRect(i,i,o-i*2,o-i*2,o*.18),e.lineStyle(a,s,t),n===`chevron`?c(e,_,o):l(e,r,o)}})}function d(e){return typeof e==`number`&&Number.isFinite(e)}function f(e,t){let n=d(e)?e:-1/0,r=d(t)?t:1/0;return{min:Math.min(n,r),max:Math.max(n,r)}}function p(e){if(!Number.isFinite(e)||Number.isInteger(e))return 0;let[,t=``]=e.toString().split(`.`);return t.length}function m(e=1,t){return d(t)&&t>=0?Math.floor(t):p(Math.abs(e))}function h(e,t={}){let{min:n,max:r}=f(t.min,t.max),i=Number.isFinite(n)?n:Number.isFinite(r)?r:0,a=d(e)?e:i,o=Math.max(n,Math.min(r,a)),s=10**m(t.step,t.precision);return Math.round(o*s)/s}function g(e,t,n={}){return h(e+(d(n.step)&&n.step>0?n.step:1)*t,n)}function _(t){let{value:s,defaultValue:c,onChange:l,min:u,max:d,step:f=1,precision:p,label:m,labelPosition:_,formatValue:ee,renderValue:te,labels:ne,decrementContent:re,incrementContent:ie,renderButtonContent:ae,disabled:v=!1,buttonPlacement:oe,buttonDirection:se,buttonVariant:ce,buttonSize:le,buttonTextStyle:ue,buttonIndicatorColor:de,buttonIndicatorActiveColor:fe,repeatOnHold:pe,holdDelay:me,repeatInterval:he,valueWidth:ge,controlHeight:_e,theme:y,...b}=t,x=(0,i.useTheme)(),ve=y?(0,i.mergeThemes)(x??{},y):x,{props:S,nestedTheme:C}=(0,i.resolveComponentTheme)({componentName:`NumberInput`,globalTheme:(0,i.getGlobalThemeDefaults)(),localTheme:ve,knownComponents:i.KNOWN_COMPONENTS}),w={...u===void 0?{}:{min:u},...d===void 0?{}:{max:d},step:f,...p===void 0?{}:{precision:p}},T=h(c??s??u??0,w),[E,D]=(0,i.useState)(T),O=(0,i.useRef)(T),k=(0,i.useRef)(null),A=s!==void 0,j=h(A?s:E,w);O.current=j;let M=()=>{k.current&&=(clearInterval(k.current),null)};(0,i.useEffect)(()=>{!A&&E!==j&&D(j)},[A,E,j]),(0,i.useEffect)(()=>()=>M(),[]);let N={...o,...S.labels??{},...ne??{}},P=_??S.labelPosition??`left`,F=oe??S.buttonPlacement??`split`,I=se??S.buttonDirection??`row`,ye=ce??S.buttonVariant??`secondary`,be=le??S.buttonSize??`small`,xe=ue??S.buttonTextStyle??{color:`#111827`,fontSize:`16px`},L=de??S.buttonIndicatorColor??16777215,Se=fe??S.buttonIndicatorActiveColor??L,Ce=pe??S.repeatOnHold??!0,we=me??S.holdDelay??350,Te=he??S.repeatInterval??90,R=ge??S.valueWidth??78,z=_e??S.controlHeight??34,Ee=S.labelStyle??{color:`#ffffff`,fontSize:`14px`},De=S.valueStyle??{color:`#ffffff`,fontSize:`14px`},B=S.buttonControlSize??z,V=ee?.(j)??`${j}`,H=m??N.value,Oe=P!==`none`&&H.length>0,U=g(j,-1,w),W=g(j,1,w),G=U!==j,K=W!==j,ke=te?.({value:j,displayText:V,...u===void 0?{}:{min:u},...d===void 0?{}:{max:d},step:f,disabled:v,canDecrement:G,canIncrement:K,valueWidth:R,controlHeight:z}),Ae=e=>{let t=h(e,w);t!==O.current&&(O.current=t,A||D(t),l?.(t))},q=e=>{Ae(g(O.current,e,w))},je=e=>{!Ce||v||(M(),q(e),k.current=setInterval(()=>{q(e)},Te))},Me=e=>{e.state===`end`&&M()},J=e=>{let t=e===-1,n=t?`decrement`:`increment`,i=t?G:K,o=t?re:ie,s=t?N.decrement:N.increment,c=t?U:W,l=v||!i,u=o??ae?.({action:n,disabled:l,value:j,nextValue:c,size:B,color:L,activeColor:Se});return(0,a.jsx)(r.Button,{label:u?void 0:s,width:B,height:B,padding:0,variant:ye,size:be,textStyle:xe,disabled:l,onClick:()=>q(e),onLongPress:()=>je(e),onTouchMove:Me,longPressDuration:we,children:u},t?`decrement`:`increment`)},Y=(0,a.jsxs)(n.View,{direction:I,alignItems:`center`,gap:S.buttonGap??S.controlGap??0,theme:C,children:[J(-1),J(1)]}),X=(0,a.jsx)(n.View,{width:R,height:z,alignItems:`center`,justifyContent:`center`,backgroundColor:S.valueBackgroundColor??0,backgroundAlpha:S.valueBackgroundAlpha??.12,borderColor:S.valueBorderColor??S.borderColor,borderWidth:S.valueBorderWidth??1,cornerRadius:S.valueCornerRadius??S.cornerRadius??6,padding:S.valuePadding??{left:8,right:8,top:4,bottom:4},theme:C,children:ke??(0,a.jsx)(e.Text,{text:V,style:De})}),Z=F===`left`?(0,a.jsxs)(n.View,{direction:`row`,alignItems:`center`,gap:S.controlGap??0,theme:C,children:[Y,X]}):F===`right`?(0,a.jsxs)(n.View,{direction:`row`,alignItems:`center`,gap:S.controlGap??0,theme:C,children:[X,Y]}):(0,a.jsxs)(n.View,{direction:`row`,alignItems:`center`,gap:S.controlGap??0,theme:C,children:[J(-1),X,J(1)]}),Q=Oe?(0,a.jsx)(e.Text,{text:H,style:Ee}):null,Ne=P===`top`||P===`bottom`,$=v?S.disabledAlpha??.5:b.alpha,Pe=P===`right`||P===`bottom`?(0,a.jsxs)(a.Fragment,{children:[Z,Q]}):(0,a.jsxs)(a.Fragment,{children:[Q,Z]});return(0,a.jsx)(n.View,{...b,direction:Ne?`column`:`row`,alignItems:`center`,gap:S.gap??10,padding:S.padding??0,...$===void 0?{}:{alpha:$},theme:C,children:Pe})}exports.NumberInput=_,exports.NumberInputIndicator=u,exports.getNextNumberInputValue=g,exports.getNumberInputPrecision=m,exports.normalizeNumberInputValue=h;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ChildrenType, PortableTextStyle, VectorDrawContentPrimitivePropsComplete, ViewPrimitivePropsComplete, VNodeLike } from '@number10/jsx-core';
|
|
2
|
+
import { ButtonSize, ButtonVariant } from './Button';
|
|
3
|
+
import { PortableComponentPartialTheme } from './theme-types';
|
|
4
|
+
export interface NumberInputLabels {
|
|
5
|
+
decrement?: string;
|
|
6
|
+
increment?: string;
|
|
7
|
+
value?: string;
|
|
8
|
+
}
|
|
9
|
+
export type NumberInputLabelPosition = 'left' | 'right' | 'top' | 'bottom' | 'none';
|
|
10
|
+
export type NumberInputButtonPlacement = 'split' | 'left' | 'right';
|
|
11
|
+
export type NumberInputButtonDirection = 'row' | 'column';
|
|
12
|
+
export type NumberInputButtonAction = 'decrement' | 'increment';
|
|
13
|
+
export type NumberInputIndicatorDirection = 'left' | 'right' | 'up' | 'down';
|
|
14
|
+
export type NumberInputIndicatorVariant = 'sign' | 'chevron';
|
|
15
|
+
export interface NumberInputButtonRenderProps {
|
|
16
|
+
action: NumberInputButtonAction;
|
|
17
|
+
disabled: boolean;
|
|
18
|
+
value: number;
|
|
19
|
+
nextValue: number;
|
|
20
|
+
size: number;
|
|
21
|
+
color: number;
|
|
22
|
+
activeColor: number;
|
|
23
|
+
}
|
|
24
|
+
export interface NumberInputValueRenderProps {
|
|
25
|
+
value: number;
|
|
26
|
+
displayText: string;
|
|
27
|
+
min?: number;
|
|
28
|
+
max?: number;
|
|
29
|
+
step: number;
|
|
30
|
+
disabled: boolean;
|
|
31
|
+
canDecrement: boolean;
|
|
32
|
+
canIncrement: boolean;
|
|
33
|
+
valueWidth: number;
|
|
34
|
+
controlHeight: number;
|
|
35
|
+
}
|
|
36
|
+
export interface NumberInputIndicatorProps extends Omit<VectorDrawContentPrimitivePropsComplete, 'children' | 'dependencies' | 'direction' | 'onDraw'> {
|
|
37
|
+
variant?: NumberInputIndicatorVariant;
|
|
38
|
+
action?: NumberInputButtonAction;
|
|
39
|
+
direction?: NumberInputIndicatorDirection;
|
|
40
|
+
size?: number;
|
|
41
|
+
color?: number;
|
|
42
|
+
activeColor?: number;
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
framed?: boolean;
|
|
45
|
+
backgroundAlpha?: number;
|
|
46
|
+
borderAlpha?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface NumberInputProps extends Omit<ViewPrimitivePropsComplete, 'children'> {
|
|
49
|
+
value?: number;
|
|
50
|
+
defaultValue?: number;
|
|
51
|
+
onChange?: (value: number) => void;
|
|
52
|
+
min?: number;
|
|
53
|
+
max?: number;
|
|
54
|
+
step?: number;
|
|
55
|
+
precision?: number;
|
|
56
|
+
label?: string;
|
|
57
|
+
labelPosition?: NumberInputLabelPosition;
|
|
58
|
+
formatValue?: (value: number) => string;
|
|
59
|
+
renderValue?: (props: NumberInputValueRenderProps) => ChildrenType;
|
|
60
|
+
labels?: NumberInputLabels;
|
|
61
|
+
decrementContent?: ChildrenType;
|
|
62
|
+
incrementContent?: ChildrenType;
|
|
63
|
+
renderButtonContent?: (props: NumberInputButtonRenderProps) => ChildrenType;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
buttonPlacement?: NumberInputButtonPlacement;
|
|
66
|
+
buttonDirection?: NumberInputButtonDirection;
|
|
67
|
+
buttonVariant?: ButtonVariant;
|
|
68
|
+
buttonSize?: ButtonSize;
|
|
69
|
+
buttonTextStyle?: PortableTextStyle;
|
|
70
|
+
buttonIndicatorColor?: number;
|
|
71
|
+
buttonIndicatorActiveColor?: number;
|
|
72
|
+
repeatOnHold?: boolean;
|
|
73
|
+
holdDelay?: number;
|
|
74
|
+
repeatInterval?: number;
|
|
75
|
+
valueWidth?: number;
|
|
76
|
+
controlHeight?: number;
|
|
77
|
+
theme?: PortableComponentPartialTheme<'NumberInput'>;
|
|
78
|
+
}
|
|
79
|
+
export interface NumberInputValueOptions {
|
|
80
|
+
min?: number;
|
|
81
|
+
max?: number;
|
|
82
|
+
step?: number;
|
|
83
|
+
precision?: number;
|
|
84
|
+
}
|
|
85
|
+
export declare function NumberInputIndicator(props: NumberInputIndicatorProps): VNodeLike;
|
|
86
|
+
export declare function getNumberInputPrecision(step?: number, precision?: number): number;
|
|
87
|
+
export declare function normalizeNumberInputValue(value: number, options?: NumberInputValueOptions): number;
|
|
88
|
+
export declare function getNextNumberInputValue(currentValue: number, direction: -1 | 1, options?: NumberInputValueOptions): number;
|
|
89
|
+
export declare function NumberInput(props: NumberInputProps): VNodeLike;
|
|
90
|
+
//# sourceMappingURL=NumberInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberInput.d.ts","sourceRoot":"","sources":["../src/NumberInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Text as e } from "./primitives/Text.js";
|
|
2
|
+
import { VectorDrawContent as t } from "./primitives/VectorDrawContent.js";
|
|
3
|
+
import { View as n } from "./primitives/View.js";
|
|
4
|
+
import "./primitives.js";
|
|
5
|
+
import { Button as r } from "./Button.js";
|
|
6
|
+
import { KNOWN_COMPONENTS as i, getGlobalThemeDefaults as a, mergeThemes as o, resolveComponentTheme as s, useEffect as c, useRef as l, useState as u, useTheme as d } from "@number10/jsx-core";
|
|
7
|
+
import { Fragment as f, jsx as p, jsxs as m } from "@number10/jsx-core/jsx-runtime";
|
|
8
|
+
//#region src/NumberInput.tsx
|
|
9
|
+
var ee = {
|
|
10
|
+
decrement: "-",
|
|
11
|
+
increment: "+",
|
|
12
|
+
value: "Value"
|
|
13
|
+
};
|
|
14
|
+
function h(e) {
|
|
15
|
+
return e === "decrement" ? "left" : "right";
|
|
16
|
+
}
|
|
17
|
+
function g(e, t, n) {
|
|
18
|
+
let r = n / 2, i = n * .32, a = n * .68, o = n * .3, s = n * .7;
|
|
19
|
+
e.beginPath(), t === "left" ? e.moveTo(a, o).lineTo(i, r).lineTo(a, s) : t === "right" ? e.moveTo(i, o).lineTo(a, r).lineTo(i, s) : t === "up" ? e.moveTo(i, s).lineTo(r, o).lineTo(a, s) : e.moveTo(i, o).lineTo(r, s).lineTo(a, o), e.strokePath();
|
|
20
|
+
}
|
|
21
|
+
function _(e, t, n) {
|
|
22
|
+
let r = n / 2, i = n * .3, a = n * .7;
|
|
23
|
+
e.beginPath().moveTo(i, r).lineTo(a, r).strokePath(), t === "increment" && e.beginPath().moveTo(r, i).lineTo(r, a).strokePath();
|
|
24
|
+
}
|
|
25
|
+
function v(e) {
|
|
26
|
+
let { variant: n = "sign", action: r = "increment", direction: i, size: a = 24, color: o = 16777215, activeColor: s = o, disabled: c = !1, framed: l = !1, backgroundAlpha: u = .12, borderAlpha: d = 1, ...f } = e, m = i ?? h(r);
|
|
27
|
+
return /* @__PURE__ */ p(t, {
|
|
28
|
+
...f,
|
|
29
|
+
width: a,
|
|
30
|
+
height: a,
|
|
31
|
+
dependencies: [
|
|
32
|
+
n,
|
|
33
|
+
r,
|
|
34
|
+
m,
|
|
35
|
+
a,
|
|
36
|
+
o,
|
|
37
|
+
s,
|
|
38
|
+
c,
|
|
39
|
+
l,
|
|
40
|
+
u,
|
|
41
|
+
d
|
|
42
|
+
],
|
|
43
|
+
onDraw: (e) => {
|
|
44
|
+
let t = c ? .45 : 1, i = Math.max(3, Math.round(a * .16)), f = Math.max(2, Math.round(a * .12)), p = c ? o : s;
|
|
45
|
+
e.clear(), l && e.fillStyle(p, u * t).lineStyle(2, p, d * t).fillRoundedRect(i, i, a - i * 2, a - i * 2, a * .18).strokeRoundedRect(i, i, a - i * 2, a - i * 2, a * .18), e.lineStyle(f, p, t), n === "chevron" ? g(e, m, a) : _(e, r, a);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function y(e) {
|
|
50
|
+
return typeof e == "number" && Number.isFinite(e);
|
|
51
|
+
}
|
|
52
|
+
function b(e, t) {
|
|
53
|
+
let n = y(e) ? e : -Infinity, r = y(t) ? t : Infinity;
|
|
54
|
+
return {
|
|
55
|
+
min: Math.min(n, r),
|
|
56
|
+
max: Math.max(n, r)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function x(e) {
|
|
60
|
+
if (!Number.isFinite(e) || Number.isInteger(e)) return 0;
|
|
61
|
+
let [, t = ""] = e.toString().split(".");
|
|
62
|
+
return t.length;
|
|
63
|
+
}
|
|
64
|
+
function S(e = 1, t) {
|
|
65
|
+
return y(t) && t >= 0 ? Math.floor(t) : x(Math.abs(e));
|
|
66
|
+
}
|
|
67
|
+
function C(e, t = {}) {
|
|
68
|
+
let { min: n, max: r } = b(t.min, t.max), i = Number.isFinite(n) ? n : Number.isFinite(r) ? r : 0, a = y(e) ? e : i, o = Math.max(n, Math.min(r, a)), s = 10 ** S(t.step, t.precision);
|
|
69
|
+
return Math.round(o * s) / s;
|
|
70
|
+
}
|
|
71
|
+
function w(e, t, n = {}) {
|
|
72
|
+
return C(e + (y(n.step) && n.step > 0 ? n.step : 1) * t, n);
|
|
73
|
+
}
|
|
74
|
+
function T(t) {
|
|
75
|
+
let { value: h, defaultValue: g, onChange: _, min: v, max: y, step: b = 1, precision: x, label: S, labelPosition: T, formatValue: te, renderValue: ne, labels: re, decrementContent: ie, incrementContent: ae, renderButtonContent: oe, disabled: E = !1, buttonPlacement: se, buttonDirection: ce, buttonVariant: le, buttonSize: ue, buttonTextStyle: de, buttonIndicatorColor: fe, buttonIndicatorActiveColor: pe, repeatOnHold: me, holdDelay: he, repeatInterval: ge, valueWidth: _e, controlHeight: ve, theme: D, ...O } = t, k = d(), ye = D ? o(k ?? {}, D) : k, { props: A, nestedTheme: j } = s({
|
|
76
|
+
componentName: "NumberInput",
|
|
77
|
+
globalTheme: a(),
|
|
78
|
+
localTheme: ye,
|
|
79
|
+
knownComponents: i
|
|
80
|
+
}), M = {
|
|
81
|
+
...v === void 0 ? {} : { min: v },
|
|
82
|
+
...y === void 0 ? {} : { max: y },
|
|
83
|
+
step: b,
|
|
84
|
+
...x === void 0 ? {} : { precision: x }
|
|
85
|
+
}, N = C(g ?? h ?? v ?? 0, M), [P, F] = u(N), I = l(N), L = l(null), R = h !== void 0, z = C(R ? h : P, M);
|
|
86
|
+
I.current = z;
|
|
87
|
+
let B = () => {
|
|
88
|
+
L.current &&= (clearInterval(L.current), null);
|
|
89
|
+
};
|
|
90
|
+
c(() => {
|
|
91
|
+
!R && P !== z && F(z);
|
|
92
|
+
}, [
|
|
93
|
+
R,
|
|
94
|
+
P,
|
|
95
|
+
z
|
|
96
|
+
]), c(() => () => B(), []);
|
|
97
|
+
let V = {
|
|
98
|
+
...ee,
|
|
99
|
+
...A.labels ?? {},
|
|
100
|
+
...re ?? {}
|
|
101
|
+
}, H = T ?? A.labelPosition ?? "left", U = se ?? A.buttonPlacement ?? "split", be = ce ?? A.buttonDirection ?? "row", xe = le ?? A.buttonVariant ?? "secondary", Se = ue ?? A.buttonSize ?? "small", Ce = de ?? A.buttonTextStyle ?? {
|
|
102
|
+
color: "#111827",
|
|
103
|
+
fontSize: "16px"
|
|
104
|
+
}, W = fe ?? A.buttonIndicatorColor ?? 16777215, we = pe ?? A.buttonIndicatorActiveColor ?? W, Te = me ?? A.repeatOnHold ?? !0, Ee = he ?? A.holdDelay ?? 350, De = ge ?? A.repeatInterval ?? 90, G = _e ?? A.valueWidth ?? 78, K = ve ?? A.controlHeight ?? 34, Oe = A.labelStyle ?? {
|
|
105
|
+
color: "#ffffff",
|
|
106
|
+
fontSize: "14px"
|
|
107
|
+
}, ke = A.valueStyle ?? {
|
|
108
|
+
color: "#ffffff",
|
|
109
|
+
fontSize: "14px"
|
|
110
|
+
}, q = A.buttonControlSize ?? K, J = te?.(z) ?? `${z}`, Ae = S ?? V.value, je = H !== "none" && Ae.length > 0, Me = w(z, -1, M), Ne = w(z, 1, M), Pe = Me !== z, Y = Ne !== z, Fe = ne?.({
|
|
111
|
+
value: z,
|
|
112
|
+
displayText: J,
|
|
113
|
+
...v === void 0 ? {} : { min: v },
|
|
114
|
+
...y === void 0 ? {} : { max: y },
|
|
115
|
+
step: b,
|
|
116
|
+
disabled: E,
|
|
117
|
+
canDecrement: Pe,
|
|
118
|
+
canIncrement: Y,
|
|
119
|
+
valueWidth: G,
|
|
120
|
+
controlHeight: K
|
|
121
|
+
}), Ie = (e) => {
|
|
122
|
+
let t = C(e, M);
|
|
123
|
+
t !== I.current && (I.current = t, R || F(t), _?.(t));
|
|
124
|
+
}, X = (e) => {
|
|
125
|
+
Ie(w(I.current, e, M));
|
|
126
|
+
}, Le = (e) => {
|
|
127
|
+
!Te || E || (B(), X(e), L.current = setInterval(() => {
|
|
128
|
+
X(e);
|
|
129
|
+
}, De));
|
|
130
|
+
}, Re = (e) => {
|
|
131
|
+
e.state === "end" && B();
|
|
132
|
+
}, Z = (e) => {
|
|
133
|
+
let t = e === -1, n = t ? "decrement" : "increment", i = t ? Pe : Y, a = t ? ie : ae, o = t ? V.decrement : V.increment, s = t ? Me : Ne, c = E || !i, l = a ?? oe?.({
|
|
134
|
+
action: n,
|
|
135
|
+
disabled: c,
|
|
136
|
+
value: z,
|
|
137
|
+
nextValue: s,
|
|
138
|
+
size: q,
|
|
139
|
+
color: W,
|
|
140
|
+
activeColor: we
|
|
141
|
+
});
|
|
142
|
+
return /* @__PURE__ */ p(r, {
|
|
143
|
+
label: l ? void 0 : o,
|
|
144
|
+
width: q,
|
|
145
|
+
height: q,
|
|
146
|
+
padding: 0,
|
|
147
|
+
variant: xe,
|
|
148
|
+
size: Se,
|
|
149
|
+
textStyle: Ce,
|
|
150
|
+
disabled: c,
|
|
151
|
+
onClick: () => X(e),
|
|
152
|
+
onLongPress: () => Le(e),
|
|
153
|
+
onTouchMove: Re,
|
|
154
|
+
longPressDuration: Ee,
|
|
155
|
+
children: l
|
|
156
|
+
}, t ? "decrement" : "increment");
|
|
157
|
+
}, ze = /* @__PURE__ */ m(n, {
|
|
158
|
+
direction: be,
|
|
159
|
+
alignItems: "center",
|
|
160
|
+
gap: A.buttonGap ?? A.controlGap ?? 0,
|
|
161
|
+
theme: j,
|
|
162
|
+
children: [Z(-1), Z(1)]
|
|
163
|
+
}), Q = /* @__PURE__ */ p(n, {
|
|
164
|
+
width: G,
|
|
165
|
+
height: K,
|
|
166
|
+
alignItems: "center",
|
|
167
|
+
justifyContent: "center",
|
|
168
|
+
backgroundColor: A.valueBackgroundColor ?? 0,
|
|
169
|
+
backgroundAlpha: A.valueBackgroundAlpha ?? .12,
|
|
170
|
+
borderColor: A.valueBorderColor ?? A.borderColor,
|
|
171
|
+
borderWidth: A.valueBorderWidth ?? 1,
|
|
172
|
+
cornerRadius: A.valueCornerRadius ?? A.cornerRadius ?? 6,
|
|
173
|
+
padding: A.valuePadding ?? {
|
|
174
|
+
left: 8,
|
|
175
|
+
right: 8,
|
|
176
|
+
top: 4,
|
|
177
|
+
bottom: 4
|
|
178
|
+
},
|
|
179
|
+
theme: j,
|
|
180
|
+
children: Fe ?? /* @__PURE__ */ p(e, {
|
|
181
|
+
text: J,
|
|
182
|
+
style: ke
|
|
183
|
+
})
|
|
184
|
+
}), Be = U === "left" ? /* @__PURE__ */ m(n, {
|
|
185
|
+
direction: "row",
|
|
186
|
+
alignItems: "center",
|
|
187
|
+
gap: A.controlGap ?? 0,
|
|
188
|
+
theme: j,
|
|
189
|
+
children: [ze, Q]
|
|
190
|
+
}) : U === "right" ? /* @__PURE__ */ m(n, {
|
|
191
|
+
direction: "row",
|
|
192
|
+
alignItems: "center",
|
|
193
|
+
gap: A.controlGap ?? 0,
|
|
194
|
+
theme: j,
|
|
195
|
+
children: [Q, ze]
|
|
196
|
+
}) : /* @__PURE__ */ m(n, {
|
|
197
|
+
direction: "row",
|
|
198
|
+
alignItems: "center",
|
|
199
|
+
gap: A.controlGap ?? 0,
|
|
200
|
+
theme: j,
|
|
201
|
+
children: [
|
|
202
|
+
Z(-1),
|
|
203
|
+
Q,
|
|
204
|
+
Z(1)
|
|
205
|
+
]
|
|
206
|
+
}), Ve = je ? /* @__PURE__ */ p(e, {
|
|
207
|
+
text: Ae,
|
|
208
|
+
style: Oe
|
|
209
|
+
}) : null, He = H === "top" || H === "bottom", $ = E ? A.disabledAlpha ?? .5 : O.alpha, Ue = H === "right" || H === "bottom" ? /* @__PURE__ */ m(f, { children: [Be, Ve] }) : /* @__PURE__ */ m(f, { children: [Ve, Be] });
|
|
210
|
+
return /* @__PURE__ */ p(n, {
|
|
211
|
+
...O,
|
|
212
|
+
direction: He ? "column" : "row",
|
|
213
|
+
alignItems: "center",
|
|
214
|
+
gap: A.gap ?? 10,
|
|
215
|
+
padding: A.padding ?? 0,
|
|
216
|
+
...$ === void 0 ? {} : { alpha: $ },
|
|
217
|
+
theme: j,
|
|
218
|
+
children: Ue
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
//#endregion
|
|
222
|
+
export { T as NumberInput, v as NumberInputIndicator, w as getNextNumberInputValue, S as getNumberInputPrecision, C as normalizeNumberInputValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberInput.test.d.ts","sourceRoot":"","sources":["../src/NumberInput.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./primitives/Text.cjs`),t=require(`./primitives/VectorDrawContent.cjs`),n=require(`./primitives/View.cjs`);require(`./primitives.cjs`);let r=require(`@number10/jsx-core`),i=require(`@number10/jsx-core/jsx-runtime`);var a={title:`Palette`,empty:`No colors`};function o(e){let t=typeof e==`number`?{value:e}:e,n=(0,r.normalizeColorNumber)(t.value);return{...t,value:n,hex:(0,r.numberToHex)(n).toUpperCase()}}function s(e){return e.map(o)}function c(e,t,n){if(t!==void 0){let n=(0,r.normalizeColorNumber)(t);return e.some(e=>e.value===n)?n:void 0}if(n!==void 0){let t=(0,r.normalizeColorNumber)(n),i=e.find(e=>e.value===t);if(i)return i.value}return e.find(e=>!e.disabled)?.value??e[0]?.value}function l(e,t){let n=Math.max(1,Math.floor(t)),r=[];for(let t=0;t<e.length;t+=n)r.push(e.slice(t,t+n));return r}function u(e,t=16777215){return(0,r.ensureContrast)(t,e,4.5)}function d(e,t){return!t&&!e.disabled}function f(e,t,n){e.clear().lineStyle(Math.max(2,Math.round(t*.09)),n,1).beginPath().moveTo(t*.25,t*.52).lineTo(t*.43,t*.7).lineTo(t*.77,t*.3).strokePath()}function p(o){let{colors:p,value:m,defaultValue:h,onChange:g,columns:_,swatchSize:v,showTitle:y,showHex:b,labels:x,disabled:S=!1,renderSwatch:C,theme:w,alpha:T,...E}=o,D=(0,r.useTheme)(),O=w?(0,r.mergeThemes)(D??{},w):D,{props:k,nestedTheme:A}=(0,r.resolveComponentTheme)({componentName:`PalettePicker`,globalTheme:(0,r.getGlobalThemeDefaults)(),localTheme:O,knownComponents:r.KNOWN_COMPONENTS}),j=s(p),M=m!==void 0,[N,P]=(0,r.useState)(c(j,m,h)),F=M?c(j,m):c(j,N);(0,r.useEffect)(()=>{!M&&N!==F&&P(F)},[M,N,F]);let I={...a,...k.labels??{},...x??{}},L=Math.max(1,Math.floor(_??k.columns??6)),R=v??k.swatchSize??28,z=y??k.showTitle??!0,B=b??k.showHex??!1,V=k.swatchGap??8,H=k.rowGap??V,U=k.itemWidth??(B?Math.max(56,R):R),W=k.titleStyle??{color:`#ffffff`,fontSize:`14px`,fontStyle:`bold`},G=k.emptyStyle??{color:`#9fb3c8`,fontSize:`13px`},K=k.hexStyle??{color:`#9fb3c8`,fontSize:`11px`},q=S?k.disabledAlpha??.5:T,J=l(j,L),Y=e=>{d(e,S)&&(M||P(e.value),g?.(e.value,e))},X=e=>(0,i.jsx)(n.View,{width:e.size,height:e.size,backgroundColor:e.color,borderColor:e.selected?e.selectedBorderColor:k.swatchBorderColor,borderWidth:e.selected?k.swatchSelectedBorderWidth??3:k.swatchBorderWidth??1,cornerRadius:k.swatchCornerRadius??5,alignItems:`center`,justifyContent:`center`,alpha:e.disabled?k.swatchDisabledAlpha??.45:1,theme:A,children:e.selected?(0,i.jsx)(t.VectorDrawContent,{width:e.size,height:e.size,dependencies:[e.size,e.checkColor],onDraw:t=>f(t,e.size,e.checkColor)}):null}),Z=(t,a)=>{let o=F===t.value,s=S||!!t.disabled,c=d(t,S),l=(0,r.ensureContrast)(k.swatchSelectedBorderColor??16777215,t.value,3),f=u(t.value,k.selectedCheckColor??16777215),p={option:t,color:t.value,hex:t.hex,selected:o,disabled:s,index:a,size:R,selectedBorderColor:l,checkColor:f},m=C?.(p)??X(p),h=I.formatHex?.(t.value)??t.hex;return(0,i.jsxs)(n.View,{width:U,alignItems:`center`,gap:4,enableGestures:c,...c?{onTouch:()=>Y(t)}:{},theme:A,children:[m,B?(0,i.jsx)(e.Text,{text:h,style:K}):null]},`${t.value}-${a}`)};return(0,i.jsxs)(n.View,{...E,direction:`column`,gap:k.gap??10,padding:k.padding??0,...k.backgroundColor===void 0?{}:{backgroundColor:k.backgroundColor},...k.backgroundAlpha===void 0?{}:{backgroundAlpha:k.backgroundAlpha},...k.borderColor===void 0?{}:{borderColor:k.borderColor},...k.borderWidth===void 0?{}:{borderWidth:k.borderWidth},...k.cornerRadius===void 0?{}:{cornerRadius:k.cornerRadius},...q===void 0?{}:{alpha:q},theme:A,children:[z?(0,i.jsx)(e.Text,{text:I.title,style:W}):null,j.length===0?(0,i.jsx)(e.Text,{text:I.empty,style:G}):(0,i.jsx)(n.View,{direction:`column`,gap:H,theme:A,children:J.map((e,t)=>(0,i.jsx)(n.View,{direction:`row`,gap:V,theme:A,children:e.map((e,n)=>Z(e,t*L+n))},`row-${t}`))})]})}exports.PalettePicker=p,exports.chunkPalettePickerColors=l,exports.getPalettePickerContrastColor=u,exports.normalizePalettePickerColor=o,exports.normalizePalettePickerColors=s,exports.resolvePalettePickerValue=c;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ChildrenType, ViewPrimitivePropsComplete, VNodeLike } from '@number10/jsx-core';
|
|
2
|
+
import { PortableComponentPartialTheme } from './theme-types';
|
|
3
|
+
export type PalettePickerColor = number | PalettePickerOption;
|
|
4
|
+
export interface PalettePickerLabels {
|
|
5
|
+
title?: string;
|
|
6
|
+
empty?: string;
|
|
7
|
+
formatHex?: (color: number) => string;
|
|
8
|
+
}
|
|
9
|
+
export interface PalettePickerOption {
|
|
10
|
+
value: number;
|
|
11
|
+
label?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface NormalizedPalettePickerOption extends PalettePickerOption {
|
|
15
|
+
value: number;
|
|
16
|
+
hex: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PalettePickerSwatchRenderProps {
|
|
19
|
+
option: NormalizedPalettePickerOption;
|
|
20
|
+
color: number;
|
|
21
|
+
hex: string;
|
|
22
|
+
selected: boolean;
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
index: number;
|
|
25
|
+
size: number;
|
|
26
|
+
selectedBorderColor: number;
|
|
27
|
+
checkColor: number;
|
|
28
|
+
}
|
|
29
|
+
export interface PalettePickerProps extends Omit<ViewPrimitivePropsComplete, 'children'> {
|
|
30
|
+
colors: PalettePickerColor[];
|
|
31
|
+
value?: number;
|
|
32
|
+
defaultValue?: number;
|
|
33
|
+
onChange?: (color: number, option: NormalizedPalettePickerOption) => void;
|
|
34
|
+
columns?: number;
|
|
35
|
+
swatchSize?: number;
|
|
36
|
+
showTitle?: boolean;
|
|
37
|
+
showHex?: boolean;
|
|
38
|
+
labels?: PalettePickerLabels;
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
renderSwatch?: (props: PalettePickerSwatchRenderProps) => ChildrenType;
|
|
41
|
+
theme?: PortableComponentPartialTheme<'PalettePicker'>;
|
|
42
|
+
}
|
|
43
|
+
export declare function normalizePalettePickerColor(color: PalettePickerColor): NormalizedPalettePickerOption;
|
|
44
|
+
export declare function normalizePalettePickerColors(colors: PalettePickerColor[]): NormalizedPalettePickerOption[];
|
|
45
|
+
export declare function resolvePalettePickerValue(colors: NormalizedPalettePickerOption[], value?: number, defaultValue?: number): number | undefined;
|
|
46
|
+
export declare function chunkPalettePickerColors<T>(colors: T[], columns: number): T[][];
|
|
47
|
+
export declare function getPalettePickerContrastColor(color: number, preferred?: number): number;
|
|
48
|
+
export declare function PalettePicker(props: PalettePickerProps): VNodeLike;
|
|
49
|
+
//# sourceMappingURL=PalettePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PalettePicker.d.ts","sourceRoot":"","sources":["../src/PalettePicker.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,0BAA0B,EAC1B,SAAS,EACV,MAAM,oBAAoB,CAAA;AAc3B,OAAO,KAAK,EAAsB,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAEtF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAE7D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,6BAA8B,SAAQ,mBAAmB;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,6BAA6B,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,0BAA0B,EAAE,UAAU,CAAC;IACtF,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,YAAY,CAAA;IACtE,KAAK,CAAC,EAAE,6BAA6B,CAAC,eAAe,CAAC,CAAA;CACvD;AAOD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,GACxB,6BAA6B,CAS/B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kBAAkB,EAAE,GAC3B,6BAA6B,EAAE,CAEjC;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,6BAA6B,EAAE,EACvC,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAS/E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAW,GAAG,MAAM,CAEzF;AAiBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAiLlE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Text as e } from "./primitives/Text.js";
|
|
2
|
+
import { VectorDrawContent as t } from "./primitives/VectorDrawContent.js";
|
|
3
|
+
import { View as n } from "./primitives/View.js";
|
|
4
|
+
import "./primitives.js";
|
|
5
|
+
import { KNOWN_COMPONENTS as r, ensureContrast as i, getGlobalThemeDefaults as a, mergeThemes as o, normalizeColorNumber as s, numberToHex as c, resolveComponentTheme as l, useEffect as u, useState as d, useTheme as f } from "@number10/jsx-core";
|
|
6
|
+
import { jsx as p, jsxs as m } from "@number10/jsx-core/jsx-runtime";
|
|
7
|
+
//#region src/PalettePicker.tsx
|
|
8
|
+
var h = {
|
|
9
|
+
title: "Palette",
|
|
10
|
+
empty: "No colors"
|
|
11
|
+
};
|
|
12
|
+
function g(e) {
|
|
13
|
+
let t = typeof e == "number" ? { value: e } : e, n = s(t.value);
|
|
14
|
+
return {
|
|
15
|
+
...t,
|
|
16
|
+
value: n,
|
|
17
|
+
hex: c(n).toUpperCase()
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function _(e) {
|
|
21
|
+
return e.map(g);
|
|
22
|
+
}
|
|
23
|
+
function v(e, t, n) {
|
|
24
|
+
if (t !== void 0) {
|
|
25
|
+
let n = s(t);
|
|
26
|
+
return e.some((e) => e.value === n) ? n : void 0;
|
|
27
|
+
}
|
|
28
|
+
if (n !== void 0) {
|
|
29
|
+
let t = s(n), r = e.find((e) => e.value === t);
|
|
30
|
+
if (r) return r.value;
|
|
31
|
+
}
|
|
32
|
+
return e.find((e) => !e.disabled)?.value ?? e[0]?.value;
|
|
33
|
+
}
|
|
34
|
+
function y(e, t) {
|
|
35
|
+
let n = Math.max(1, Math.floor(t)), r = [];
|
|
36
|
+
for (let t = 0; t < e.length; t += n) r.push(e.slice(t, t + n));
|
|
37
|
+
return r;
|
|
38
|
+
}
|
|
39
|
+
function b(e, t = 16777215) {
|
|
40
|
+
return i(t, e, 4.5);
|
|
41
|
+
}
|
|
42
|
+
function x(e, t) {
|
|
43
|
+
return !t && !e.disabled;
|
|
44
|
+
}
|
|
45
|
+
function S(e, t, n) {
|
|
46
|
+
e.clear().lineStyle(Math.max(2, Math.round(t * .09)), n, 1).beginPath().moveTo(t * .25, t * .52).lineTo(t * .43, t * .7).lineTo(t * .77, t * .3).strokePath();
|
|
47
|
+
}
|
|
48
|
+
function C(s) {
|
|
49
|
+
let { colors: c, value: g, defaultValue: C, onChange: w, columns: T, swatchSize: ee, showTitle: E, showHex: D, labels: O, disabled: k = !1, renderSwatch: A, theme: j, alpha: M, ...N } = s, P = f(), F = j ? o(P ?? {}, j) : P, { props: I, nestedTheme: L } = l({
|
|
50
|
+
componentName: "PalettePicker",
|
|
51
|
+
globalTheme: a(),
|
|
52
|
+
localTheme: F,
|
|
53
|
+
knownComponents: r
|
|
54
|
+
}), R = _(c), z = g !== void 0, [B, V] = d(v(R, g, C)), H = z ? v(R, g) : v(R, B);
|
|
55
|
+
u(() => {
|
|
56
|
+
!z && B !== H && V(H);
|
|
57
|
+
}, [
|
|
58
|
+
z,
|
|
59
|
+
B,
|
|
60
|
+
H
|
|
61
|
+
]);
|
|
62
|
+
let U = {
|
|
63
|
+
...h,
|
|
64
|
+
...I.labels ?? {},
|
|
65
|
+
...O ?? {}
|
|
66
|
+
}, W = Math.max(1, Math.floor(T ?? I.columns ?? 6)), G = ee ?? I.swatchSize ?? 28, K = E ?? I.showTitle ?? !0, q = D ?? I.showHex ?? !1, J = I.swatchGap ?? 8, Y = I.rowGap ?? J, X = I.itemWidth ?? (q ? Math.max(56, G) : G), Z = I.titleStyle ?? {
|
|
67
|
+
color: "#ffffff",
|
|
68
|
+
fontSize: "14px",
|
|
69
|
+
fontStyle: "bold"
|
|
70
|
+
}, Q = I.emptyStyle ?? {
|
|
71
|
+
color: "#9fb3c8",
|
|
72
|
+
fontSize: "13px"
|
|
73
|
+
}, te = I.hexStyle ?? {
|
|
74
|
+
color: "#9fb3c8",
|
|
75
|
+
fontSize: "11px"
|
|
76
|
+
}, $ = k ? I.disabledAlpha ?? .5 : M, ne = y(R, W), re = (e) => {
|
|
77
|
+
x(e, k) && (z || V(e.value), w?.(e.value, e));
|
|
78
|
+
}, ie = (e) => /* @__PURE__ */ p(n, {
|
|
79
|
+
width: e.size,
|
|
80
|
+
height: e.size,
|
|
81
|
+
backgroundColor: e.color,
|
|
82
|
+
borderColor: e.selected ? e.selectedBorderColor : I.swatchBorderColor,
|
|
83
|
+
borderWidth: e.selected ? I.swatchSelectedBorderWidth ?? 3 : I.swatchBorderWidth ?? 1,
|
|
84
|
+
cornerRadius: I.swatchCornerRadius ?? 5,
|
|
85
|
+
alignItems: "center",
|
|
86
|
+
justifyContent: "center",
|
|
87
|
+
alpha: e.disabled ? I.swatchDisabledAlpha ?? .45 : 1,
|
|
88
|
+
theme: L,
|
|
89
|
+
children: e.selected ? /* @__PURE__ */ p(t, {
|
|
90
|
+
width: e.size,
|
|
91
|
+
height: e.size,
|
|
92
|
+
dependencies: [e.size, e.checkColor],
|
|
93
|
+
onDraw: (t) => S(t, e.size, e.checkColor)
|
|
94
|
+
}) : null
|
|
95
|
+
}), ae = (t, r) => {
|
|
96
|
+
let a = H === t.value, o = k || !!t.disabled, s = x(t, k), c = i(I.swatchSelectedBorderColor ?? 16777215, t.value, 3), l = b(t.value, I.selectedCheckColor ?? 16777215), u = {
|
|
97
|
+
option: t,
|
|
98
|
+
color: t.value,
|
|
99
|
+
hex: t.hex,
|
|
100
|
+
selected: a,
|
|
101
|
+
disabled: o,
|
|
102
|
+
index: r,
|
|
103
|
+
size: G,
|
|
104
|
+
selectedBorderColor: c,
|
|
105
|
+
checkColor: l
|
|
106
|
+
}, d = A?.(u) ?? ie(u), f = U.formatHex?.(t.value) ?? t.hex;
|
|
107
|
+
return /* @__PURE__ */ m(n, {
|
|
108
|
+
width: X,
|
|
109
|
+
alignItems: "center",
|
|
110
|
+
gap: 4,
|
|
111
|
+
enableGestures: s,
|
|
112
|
+
...s ? { onTouch: () => re(t) } : {},
|
|
113
|
+
theme: L,
|
|
114
|
+
children: [d, q ? /* @__PURE__ */ p(e, {
|
|
115
|
+
text: f,
|
|
116
|
+
style: te
|
|
117
|
+
}) : null]
|
|
118
|
+
}, `${t.value}-${r}`);
|
|
119
|
+
};
|
|
120
|
+
return /* @__PURE__ */ m(n, {
|
|
121
|
+
...N,
|
|
122
|
+
direction: "column",
|
|
123
|
+
gap: I.gap ?? 10,
|
|
124
|
+
padding: I.padding ?? 0,
|
|
125
|
+
...I.backgroundColor === void 0 ? {} : { backgroundColor: I.backgroundColor },
|
|
126
|
+
...I.backgroundAlpha === void 0 ? {} : { backgroundAlpha: I.backgroundAlpha },
|
|
127
|
+
...I.borderColor === void 0 ? {} : { borderColor: I.borderColor },
|
|
128
|
+
...I.borderWidth === void 0 ? {} : { borderWidth: I.borderWidth },
|
|
129
|
+
...I.cornerRadius === void 0 ? {} : { cornerRadius: I.cornerRadius },
|
|
130
|
+
...$ === void 0 ? {} : { alpha: $ },
|
|
131
|
+
theme: L,
|
|
132
|
+
children: [K ? /* @__PURE__ */ p(e, {
|
|
133
|
+
text: U.title,
|
|
134
|
+
style: Z
|
|
135
|
+
}) : null, R.length === 0 ? /* @__PURE__ */ p(e, {
|
|
136
|
+
text: U.empty,
|
|
137
|
+
style: Q
|
|
138
|
+
}) : /* @__PURE__ */ p(n, {
|
|
139
|
+
direction: "column",
|
|
140
|
+
gap: Y,
|
|
141
|
+
theme: L,
|
|
142
|
+
children: ne.map((e, t) => /* @__PURE__ */ p(n, {
|
|
143
|
+
direction: "row",
|
|
144
|
+
gap: J,
|
|
145
|
+
theme: L,
|
|
146
|
+
children: e.map((e, n) => ae(e, t * W + n))
|
|
147
|
+
}, `row-${t}`))
|
|
148
|
+
})]
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
export { C as PalettePicker, y as chunkPalettePickerColors, b as getPalettePickerContrastColor, g as normalizePalettePickerColor, _ as normalizePalettePickerColors, v as resolvePalettePickerValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PalettePicker.test.d.ts","sourceRoot":"","sources":["../src/PalettePicker.test.ts"],"names":[],"mappings":""}
|
package/dist/Popover.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./primitives/Text.cjs`),t=require(`./primitives/View.cjs`);require(`./primitives.cjs`);const n=require(`./Portal.cjs`),r=require(`./useOverlayPresence.cjs`);let i=require(`@number10/jsx-core`),a=require(`@number10/jsx-core/jsx-runtime`);function o(e){return e.split(`-`)[0]}function s(e){return e.split(`-`)[1]??`center`}function c(e){let{anchor:t,content:n,placement:r,offset:i}=e,a=o(r),c=s(r),l,u;a===`top`||a===`bottom`?(u=a===`top`?t.y-n.height-i:t.y+t.height+i,l=c===`start`?t.x:c===`end`?t.x+t.width-n.width:t.x+(t.width-n.width)/2):(l=a===`left`?t.x-n.width-i:t.x+t.width+i,u=c===`start`?t.y:c===`end`?t.y+t.height-n.height:t.y+(t.height-n.height)/2);let d=e.viewport;if(d){let t=e.viewportPadding??8;l=Math.min(Math.max(t,l),Math.max(t,d.width-n.width-t)),u=Math.min(Math.max(t,u),Math.max(t,d.height-n.height-t))}return{x:l,y:u,placement:r}}function l(e){return e?.__getLayoutSize?.()??e?.__cachedLayoutSize??{width:0,height:0}}function u(e){let t=e;if(typeof t.getAbsolutePosition==`function`){let e=t.getAbsolutePosition();return{x:e.x,y:e.y}}let n=e;if(typeof n.getGlobalPosition==`function`){let e=n.getGlobalPosition();return{x:e.x,y:e.y}}let r=e.x??0,i=e.y??0,a=e.parent;for(;a;)r+=a.x??0,i+=a.y??0,a=a.parent;return{x:r,y:i}}function d(e){if(!e)return{x:0,y:0,width:0,height:0};let t=l(e),n=u(e);return{x:n.x,y:n.y,width:t.width,height:t.height}}var f={width:220,height:120};function p(e,t){if(e){if(typeof e==`function`){e(t);return}e.current=t}}function m(e){let o=(0,i.useTheme)(),s=e.theme?(0,i.mergeThemes)(o??{},e.theme):o,{props:u,nestedTheme:m}=(0,i.resolveComponentTheme)({componentName:`Popover`,globalTheme:(0,i.getGlobalThemeDefaults)(),localTheme:s,knownComponents:i.KNOWN_COMPONENTS}),h=(0,i.useRef)(null),g=(0,i.useRef)(null),[_,v]=(0,i.useState)(null),[y,b]=(0,i.useState)(e.defaultOpen??!1),x=e.isOpen!==void 0,S=x?e.isOpen===!0:y,C=r.useOverlayPresence(S),w=e.placement??u.placement??`bottom`,T=e.offset??u.offset??8,E=e.depth??u.depth??1100,D=e.closeOnOutside??u.closeOnOutside??!0,O=e.closeOnEscape??u.closeOnEscape??!0,k=e.viewportPadding??u.viewportPadding??8,A=e.openEffect??u.openEffect??`fadeIn`,j=e.closeEffect??u.closeEffect??`fadeOut`,M=e.openDuration??u.openDuration??120,N=e.closeDuration??u.closeDuration??100,P=e.contentWidth??u.contentWidth,F=e.contentHeight??u.contentHeight,I=(0,i.useViewportSize)(),[L,R]=(0,i.useState)(d(h.current)),z=_?.width??f.width,B=_?.height??f.height,V=P===void 0||F===void 0,H=!V||_!==null,U=e.matchTriggerWidth?Math.max(L.width,P??z):P??z,W=c({anchor:L,content:{width:U,height:F??B},placement:w,offset:T,viewport:I,viewportPadding:k}),G=t=>{e.disabled&&t||(x||b(t),e.onOpenChange?.(t))},K=e=>{e.stopPropagation(),G(!S)},q=e=>{e?.stopPropagation(),G(!1)},J=e.contentProps??{},Y=J.ref,X=J.alpha,Z=e=>{let t=e;g.current=t,p(Y,t)},Q=C.phase===`entered`||C.phase===`exiting`?X:0;return(0,i.useEffect)(()=>{if(!O||!S)return;let e=e=>{e.key===`Escape`&&G(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[O,S]),(0,i.useEffect)(()=>{if(!C.isPresent)return;let e=!1,t=()=>{if(e)return;let n=d(h.current);R(e=>Math.abs(e.x-n.x)<.5&&Math.abs(e.y-n.y)<.5&&Math.abs(e.width-n.width)<.5&&Math.abs(e.height-n.height)<.5?e:n),i.DeferredLayoutQueue.defer(t)};return i.DeferredLayoutQueue.defer(t),()=>{e=!0}},[C.isPresent]),(0,i.useEffect)(()=>{if(!C.isPresent||!V)return;let e=!1,t=()=>{if(e)return;let n=l(g.current);n.width>0&&n.height>0&&v(e=>e&&Math.abs(e.width-n.width)<.5&&Math.abs(e.height-n.height)<.5?e:{width:n.width,height:n.height}),i.DeferredLayoutQueue.defer(t)};return i.DeferredLayoutQueue.defer(t),()=>{e=!0}},[C.isPresent,V,e.children,P,F]),(0,i.useEffect)(()=>{let e=g.current;if(!(!e||!C.isPresent))if(C.phase===`entering`){if(!H)return;(0,i.stopEffect)(e),e.setVisible?.(!0),(0,i.applyEffect)(e,A,{time:M,onComplete:C.finishEnter})}else C.phase===`exiting`&&((0,i.stopEffect)(e),(0,i.applyEffect)(e,j,{time:N,onComplete:()=>{g.current?.setVisible?.(!1),v(null),C.finishExit()}}))},[C.phase,C.isPresent,H,M,N]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.View,{...e.triggerProps??{},ref:h,enableGestures:!e.disabled,onTouch:K,children:e.trigger}),C.isPresent&&(0,a.jsxs)(n.Portal,{depth:E,blockEvents:!1,children:[D&&(0,a.jsx)(t.View,{width:I.width,height:I.height,backgroundColor:0,backgroundAlpha:0,onTouch:q,onTouchMove:e=>e.stopPropagation()}),(0,a.jsx)(t.View,{direction:`column`,backgroundColor:u.backgroundColor??1120295,borderColor:u.borderColor??3359061,borderWidth:u.borderWidth??1,cornerRadius:u.cornerRadius??8,padding:u.padding??10,gap:u.gap??8,...J,ref:Z,x:W.x,y:W.y,...e.matchTriggerWidth||P!==void 0?{width:U}:{},...Q===void 0?{}:{alpha:Q},onTouch:e=>e.stopPropagation(),theme:m,children:e.children})]})]})}function h(n){let{items:r,width:o,onSelect:s,isOpen:c,defaultOpen:l,onOpenChange:u,...d}=n,f=(0,i.useTheme)(),p=n.theme?(0,i.mergeThemes)(f??{},n.theme):f,{props:h,nestedTheme:g}=(0,i.resolveComponentTheme)({componentName:`ContextMenu`,globalTheme:(0,i.getGlobalThemeDefaults)(),localTheme:p,knownComponents:i.KNOWN_COMPONENTS}),[_,v]=(0,i.useState)(l??!1),y=c!==void 0,b=y?c===!0:_,x=o??h.width??220,S=h.itemHeight??34,C=e=>{y||v(e),u?.(e)},w=e=>{e.disabled||(e.onSelect?.(),s?.(e),C(!1))};return(0,a.jsx)(m,{...d,isOpen:b,onOpenChange:C,contentWidth:x,contentHeight:Math.max(1,r.length)*S+20,contentProps:{padding:h.padding??6,gap:h.gap??2,backgroundColor:h.backgroundColor,borderColor:h.borderColor,borderWidth:h.borderWidth,cornerRadius:h.cornerRadius,theme:g},children:r.map(n=>{let r=h.textStyle,i=n.disabled?h.disabledTextColor??`#64748b`:n.danger?h.dangerTextColor??`#fecaca`:r?.color??`#f8fafc`;return(0,a.jsxs)(t.View,{width:`fill`,height:S,direction:`row`,alignItems:`center`,justifyContent:`space-between`,backgroundColor:n.disabled?void 0:h.itemBackgroundColor,borderColor:n.disabled?void 0:h.itemBorderColor,cornerRadius:h.itemCornerRadius??4,padding:h.itemPadding??{left:10,right:10},enableGestures:!n.disabled,onTouch:e=>{e.stopPropagation(),w(n)},theme:g,children:[(0,a.jsxs)(t.View,{direction:`row`,alignItems:`center`,gap:h.itemGap??8,children:[n.prefix,(0,a.jsx)(e.Text,{text:n.label,style:{color:i,fontSize:`14px`}})]}),n.suffix]},n.id)})})}exports.ContextMenu=h,exports.Popover=m,exports.calculateOverlayPosition=c;
|