@plastic-js/tsumiki 0.1.0 → 0.1.1
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/components/Accordion.js +7 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/Avatar.js +7 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/CardNumberInput.js +67 -0
- package/dist/components/CardNumberInput.js.map +1 -0
- package/dist/components/Carousel.js +7 -0
- package/dist/components/Carousel.js.map +1 -0
- package/dist/components/Checkbox.js +7 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Clipboard.js +7 -0
- package/dist/components/Clipboard.js.map +1 -0
- package/dist/components/Collapsible.js +7 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/ColorPicker.js +7 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Combobox.js +19 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/ConfirmDialog.js +36 -0
- package/dist/components/ConfirmDialog.js.map +1 -0
- package/dist/components/DateInput.js +7 -0
- package/dist/components/DateInput.js.map +1 -0
- package/dist/components/DatePicker.js +7 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Dialog.js +218 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/Drawer.js +7 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/Field.js +7 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/Fieldset.js +7 -0
- package/dist/components/Fieldset.js.map +1 -0
- package/dist/components/FileUpload.js +7 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/FilteredSelect.js +173 -0
- package/dist/components/FilteredSelect.js.map +1 -0
- package/dist/components/FocusTrap.js +7 -0
- package/dist/components/FocusTrap.js.map +1 -0
- package/dist/components/HoverCard.js +7 -0
- package/dist/components/HoverCard.js.map +1 -0
- package/dist/components/Icon.js +37 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/Listbox.js +7 -0
- package/dist/components/Listbox.js.map +1 -0
- package/dist/components/Menu.js +7 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/MoneyInput.js +114 -0
- package/dist/components/MoneyInput.js.map +1 -0
- package/dist/components/MyFilteredSelect.js +119 -0
- package/dist/components/MyFilteredSelect.js.map +1 -0
- package/dist/components/NumberInput.js +7 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/Pagination.js +7 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Popover.js +7 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Portal.js +7 -0
- package/dist/components/Portal.js.map +1 -0
- package/dist/components/Presence.js +7 -0
- package/dist/components/Presence.js.map +1 -0
- package/dist/components/Progress.js +7 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/RadioGroup.js +7 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/RatingGroup.js +7 -0
- package/dist/components/RatingGroup.js.map +1 -0
- package/dist/components/SearchInput.js +66 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/Select.js +7 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SignaturePad.js +7 -0
- package/dist/components/SignaturePad.js.map +1 -0
- package/dist/components/Skeleton.js +29 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Slider.js +7 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/Splitter.js +7 -0
- package/dist/components/Splitter.js.map +1 -0
- package/dist/components/Steps.js +7 -0
- package/dist/components/Steps.js.map +1 -0
- package/dist/components/SwipeReveal.js +161 -0
- package/dist/components/SwipeReveal.js.map +1 -0
- package/dist/components/Switch.js +7 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/Tabs.js +7 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/TagsInput.js +7 -0
- package/dist/components/TagsInput.js.map +1 -0
- package/dist/components/Toast.js +7 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Toggle.js +7 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleGroup.js +7 -0
- package/dist/components/ToggleGroup.js.map +1 -0
- package/dist/components/Tooltip.js +7 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Tour.js +7 -0
- package/dist/components/Tour.js.map +1 -0
- package/dist/components/TreeView.js +7 -0
- package/dist/components/TreeView.js.map +1 -0
- package/dist/index.js +50 -2714
- package/package.json +1 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","names":["RadioGroup"],"sources":["../../src/components/RadioGroup.jsx"],"sourcesContent":["import { RadioGroup } from '@plastic-js/ark'\n\nexport default RadioGroup\n"],"mappings":";;AAEA,IAAA,qBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatingGroup.js","names":["RatingGroup"],"sources":["../../src/components/RatingGroup.jsx"],"sourcesContent":["import { RatingGroup } from '@plastic-js/ark'\n\nexport default RatingGroup\n"],"mappings":";;AAEA,IAAA,sBAAeA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css } from "@emotion/css";
|
|
3
|
+
import { splitProps } from "@plastic-js/plastic";
|
|
4
|
+
//#region src/components/SearchInput.jsx
|
|
5
|
+
var _tmpl2 = template("<svg fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"M21 21l-4.35-4.35\"></path></svg>");
|
|
6
|
+
var _tmpl = template("<div><span aria-hidden=\"true\"></span><!></div>");
|
|
7
|
+
var wrapperClass = css({
|
|
8
|
+
flex: 1,
|
|
9
|
+
minWidth: 0,
|
|
10
|
+
position: "relative"
|
|
11
|
+
});
|
|
12
|
+
var inputClass = css({
|
|
13
|
+
width: "100%",
|
|
14
|
+
height: "44px",
|
|
15
|
+
background: "var(--surface)",
|
|
16
|
+
border: "1px solid var(--border)",
|
|
17
|
+
borderRadius: "10px",
|
|
18
|
+
padding: "0 14px 0 44px",
|
|
19
|
+
color: "var(--ink)",
|
|
20
|
+
fontSize: "15px",
|
|
21
|
+
fontFamily: "inherit",
|
|
22
|
+
outline: "none",
|
|
23
|
+
"&::placeholder": { color: "var(--muted)" },
|
|
24
|
+
"&:focus": { borderColor: "var(--accent)" }
|
|
25
|
+
});
|
|
26
|
+
var iconClass = css({
|
|
27
|
+
position: "absolute",
|
|
28
|
+
left: "13px",
|
|
29
|
+
top: "50%",
|
|
30
|
+
transform: "translateY(-50%)",
|
|
31
|
+
color: "var(--muted)",
|
|
32
|
+
pointerEvents: "none",
|
|
33
|
+
"& svg": {
|
|
34
|
+
width: "18px",
|
|
35
|
+
height: "18px"
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
var SearchInput = (props) => {
|
|
39
|
+
const [local, rest] = splitProps(props, ["placeholder", "onInput"]);
|
|
40
|
+
return () => {
|
|
41
|
+
const _el0 = _tmpl.cloneNode(true);
|
|
42
|
+
const _el1 = _el0.firstChild;
|
|
43
|
+
const _el2 = _el0.firstChild.nextSibling;
|
|
44
|
+
insert(_el1, () => jsx(SearchIcon, {}));
|
|
45
|
+
setProp(_el1, "className", () => iconClass);
|
|
46
|
+
insert(_el0, () => jsx("input", mergeProps({
|
|
47
|
+
className: inputClass,
|
|
48
|
+
get onInput() {
|
|
49
|
+
return local.onInput;
|
|
50
|
+
},
|
|
51
|
+
get placeholder() {
|
|
52
|
+
return local.placeholder ?? "Search...";
|
|
53
|
+
},
|
|
54
|
+
type: "search"
|
|
55
|
+
}, rest)), _el2);
|
|
56
|
+
setProp(_el0, "className", () => wrapperClass);
|
|
57
|
+
return _el0;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
function SearchIcon() {
|
|
61
|
+
return _tmpl2.cloneNode(true);
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { SearchInput as default };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=SearchInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchInput.js","names":["css","splitProps","_tmpl2","_template","_tmpl","wrapperClass","flex","minWidth","position","inputClass","width","height","background","border","borderRadius","padding","color","fontSize","fontFamily","outline","borderColor","iconClass","left","top","transform","pointerEvents","SearchInput","props","local","rest","_el0","cloneNode","_el1","firstChild","_el2","nextSibling","_insert","_jsx","SearchIcon","_setProp","_mergeProps","className","onInput","placeholder","type"],"sources":["../../src/components/SearchInput.jsx"],"sourcesContent":["import { css } from '@emotion/css'\nimport { splitProps } from '@plastic-js/plastic'\n\nconst wrapperClass = css({\n\tflex: 1,\n\tminWidth: 0,\n\tposition: 'relative',\n})\n\nconst inputClass = css({\n\twidth: '100%',\n\theight: '44px',\n\tbackground: 'var(--surface)',\n\tborder: '1px solid var(--border)',\n\tborderRadius: '10px',\n\tpadding: '0 14px 0 44px',\n\tcolor: 'var(--ink)',\n\tfontSize: '15px',\n\tfontFamily: 'inherit',\n\toutline: 'none',\n\t'&::placeholder': { color: 'var(--muted)' },\n\t'&:focus': { borderColor: 'var(--accent)' },\n})\n\nconst iconClass = css({\n\tposition: 'absolute',\n\tleft: '13px',\n\ttop: '50%',\n\ttransform: 'translateY(-50%)',\n\tcolor: 'var(--muted)',\n\tpointerEvents: 'none',\n\t'& svg': { width: '18px', height: '18px' },\n})\n\nconst SearchInput = (props)=> {\n\tconst [local, rest] = splitProps(props, ['placeholder', 'onInput'])\n\treturn (\n\t\t<div className={wrapperClass}>\n\t\t\t<span aria-hidden='true' className={iconClass}>\n\t\t\t\t<SearchIcon />\n\t\t\t</span>\n\t\t\t<input\n\t\t\t\tclassName={inputClass}\n\t\t\t\tonInput={local.onInput}\n\t\t\t\tplaceholder={local.placeholder ?? 'Search...'}\n\t\t\t\ttype='search'\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nfunction SearchIcon(){\n\treturn (\n\t\t<svg\n\t\t\tfill='none' stroke='currentColor' strokeLinecap='round' strokeLinejoin='round'\n\t\t\tstrokeWidth='2' viewBox='0 0 24 24'\n\t\t>\n\t\t\t<circle cx='11' cy='11' r='7' />\n\t\t\t<path d='M21 21l-4.35-4.35' />\n\t\t</svg>\n\t)\n}\n\nexport default SearchInput\n"],"mappings":";;;;AACgD,IAAAE,SAAAC,SAAA,8NAAA;AAAA,IAAAC,QAAAD,SAAA,kDAAA;AAEhD,IAAME,eAAeL,IAAI;CACxBM,MAAM;CACNC,UAAU;CACVC,UAAU;AACX,CAAC;AAED,IAAMC,aAAaT,IAAI;CACtBU,OAAO;CACPC,QAAQ;CACRC,YAAY;CACZC,QAAQ;CACRC,cAAc;CACdC,SAAS;CACTC,OAAO;CACPC,UAAU;CACVC,YAAY;CACZC,SAAS;CACT,kBAAkB,EAAEH,OAAO,eAAe;CAC1C,WAAW,EAAEI,aAAa,gBAAgB;AAC3C,CAAC;AAED,IAAMC,YAAYrB,IAAI;CACrBQ,UAAU;CACVc,MAAM;CACNC,KAAK;CACLC,WAAW;CACXR,OAAO;CACPS,eAAe;CACf,SAAS;EAAEf,OAAO;EAAQC,QAAQ;CAAO;AAC1C,CAAC;AAED,IAAMe,eAAeC,UAAS;CAC7B,MAAM,CAACC,OAAOC,QAAQ5B,WAAW0B,OAAO,CAAC,eAAe,SAAS,CAAC;CAClE,aAAA;EAAA,MAAAG,OAAA1B,MAAA2B,UAAA,IAAA;EAAA,MAAAC,OAAAF,KAAAG;EAAA,MAAAC,OAAAJ,KAAAG,WAAAE;EAAAC,OAAAJ,YAAAK,IAAAC,YAAA,CAAA,CAAA,CAAA;EAAAC,QAAAP,MAAA,mBAEsCX,SAAS;EAAAe,OAAAN,YAAAO,IAAA,SAAAG,WAAA;GAAAC,WAIjChC;GAAU,IAAAiC,UAAA;IAAA,OACZd,MAAMc;GAAO;GAAA,IAAAC,cAAA;IAAA,OACTf,MAAMe,eAAe;GAAW;GAAAC,MACxC;EAAQ,GACTf,IAAI,CAAA,GAAAK,IAAA;EAAAK,QAAAT,MAAA,mBATMzB,YAAY;EAAA,OAAAyB;CAAA;AAa9B;AAEA,SAASQ,aAAY;CACpB,OAAApC,OAAA6B,UAAA,IAAA;AASD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","names":["Select"],"sources":["../../src/components/Select.jsx"],"sourcesContent":["import { Select } from '@plastic-js/ark'\n\nexport default Select\n"],"mappings":";;AAEA,IAAA,iBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignaturePad.js","names":["SignaturePad"],"sources":["../../src/components/SignaturePad.jsx"],"sourcesContent":["import { SignaturePad } from '@plastic-js/ark'\n\nexport default SignaturePad\n"],"mappings":";;AAEA,IAAA,uBAAeA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { setProp, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css, keyframes } from "@emotion/css";
|
|
3
|
+
//#region src/components/Skeleton.jsx
|
|
4
|
+
var _tmpl = template("<span></span>");
|
|
5
|
+
var baseClass = css({
|
|
6
|
+
display: "block",
|
|
7
|
+
background: "linear-gradient(90deg, var(--border) 0%, var(--surface) 50%, var(--border) 100%)",
|
|
8
|
+
backgroundSize: "200% 100%",
|
|
9
|
+
animation: `${keyframes({
|
|
10
|
+
"0%": { backgroundPosition: "-200% 0" },
|
|
11
|
+
"100%": { backgroundPosition: "200% 0" }
|
|
12
|
+
})} 1.4s ease-in-out infinite`,
|
|
13
|
+
borderRadius: "6px"
|
|
14
|
+
});
|
|
15
|
+
var Skeleton = ({ width = "100%", height = "14px", radius, className, style }) => (() => {
|
|
16
|
+
const _el0 = _tmpl.cloneNode(true);
|
|
17
|
+
setProp(_el0, "className", () => className ? `${baseClass} ${className}` : baseClass);
|
|
18
|
+
setProp(_el0, "style", () => ({
|
|
19
|
+
width,
|
|
20
|
+
height,
|
|
21
|
+
borderRadius: radius,
|
|
22
|
+
...style
|
|
23
|
+
}));
|
|
24
|
+
return _el0;
|
|
25
|
+
})();
|
|
26
|
+
//#endregion
|
|
27
|
+
export { Skeleton as default };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.js","names":["css","keyframes","_tmpl","_template","shimmer","backgroundPosition","baseClass","display","background","backgroundSize","animation","borderRadius","Skeleton","width","height","radius","className","style","_el0","cloneNode","_setProp"],"sources":["../../src/components/Skeleton.jsx"],"sourcesContent":["import { css, keyframes } from '@emotion/css'\n\nconst shimmer = keyframes({\n\t'0%': { backgroundPosition: '-200% 0' },\n\t'100%': { backgroundPosition: '200% 0' },\n})\n\nconst baseClass = css({\n\tdisplay: 'block',\n\tbackground: 'linear-gradient(90deg, var(--border) 0%, var(--surface) 50%, var(--border) 100%)',\n\tbackgroundSize: '200% 100%',\n\tanimation: `${shimmer} 1.4s ease-in-out infinite`,\n\tborderRadius: '6px',\n})\n\nconst Skeleton = ({\n\twidth = '100%', height = '14px', radius, className, style,\n})=> (\n\t<span\n\t\tclassName={className ? `${baseClass} ${className}` : baseClass}\n\t\tstyle={{\n\t\t\twidth, height, borderRadius: radius, ...style,\n\t\t}}\n\t/>\n)\n\nexport default Skeleton\n"],"mappings":";;;AAA6C,IAAAE,QAAAC,SAAA,eAAA;AAO7C,IAAMG,YAAYN,IAAI;CACrBO,SAAS;CACTC,YAAY;CACZC,gBAAgB;CAChBC,WAAW,GATIT,UAAU;EACzB,MAAM,EAAEI,oBAAoB,UAAU;EACtC,QAAQ,EAAEA,oBAAoB,SAAS;CACxC,CAMeD,EAAO;CACrBO,cAAc;AACf,CAAC;AAED,IAAMC,YAAY,EACjBC,QAAQ,QAAQC,SAAS,QAAQC,QAAQC,WAAWC,mBACpD;CAAA,MAAAC,OAAAhB,MAAAiB,UAAA,IAAA;CAAAC,QAAAF,MAAA,mBAEYF,YAAY,GAAGV,UAAS,GAAIU,cAAcV,SAAS;CAAAc,QAAAF,MAAA,gBACvD;EACNL;EAAOC;EAAQH,cAAcI;EAAQ,GAAGE;CACzC,EAAC;CAAA,OAAAC;AAAA,GAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.js","names":["Slider"],"sources":["../../src/components/Slider.jsx"],"sourcesContent":["import { Slider } from '@plastic-js/ark'\n\nexport default Slider\n"],"mappings":";;AAEA,IAAA,iBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Splitter.js","names":["Splitter"],"sources":["../../src/components/Splitter.jsx"],"sourcesContent":["import { Splitter } from '@plastic-js/ark'\n\nexport default Splitter\n"],"mappings":";;AAEA,IAAA,mBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Steps.js","names":["Steps"],"sources":["../../src/components/Steps.jsx"],"sourcesContent":["import { Steps } from '@plastic-js/ark'\n\nexport default Steps\n"],"mappings":";;AAEA,IAAA,gBAAeA"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { insert, setProp, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css } from "@emotion/css";
|
|
3
|
+
import { createEffect, createSignal } from "@plastic-js/plastic";
|
|
4
|
+
//#region src/components/SwipeReveal.jsx
|
|
5
|
+
var _tmpl2 = template("<button type=\"button\"></button>");
|
|
6
|
+
var _tmpl = template("<div><div data-dragging=\"false\"><div></div><div></div></div></div>");
|
|
7
|
+
var ACTIONS_WIDTH = 160;
|
|
8
|
+
var wrapperClass = css`
|
|
9
|
+
position: relative;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
border-radius: 12px;
|
|
12
|
+
user-select: none;
|
|
13
|
+
`;
|
|
14
|
+
var trackClass = css`
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: stretch;
|
|
17
|
+
will-change: transform;
|
|
18
|
+
transition: transform 220ms ease;
|
|
19
|
+
touch-action: pan-y;
|
|
20
|
+
&[data-dragging="true"] { transition: none; }
|
|
21
|
+
`;
|
|
22
|
+
var actionsClass = css`
|
|
23
|
+
flex: 0 0 ${ACTIONS_WIDTH}px;
|
|
24
|
+
display: flex;
|
|
25
|
+
`;
|
|
26
|
+
var actionBtnClass = css`
|
|
27
|
+
flex: 1;
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
border: none;
|
|
32
|
+
color: #fff;
|
|
33
|
+
font-size: 14px;
|
|
34
|
+
font-weight: 600;
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
font-family: inherit;
|
|
37
|
+
`;
|
|
38
|
+
var contentClass = css`
|
|
39
|
+
flex: 0 0 100%;
|
|
40
|
+
`;
|
|
41
|
+
var SwipeReveal = ({ actions, children, onSwipeStart, onOpenChange, activeId, thisId }) => {
|
|
42
|
+
const isOpen = createSignal(false);
|
|
43
|
+
let trackEl = null;
|
|
44
|
+
let startX = 0;
|
|
45
|
+
let startY = 0;
|
|
46
|
+
let baseOffset = 0;
|
|
47
|
+
let currentOffset = 0;
|
|
48
|
+
let dragging = false;
|
|
49
|
+
let axisLocked = false;
|
|
50
|
+
let horizontal = false;
|
|
51
|
+
let moved = false;
|
|
52
|
+
const setTrackRef = (el) => {
|
|
53
|
+
trackEl = el;
|
|
54
|
+
};
|
|
55
|
+
const applyTransform = (px) => {
|
|
56
|
+
if (trackEl) trackEl.style.transform = `translateX(${px}px)`;
|
|
57
|
+
};
|
|
58
|
+
const snap = (toOpen) => {
|
|
59
|
+
currentOffset = toOpen ? -160 : 0;
|
|
60
|
+
if (trackEl) {
|
|
61
|
+
trackEl.dataset.dragging = "false";
|
|
62
|
+
applyTransform(currentOffset);
|
|
63
|
+
}
|
|
64
|
+
onOpenChange?.(toOpen);
|
|
65
|
+
isOpen(toOpen);
|
|
66
|
+
};
|
|
67
|
+
createEffect(() => {
|
|
68
|
+
const currentActive = typeof activeId === "function" ? activeId() : activeId;
|
|
69
|
+
if (currentActive !== void 0 && currentActive !== thisId && isOpen()) {
|
|
70
|
+
isOpen(false);
|
|
71
|
+
currentOffset = 0;
|
|
72
|
+
if (trackEl) {
|
|
73
|
+
trackEl.dataset.dragging = "false";
|
|
74
|
+
applyTransform(0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
const onPointerDown = (e) => {
|
|
79
|
+
if (e.pointerType === "mouse" && e.button !== 0) return;
|
|
80
|
+
startX = e.clientX;
|
|
81
|
+
startY = e.clientY;
|
|
82
|
+
baseOffset = isOpen() ? -160 : 0;
|
|
83
|
+
dragging = true;
|
|
84
|
+
axisLocked = false;
|
|
85
|
+
horizontal = false;
|
|
86
|
+
moved = false;
|
|
87
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
88
|
+
};
|
|
89
|
+
const onPointerMove = (e) => {
|
|
90
|
+
if (!dragging) return;
|
|
91
|
+
const dx = e.clientX - startX;
|
|
92
|
+
const dy = e.clientY - startY;
|
|
93
|
+
if (!axisLocked) {
|
|
94
|
+
if (Math.abs(dx) < 6 && Math.abs(dy) < 6) return;
|
|
95
|
+
horizontal = Math.abs(dx) > Math.abs(dy);
|
|
96
|
+
axisLocked = true;
|
|
97
|
+
if (horizontal && trackEl) trackEl.dataset.dragging = "true";
|
|
98
|
+
}
|
|
99
|
+
if (!horizontal) return;
|
|
100
|
+
moved = true;
|
|
101
|
+
let next = baseOffset + dx;
|
|
102
|
+
if (next > 0) next = 0;
|
|
103
|
+
if (next < -160) next = -160 - (next + ACTIONS_WIDTH) * .2;
|
|
104
|
+
currentOffset = next;
|
|
105
|
+
applyTransform(next);
|
|
106
|
+
};
|
|
107
|
+
const onPointerUp = (e) => {
|
|
108
|
+
if (!dragging) return;
|
|
109
|
+
dragging = false;
|
|
110
|
+
e.currentTarget.releasePointerCapture?.(e.pointerId);
|
|
111
|
+
if (!horizontal) return;
|
|
112
|
+
snap(currentOffset < -80);
|
|
113
|
+
};
|
|
114
|
+
const handleContentClick = (e) => {
|
|
115
|
+
if (moved) {
|
|
116
|
+
e.stopPropagation();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (isOpen()) {
|
|
120
|
+
e.stopPropagation();
|
|
121
|
+
snap(false);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const handleActionClick = (action) => (e) => {
|
|
126
|
+
e.stopPropagation();
|
|
127
|
+
snap(false);
|
|
128
|
+
action.onClick?.(e);
|
|
129
|
+
};
|
|
130
|
+
return () => {
|
|
131
|
+
const _el0 = _tmpl.cloneNode(true);
|
|
132
|
+
const _el1 = _el0.firstChild;
|
|
133
|
+
const _el2 = _el1.firstChild;
|
|
134
|
+
const _el3 = _el1.firstChild.nextSibling;
|
|
135
|
+
insert(_el2, () => children);
|
|
136
|
+
setProp(_el2, "className", () => contentClass);
|
|
137
|
+
setProp(_el2, "onClick", () => handleContentClick);
|
|
138
|
+
insert(_el3, () => actions.map((action) => () => {
|
|
139
|
+
const _el0 = _tmpl2.cloneNode(true);
|
|
140
|
+
insert(_el0, () => action.label);
|
|
141
|
+
setProp(_el0, "className", () => actionBtnClass);
|
|
142
|
+
setProp(_el0, "onClick", () => handleActionClick(action));
|
|
143
|
+
setProp(_el0, "style", () => ({ background: action.color }));
|
|
144
|
+
setProp(_el0, "tabIndex", () => isOpen() ? 0 : -1);
|
|
145
|
+
return _el0;
|
|
146
|
+
}));
|
|
147
|
+
setProp(_el3, "className", () => actionsClass);
|
|
148
|
+
setProp(_el1, "className", () => trackClass);
|
|
149
|
+
setProp(_el1, "onPointerCancel", () => onPointerUp);
|
|
150
|
+
setProp(_el1, "onPointerDown", () => onPointerDown);
|
|
151
|
+
setProp(_el1, "onPointerMove", () => onPointerMove);
|
|
152
|
+
setProp(_el1, "onPointerUp", () => onPointerUp);
|
|
153
|
+
setProp(_el1, "ref", () => setTrackRef);
|
|
154
|
+
setProp(_el0, "className", () => wrapperClass);
|
|
155
|
+
return _el0;
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
//#endregion
|
|
159
|
+
export { SwipeReveal as default };
|
|
160
|
+
|
|
161
|
+
//# sourceMappingURL=SwipeReveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwipeReveal.js","names":["css","createEffect","createSignal","_tmpl2","_template","_tmpl","ACTIONS_WIDTH","SWIPE_THRESHOLD","wrapperClass","trackClass","actionsClass","actionBtnClass","contentClass","SwipeReveal","actions","children","onSwipeStart","onOpenChange","activeId","thisId","isOpen","trackEl","startX","startY","baseOffset","currentOffset","dragging","axisLocked","horizontal","moved","setTrackRef","el","applyTransform","px","style","transform","snap","toOpen","dataset","currentActive","undefined","onPointerDown","e","pointerType","button","clientX","clientY","currentTarget","setPointerCapture","pointerId","onPointerMove","dx","dy","Math","abs","next","onPointerUp","releasePointerCapture","shouldOpen","handleContentClick","stopPropagation","handleActionClick","action","onClick","_el0","cloneNode","_el1","firstChild","_el2","_el3","nextSibling","_insert","_setProp","map","label","background","color"],"sources":["../../src/components/SwipeReveal.jsx"],"sourcesContent":["import { css } from '@emotion/css'\nimport { createEffect, createSignal } from '@plastic-js/plastic'\n\nconst ACTIONS_WIDTH = 160\nconst SWIPE_THRESHOLD = ACTIONS_WIDTH / 2\n\nconst wrapperClass = css`\n\tposition: relative;\n\toverflow: hidden;\n\tborder-radius: 12px;\n\tuser-select: none;\n`\n\nconst trackClass = css`\n\tdisplay: flex;\n\talign-items: stretch;\n\twill-change: transform;\n\ttransition: transform 220ms ease;\n\ttouch-action: pan-y;\n\t&[data-dragging=\"true\"] { transition: none; }\n`\n\nconst actionsClass = css`\n\tflex: 0 0 ${ACTIONS_WIDTH}px;\n\tdisplay: flex;\n`\n\nconst actionBtnClass = css`\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tcolor: #fff;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tcursor: pointer;\n\tfont-family: inherit;\n`\n\nconst contentClass = css`\n\tflex: 0 0 100%;\n`\n\nconst SwipeReveal = ({\n\tactions, children, onSwipeStart, onOpenChange, activeId, thisId,\n})=> {\n\tconst isOpen = createSignal(false)\n\n\tlet trackEl = null\n\tlet startX = 0\n\tlet startY = 0\n\tlet baseOffset = 0\n\tlet currentOffset = 0\n\tlet dragging = false\n\tlet axisLocked = false\n\tlet horizontal = false\n\tlet moved = false\n\n\tconst setTrackRef = (el)=> { trackEl = el }\n\n\tconst applyTransform = (px)=> {\n\t\tif (trackEl){ trackEl.style.transform = `translateX(${px}px)` }\n\t}\n\n\tconst snap = (toOpen)=> {\n\t\tcurrentOffset = toOpen ? -ACTIONS_WIDTH : 0\n\t\tif (trackEl){\n\t\t\ttrackEl.dataset.dragging = 'false'\n\t\t\tapplyTransform(currentOffset)\n\t\t}\n\t\tonOpenChange?.(toOpen)\n\t\tisOpen(toOpen)\n\t}\n\n\t// only one card open at a time — close when another card's swipe activates\n\tcreateEffect(()=> {\n\t\tconst currentActive = typeof activeId === 'function' ? activeId() : activeId\n\t\tif (currentActive !== undefined && currentActive !== thisId && isOpen()){\n\t\t\tisOpen(false)\n\t\t\tcurrentOffset = 0\n\t\t\tif (trackEl){\n\t\t\t\ttrackEl.dataset.dragging = 'false'\n\t\t\t\tapplyTransform(0)\n\t\t\t}\n\t\t}\n\t})\n\n\tconst onPointerDown = (e)=> {\n\t\tif (e.pointerType === 'mouse' && e.button !== 0){ return }\n\t\tstartX = e.clientX\n\t\tstartY = e.clientY\n\t\tbaseOffset = isOpen() ? -ACTIONS_WIDTH : 0\n\t\tdragging = true\n\t\taxisLocked = false\n\t\thorizontal = false\n\t\tmoved = false\n\t\te.currentTarget.setPointerCapture?.(e.pointerId)\n\t}\n\n\tconst onPointerMove = (e)=> {\n\t\tif (!dragging){ return }\n\t\tconst dx = e.clientX - startX\n\t\tconst dy = e.clientY - startY\n\t\tif (!axisLocked){\n\t\t\tif (Math.abs(dx) < 6 && Math.abs(dy) < 6){ return }\n\t\t\thorizontal = Math.abs(dx) > Math.abs(dy)\n\t\t\taxisLocked = true\n\t\t\tif (horizontal && trackEl){ trackEl.dataset.dragging = 'true' }\n\t\t}\n\t\tif (!horizontal){ return }\n\t\tmoved = true\n\t\tlet next = baseOffset + dx\n\t\tif (next > 0){ next = 0 }\n\t\tif (next < -ACTIONS_WIDTH){ next = -ACTIONS_WIDTH - (next + ACTIONS_WIDTH) * 0.2 }\n\t\tcurrentOffset = next\n\t\tapplyTransform(next)\n\t}\n\n\tconst onPointerUp = (e)=> {\n\t\tif (!dragging){ return }\n\t\tdragging = false\n\t\te.currentTarget.releasePointerCapture?.(e.pointerId)\n\t\tif (!horizontal){ return }\n\t\tconst shouldOpen = currentOffset < -SWIPE_THRESHOLD\n\t\tsnap(shouldOpen)\n\t}\n\n\tconst handleContentClick = (e)=> {\n\t\tif (moved){ e.stopPropagation(); return }\n\t\tif (isOpen()){ e.stopPropagation(); snap(false); return }\n\t}\n\n\tconst handleActionClick = action=> (e)=> {\n\t\te.stopPropagation()\n\t\tsnap(false)\n\t\taction.onClick?.(e)\n\t}\n\n\treturn (\n\t\t<div className={wrapperClass}>\n\t\t\t<div\n\t\t\t\tclassName={trackClass}\n\t\t\t\tdata-dragging='false'\n\t\t\t\tonPointerCancel={onPointerUp}\n\t\t\t\tonPointerDown={onPointerDown}\n\t\t\t\tonPointerMove={onPointerMove}\n\t\t\t\tonPointerUp={onPointerUp}\n\t\t\t\tref={setTrackRef}\n\t\t\t>\n\t\t\t\t<div className={contentClass} onClick={handleContentClick}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t<div className={actionsClass}>\n\t\t\t\t\t{actions.map(action=> (\n\t\t\t\t\t\t// prevent tab focus when actions are hidden off-screen\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={actionBtnClass}\n\t\t\t\t\t\t\tonClick={handleActionClick(action)}\n\t\t\t\t\t\t\tstyle={{ background: action.color }}\n\t\t\t\t\t\t\ttabIndex={isOpen() ? 0 : -1}\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default SwipeReveal\n"],"mappings":";;;;AACgE,IAAAG,SAAAC,SAAA,mCAAA;AAAA,IAAAC,QAAAD,SAAA,sEAAA;AAEhE,IAAME,gBAAgB;AAGtB,IAAME,eAAeR,GAAG;;;;;;AAOxB,IAAMS,aAAaT,GAAG;;;;;;;;AAStB,IAAMU,eAAeV,GAAG;aACXM,cAAa;;;AAI1B,IAAMK,iBAAiBX,GAAG;;;;;;;;;;;;AAa1B,IAAMY,eAAeZ,GAAG;;;AAIxB,IAAMa,eAAe,EACpBC,SAASC,UAAUC,cAAcC,cAAcC,UAAUC,aACrD;CACJ,MAAMC,SAASlB,aAAa,KAAK;CAEjC,IAAImB,UAAU;CACd,IAAIC,SAAS;CACb,IAAIC,SAAS;CACb,IAAIC,aAAa;CACjB,IAAIC,gBAAgB;CACpB,IAAIC,WAAW;CACf,IAAIC,aAAa;CACjB,IAAIC,aAAa;CACjB,IAAIC,QAAQ;CAEZ,MAAMC,eAAeC,OAAM;EAAEV,UAAUU;CAAG;CAE1C,MAAMC,kBAAkBC,OAAM;EAC7B,IAAIZ,SAAUA,QAAQa,MAAMC,YAAY,cAAcF,GAAE;CACzD;CAEA,MAAMG,QAAQC,WAAU;EACvBZ,gBAAgBY,SAAS,OAAiB;EAC1C,IAAIhB,SAAQ;GACXA,QAAQiB,QAAQZ,WAAW;GAC3BM,eAAeP,aAAa;EAC7B;EACAR,eAAeoB,MAAM;EACrBjB,OAAOiB,MAAM;CACd;CAGApC,mBAAkB;EACjB,MAAMsC,gBAAgB,OAAOrB,aAAa,aAAaA,SAAS,IAAIA;EACpE,IAAIqB,kBAAkBC,KAAAA,KAAaD,kBAAkBpB,UAAUC,OAAO,GAAE;GACvEA,OAAO,KAAK;GACZK,gBAAgB;GAChB,IAAIJ,SAAQ;IACXA,QAAQiB,QAAQZ,WAAW;IAC3BM,eAAe,CAAC;GACjB;EACD;CACD,CAAC;CAED,MAAMS,iBAAiBC,MAAK;EAC3B,IAAIA,EAAEC,gBAAgB,WAAWD,EAAEE,WAAW,GAAI;EAClDtB,SAASoB,EAAEG;EACXtB,SAASmB,EAAEI;EACXtB,aAAaJ,OAAO,IAAI,OAAiB;EACzCM,WAAW;EACXC,aAAa;EACbC,aAAa;EACbC,QAAQ;EACRa,EAAEK,cAAcC,oBAAoBN,EAAEO,SAAS;CAChD;CAEA,MAAMC,iBAAiBR,MAAK;EAC3B,IAAI,CAAChB,UAAW;EAChB,MAAMyB,KAAKT,EAAEG,UAAUvB;EACvB,MAAM8B,KAAKV,EAAEI,UAAUvB;EACvB,IAAI,CAACI,YAAW;GACf,IAAI0B,KAAKC,IAAIH,EAAE,IAAI,KAAKE,KAAKC,IAAIF,EAAE,IAAI,GAAI;GAC3CxB,aAAayB,KAAKC,IAAIH,EAAE,IAAIE,KAAKC,IAAIF,EAAE;GACvCzB,aAAa;GACb,IAAIC,cAAcP,SAAUA,QAAQiB,QAAQZ,WAAW;EACxD;EACA,IAAI,CAACE,YAAa;EAClBC,QAAQ;EACR,IAAI0B,OAAO/B,aAAa2B;EACxB,IAAII,OAAO,GAAIA,OAAO;EACtB,IAAIA,OAAO,MAAiBA,OAAO,QAAkBA,OAAOjD,iBAAiB;EAC7EmB,gBAAgB8B;EAChBvB,eAAeuB,IAAI;CACpB;CAEA,MAAMC,eAAed,MAAK;EACzB,IAAI,CAAChB,UAAW;EAChBA,WAAW;EACXgB,EAAEK,cAAcU,wBAAwBf,EAAEO,SAAS;EACnD,IAAI,CAACrB,YAAa;EAElBQ,KADmBX,gBAAgB,GACpB;CAChB;CAEA,MAAMkC,sBAAsBjB,MAAK;EAChC,IAAIb,OAAM;GAAEa,EAAEkB,gBAAgB;GAAG;EAAO;EACxC,IAAIxC,OAAO,GAAE;GAAEsB,EAAEkB,gBAAgB;GAAGxB,KAAK,KAAK;GAAG;EAAO;CACzD;CAEA,MAAMyB,qBAAoBC,YAAUpB,MAAK;EACxCA,EAAEkB,gBAAgB;EAClBxB,KAAK,KAAK;EACV0B,OAAOC,UAAUrB,CAAC;CACnB;CAEA,aAAA;EAAA,MAAAsB,OAAA3D,MAAA4D,UAAA,IAAA;EAAA,MAAAC,OAAAF,KAAAG;EAAA,MAAAC,OAAAF,KAAAC;EAAA,MAAAE,OAAAH,KAAAC,WAAAG;EAAAC,OAAAH,YAYKrD,QAAQ;EAAAyD,QAAAJ,MAAA,mBADMxD,YAAY;EAAA4D,QAAAJ,MAAA,iBAAWT,kBAAkB;EAAAY,OAAAF,YAIvDvD,QAAQ2D,KAAIX,iBACZ;GAAA,MAAAE,OAAA7D,OAAA8D,UAAA,IAAA;GAAAM,OAAAP,YAQEF,OAAOY,KAAK;GAAAF,QAAAR,MAAA,mBANFrD,cAAc;GAAA6D,QAAAR,MAAA,iBAChBH,kBAAkBC,MAAM,CAAC;GAAAU,QAAAR,MAAA,gBAC3B,EAAEW,YAAYb,OAAOc,MAAM,EAAC;GAAAJ,QAAAR,MAAA,kBACzB5C,OAAO,IAAI,IAAI,EAAE;GAAA,OAAA4C;EAAA,CAK5B,CAAC;EAAAQ,QAAAH,MAAA,mBAZa3D,YAAY;EAAA8D,QAAAN,MAAA,mBAXjBzD,UAAU;EAAA+D,QAAAN,MAAA,yBAEJV,WAAW;EAAAgB,QAAAN,MAAA,uBACbzB,aAAa;EAAA+B,QAAAN,MAAA,uBACbhB,aAAa;EAAAsB,QAAAN,MAAA,qBACfV,WAAW;EAAAgB,QAAAN,MAAA,aACnBpC,WAAW;EAAA0C,QAAAR,MAAA,mBARFxD,YAAY;EAAA,OAAAwD;CAAA;AA8B9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.js","names":["Switch"],"sources":["../../src/components/Switch.jsx"],"sourcesContent":["import { Switch } from '@plastic-js/ark'\n\nexport default Switch\n"],"mappings":";;AAEA,IAAA,iBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","names":["Tabs"],"sources":["../../src/components/Tabs.jsx"],"sourcesContent":["import { Tabs } from '@plastic-js/ark'\n\nexport default Tabs\n"],"mappings":";;AAEA,IAAA,eAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagsInput.js","names":["TagsInput"],"sources":["../../src/components/TagsInput.jsx"],"sourcesContent":["import { TagsInput } from '@plastic-js/ark'\n\nexport default TagsInput\n"],"mappings":";;AAEA,IAAA,oBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","names":["Toast","createToaster","Object","assign"],"sources":["../../src/components/Toast.jsx"],"sourcesContent":["import { Toast, createToaster } from '@plastic-js/ark'\n\nexport default Object.assign(Toast, { createToaster })\n"],"mappings":";;AAEA,IAAA,gBAAeE,OAAOC,OAAOH,OAAO,EAAEC,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toggle.js","names":["Toggle"],"sources":["../../src/components/Toggle.jsx"],"sourcesContent":["import { Toggle } from '@plastic-js/ark'\n\nexport default Toggle\n"],"mappings":";;AAEA,IAAA,iBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.js","names":["ToggleGroup"],"sources":["../../src/components/ToggleGroup.jsx"],"sourcesContent":["import { ToggleGroup } from '@plastic-js/ark'\n\nexport default ToggleGroup\n"],"mappings":";;AAEA,IAAA,sBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.js","names":["Tooltip"],"sources":["../../src/components/Tooltip.jsx"],"sourcesContent":["import { Tooltip } from '@plastic-js/ark'\n\nexport default Tooltip\n"],"mappings":";;AAEA,IAAA,kBAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tour.js","names":["Tour"],"sources":["../../src/components/Tour.jsx"],"sourcesContent":["import { Tour } from '@plastic-js/ark'\n\nexport default Tour\n"],"mappings":";;AAEA,IAAA,eAAeA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeView.js","names":["TreeView"],"sources":["../../src/components/TreeView.jsx"],"sourcesContent":["import { TreeView } from '@plastic-js/ark'\n\nexport default TreeView\n"],"mappings":";;AAEA,IAAA,mBAAeA"}
|