@powerhousedao/design-system 1.27.0 → 1.28.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.
Files changed (39) hide show
  1. package/dist/connect/components/breadcrumbs/breadcrumbs.js +41 -41
  2. package/dist/connect/components/breadcrumbs/breadcrumbs.js.map +1 -1
  3. package/dist/connect/components/breadcrumbs/useBreadcrumbs.js +28 -0
  4. package/dist/connect/components/breadcrumbs/useBreadcrumbs.js.map +1 -0
  5. package/dist/connect/components/file-item/file-item.js +71 -81
  6. package/dist/connect/components/file-item/file-item.js.map +1 -1
  7. package/dist/connect/components/folder-item/folder-item.js +66 -66
  8. package/dist/connect/components/folder-item/folder-item.js.map +1 -1
  9. package/dist/connect/components/search-bar/search-bar.js +26 -24
  10. package/dist/connect/components/search-bar/search-bar.js.map +1 -1
  11. package/dist/connect/constants/options.js +1 -9
  12. package/dist/connect/constants/options.js.map +1 -1
  13. package/dist/connect/hooks/drag-and-drop/use-drop.js.map +1 -1
  14. package/dist/index.js +389 -385
  15. package/dist/index.js.map +1 -1
  16. package/dist/powerhouse/hooks/useWindowSize.js +22 -0
  17. package/dist/powerhouse/hooks/useWindowSize.js.map +1 -0
  18. package/dist/src/connect/components/breadcrumbs/breadcrumbs.d.ts +13 -4
  19. package/dist/src/connect/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  20. package/dist/src/connect/components/breadcrumbs/index.d.ts +1 -0
  21. package/dist/src/connect/components/breadcrumbs/index.d.ts.map +1 -1
  22. package/dist/src/connect/components/breadcrumbs/useBreadcrumbs.d.ts +15 -0
  23. package/dist/src/connect/components/breadcrumbs/useBreadcrumbs.d.ts.map +1 -0
  24. package/dist/src/connect/components/file-item/file-item.d.ts +10 -5
  25. package/dist/src/connect/components/file-item/file-item.d.ts.map +1 -1
  26. package/dist/src/connect/components/folder-item/folder-item.d.ts +10 -2
  27. package/dist/src/connect/components/folder-item/folder-item.d.ts.map +1 -1
  28. package/dist/src/connect/components/search-bar/search-bar.d.ts +1 -0
  29. package/dist/src/connect/components/search-bar/search-bar.d.ts.map +1 -1
  30. package/dist/src/connect/constants/options.d.ts +3 -3
  31. package/dist/src/connect/constants/options.d.ts.map +1 -1
  32. package/dist/src/connect/hooks/drag-and-drop/use-drop.d.ts +1 -1
  33. package/dist/src/connect/hooks/drag-and-drop/use-drop.d.ts.map +1 -1
  34. package/dist/src/connect/utils/mocks/ui-drive-node.d.ts +9 -9
  35. package/dist/src/powerhouse/hooks/index.d.ts +1 -0
  36. package/dist/src/powerhouse/hooks/index.d.ts.map +1 -1
  37. package/dist/src/powerhouse/hooks/useWindowSize.d.ts +5 -0
  38. package/dist/src/powerhouse/hooks/useWindowSize.d.ts.map +1 -0
  39. package/package.json +2 -2
@@ -1,63 +1,63 @@
1
- import { jsxs as l, jsx as r, Fragment as d } from "react/jsx-runtime";
2
- import { useState as f, createElement as g } from "react";
3
- import { NodeInput as N } from "../node-input/node-input.js";
4
- import { Icon as p } from "../../../powerhouse/components/icon/icon.js";
5
- function A(e) {
6
- const {
7
- selectedNodePath: t,
8
- isAllowedToCreateDocuments: o,
9
- onAddAndSelectNewFolder: s
10
- } = e, [c, a] = f(!1);
11
- function i() {
12
- a(!0);
13
- }
14
- async function m(n) {
15
- await s(n), a(!1);
16
- }
1
+ import { jsxs as l, jsx as n } from "react/jsx-runtime";
2
+ import { useState as g, useCallback as i, Fragment as p } from "react";
3
+ import { NodeInput as x } from "../node-input/node-input.js";
4
+ import { Icon as y } from "../../../powerhouse/components/icon/icon.js";
5
+ function w(t) {
6
+ const { breadcrumbs: e, createEnabled: r, onBreadcrumbSelected: d } = t, [m, o] = g(!1), c = t.createEnabled ? t.onCreate : void 0;
17
7
  function u() {
18
- a(!1);
8
+ o(!0);
19
9
  }
10
+ const f = i(
11
+ (a) => {
12
+ var s;
13
+ !r || !c || (c(a, (s = e.at(-1)) == null ? void 0 : s.id), o(!1));
14
+ },
15
+ [e, r, c]
16
+ ), b = i(() => {
17
+ o(!1);
18
+ }, []);
20
19
  return /* @__PURE__ */ l("div", { className: "flex h-9 flex-row items-center gap-2 p-6 text-gray-500", children: [
21
- t.map((n) => /* @__PURE__ */ g(x, { ...e, key: n.id, node: n })),
22
- o ? /* @__PURE__ */ r(d, { children: c ? /* @__PURE__ */ r(
23
- N,
20
+ e.map((a) => /* @__PURE__ */ l(p, { children: [
21
+ /* @__PURE__ */ n(h, { node: a, onClick: d }),
22
+ /* @__PURE__ */ n("span", { children: "/" })
23
+ ] }, a.id)),
24
+ r && (m ? /* @__PURE__ */ n(
25
+ x,
24
26
  {
25
27
  className: "text-gray-800",
26
28
  defaultValue: "New Folder",
27
- onCancel: u,
28
- onSubmit: m,
29
+ onCancel: b,
30
+ onSubmit: f,
29
31
  placeholder: "New Folder"
30
32
  }
31
33
  ) : /* @__PURE__ */ l(
32
34
  "button",
33
35
  {
36
+ type: "button",
34
37
  className: "ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800",
35
- onClick: i,
38
+ onClick: u,
36
39
  children: [
37
- /* @__PURE__ */ r(p, { name: "Plus", size: 14 }),
40
+ /* @__PURE__ */ n(y, { name: "Plus", size: 14 }),
38
41
  "Add new"
39
42
  ]
40
43
  }
41
- ) }) : null
44
+ ))
42
45
  ] });
43
46
  }
44
- function x(e) {
45
- const { node: t, setSelectedNode: o } = e;
46
- return /* @__PURE__ */ l(d, { children: [
47
- /* @__PURE__ */ r(
48
- "div",
49
- {
50
- className: "transition-colors last-of-type:text-gray-800 hover:text-gray-800",
51
- onClick: () => o(t),
52
- role: "button",
53
- children: t.name
54
- }
55
- ),
56
- "/"
57
- ] });
47
+ function h(t) {
48
+ const { node: e, onClick: r } = t;
49
+ return /* @__PURE__ */ n(
50
+ "div",
51
+ {
52
+ className: "transition-colors last-of-type:text-gray-800 hover:text-gray-800",
53
+ onClick: () => r(e),
54
+ role: "button",
55
+ children: e.name
56
+ }
57
+ );
58
58
  }
59
59
  export {
60
- x as Breadcrumb,
61
- A as Breadcrumbs
60
+ h as Breadcrumb,
61
+ w as Breadcrumbs
62
62
  };
63
63
  //# sourceMappingURL=breadcrumbs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.js","sources":["../../../../src/connect/components/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import { NodeInput, NodeProps, TUiNodesContext, UiNode } from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { useState } from \"react\";\n\nexport type BreadcrumbsProps = NodeProps & TUiNodesContext;\n\nexport function Breadcrumbs(props: BreadcrumbsProps) {\n const {\n selectedNodePath,\n isAllowedToCreateDocuments,\n onAddAndSelectNewFolder,\n } = props;\n const [isAddingNewItem, setIsAddingNewFolder] = useState(false);\n\n function onAddNew() {\n setIsAddingNewFolder(true);\n }\n\n async function onSubmit(name: string) {\n await onAddAndSelectNewFolder(name);\n setIsAddingNewFolder(false);\n }\n\n function onCancel() {\n setIsAddingNewFolder(false);\n }\n\n return (\n <div className=\"flex h-9 flex-row items-center gap-2 p-6 text-gray-500\">\n {selectedNodePath.map((node) => (\n <Breadcrumb {...props} key={node.id} node={node} />\n ))}\n {isAllowedToCreateDocuments ? (\n <>\n {isAddingNewItem ? (\n <NodeInput\n className=\"text-gray-800\"\n defaultValue=\"New Folder\"\n onCancel={onCancel}\n onSubmit={onSubmit}\n placeholder=\"New Folder\"\n />\n ) : (\n <button\n className=\"ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800\"\n onClick={onAddNew}\n >\n <Icon name=\"Plus\" size={14} />\n Add new\n </button>\n )}\n </>\n ) : null}\n </div>\n );\n}\n\nexport type BreadcrumbProps = BreadcrumbsProps & {\n readonly node: UiNode;\n};\n\nexport function Breadcrumb(props: BreadcrumbProps) {\n const { node, setSelectedNode } = props;\n\n return (\n <>\n <div\n className=\"transition-colors last-of-type:text-gray-800 hover:text-gray-800\"\n onClick={() => setSelectedNode(node)}\n role=\"button\"\n >\n {node.name}\n </div>\n /\n </>\n );\n}\n"],"names":["Breadcrumbs","props","selectedNodePath","isAllowedToCreateDocuments","onAddAndSelectNewFolder","isAddingNewItem","setIsAddingNewFolder","useState","onAddNew","onSubmit","name","onCancel","jsxs","node","createElement","Breadcrumb","jsx","NodeInput","Icon","setSelectedNode","Fragment"],"mappings":";;;;AAMO,SAASA,EAAYC,GAAyB;AAC7C,QAAA;AAAA,IACJ,kBAAAC;AAAA,IACA,4BAAAC;AAAA,IACA,yBAAAC;AAAA,EAAA,IACEH,GACE,CAACI,GAAiBC,CAAoB,IAAIC,EAAS,EAAK;AAE9D,WAASC,IAAW;AAClB,IAAAF,EAAqB,EAAI;AAAA,EAAA;AAG3B,iBAAeG,EAASC,GAAc;AACpC,UAAMN,EAAwBM,CAAI,GAClCJ,EAAqB,EAAK;AAAA,EAAA;AAG5B,WAASK,IAAW;AAClB,IAAAL,EAAqB,EAAK;AAAA,EAAA;AAI1B,SAAA,gBAAAM,EAAC,OAAI,EAAA,WAAU,0DACZ,UAAA;AAAA,IAAiBV,EAAA,IAAI,CAACW,MACpB,gBAAAC,EAAAC,GAAA,EAAY,GAAGd,GAAO,KAAKY,EAAK,IAAI,MAAAA,EAAY,CAAA,CAClD;AAAA,IACAV,2BAEI,UACCE,IAAA,gBAAAW;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,cAAa;AAAA,QACb,UAAAN;AAAA,QACA,UAAAF;AAAA,QACA,aAAY;AAAA,MAAA;AAAA,IAAA,IAGd,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAASJ;AAAA,QAET,UAAA;AAAA,UAAA,gBAAAQ,EAACE,GAAK,EAAA,MAAK,QAAO,MAAM,IAAI;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,OAIpC,IACE;AAAA,EAAA,GACN;AAEJ;AAMO,SAASH,EAAWd,GAAwB;AAC3C,QAAA,EAAE,MAAAY,GAAM,iBAAAM,EAAA,IAAoBlB;AAElC,SAEI,gBAAAW,EAAAQ,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAJ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAMG,EAAgBN,CAAI;AAAA,QACnC,MAAK;AAAA,QAEJ,UAAKA,EAAA;AAAA,MAAA;AAAA,IACR;AAAA,IAAM;AAAA,EAAA,GAER;AAEJ;"}
1
+ {"version":3,"file":"breadcrumbs.js","sources":["../../../../src/connect/components/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import { NodeInput } from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { Fragment, useCallback, useState } from \"react\";\n\nexport type BreadcrumbNode = {\n id: string;\n name: string;\n};\n\nexport type BreadcrumbsProps<T extends boolean = boolean> = {\n breadcrumbs: BreadcrumbNode[];\n onBreadcrumbSelected: (node: BreadcrumbNode) => void;\n createEnabled?: T;\n onCreate: T extends true\n ? (name: string, parentFolder: string | undefined) => void\n : never;\n};\n\nexport function Breadcrumbs(props: BreadcrumbsProps) {\n const { breadcrumbs, createEnabled, onBreadcrumbSelected } = props;\n const [isCreating, setIsCreating] = useState(false);\n const onCreate = props.createEnabled ? props.onCreate : undefined;\n\n function onAddNew() {\n setIsCreating(true);\n }\n\n const onSubmit = useCallback(\n (name: string) => {\n if (!createEnabled || !onCreate) return;\n onCreate(name, breadcrumbs.at(-1)?.id);\n setIsCreating(false);\n },\n [breadcrumbs, createEnabled, onCreate],\n );\n\n const onCancel = useCallback(() => {\n setIsCreating(false);\n }, []);\n\n return (\n <div className=\"flex h-9 flex-row items-center gap-2 p-6 text-gray-500\">\n {breadcrumbs.map((node) => (\n <Fragment key={node.id}>\n <Breadcrumb node={node} onClick={onBreadcrumbSelected} />\n <span>/</span>\n </Fragment>\n ))}\n {createEnabled &&\n (isCreating ? (\n <NodeInput\n className=\"text-gray-800\"\n defaultValue=\"New Folder\"\n onCancel={onCancel}\n onSubmit={onSubmit}\n placeholder=\"New Folder\"\n />\n ) : (\n <button\n type=\"button\"\n className=\"ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800\"\n onClick={onAddNew}\n >\n <Icon name=\"Plus\" size={14} />\n Add new\n </button>\n ))}\n </div>\n );\n}\n\nexport type BreadcrumbProps = {\n node: BreadcrumbNode;\n onClick: (node: BreadcrumbNode) => void;\n};\n\nexport function Breadcrumb(props: BreadcrumbProps) {\n const { node, onClick } = props;\n\n return (\n <div\n className=\"transition-colors last-of-type:text-gray-800 hover:text-gray-800\"\n onClick={() => onClick(node)}\n role=\"button\"\n >\n {node.name}\n </div>\n );\n}\n"],"names":["Breadcrumbs","props","breadcrumbs","createEnabled","onBreadcrumbSelected","isCreating","setIsCreating","useState","onCreate","onAddNew","onSubmit","useCallback","name","_a","onCancel","jsxs","node","Fragment","jsx","Breadcrumb","NodeInput","Icon","onClick"],"mappings":";;;;AAkBO,SAASA,EAAYC,GAAyB;AACnD,QAAM,EAAE,aAAAC,GAAa,eAAAC,GAAe,sBAAAC,EAAyB,IAAAH,GACvD,CAACI,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5CC,IAAWP,EAAM,gBAAgBA,EAAM,WAAW;AAExD,WAASQ,IAAW;AAClB,IAAAH,EAAc,EAAI;AAAA,EAAA;AAGpB,QAAMI,IAAWC;AAAA,IACf,CAACC,MAAiB;;AACZ,MAAA,CAACT,KAAiB,CAACK,MACvBA,EAASI,IAAMC,IAAAX,EAAY,GAAG,EAAE,MAAjB,gBAAAW,EAAoB,EAAE,GACrCP,EAAc,EAAK;AAAA,IACrB;AAAA,IACA,CAACJ,GAAaC,GAAeK,CAAQ;AAAA,EACvC,GAEMM,IAAWH,EAAY,MAAM;AACjC,IAAAL,EAAc,EAAK;AAAA,EACrB,GAAG,EAAE;AAGH,SAAA,gBAAAS,EAAC,OAAI,EAAA,WAAU,0DACZ,UAAA;AAAA,IAAAb,EAAY,IAAI,CAACc,MAChB,gBAAAD,EAACE,GACC,EAAA,UAAA;AAAA,MAAC,gBAAAC,EAAAC,GAAA,EAAW,MAAAH,GAAY,SAASZ,EAAsB,CAAA;AAAA,MACvD,gBAAAc,EAAC,UAAK,UAAC,IAAA,CAAA;AAAA,IAAA,KAFMF,EAAK,EAGpB,CACD;AAAA,IACAb,MACEE,IACC,gBAAAa;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,cAAa;AAAA,QACb,UAAAN;AAAA,QACA,UAAAJ;AAAA,QACA,aAAY;AAAA,MAAA;AAAA,IAAA,IAGd,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAASN;AAAA,QAET,UAAA;AAAA,UAAA,gBAAAS,EAACG,GAAK,EAAA,MAAK,QAAO,MAAM,IAAI;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAEhC;AAAA,EAAA,GAEN;AAEJ;AAOO,SAASF,EAAWlB,GAAwB;AAC3C,QAAA,EAAE,MAAAe,GAAM,SAAAM,EAAA,IAAYrB;AAGxB,SAAA,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAMI,EAAQN,CAAI;AAAA,MAC3B,MAAK;AAAA,MAEJ,UAAKA,EAAA;AAAA,IAAA;AAAA,EACR;AAEJ;"}
@@ -0,0 +1,28 @@
1
+ import { useMemo as c, useCallback as e } from "react";
2
+ function t({
3
+ selectedNodePath: o,
4
+ getNodeById: r,
5
+ setSelectedNode: i
6
+ }) {
7
+ const m = c(
8
+ () => o.map((n) => ({
9
+ id: n.id,
10
+ name: n.name
11
+ })),
12
+ [o]
13
+ ), u = e(
14
+ (n) => {
15
+ const s = r(n.id);
16
+ s ? i(s) : console.error(`Node with id ${n.id} not found`, n);
17
+ },
18
+ [r, i]
19
+ );
20
+ return {
21
+ breadcrumbs: m,
22
+ onBreadcrumbSelected: u
23
+ };
24
+ }
25
+ export {
26
+ t as useBreadcrumbs
27
+ };
28
+ //# sourceMappingURL=useBreadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBreadcrumbs.js","sources":["../../../../src/connect/components/breadcrumbs/useBreadcrumbs.ts"],"sourcesContent":["import { BreadcrumbNode, UiNode } from \"@/connect\";\nimport { useCallback, useMemo } from \"react\";\n\ninterface UseBreadcrumbsProps {\n selectedNodePath: UiNode[];\n getNodeById: (id: string) => UiNode | null;\n setSelectedNode: (node: UiNode | null) => void;\n}\n\nexport function useBreadcrumbs({\n selectedNodePath,\n getNodeById,\n setSelectedNode,\n}: UseBreadcrumbsProps) {\n const breadcrumbs = useMemo(\n () =>\n selectedNodePath.map((node) => ({\n id: node.id,\n name: node.name,\n })),\n [selectedNodePath],\n );\n\n const onBreadcrumbSelected = useCallback(\n (breadcrumb: BreadcrumbNode) => {\n const node = getNodeById(breadcrumb.id);\n if (node) {\n setSelectedNode(node);\n } else {\n console.error(`Node with id ${breadcrumb.id} not found`, breadcrumb);\n }\n },\n [getNodeById, setSelectedNode],\n );\n\n return {\n breadcrumbs,\n onBreadcrumbSelected,\n };\n}\n"],"names":["useBreadcrumbs","selectedNodePath","getNodeById","setSelectedNode","breadcrumbs","useMemo","node","onBreadcrumbSelected","useCallback","breadcrumb"],"mappings":";AASO,SAASA,EAAe;AAAA,EAC7B,kBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AACF,GAAwB;AACtB,QAAMC,IAAcC;AAAA,IAClB,MACEJ,EAAiB,IAAI,CAACK,OAAU;AAAA,MAC9B,IAAIA,EAAK;AAAA,MACT,MAAMA,EAAK;AAAA,IAAA,EACX;AAAA,IACJ,CAACL,CAAgB;AAAA,EACnB,GAEMM,IAAuBC;AAAA,IAC3B,CAACC,MAA+B;AACxB,YAAAH,IAAOJ,EAAYO,EAAW,EAAE;AACtC,MAAIH,IACFH,EAAgBG,CAAI,IAEpB,QAAQ,MAAM,gBAAgBG,EAAW,EAAE,cAAcA,CAAU;AAAA,IAEvE;AAAA,IACA,CAACP,GAAaC,CAAe;AAAA,EAC/B;AAEO,SAAA;AAAA,IACL,aAAAC;AAAA,IACA,sBAAAG;AAAA,EACF;AACF;"}
@@ -1,125 +1,115 @@
1
- import { jsxs as r, jsx as o } from "react/jsx-runtime";
2
- import { useState as p } from "react";
3
- import { twMerge as f } from "tailwind-merge";
4
- import { READ as i, FILE as U, WRITE as z } from "../../constants/nodes.js";
5
- import { useDrag as H } from "../../hooks/drag-and-drop/use-drag.js";
6
- import { nodeOptionsMap as K, DUPLICATE as W, RENAME as $, DELETE as q, ADD_TRIGGER as B, REMOVE_TRIGGER as J, ADD_INVALID_TRIGGER as Q } from "../../constants/options.js";
7
- import { getDocumentIconSrc as X } from "../../utils/get-document-icon-src.js";
8
- import { SyncStatusIcon as Y } from "../status-icon/sync-status-icon.js";
9
- import { ConnectDropdownMenu as Z } from "../dropdown-menu/dropdown-menu.js";
10
- import { Icon as ee } from "../../../powerhouse/components/icon/icon.js";
11
- import { NodeInput as oe } from "../node-input/node-input.js";
12
- function pe(a) {
13
- var u;
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import { useState as m } from "react";
3
+ import { twMerge as d } from "tailwind-merge";
4
+ import { READ as c, WRITE as R } from "../../constants/nodes.js";
5
+ import { useDrag as j } from "../../hooks/drag-and-drop/use-drag.js";
6
+ import { nodeOptionsMap as A, defaultFileOptions as F, DUPLICATE as P, RENAME as L, DELETE as U } from "../../constants/options.js";
7
+ import { getDocumentIconSrc as V } from "../../utils/get-document-icon-src.js";
8
+ import { SyncStatusIcon as z } from "../status-icon/sync-status-icon.js";
9
+ import { ConnectDropdownMenu as H } from "../dropdown-menu/dropdown-menu.js";
10
+ import { Icon as W } from "../../../powerhouse/components/icon/icon.js";
11
+ import { NodeInput as $ } from "../node-input/node-input.js";
12
+ function oe(u) {
14
13
  const {
15
- uiNode: e,
16
- selectedNodePath: c,
17
- nodeOptions: h,
18
- isAllowedToCreateDocuments: g,
19
- isRemoteDrive: N,
20
- customDocumentIconSrc: v,
21
- className: x,
22
- setSelectedNode: I,
23
- onRenameNode: D,
24
- onDuplicateNode: y,
25
- onDeleteNode: E,
26
- onAddTrigger: S,
27
- onRemoveTrigger: w,
28
- onAddInvalidTrigger: R
29
- } = a, [T, s] = p(i), [l, d] = p(!1), { dragProps: C } = H(a), m = T === i, M = f(
30
- "group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800",
31
- x
32
- ), b = {
33
- [W]: () => y(e),
34
- [$]: () => s(z),
35
- [q]: () => E(e),
36
- [B]: () => S(e.driveId),
37
- [J]: () => w(e.driveId),
38
- [Q]: () => R(e.driveId)
39
- }, O = h[e.sharingType][U], A = Object.entries(K).map(([n, t]) => ({
14
+ uiNode: o,
15
+ className: p,
16
+ customDocumentIconSrc: f,
17
+ onSelectNode: h,
18
+ onRenameNode: N,
19
+ onDuplicateNode: g,
20
+ onDeleteNode: x,
21
+ isAllowedToCreateDocuments: v
22
+ } = u, [y, s] = m(c), [a, i] = m(!1), { dragProps: S } = j({ uiNode: o }), l = y === c, w = {
23
+ [P]: () => g(o),
24
+ [L]: () => s(R),
25
+ [U]: () => x(o)
26
+ }, D = Object.entries(A).map(([n, t]) => ({
40
27
  ...t,
41
28
  id: n
42
- })).filter((n) => O.includes(n.id));
43
- function k(n) {
44
- D(n, e), s(i);
29
+ })).filter((n) => F.includes(n.id));
30
+ function C(n) {
31
+ N(n, o), s(c);
45
32
  }
46
- function G() {
47
- s(i);
33
+ function b() {
34
+ s(c);
48
35
  }
49
- function j() {
50
- I(e);
36
+ function M() {
37
+ h(o);
51
38
  }
52
- function F(n) {
53
- const t = b[n];
39
+ function I(n) {
40
+ const t = w[n];
54
41
  if (!t) {
55
42
  console.error(`No handler found for dropdown menu item: ${n}`);
56
43
  return;
57
44
  }
58
- t(e), d(!1);
45
+ t(), i(!1);
59
46
  }
60
- const L = X(
61
- e.documentType,
62
- v
63
- ), P = /* @__PURE__ */ r("div", { className: "relative", children: [
64
- /* @__PURE__ */ o(
47
+ const E = V(
48
+ o.documentType,
49
+ f
50
+ ), O = /* @__PURE__ */ r("div", { className: "relative", children: [
51
+ /* @__PURE__ */ e(
65
52
  "img",
66
53
  {
67
54
  alt: "file icon",
68
55
  className: "max-w-none",
69
56
  height: 34,
70
- src: L,
57
+ src: E,
71
58
  width: 32
72
59
  }
73
60
  ),
74
- m && N && e.syncStatus ? /* @__PURE__ */ o("div", { className: "absolute bottom-[-2px] right-0 size-3 rounded-full bg-white", children: /* @__PURE__ */ o("div", { className: "absolute left-[-2px] top-[-2px]", children: /* @__PURE__ */ o(
75
- Y,
61
+ l && o.syncStatus && /* @__PURE__ */ e("div", { className: "absolute bottom-[-2px] right-0 size-3 rounded-full bg-white", children: /* @__PURE__ */ e("div", { className: "absolute left-[-2px] top-[-2px]", children: /* @__PURE__ */ e(
62
+ z,
76
63
  {
77
64
  overrideSyncIcons: { SUCCESS: "CheckCircleFill" },
78
- syncStatus: e.syncStatus
65
+ syncStatus: o.syncStatus
79
66
  }
80
- ) }) }) : null
81
- ] }), V = ((u = c.at(-1)) == null ? void 0 : u.kind) === "FILE" ? c.slice(0, -1) : c, _ = m ? /* @__PURE__ */ r("div", { className: "flex w-52 items-center justify-between", children: [
67
+ ) }) })
68
+ ] }), k = d(
69
+ "group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800",
70
+ p
71
+ ), T = l ? /* @__PURE__ */ r("div", { className: "flex w-52 items-center justify-between", children: [
82
72
  /* @__PURE__ */ r("div", { className: "mr-2 truncate group-hover:mr-0", children: [
83
- /* @__PURE__ */ o("div", { className: "max-h-6 truncate text-sm font-medium group-hover:text-gray-800", children: e.name }),
84
- /* @__PURE__ */ o("div", { className: "max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800", children: "documentType" in e ? e.documentType : V.map((n) => n.name).join(" / ") })
73
+ /* @__PURE__ */ e("div", { className: "max-h-6 truncate text-sm font-medium group-hover:text-gray-800", children: o.name }),
74
+ /* @__PURE__ */ e("div", { className: "max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800", children: o.documentType })
85
75
  ] }),
86
- g ? /* @__PURE__ */ o(
87
- Z,
76
+ v ? /* @__PURE__ */ e(
77
+ H,
88
78
  {
89
- items: A,
90
- onItemClick: F,
91
- onOpenChange: d,
92
- open: l,
93
- children: /* @__PURE__ */ o(
79
+ items: D,
80
+ onItemClick: I,
81
+ onOpenChange: i,
82
+ open: a,
83
+ children: /* @__PURE__ */ e(
94
84
  "button",
95
85
  {
96
- className: f(
86
+ className: d(
97
87
  "hidden group-hover:block",
98
- l && "block"
88
+ a && "block"
99
89
  ),
100
90
  onClick: (n) => {
101
- n.stopPropagation(), d(!0);
91
+ n.stopPropagation(), i(!0);
102
92
  },
103
- children: /* @__PURE__ */ o(ee, { className: "text-gray-600", name: "VerticalDots" })
93
+ children: /* @__PURE__ */ e(W, { className: "text-gray-600", name: "VerticalDots" })
104
94
  }
105
95
  )
106
96
  }
107
97
  ) : null
108
- ] }) : /* @__PURE__ */ o(
109
- oe,
98
+ ] }) : /* @__PURE__ */ e(
99
+ $,
110
100
  {
111
101
  className: "ml-3 flex-1 font-medium",
112
- defaultValue: e.name,
113
- onCancel: G,
114
- onSubmit: k
102
+ defaultValue: o.name,
103
+ onCancel: b,
104
+ onSubmit: C
115
105
  }
116
106
  );
117
- return /* @__PURE__ */ o("div", { className: "relative w-64", onClick: j, children: /* @__PURE__ */ o("div", { ...C, className: M, children: /* @__PURE__ */ r("div", { className: "flex items-center", children: [
118
- /* @__PURE__ */ o("div", { className: "mr-1.5", children: P }),
119
- _
107
+ return /* @__PURE__ */ e("div", { className: "relative w-64", onClick: M, children: /* @__PURE__ */ e("div", { ...S, className: k, children: /* @__PURE__ */ r("div", { className: "flex items-center", children: [
108
+ /* @__PURE__ */ e("div", { className: "mr-1.5", children: O }),
109
+ T
120
110
  ] }) }) });
121
111
  }
122
112
  export {
123
- pe as FileItem
113
+ oe as FileItem
124
114
  };
125
115
  //# sourceMappingURL=file-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-item.js","sources":["../../../../src/connect/components/file-item/file-item.tsx"],"sourcesContent":["import {\n ADD_INVALID_TRIGGER,\n ADD_TRIGGER,\n ConnectDropdownMenu,\n DELETE,\n DropdownMenuHandlers,\n DUPLICATE,\n FILE,\n getDocumentIconSrc,\n NodeInput,\n NodeOption,\n nodeOptionsMap,\n NodeProps,\n READ,\n REMOVE_TRIGGER,\n RENAME,\n TUiNodesContext,\n UiFileNode,\n useDrag,\n WRITE,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SyncStatusIcon } from \"../status-icon\";\n\nexport type FileItemProps = TUiNodesContext &\n NodeProps & {\n readonly uiNode: UiFileNode;\n readonly customDocumentIconSrc?: string;\n readonly className?: string;\n };\n\nexport function FileItem(props: FileItemProps) {\n const {\n uiNode,\n selectedNodePath,\n nodeOptions,\n isAllowedToCreateDocuments,\n isRemoteDrive,\n customDocumentIconSrc,\n className,\n setSelectedNode,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n } = props;\n const [mode, setMode] = useState<typeof READ | typeof WRITE>(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag(props);\n\n const isReadMode = mode === READ;\n\n const containerStyles = twMerge(\n \"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800\",\n className,\n );\n\n const dropdownMenuHandlers: DropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(uiNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => onDeleteNode(uiNode),\n [ADD_TRIGGER]: () => onAddTrigger(uiNode.driveId),\n [REMOVE_TRIGGER]: () => onRemoveTrigger(uiNode.driveId),\n [ADD_INVALID_TRIGGER]: () => onAddInvalidTrigger(uiNode.driveId),\n } as const;\n\n const nodeOptionsForKind = nodeOptions[uiNode.sharingType][FILE];\n\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id as NodeOption,\n }))\n .filter((option) => nodeOptionsForKind.includes(option.id));\n\n function onSubmit(name: string) {\n onRenameNode(name, uiNode);\n setMode(READ);\n }\n\n function onCancel() {\n setMode(READ);\n }\n\n function onClick() {\n setSelectedNode(uiNode);\n }\n\n function onDropdownMenuOptionClick(itemId: NodeOption) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler(uiNode);\n setIsDropdownMenuOpen(false);\n }\n\n const iconSrc = getDocumentIconSrc(\n uiNode.documentType,\n customDocumentIconSrc,\n );\n\n const iconNode = (\n <div className=\"relative\">\n <img\n alt=\"file icon\"\n className=\"max-w-none\"\n height={34}\n src={iconSrc}\n width={32}\n />\n {isReadMode && isRemoteDrive && uiNode.syncStatus ? (\n <div className=\"absolute bottom-[-2px] right-0 size-3 rounded-full bg-white\">\n <div className=\"absolute left-[-2px] top-[-2px]\">\n <SyncStatusIcon\n overrideSyncIcons={{ SUCCESS: \"CheckCircleFill\" }}\n syncStatus={uiNode.syncStatus}\n />\n </div>\n </div>\n ) : null}\n </div>\n );\n\n // if this selected node is a file then hide it from the node path\n const nodePath =\n selectedNodePath.at(-1)?.kind === \"FILE\"\n ? selectedNodePath.slice(0, -1)\n : selectedNodePath;\n\n const content = isReadMode ? (\n <div className=\"flex w-52 items-center justify-between\">\n <div className=\"mr-2 truncate group-hover:mr-0\">\n <div className=\"max-h-6 truncate text-sm font-medium group-hover:text-gray-800\">\n {uiNode.name}\n </div>\n <div className=\"max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800\">\n {\"documentType\" in uiNode\n ? uiNode.documentType\n : nodePath.map((node) => node.name).join(\" / \")}\n </div>\n </div>\n {isAllowedToCreateDocuments ? (\n <ConnectDropdownMenu\n items={dropdownMenuOptions}\n onItemClick={onDropdownMenuOptionClick}\n onOpenChange={setIsDropdownMenuOpen}\n open={isDropdownMenuOpen}\n >\n <button\n className={twMerge(\n \"hidden group-hover:block\",\n isDropdownMenuOpen && \"block\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }}\n >\n <Icon className=\"text-gray-600\" name=\"VerticalDots\" />\n </button>\n </ConnectDropdownMenu>\n ) : null}\n </div>\n ) : (\n <NodeInput\n className=\"ml-3 flex-1 font-medium\"\n defaultValue={uiNode.name}\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n );\n\n return (\n <div className=\"relative w-64\" onClick={onClick}>\n <div {...dragProps} className={containerStyles}>\n <div className=\"flex items-center\">\n <div className=\"mr-1.5\">{iconNode}</div>\n {content}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["FileItem","props","uiNode","selectedNodePath","nodeOptions","isAllowedToCreateDocuments","isRemoteDrive","customDocumentIconSrc","className","setSelectedNode","onRenameNode","onDuplicateNode","onDeleteNode","onAddTrigger","onRemoveTrigger","onAddInvalidTrigger","mode","setMode","useState","READ","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isReadMode","containerStyles","twMerge","dropdownMenuHandlers","DUPLICATE","RENAME","WRITE","DELETE","ADD_TRIGGER","REMOVE_TRIGGER","ADD_INVALID_TRIGGER","nodeOptionsForKind","FILE","dropdownMenuOptions","nodeOptionsMap","id","option","onSubmit","name","onCancel","onClick","onDropdownMenuOptionClick","itemId","handler","iconSrc","getDocumentIconSrc","iconNode","jsxs","jsx","SyncStatusIcon","nodePath","_a","content","node","ConnectDropdownMenu","e","Icon","NodeInput"],"mappings":"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"}
1
+ {"version":3,"file":"file-item.js","sources":["../../../../src/connect/components/file-item/file-item.tsx"],"sourcesContent":["import {\n ConnectDropdownMenu,\n defaultFileOptions,\n DELETE,\n DUPLICATE,\n getDocumentIconSrc,\n NodeInput,\n NodeOption,\n nodeOptionsMap,\n READ,\n RENAME,\n UiFileNode,\n useDrag,\n WRITE,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SyncStatusIcon } from \"../status-icon\";\n\nexport type FileItemProps = {\n uiNode: UiFileNode;\n customDocumentIconSrc?: string;\n className?: string;\n onSelectNode: (uiNode: UiFileNode) => void;\n onRenameNode: (name: string, uiNode: UiFileNode) => void;\n onDuplicateNode: (uiNode: UiFileNode) => void;\n onDeleteNode: (uiNode: UiFileNode) => void;\n isAllowedToCreateDocuments: boolean;\n};\n\nexport function FileItem(props: FileItemProps) {\n const {\n uiNode,\n className,\n customDocumentIconSrc,\n onSelectNode,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n isAllowedToCreateDocuments,\n } = props;\n const [mode, setMode] = useState<typeof READ | typeof WRITE>(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag({ uiNode });\n\n const isReadMode = mode === READ;\n\n const dropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(uiNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => onDeleteNode(uiNode),\n } as const;\n\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id as NodeOption,\n }))\n .filter((option) => defaultFileOptions.includes(option.id));\n\n function onSubmit(name: string) {\n onRenameNode(name, uiNode);\n setMode(READ);\n }\n\n function onCancel() {\n setMode(READ);\n }\n\n function onClick() {\n onSelectNode(uiNode);\n }\n\n function onDropdownMenuOptionClick(itemId: NodeOption) {\n const handler =\n dropdownMenuHandlers[itemId as keyof typeof dropdownMenuHandlers];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n\n const iconSrc = getDocumentIconSrc(\n uiNode.documentType,\n customDocumentIconSrc,\n );\n\n const iconNode = (\n <div className=\"relative\">\n <img\n alt=\"file icon\"\n className=\"max-w-none\"\n height={34}\n src={iconSrc}\n width={32}\n />\n {isReadMode && uiNode.syncStatus && (\n <div className=\"absolute bottom-[-2px] right-0 size-3 rounded-full bg-white\">\n <div className=\"absolute left-[-2px] top-[-2px]\">\n <SyncStatusIcon\n overrideSyncIcons={{ SUCCESS: \"CheckCircleFill\" }}\n syncStatus={uiNode.syncStatus}\n />\n </div>\n </div>\n )}\n </div>\n );\n\n const containerStyles = twMerge(\n \"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800\",\n className,\n );\n\n const content = isReadMode ? (\n <div className=\"flex w-52 items-center justify-between\">\n <div className=\"mr-2 truncate group-hover:mr-0\">\n <div className=\"max-h-6 truncate text-sm font-medium group-hover:text-gray-800\">\n {uiNode.name}\n </div>\n <div className=\"max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800\">\n {uiNode.documentType}\n </div>\n </div>\n {isAllowedToCreateDocuments ? (\n <ConnectDropdownMenu\n items={dropdownMenuOptions}\n onItemClick={onDropdownMenuOptionClick}\n onOpenChange={setIsDropdownMenuOpen}\n open={isDropdownMenuOpen}\n >\n <button\n className={twMerge(\n \"hidden group-hover:block\",\n isDropdownMenuOpen && \"block\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }}\n >\n <Icon className=\"text-gray-600\" name=\"VerticalDots\" />\n </button>\n </ConnectDropdownMenu>\n ) : null}\n </div>\n ) : (\n <NodeInput\n className=\"ml-3 flex-1 font-medium\"\n defaultValue={uiNode.name}\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n );\n\n return (\n <div className=\"relative w-64\" onClick={onClick}>\n <div {...dragProps} className={containerStyles}>\n <div className=\"flex items-center\">\n <div className=\"mr-1.5\">{iconNode}</div>\n {content}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["FileItem","props","uiNode","className","customDocumentIconSrc","onSelectNode","onRenameNode","onDuplicateNode","onDeleteNode","isAllowedToCreateDocuments","mode","setMode","useState","READ","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isReadMode","dropdownMenuHandlers","DUPLICATE","RENAME","WRITE","DELETE","dropdownMenuOptions","nodeOptionsMap","id","option","defaultFileOptions","onSubmit","name","onCancel","onClick","onDropdownMenuOptionClick","itemId","handler","iconSrc","getDocumentIconSrc","iconNode","jsxs","jsx","SyncStatusIcon","containerStyles","twMerge","content","ConnectDropdownMenu","e","Icon","NodeInput"],"mappings":"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"}
@@ -1,104 +1,104 @@
1
- import { jsx as o, jsxs as d } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { useState as u } from "react";
3
3
  import { twMerge as p } from "tailwind-merge";
4
- import { useDrop as V } from "../../hooks/drag-and-drop/use-drop.js";
5
- import { READ as l, FOLDER as _, WRITE as j } from "../../constants/nodes.js";
6
- import { useDrag as z } from "../../hooks/drag-and-drop/use-drag.js";
7
- import { nodeOptionsMap as U, DUPLICATE as H, RENAME as K, DELETE as W, ADD_TRIGGER as $, REMOVE_TRIGGER as q, ADD_INVALID_TRIGGER as B } from "../../constants/options.js";
8
- import { NodeInput as J } from "../node-input/node-input.js";
4
+ import { useDrop as P } from "../../hooks/drag-and-drop/use-drop.js";
5
+ import { nodeOptionsMap as j, defaultFolderOptions as z, DUPLICATE as L, RENAME as U, DELETE as V } from "../../constants/options.js";
6
+ import { READ as l, WRITE as H } from "../../constants/nodes.js";
7
+ import { useDrag as W } from "../../hooks/drag-and-drop/use-drag.js";
8
+ import { NodeInput as $ } from "../node-input/node-input.js";
9
9
  import { Icon as f } from "../../../powerhouse/components/icon/icon.js";
10
- import { SyncStatusIcon as Q } from "../status-icon/sync-status-icon.js";
11
- import { ConnectDropdownMenu as X } from "../dropdown-menu/dropdown-menu.js";
12
- function ce(r) {
10
+ import { SyncStatusIcon as q } from "../status-icon/sync-status-icon.js";
11
+ import { ConnectDropdownMenu as B } from "../dropdown-menu/dropdown-menu.js";
12
+ function te(c) {
13
13
  const {
14
- uiNode: e,
15
- isAllowedToCreateDocuments: c,
16
- nodeOptions: g,
17
- isRemoteDrive: h,
18
- className: D,
19
- setSelectedNode: N,
20
- onRenameNode: v,
21
- onDuplicateNode: I,
22
- onDeleteNode: E,
23
- onAddTrigger: R,
24
- onRemoveTrigger: x,
25
- onAddInvalidTrigger: C
26
- } = r, [S, a] = u(l), [m, i] = u(!1), { dragProps: b } = z(r), { isDropTarget: w, dropProps: M } = V(r), s = S === l;
27
- function T() {
28
- a(l);
14
+ uiNode: n,
15
+ isAllowedToCreateDocuments: a,
16
+ className: h,
17
+ onRenameNode: N,
18
+ onDuplicateNode: g,
19
+ onDeleteNode: v,
20
+ onSelectNode: C,
21
+ onAddFile: x,
22
+ onCopyNode: D,
23
+ onMoveNode: S
24
+ } = c, [b, d] = u(l), [m, r] = u(!1), { dragProps: w } = W(c), { isDropTarget: M, dropProps: y } = P({
25
+ uiNode: n,
26
+ onAddFile: x,
27
+ onCopyNode: D,
28
+ onMoveNode: S
29
+ }), s = b === l;
30
+ function E() {
31
+ d(l);
29
32
  }
30
- function y(n) {
31
- v(n, e);
33
+ function I(o) {
34
+ N(o, n);
32
35
  }
33
36
  function O() {
34
- N(e);
37
+ C(n);
35
38
  }
36
- const A = {
37
- [H]: () => I(e),
38
- [K]: () => a(j),
39
- [W]: () => E(e),
40
- [$]: () => R(e.driveId),
41
- [q]: () => x(e.driveId),
42
- [B]: () => C(e.driveId)
43
- }, k = g[e.sharingType][_], G = Object.entries(U).map(([n, t]) => ({
39
+ const k = {
40
+ [L]: () => g(n),
41
+ [U]: () => d(H),
42
+ [V]: () => v(n)
43
+ }, A = Object.entries(j).map(([o, t]) => ({
44
44
  ...t,
45
- id: n
46
- })).filter((n) => k.includes(n.id));
47
- function F(n) {
48
- const t = A[n];
45
+ id: o
46
+ })).filter((o) => z.includes(o.id));
47
+ function F(o) {
48
+ const t = k[o];
49
49
  if (!t) {
50
- console.error(`No handler found for dropdown menu item: ${n}`);
50
+ console.error(`No handler found for dropdown menu item: ${o}`);
51
51
  return;
52
52
  }
53
- t(), i(!1);
53
+ t(), r(!1);
54
54
  }
55
- const L = s || !c ? /* @__PURE__ */ o("div", { className: "ml-3 max-h-6 truncate font-medium text-gray-600 group-hover:text-gray-800", children: e.name }) : /* @__PURE__ */ o(
56
- J,
55
+ const R = s || !a ? /* @__PURE__ */ e("div", { className: "ml-3 max-h-6 truncate font-medium text-gray-600 group-hover:text-gray-800", children: n.name }) : /* @__PURE__ */ e(
56
+ $,
57
57
  {
58
58
  className: "ml-3 font-medium",
59
- defaultValue: e.name,
60
- onCancel: T,
61
- onSubmit: y
59
+ defaultValue: n.name,
60
+ onCancel: E,
61
+ onSubmit: I
62
62
  }
63
- ), P = p(
63
+ ), T = p(
64
64
  "group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2",
65
- D,
66
- w && "bg-blue-100"
65
+ h,
66
+ M && "bg-blue-100"
67
67
  );
68
- return /* @__PURE__ */ o("div", { className: "relative w-64", onClick: O, children: /* @__PURE__ */ d("div", { ...b, ...M, className: P, children: [
69
- /* @__PURE__ */ d("div", { className: "flex items-center overflow-hidden", children: [
70
- /* @__PURE__ */ o("div", { className: "p-1", children: /* @__PURE__ */ d("div", { className: "relative", children: [
71
- /* @__PURE__ */ o(f, { name: "FolderClose", size: 24 }),
72
- s && h && e.syncStatus ? /* @__PURE__ */ o("div", { className: "absolute bottom-[-3px] right-[-2px] size-3 rounded-full bg-white", children: /* @__PURE__ */ o("div", { className: "absolute left-[-2px] top-[-2px]", children: /* @__PURE__ */ o(
73
- Q,
68
+ return /* @__PURE__ */ e("div", { className: "relative w-64", onClick: O, children: /* @__PURE__ */ i("div", { ...w, ...y, className: T, children: [
69
+ /* @__PURE__ */ i("div", { className: "flex items-center overflow-hidden", children: [
70
+ /* @__PURE__ */ e("div", { className: "p-1", children: /* @__PURE__ */ i("div", { className: "relative", children: [
71
+ /* @__PURE__ */ e(f, { name: "FolderClose", size: 24 }),
72
+ s && n.syncStatus ? /* @__PURE__ */ e("div", { className: "absolute bottom-[-3px] right-[-2px] size-3 rounded-full bg-white", children: /* @__PURE__ */ e("div", { className: "absolute left-[-2px] top-[-2px]", children: /* @__PURE__ */ e(
73
+ q,
74
74
  {
75
75
  overrideSyncIcons: {
76
76
  SUCCESS: "CheckCircleFill"
77
77
  },
78
- syncStatus: e.syncStatus
78
+ syncStatus: n.syncStatus
79
79
  }
80
80
  ) }) }) : null
81
81
  ] }) }),
82
- L
82
+ R
83
83
  ] }),
84
- s && c ? /* @__PURE__ */ o(
85
- X,
84
+ s && a ? /* @__PURE__ */ e(
85
+ B,
86
86
  {
87
- items: G,
87
+ items: A,
88
88
  onItemClick: F,
89
- onOpenChange: i,
89
+ onOpenChange: r,
90
90
  open: m,
91
- children: /* @__PURE__ */ o(
91
+ children: /* @__PURE__ */ e(
92
92
  "button",
93
93
  {
94
94
  className: p(
95
95
  "ml-auto hidden group-hover:block",
96
96
  m && "block"
97
97
  ),
98
- onClick: (n) => {
99
- n.stopPropagation(), i(!0);
98
+ onClick: (o) => {
99
+ o.stopPropagation(), r(!0);
100
100
  },
101
- children: /* @__PURE__ */ o(f, { className: "text-gray-600", name: "VerticalDots" })
101
+ children: /* @__PURE__ */ e(f, { className: "text-gray-600", name: "VerticalDots" })
102
102
  }
103
103
  )
104
104
  }
@@ -106,6 +106,6 @@ function ce(r) {
106
106
  ] }) });
107
107
  }
108
108
  export {
109
- ce as FolderItem
109
+ te as FolderItem
110
110
  };
111
111
  //# sourceMappingURL=folder-item.js.map