@tulip-systems/drive 0.8.1 → 0.8.2

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 (236) hide show
  1. package/dist/client.d.mts +5 -0
  2. package/dist/client.mjs +6 -0
  3. package/dist/components/content.d.mts +14 -0
  4. package/dist/components/content.d.mts.map +1 -0
  5. package/dist/components/content.mjs +18 -0
  6. package/dist/components/content.mjs.map +1 -0
  7. package/dist/components/context.client.d.mts +14 -0
  8. package/dist/components/context.client.d.mts.map +1 -0
  9. package/dist/components/dnd.client.d.mts +17 -0
  10. package/dist/components/dnd.client.d.mts.map +1 -0
  11. package/dist/components/dnd.client.mjs +30 -0
  12. package/dist/components/dnd.client.mjs.map +1 -0
  13. package/dist/components/grid-card.client.d.mts +43 -0
  14. package/dist/components/grid-card.client.d.mts.map +1 -0
  15. package/dist/components/grid-card.client.mjs +173 -0
  16. package/dist/components/grid-card.client.mjs.map +1 -0
  17. package/dist/components/grid.client.d.mts +54 -0
  18. package/dist/components/grid.client.d.mts.map +1 -0
  19. package/dist/components/grid.client.mjs +54 -0
  20. package/dist/components/grid.client.mjs.map +1 -0
  21. package/dist/components/navigation/breadcrumbs.client.d.mts +26 -0
  22. package/dist/components/navigation/breadcrumbs.client.d.mts.map +1 -0
  23. package/dist/components/navigation/breadcrumbs.client.mjs +52 -0
  24. package/dist/components/navigation/breadcrumbs.client.mjs.map +1 -0
  25. package/dist/components/navigation/header.client.d.mts +28 -0
  26. package/dist/components/navigation/header.client.d.mts.map +1 -0
  27. package/dist/components/navigation/header.client.mjs +41 -0
  28. package/dist/components/navigation/header.client.mjs.map +1 -0
  29. package/dist/components/navigation/toolbar.client.d.mts +24 -0
  30. package/dist/components/navigation/toolbar.client.d.mts.map +1 -0
  31. package/dist/components/navigation/toolbar.client.mjs +35 -0
  32. package/dist/components/navigation/toolbar.client.mjs.map +1 -0
  33. package/dist/components/navigation/view-switcher.client.d.mts +10 -0
  34. package/dist/components/navigation/view-switcher.client.d.mts.map +1 -0
  35. package/dist/components/navigation/view-switcher.client.mjs +36 -0
  36. package/dist/components/navigation/view-switcher.client.mjs.map +1 -0
  37. package/dist/components/selection.client.d.mts +28 -0
  38. package/dist/components/selection.client.d.mts.map +1 -0
  39. package/dist/components/selection.client.mjs +39 -0
  40. package/dist/components/selection.client.mjs.map +1 -0
  41. package/dist/components/view.client.d.mts +26 -0
  42. package/dist/components/view.client.d.mts.map +1 -0
  43. package/dist/components/view.client.mjs +44 -0
  44. package/dist/components/view.client.mjs.map +1 -0
  45. package/dist/config/filters.mjs +15 -0
  46. package/dist/config/filters.mjs.map +1 -0
  47. package/dist/config/types.mjs +61 -0
  48. package/dist/config/types.mjs.map +1 -0
  49. package/dist/google/client.d.mts +8 -0
  50. package/dist/google/client.mjs +9 -0
  51. package/dist/google/server.d.mts +3 -0
  52. package/dist/google/server.mjs +4 -0
  53. package/dist/google.d.mts +6 -0
  54. package/dist/google.mjs +7 -0
  55. package/dist/index.d.mts +7 -0
  56. package/dist/index.mjs +7 -0
  57. package/dist/lib/constants.d.mts +12 -0
  58. package/dist/lib/constants.d.mts.map +1 -0
  59. package/dist/lib/constants.mjs +21 -0
  60. package/dist/lib/constants.mjs.map +1 -0
  61. package/dist/lib/contracts.d.mts +101 -0
  62. package/dist/lib/contracts.d.mts.map +1 -0
  63. package/dist/lib/dto.d.mts +118 -0
  64. package/dist/lib/dto.d.mts.map +1 -0
  65. package/dist/lib/dto.mjs +58 -0
  66. package/dist/lib/dto.mjs.map +1 -0
  67. package/dist/lib/helpers.d.mts +18 -0
  68. package/dist/lib/helpers.d.mts.map +1 -0
  69. package/dist/lib/helpers.mjs +37 -0
  70. package/dist/lib/helpers.mjs.map +1 -0
  71. package/dist/lib/helpers.server.d.mts +14 -0
  72. package/dist/lib/helpers.server.d.mts.map +1 -0
  73. package/dist/lib/helpers.server.mjs +16 -0
  74. package/dist/lib/helpers.server.mjs.map +1 -0
  75. package/dist/lib/search-params.d.mts +9 -0
  76. package/dist/lib/search-params.d.mts.map +1 -0
  77. package/dist/lib/search-params.mjs +8 -0
  78. package/dist/lib/search-params.mjs.map +1 -0
  79. package/dist/lib/validators.d.mts +158 -0
  80. package/dist/lib/validators.d.mts.map +1 -0
  81. package/dist/lib/validators.mjs +66 -0
  82. package/dist/lib/validators.mjs.map +1 -0
  83. package/dist/local/client.d.mts +13 -0
  84. package/dist/local/client.mjs +13 -0
  85. package/dist/local/server.d.mts +4 -0
  86. package/dist/local/server.mjs +5 -0
  87. package/dist/local.d.mts +8 -0
  88. package/dist/local.mjs +9 -0
  89. package/dist/providers/google/components/command-file-update.d.mts +22 -0
  90. package/dist/providers/google/components/command-file-update.d.mts.map +1 -0
  91. package/dist/providers/google/components/command-file-update.mjs +52 -0
  92. package/dist/providers/google/components/command-file-update.mjs.map +1 -0
  93. package/dist/providers/google/components/command-folder-create.d.mts +22 -0
  94. package/dist/providers/google/components/command-folder-create.d.mts.map +1 -0
  95. package/dist/providers/google/components/command-folder-create.mjs +59 -0
  96. package/dist/providers/google/components/command-folder-create.mjs.map +1 -0
  97. package/dist/providers/google/components/command-folder-update.d.mts +22 -0
  98. package/dist/providers/google/components/command-folder-update.d.mts.map +1 -0
  99. package/dist/providers/google/components/command-folder-update.mjs +52 -0
  100. package/dist/providers/google/components/command-folder-update.mjs.map +1 -0
  101. package/dist/providers/google/components/content.client.d.mts +10 -0
  102. package/dist/providers/google/components/content.client.d.mts.map +1 -0
  103. package/dist/providers/google/components/content.client.mjs +11 -0
  104. package/dist/providers/google/components/content.client.mjs.map +1 -0
  105. package/dist/providers/google/components/navigation.client.d.mts +16 -0
  106. package/dist/providers/google/components/navigation.client.d.mts.map +1 -0
  107. package/dist/providers/google/components/navigation.client.mjs +18 -0
  108. package/dist/providers/google/components/navigation.client.mjs.map +1 -0
  109. package/dist/providers/google/components/provider.client.d.mts +33 -0
  110. package/dist/providers/google/components/provider.client.d.mts.map +1 -0
  111. package/dist/providers/google/components/provider.client.mjs +43 -0
  112. package/dist/providers/google/components/provider.client.mjs.map +1 -0
  113. package/dist/providers/google/components/view.client.d.mts +41 -0
  114. package/dist/providers/google/components/view.client.d.mts.map +1 -0
  115. package/dist/providers/google/components/view.client.mjs +98 -0
  116. package/dist/providers/google/components/view.client.mjs.map +1 -0
  117. package/dist/providers/google/config/columns-data.d.mts +8 -0
  118. package/dist/providers/google/config/columns-data.d.mts.map +1 -0
  119. package/dist/providers/google/config/columns-data.mjs +70 -0
  120. package/dist/providers/google/config/columns-data.mjs.map +1 -0
  121. package/dist/providers/google/config/filters.d.mts +16 -0
  122. package/dist/providers/google/config/filters.d.mts.map +1 -0
  123. package/dist/providers/google/config/filters.mjs +8 -0
  124. package/dist/providers/google/config/filters.mjs.map +1 -0
  125. package/dist/providers/google/lib/constants.mjs +13 -0
  126. package/dist/providers/google/lib/constants.mjs.map +1 -0
  127. package/dist/providers/google/lib/dto.d.mts +39 -0
  128. package/dist/providers/google/lib/dto.d.mts.map +1 -0
  129. package/dist/providers/google/lib/dto.mjs +66 -0
  130. package/dist/providers/google/lib/dto.mjs.map +1 -0
  131. package/dist/providers/google/lib/helpers.mjs +46 -0
  132. package/dist/providers/google/lib/helpers.mjs.map +1 -0
  133. package/dist/providers/google/lib/router.server.d.mts +612 -0
  134. package/dist/providers/google/lib/router.server.d.mts.map +1 -0
  135. package/dist/providers/google/lib/router.server.mjs +40 -0
  136. package/dist/providers/google/lib/router.server.mjs.map +1 -0
  137. package/dist/providers/google/lib/search-params.d.mts +15 -0
  138. package/dist/providers/google/lib/search-params.d.mts.map +1 -0
  139. package/dist/providers/google/lib/search-params.mjs +12 -0
  140. package/dist/providers/google/lib/search-params.mjs.map +1 -0
  141. package/dist/providers/google/lib/service.server.d.mts +186 -0
  142. package/dist/providers/google/lib/service.server.d.mts.map +1 -0
  143. package/dist/providers/google/lib/service.server.mjs +613 -0
  144. package/dist/providers/google/lib/service.server.mjs.map +1 -0
  145. package/dist/providers/google/lib/validators.d.mts +303 -0
  146. package/dist/providers/google/lib/validators.d.mts.map +1 -0
  147. package/dist/providers/google/lib/validators.mjs +59 -0
  148. package/dist/providers/google/lib/validators.mjs.map +1 -0
  149. package/dist/providers/local/components/command-file-update.d.mts +18 -0
  150. package/dist/providers/local/components/command-file-update.d.mts.map +1 -0
  151. package/dist/providers/local/components/command-file-update.mjs +48 -0
  152. package/dist/providers/local/components/command-file-update.mjs.map +1 -0
  153. package/dist/providers/local/components/command-file-upload.d.mts +11 -0
  154. package/dist/providers/local/components/command-file-upload.d.mts.map +1 -0
  155. package/dist/providers/local/components/command-file-upload.mjs +35 -0
  156. package/dist/providers/local/components/command-file-upload.mjs.map +1 -0
  157. package/dist/providers/local/components/command-folder-create.d.mts +18 -0
  158. package/dist/providers/local/components/command-folder-create.d.mts.map +1 -0
  159. package/dist/providers/local/components/command-folder-create.mjs +55 -0
  160. package/dist/providers/local/components/command-folder-create.mjs.map +1 -0
  161. package/dist/providers/local/components/command-folder-update.d.mts +18 -0
  162. package/dist/providers/local/components/command-folder-update.d.mts.map +1 -0
  163. package/dist/providers/local/components/command-folder-update.mjs +48 -0
  164. package/dist/providers/local/components/command-folder-update.mjs.map +1 -0
  165. package/dist/providers/local/components/content.client.d.mts +7 -0
  166. package/dist/providers/local/components/content.client.d.mts.map +1 -0
  167. package/dist/providers/local/components/content.client.mjs +8 -0
  168. package/dist/providers/local/components/content.client.mjs.map +1 -0
  169. package/dist/providers/local/components/navigation.client.d.mts +16 -0
  170. package/dist/providers/local/components/navigation.client.d.mts.map +1 -0
  171. package/dist/providers/local/components/navigation.client.mjs +18 -0
  172. package/dist/providers/local/components/navigation.client.mjs.map +1 -0
  173. package/dist/providers/local/components/provider.client.d.mts +40 -0
  174. package/dist/providers/local/components/provider.client.d.mts.map +1 -0
  175. package/dist/providers/local/components/provider.client.mjs +61 -0
  176. package/dist/providers/local/components/provider.client.mjs.map +1 -0
  177. package/dist/providers/local/components/upload-zone-context.client.d.mts +38 -0
  178. package/dist/providers/local/components/upload-zone-context.client.d.mts.map +1 -0
  179. package/dist/providers/local/components/upload-zone-context.client.mjs +23 -0
  180. package/dist/providers/local/components/upload-zone-context.client.mjs.map +1 -0
  181. package/dist/providers/local/components/upload-zone.client.d.mts +30 -0
  182. package/dist/providers/local/components/upload-zone.client.d.mts.map +1 -0
  183. package/dist/providers/local/components/upload-zone.client.mjs +147 -0
  184. package/dist/providers/local/components/upload-zone.client.mjs.map +1 -0
  185. package/dist/providers/local/components/view.client.d.mts +32 -0
  186. package/dist/providers/local/components/view.client.d.mts.map +1 -0
  187. package/dist/providers/local/components/view.client.mjs +91 -0
  188. package/dist/providers/local/components/view.client.mjs.map +1 -0
  189. package/dist/providers/local/config/columns-data.d.mts +8 -0
  190. package/dist/providers/local/config/columns-data.d.mts.map +1 -0
  191. package/dist/providers/local/config/columns-data.mjs +70 -0
  192. package/dist/providers/local/config/columns-data.mjs.map +1 -0
  193. package/dist/providers/local/config/filters.d.mts +26 -0
  194. package/dist/providers/local/config/filters.d.mts.map +1 -0
  195. package/dist/providers/local/config/filters.mjs +15 -0
  196. package/dist/providers/local/config/filters.mjs.map +1 -0
  197. package/dist/providers/local/lib/constants.d.mts +12 -0
  198. package/dist/providers/local/lib/constants.d.mts.map +1 -0
  199. package/dist/providers/local/lib/constants.mjs +29 -0
  200. package/dist/providers/local/lib/constants.mjs.map +1 -0
  201. package/dist/providers/local/lib/helpers.d.mts +45 -0
  202. package/dist/providers/local/lib/helpers.d.mts.map +1 -0
  203. package/dist/providers/local/lib/helpers.mjs +110 -0
  204. package/dist/providers/local/lib/helpers.mjs.map +1 -0
  205. package/dist/providers/local/lib/route-handler.server.d.mts +34 -0
  206. package/dist/providers/local/lib/route-handler.server.d.mts.map +1 -0
  207. package/dist/providers/local/lib/route-handler.server.mjs +114 -0
  208. package/dist/providers/local/lib/route-handler.server.mjs.map +1 -0
  209. package/dist/providers/local/lib/router.server.d.mts +41648 -0
  210. package/dist/providers/local/lib/router.server.d.mts.map +1 -0
  211. package/dist/providers/local/lib/router.server.mjs +52 -0
  212. package/dist/providers/local/lib/router.server.mjs.map +1 -0
  213. package/dist/providers/local/lib/schema.d.mts +1113 -0
  214. package/dist/providers/local/lib/schema.d.mts.map +1 -0
  215. package/dist/providers/local/lib/schema.mjs +71 -0
  216. package/dist/providers/local/lib/schema.mjs.map +1 -0
  217. package/dist/providers/local/lib/search-params.d.mts +14 -0
  218. package/dist/providers/local/lib/search-params.d.mts.map +1 -0
  219. package/dist/providers/local/lib/search-params.mjs +9 -0
  220. package/dist/providers/local/lib/search-params.mjs.map +1 -0
  221. package/dist/providers/local/lib/service.server.d.mts +489 -0
  222. package/dist/providers/local/lib/service.server.d.mts.map +1 -0
  223. package/dist/providers/local/lib/service.server.mjs +668 -0
  224. package/dist/providers/local/lib/service.server.mjs.map +1 -0
  225. package/dist/providers/local/lib/upload.client.d.mts +62 -0
  226. package/dist/providers/local/lib/upload.client.d.mts.map +1 -0
  227. package/dist/providers/local/lib/upload.client.mjs +100 -0
  228. package/dist/providers/local/lib/upload.client.mjs.map +1 -0
  229. package/dist/providers/local/lib/validators.d.mts +454 -0
  230. package/dist/providers/local/lib/validators.d.mts.map +1 -0
  231. package/dist/providers/local/lib/validators.mjs +96 -0
  232. package/dist/providers/local/lib/validators.mjs.map +1 -0
  233. package/dist/server.d.mts +2 -0
  234. package/dist/server.mjs +3 -0
  235. package/package.json +3 -2
  236. package/src/providers/local/lib/helpers.ts +0 -1
@@ -0,0 +1,55 @@
1
+ "use client";
2
+
3
+ import { driveTreeSearchParams } from "../../../lib/search-params.mjs";
4
+ import { createLocalDriveFolderInputSchema } from "../lib/validators.mjs";
5
+ import { Input } from "@tulip-systems/core/components";
6
+ import { CommandFormDialog, CommandFormDialogCancel, CommandFormDialogContent, CommandFormDialogFields, CommandFormDialogFooter, CommandFormDialogHeader, CommandFormDialogSubmit, CommandFormDialogTitle, CommandFormDialogTrigger, CommandLabel } from "@tulip-systems/core/commands/client";
7
+ import { FolderPlus } from "lucide-react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@tulip-systems/core/components/client";
10
+ import { useQueryStates } from "nuqs";
11
+ import { zodResolver } from "@hookform/resolvers/zod";
12
+ import { useForm } from "react-hook-form";
13
+
14
+ //#region src/providers/local/components/command-folder-create.tsx
15
+ function LocalDriveFoldersCreateCommand({ defaultValues, variables, mutation }) {
16
+ const [{ parentId }] = useQueryStates(driveTreeSearchParams);
17
+ const form = useForm({
18
+ resolver: zodResolver(createLocalDriveFolderInputSchema),
19
+ defaultValues: {
20
+ ...defaultValues,
21
+ parentId
22
+ }
23
+ });
24
+ return /* @__PURE__ */ jsx(Form, {
25
+ ...form,
26
+ children: /* @__PURE__ */ jsxs(CommandFormDialog, { children: [/* @__PURE__ */ jsxs(CommandFormDialogTrigger, {
27
+ label: "Folder toevoegen",
28
+ hotkey: "mod+i",
29
+ children: [/* @__PURE__ */ jsx(FolderPlus, { className: "size-4" }), /* @__PURE__ */ jsx(CommandLabel, {})]
30
+ }), /* @__PURE__ */ jsxs(CommandFormDialogContent, {
31
+ variables,
32
+ mutation,
33
+ children: [
34
+ /* @__PURE__ */ jsx(CommandFormDialogHeader, { children: /* @__PURE__ */ jsx(CommandFormDialogTitle, { children: "Folder toevoegen" }) }),
35
+ /* @__PURE__ */ jsx(CommandFormDialogFields, { children: /* @__PURE__ */ jsx(FormField, {
36
+ control: form.control,
37
+ name: "name",
38
+ render: ({ field }) => /* @__PURE__ */ jsxs(FormItem, { children: [
39
+ /* @__PURE__ */ jsx(FormLabel, { children: "Naam" }),
40
+ /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(Input, {
41
+ ...field,
42
+ value: field.value ?? ""
43
+ }) }),
44
+ /* @__PURE__ */ jsx(FormMessage, {})
45
+ ] })
46
+ }) }),
47
+ /* @__PURE__ */ jsxs(CommandFormDialogFooter, { children: [/* @__PURE__ */ jsx(CommandFormDialogCancel, { children: "Annuleren" }), /* @__PURE__ */ jsx(CommandFormDialogSubmit, { children: "Toevoegen" })] })
48
+ ]
49
+ })] })
50
+ });
51
+ }
52
+
53
+ //#endregion
54
+ export { LocalDriveFoldersCreateCommand };
55
+ //# sourceMappingURL=command-folder-create.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-folder-create.mjs","names":[],"sources":["../../../../src/providers/local/components/command-folder-create.tsx"],"sourcesContent":["\"use client\";\n\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { DefaultError, MutationOptions } from \"@tanstack/react-query\";\nimport {\n CommandFormDialog,\n CommandFormDialogCancel,\n CommandFormDialogContent,\n CommandFormDialogFields,\n CommandFormDialogFooter,\n CommandFormDialogHeader,\n CommandFormDialogSubmit,\n CommandFormDialogTitle,\n CommandFormDialogTrigger,\n CommandLabel,\n} from \"@tulip-systems/core/commands/client\";\nimport { Input } from \"@tulip-systems/core/components\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@tulip-systems/core/components/client\";\nimport { FolderPlus } from \"lucide-react\";\nimport { useQueryStates } from \"nuqs\";\nimport { useForm } from \"react-hook-form\";\nimport { driveTreeSearchParams } from \"@/lib/search-params\";\nimport {\n type CreateLocalDriveFolderInput,\n createLocalDriveFolderInputSchema,\n} from \"../lib/validators\";\n\nexport type LocalDriveFoldersCreateCommandProps<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n> = {\n defaultValues?: Partial<CreateLocalDriveFolderInput>;\n variables: (values: CreateLocalDriveFolderInput) => TVariables;\n mutation: MutationOptions<TData, TError, TVariables, TOnMutateResult>;\n};\n\nexport function LocalDriveFoldersCreateCommand<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n>({\n defaultValues,\n variables,\n mutation,\n}: LocalDriveFoldersCreateCommandProps<TData, TError, TVariables, TOnMutateResult>) {\n const [{ parentId }] = useQueryStates(driveTreeSearchParams);\n\n const form = useForm<CreateLocalDriveFolderInput>({\n resolver: zodResolver(createLocalDriveFolderInputSchema),\n defaultValues: { ...defaultValues, parentId },\n });\n\n return (\n <Form {...form}>\n <CommandFormDialog>\n <CommandFormDialogTrigger label=\"Folder toevoegen\" hotkey=\"mod+i\">\n <FolderPlus className=\"size-4\" />\n <CommandLabel />\n </CommandFormDialogTrigger>\n\n <CommandFormDialogContent variables={variables} mutation={mutation}>\n <CommandFormDialogHeader>\n <CommandFormDialogTitle>Folder toevoegen</CommandFormDialogTitle>\n </CommandFormDialogHeader>\n\n <CommandFormDialogFields>\n <FormField\n control={form.control}\n name=\"name\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Naam</FormLabel>\n <FormControl>\n <Input {...field} value={field.value ?? \"\"} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </CommandFormDialogFields>\n\n <CommandFormDialogFooter>\n <CommandFormDialogCancel>Annuleren</CommandFormDialogCancel>\n <CommandFormDialogSubmit>Toevoegen</CommandFormDialogSubmit>\n </CommandFormDialogFooter>\n </CommandFormDialogContent>\n </CommandFormDialog>\n </Form>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA6CA,SAAgB,+BAKd,EACA,eACA,WACA,YACkF;CAClF,MAAM,CAAC,EAAE,cAAc,eAAe,sBAAsB;CAE5D,MAAM,OAAO,QAAqC;EAChD,UAAU,YAAY,kCAAkC;EACxD,eAAe;GAAE,GAAG;GAAe;GAAU;EAC9C,CAAC;AAEF,QACE,oBAAC;EAAK,GAAI;YACR,qBAAC,gCACC,qBAAC;GAAyB,OAAM;GAAmB,QAAO;cACxD,oBAAC,cAAW,WAAU,WAAW,EACjC,oBAAC,iBAAe;IACS,EAE3B,qBAAC;GAAoC;GAAqB;;IACxD,oBAAC,qCACC,oBAAC,oCAAuB,qBAAyC,GACzC;IAE1B,oBAAC,qCACC,oBAAC;KACC,SAAS,KAAK;KACd,MAAK;KACL,SAAS,EAAE,YACT,qBAAC;MACC,oBAAC,uBAAU,SAAgB;MAC3B,oBAAC,yBACC,oBAAC;OAAM,GAAI;OAAO,OAAO,MAAM,SAAS;QAAM,GAClC;MACd,oBAAC,gBAAc;SACN;MAEb,GACsB;IAE1B,qBAAC,sCACC,oBAAC,qCAAwB,cAAmC,EAC5D,oBAAC,qCAAwB,cAAmC,IACpC;;IACD,IACT;GACf"}
@@ -0,0 +1,18 @@
1
+ import { UpdateLocalDriveNodeInput } from "../lib/validators.mjs";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { DefaultError, MutationOptions } from "@tanstack/react-query";
4
+
5
+ //#region src/providers/local/components/command-folder-update.d.ts
6
+ type LocalDriveFoldersUpdateCommandProps<TData = unknown, TError = DefaultError, TVariables = unknown, TOnMutateResult = unknown> = {
7
+ defaultValues: Partial<UpdateLocalDriveNodeInput>;
8
+ variables: (values: UpdateLocalDriveNodeInput) => TVariables;
9
+ mutation: MutationOptions<TData, TError, TVariables, TOnMutateResult>;
10
+ };
11
+ declare function LocalDriveFoldersUpdateCommand<TData = unknown, TError = DefaultError, TVariables = unknown, TOnMutateResult = unknown>({
12
+ defaultValues,
13
+ variables,
14
+ mutation
15
+ }: LocalDriveFoldersUpdateCommandProps<TData, TError, TVariables, TOnMutateResult>): react_jsx_runtime0.JSX.Element;
16
+ //#endregion
17
+ export { LocalDriveFoldersUpdateCommand, LocalDriveFoldersUpdateCommandProps };
18
+ //# sourceMappingURL=command-folder-update.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-folder-update.d.mts","names":[],"sources":["../../../../src/providers/local/components/command-folder-update.tsx"],"mappings":";;;;;KA6BY,mCAAA,2BAED,YAAA;EAIT,aAAA,EAAe,OAAA,CAAQ,yBAAA;EACvB,SAAA,GAAY,MAAA,EAAQ,yBAAA,KAA8B,UAAA;EAClD,QAAA,EAAU,eAAA,CAAgB,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY,eAAA;AAAA;AAAA,iBAGvC,8BAAA,2BAEL,YAAA,kDAAA,CAAA;EAIT,aAAA;EACA,SAAA;EACA;AAAA,GACC,mCAAA,CAAoC,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY,eAAA,IAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,48 @@
1
+ "use client";
2
+
3
+ import { updateLocalDriveNodeInputSchema } from "../lib/validators.mjs";
4
+ import { Input } from "@tulip-systems/core/components";
5
+ import { CommandFormDialog, CommandFormDialogCancel, CommandFormDialogContent, CommandFormDialogFields, CommandFormDialogFooter, CommandFormDialogHeader, CommandFormDialogSubmit, CommandFormDialogTitle, CommandFormDialogTrigger, CommandLabel } from "@tulip-systems/core/commands/client";
6
+ import { FolderPen } from "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@tulip-systems/core/components/client";
9
+ import { zodResolver } from "@hookform/resolvers/zod";
10
+ import { useForm } from "react-hook-form";
11
+
12
+ //#region src/providers/local/components/command-folder-update.tsx
13
+ function LocalDriveFoldersUpdateCommand({ defaultValues, variables, mutation }) {
14
+ const form = useForm({
15
+ resolver: zodResolver(updateLocalDriveNodeInputSchema),
16
+ defaultValues
17
+ });
18
+ return /* @__PURE__ */ jsx(Form, {
19
+ ...form,
20
+ children: /* @__PURE__ */ jsxs(CommandFormDialog, { children: [/* @__PURE__ */ jsxs(CommandFormDialogTrigger, {
21
+ label: "Wijzigen",
22
+ children: [/* @__PURE__ */ jsx(FolderPen, { className: "size-4" }), /* @__PURE__ */ jsx(CommandLabel, {})]
23
+ }), /* @__PURE__ */ jsxs(CommandFormDialogContent, {
24
+ variables,
25
+ mutation,
26
+ children: [
27
+ /* @__PURE__ */ jsx(CommandFormDialogHeader, { children: /* @__PURE__ */ jsx(CommandFormDialogTitle, { children: "Folder wijzigen" }) }),
28
+ /* @__PURE__ */ jsx(CommandFormDialogFields, { children: /* @__PURE__ */ jsx(FormField, {
29
+ control: form.control,
30
+ name: "name",
31
+ render: ({ field }) => /* @__PURE__ */ jsxs(FormItem, { children: [
32
+ /* @__PURE__ */ jsx(FormLabel, { children: "Naam" }),
33
+ /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(Input, {
34
+ ...field,
35
+ value: field.value ?? ""
36
+ }) }),
37
+ /* @__PURE__ */ jsx(FormMessage, {})
38
+ ] })
39
+ }) }),
40
+ /* @__PURE__ */ jsxs(CommandFormDialogFooter, { children: [/* @__PURE__ */ jsx(CommandFormDialogCancel, { children: "Annuleren" }), /* @__PURE__ */ jsx(CommandFormDialogSubmit, { children: "Opslaan" })] })
41
+ ]
42
+ })] })
43
+ });
44
+ }
45
+
46
+ //#endregion
47
+ export { LocalDriveFoldersUpdateCommand };
48
+ //# sourceMappingURL=command-folder-update.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-folder-update.mjs","names":[],"sources":["../../../../src/providers/local/components/command-folder-update.tsx"],"sourcesContent":["\"use client\";\n\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { DefaultError, MutationOptions } from \"@tanstack/react-query\";\nimport {\n CommandFormDialog,\n CommandFormDialogCancel,\n CommandFormDialogContent,\n CommandFormDialogFields,\n CommandFormDialogFooter,\n CommandFormDialogHeader,\n CommandFormDialogSubmit,\n CommandFormDialogTitle,\n CommandFormDialogTrigger,\n CommandLabel,\n} from \"@tulip-systems/core/commands/client\";\nimport { Input } from \"@tulip-systems/core/components\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@tulip-systems/core/components/client\";\nimport { FolderPen } from \"lucide-react\";\nimport { useForm } from \"react-hook-form\";\nimport { type UpdateLocalDriveNodeInput, updateLocalDriveNodeInputSchema } from \"../lib/validators\";\n\nexport type LocalDriveFoldersUpdateCommandProps<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n> = {\n defaultValues: Partial<UpdateLocalDriveNodeInput>;\n variables: (values: UpdateLocalDriveNodeInput) => TVariables;\n mutation: MutationOptions<TData, TError, TVariables, TOnMutateResult>;\n};\n\nexport function LocalDriveFoldersUpdateCommand<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n>({\n defaultValues,\n variables,\n mutation,\n}: LocalDriveFoldersUpdateCommandProps<TData, TError, TVariables, TOnMutateResult>) {\n const form = useForm<UpdateLocalDriveNodeInput>({\n resolver: zodResolver(updateLocalDriveNodeInputSchema),\n defaultValues,\n });\n\n return (\n <Form {...form}>\n <CommandFormDialog>\n <CommandFormDialogTrigger label=\"Wijzigen\">\n <FolderPen className=\"size-4\" />\n <CommandLabel />\n </CommandFormDialogTrigger>\n\n <CommandFormDialogContent variables={variables} mutation={mutation}>\n <CommandFormDialogHeader>\n <CommandFormDialogTitle>Folder wijzigen</CommandFormDialogTitle>\n </CommandFormDialogHeader>\n\n <CommandFormDialogFields>\n <FormField\n control={form.control}\n name=\"name\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Naam</FormLabel>\n <FormControl>\n <Input {...field} value={field.value ?? \"\"} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </CommandFormDialogFields>\n\n <CommandFormDialogFooter>\n <CommandFormDialogCancel>Annuleren</CommandFormDialogCancel>\n <CommandFormDialogSubmit>Opslaan</CommandFormDialogSubmit>\n </CommandFormDialogFooter>\n </CommandFormDialogContent>\n </CommandFormDialog>\n </Form>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAwCA,SAAgB,+BAKd,EACA,eACA,WACA,YACkF;CAClF,MAAM,OAAO,QAAmC;EAC9C,UAAU,YAAY,gCAAgC;EACtD;EACD,CAAC;AAEF,QACE,oBAAC;EAAK,GAAI;YACR,qBAAC,gCACC,qBAAC;GAAyB,OAAM;cAC9B,oBAAC,aAAU,WAAU,WAAW,EAChC,oBAAC,iBAAe;IACS,EAE3B,qBAAC;GAAoC;GAAqB;;IACxD,oBAAC,qCACC,oBAAC,oCAAuB,oBAAwC,GACxC;IAE1B,oBAAC,qCACC,oBAAC;KACC,SAAS,KAAK;KACd,MAAK;KACL,SAAS,EAAE,YACT,qBAAC;MACC,oBAAC,uBAAU,SAAgB;MAC3B,oBAAC,yBACC,oBAAC;OAAM,GAAI;OAAO,OAAO,MAAM,SAAS;QAAM,GAClC;MACd,oBAAC,gBAAc;SACN;MAEb,GACsB;IAE1B,qBAAC,sCACC,oBAAC,qCAAwB,cAAmC,EAC5D,oBAAC,qCAAwB,YAAiC,IAClC;;IACD,IACT;GACf"}
@@ -0,0 +1,7 @@
1
+ import { DriveContent } from "../../../components/content.mjs";
2
+
3
+ //#region src/providers/local/components/content.client.d.ts
4
+ declare const LocalDriveContent: typeof DriveContent;
5
+ //#endregion
6
+ export { LocalDriveContent };
7
+ //# sourceMappingURL=content.client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.client.d.mts","names":[],"sources":["../../../../src/providers/local/components/content.client.tsx"],"mappings":";;;cAEa,iBAAA,SAAiB,YAAA"}
@@ -0,0 +1,8 @@
1
+ import { DriveContent } from "../../../components/content.mjs";
2
+
3
+ //#region src/providers/local/components/content.client.tsx
4
+ const LocalDriveContent = DriveContent;
5
+
6
+ //#endregion
7
+ export { LocalDriveContent };
8
+ //# sourceMappingURL=content.client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.client.mjs","names":[],"sources":["../../../../src/providers/local/components/content.client.tsx"],"sourcesContent":["import { DriveContent } from \"@/components/content\";\n\nexport const LocalDriveContent = DriveContent;\n"],"mappings":";;;AAEA,MAAa,oBAAoB"}
@@ -0,0 +1,16 @@
1
+ import { DriveBreadcrumb, DriveBreadcrumbs } from "../../../components/navigation/breadcrumbs.client.mjs";
2
+ import { DriveHeader, DriveHeaderBreadcrumbs, DriveHeaderTools } from "../../../components/navigation/header.client.mjs";
3
+ import { DriveToolbar, DriveToolbarTools } from "../../../components/navigation/toolbar.client.mjs";
4
+ import { DriveViewSwitcher } from "../../../components/navigation/view-switcher.client.mjs";
5
+
6
+ //#region src/providers/local/components/navigation.client.d.ts
7
+ declare const LocalDriveHeader: typeof DriveHeader;
8
+ declare const LocalDriveHeaderBreadcrumbs: typeof DriveHeaderBreadcrumbs;
9
+ declare const LocalDriveHeaderTools: typeof DriveHeaderTools;
10
+ declare const LocalDriveToolbar: typeof DriveToolbar;
11
+ declare const LocalDriveToolbarBreadcrumbs: typeof DriveBreadcrumbs;
12
+ declare const LocalDriveToolbarTools: typeof DriveToolbarTools;
13
+ declare const LocalDriveViewSwitcher: typeof DriveViewSwitcher;
14
+ //#endregion
15
+ export { LocalDriveHeader, LocalDriveHeaderBreadcrumbs, LocalDriveHeaderTools, LocalDriveToolbar, LocalDriveToolbarBreadcrumbs, LocalDriveToolbarTools, LocalDriveViewSwitcher };
16
+ //# sourceMappingURL=navigation.client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.client.d.mts","names":[],"sources":["../../../../src/providers/local/components/navigation.client.tsx"],"mappings":";;;;;;cAgBa,gBAAA,SAAgB,WAAA;AAAA,cAChB,2BAAA,SAA2B,sBAAA;AAAA,cAC3B,qBAAA,SAAqB,gBAAA;AAAA,cACrB,iBAAA,SAAiB,YAAA;AAAA,cACjB,4BAAA,SAAsD,gBAAA;AAAA,cACtD,sBAAA,SAAsB,iBAAA;AAAA,cACtB,sBAAA,SAAsB,iBAAA"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+
3
+ import { DriveHeader, DriveHeaderBreadcrumbs, DriveHeaderTools } from "../../../components/navigation/header.client.mjs";
4
+ import { DriveToolbar, DriveToolbarBreadcrumbs, DriveToolbarTools } from "../../../components/navigation/toolbar.client.mjs";
5
+ import { DriveViewSwitcher } from "../../../components/navigation/view-switcher.client.mjs";
6
+
7
+ //#region src/providers/local/components/navigation.client.tsx
8
+ const LocalDriveHeader = DriveHeader;
9
+ const LocalDriveHeaderBreadcrumbs = DriveHeaderBreadcrumbs;
10
+ const LocalDriveHeaderTools = DriveHeaderTools;
11
+ const LocalDriveToolbar = DriveToolbar;
12
+ const LocalDriveToolbarBreadcrumbs = DriveToolbarBreadcrumbs;
13
+ const LocalDriveToolbarTools = DriveToolbarTools;
14
+ const LocalDriveViewSwitcher = DriveViewSwitcher;
15
+
16
+ //#endregion
17
+ export { LocalDriveHeader, LocalDriveHeaderBreadcrumbs, LocalDriveHeaderTools, LocalDriveToolbar, LocalDriveToolbarBreadcrumbs, LocalDriveToolbarTools, LocalDriveViewSwitcher };
18
+ //# sourceMappingURL=navigation.client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.client.mjs","names":[],"sources":["../../../../src/providers/local/components/navigation.client.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n DriveHeader,\n DriveHeaderBreadcrumbs,\n DriveHeaderTools,\n} from \"@/components/navigation/header.client\";\nimport {\n DriveToolbar,\n DriveToolbarBreadcrumbs,\n DriveToolbarTools,\n} from \"@/components/navigation/toolbar.client\";\nimport { DriveViewSwitcher } from \"@/components/navigation/view-switcher.client\";\n\nexport type { DriveBreadcrumb } from \"@/components/navigation/breadcrumbs.client\";\n\nexport const LocalDriveHeader = DriveHeader;\nexport const LocalDriveHeaderBreadcrumbs = DriveHeaderBreadcrumbs;\nexport const LocalDriveHeaderTools = DriveHeaderTools;\nexport const LocalDriveToolbar = DriveToolbar;\nexport const LocalDriveToolbarBreadcrumbs = DriveToolbarBreadcrumbs;\nexport const LocalDriveToolbarTools = DriveToolbarTools;\nexport const LocalDriveViewSwitcher = DriveViewSwitcher;\n"],"mappings":";;;;;;;AAgBA,MAAa,mBAAmB;AAChC,MAAa,8BAA8B;AAC3C,MAAa,wBAAwB;AACrC,MAAa,oBAAoB;AACjC,MAAa,+BAA+B;AAC5C,MAAa,yBAAyB;AACtC,MAAa,yBAAyB"}
@@ -0,0 +1,40 @@
1
+ import { DriveSelectionContextValue } from "../../../components/selection.client.mjs";
2
+ import { DriveViewProviderProps } from "../../../components/view.client.mjs";
3
+ import { DriveContextValue } from "../../../components/context.client.mjs";
4
+ import { DriveDragDropProviderProps } from "../../../components/dnd.client.mjs";
5
+ import { LocalDriveUploadZoneProps } from "./upload-zone.client.mjs";
6
+ import * as react from "react";
7
+ import { PropsWithChildren } from "react";
8
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
9
+
10
+ //#region src/providers/local/components/provider.client.d.ts
11
+ type LocalDriveContextValue = DriveContextValue & {
12
+ readonly?: boolean;
13
+ };
14
+ declare const LocalDriveContext: react.Context<LocalDriveContextValue>;
15
+ declare function useLocalDriveContext(): LocalDriveContextValue;
16
+ type LocalDriveProviderProps = PropsWithChildren<LocalDriveContextValue & Partial<DriveSelectionContextValue> & Pick<DriveViewProviderProps, "initialView"> & Pick<DriveDragDropProviderProps, "onMove"> & Pick<LocalDriveUploadZoneProps, "driveUploadClient" | "uploadHooks" | "onUploadCompleted" | "onUploadFailed" | "optimistic" | "disabled" | "className"> & {
17
+ parentId?: string | null;
18
+ }>;
19
+ declare function LocalDriveProvider({
20
+ initialView,
21
+ namespace,
22
+ parentId,
23
+ permission,
24
+ meta,
25
+ readonly,
26
+ selection,
27
+ selectionConditions,
28
+ onMove,
29
+ driveUploadClient,
30
+ uploadHooks,
31
+ onUploadCompleted,
32
+ onUploadFailed,
33
+ optimistic,
34
+ disabled,
35
+ className,
36
+ children
37
+ }: LocalDriveProviderProps): react_jsx_runtime0.JSX.Element;
38
+ //#endregion
39
+ export { LocalDriveContext, LocalDriveContextValue, LocalDriveProvider, LocalDriveProviderProps, useLocalDriveContext };
40
+ //# sourceMappingURL=provider.client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.client.d.mts","names":[],"sources":["../../../../src/providers/local/components/provider.client.tsx"],"mappings":";;;;;;;;;;KAcY,sBAAA,GAAyB,iBAAA;EACnC,QAAA;AAAA;AAAA,cAGW,iBAAA,EAAiB,KAAA,CAAA,OAAA,CAAA,sBAAA;AAAA,iBAEd,oBAAA,CAAA,GAAoB,sBAAA;AAAA,KAMxB,uBAAA,GAA0B,iBAAA,CACpC,sBAAA,GACE,OAAA,CAAQ,0BAAA,IACR,IAAA,CAAK,sBAAA,mBACL,IAAA,CAAK,0BAAA,cACL,IAAA,CACE,yBAAA;EASA,QAAA;AAAA;AAAA,iBAIU,kBAAA,CAAA;EACd,WAAA;EACA,SAAA;EACA,QAAA;EACA,UAAA;EACA,IAAA;EACA,QAAA;EACA,SAAA;EACA,mBAAA;EACA,MAAA;EACA,iBAAA;EACA,WAAA;EACA,iBAAA;EACA,cAAA;EACA,UAAA;EACA,QAAA;EACA,SAAA;EACA;AAAA,GACC,uBAAA,GAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,61 @@
1
+ "use client";
2
+
3
+ import { DriveSelectionProvider } from "../../../components/selection.client.mjs";
4
+ import { DriveViewProvider } from "../../../components/view.client.mjs";
5
+ import { DriveDragDropProvider } from "../../../components/dnd.client.mjs";
6
+ import { LocalDriveUploadZone } from "./upload-zone.client.mjs";
7
+ import { cn } from "@tulip-systems/core/lib";
8
+ import { createContext, use } from "react";
9
+ import { jsx } from "react/jsx-runtime";
10
+ import { Allowed } from "@tulip-systems/core/auth/client";
11
+
12
+ //#region src/providers/local/components/provider.client.tsx
13
+ const LocalDriveContext = createContext({});
14
+ function useLocalDriveContext() {
15
+ const context = use(LocalDriveContext);
16
+ if (!context) throw new Error("LocalDriveContext not found!");
17
+ return context;
18
+ }
19
+ function LocalDriveProvider({ initialView = "grid", namespace, parentId, permission, meta, readonly = false, selection, selectionConditions, onMove, driveUploadClient, uploadHooks, onUploadCompleted, onUploadFailed, optimistic, disabled, className, children }) {
20
+ const isDisabled = disabled ?? readonly;
21
+ return /* @__PURE__ */ jsx(Allowed, {
22
+ permission,
23
+ children: /* @__PURE__ */ jsx(DriveSelectionProvider, {
24
+ selection,
25
+ selectionConditions,
26
+ children: /* @__PURE__ */ jsx(DriveViewProvider, {
27
+ initialView,
28
+ children: /* @__PURE__ */ jsx(DriveDragDropProvider, {
29
+ disabled: isDisabled,
30
+ onMove,
31
+ children: /* @__PURE__ */ jsx(LocalDriveContext, {
32
+ value: {
33
+ namespace,
34
+ permission,
35
+ meta,
36
+ readonly
37
+ },
38
+ children: /* @__PURE__ */ jsx(LocalDriveUploadZone, {
39
+ disabled: isDisabled,
40
+ className: cn("flex min-h-dvh flex-col", className),
41
+ variables: {
42
+ namespace,
43
+ parentId
44
+ },
45
+ driveUploadClient,
46
+ uploadHooks,
47
+ onUploadCompleted,
48
+ onUploadFailed,
49
+ optimistic,
50
+ children
51
+ })
52
+ })
53
+ })
54
+ })
55
+ })
56
+ });
57
+ }
58
+
59
+ //#endregion
60
+ export { LocalDriveContext, LocalDriveProvider, useLocalDriveContext };
61
+ //# sourceMappingURL=provider.client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.client.mjs","names":[],"sources":["../../../../src/providers/local/components/provider.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Allowed } from \"@tulip-systems/core/auth/client\";\nimport { cn } from \"@tulip-systems/core/lib\";\nimport { createContext, type PropsWithChildren, use } from \"react\";\nimport type { DriveContextValue } from \"@/components/context.client\";\nimport { DriveDragDropProvider, type DriveDragDropProviderProps } from \"@/components/dnd.client\";\nimport {\n type DriveSelectionContextValue,\n DriveSelectionProvider,\n} from \"@/components/selection.client\";\nimport { DriveViewProvider, type DriveViewProviderProps } from \"@/components/view.client\";\nimport { LocalDriveUploadZone, type LocalDriveUploadZoneProps } from \"./upload-zone.client\";\n\nexport type LocalDriveContextValue = DriveContextValue & {\n readonly?: boolean;\n};\n\nexport const LocalDriveContext = createContext({} as LocalDriveContextValue);\n\nexport function useLocalDriveContext() {\n const context = use(LocalDriveContext);\n if (!context) throw new Error(\"LocalDriveContext not found!\");\n return context;\n}\n\nexport type LocalDriveProviderProps = PropsWithChildren<\n LocalDriveContextValue &\n Partial<DriveSelectionContextValue> &\n Pick<DriveViewProviderProps, \"initialView\"> &\n Pick<DriveDragDropProviderProps, \"onMove\"> &\n Pick<\n LocalDriveUploadZoneProps,\n | \"driveUploadClient\"\n | \"uploadHooks\"\n | \"onUploadCompleted\"\n | \"onUploadFailed\"\n | \"optimistic\"\n | \"disabled\"\n | \"className\"\n > & {\n parentId?: string | null;\n }\n>;\n\nexport function LocalDriveProvider({\n initialView = \"grid\",\n namespace,\n parentId,\n permission,\n meta,\n readonly = false,\n selection,\n selectionConditions,\n onMove,\n driveUploadClient,\n uploadHooks,\n onUploadCompleted,\n onUploadFailed,\n optimistic,\n disabled,\n className,\n children,\n}: LocalDriveProviderProps) {\n const isDisabled = disabled ?? readonly;\n\n return (\n <Allowed permission={permission}>\n <DriveSelectionProvider selection={selection} selectionConditions={selectionConditions}>\n <DriveViewProvider initialView={initialView}>\n <DriveDragDropProvider disabled={isDisabled} onMove={onMove}>\n <LocalDriveContext value={{ namespace, permission, meta, readonly }}>\n <LocalDriveUploadZone\n disabled={isDisabled}\n className={cn(\"flex min-h-dvh flex-col\", className)}\n variables={{ namespace, parentId }}\n driveUploadClient={driveUploadClient}\n uploadHooks={uploadHooks}\n onUploadCompleted={onUploadCompleted}\n onUploadFailed={onUploadFailed}\n optimistic={optimistic}\n >\n {children}\n </LocalDriveUploadZone>\n </LocalDriveContext>\n </DriveDragDropProvider>\n </DriveViewProvider>\n </DriveSelectionProvider>\n </Allowed>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAa,oBAAoB,cAAc,EAAE,CAA2B;AAE5E,SAAgB,uBAAuB;CACrC,MAAM,UAAU,IAAI,kBAAkB;AACtC,KAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAC7D,QAAO;;AAsBT,SAAgB,mBAAmB,EACjC,cAAc,QACd,WACA,UACA,YACA,MACA,WAAW,OACX,WACA,qBACA,QACA,mBACA,aACA,mBACA,gBACA,YACA,UACA,WACA,YAC0B;CAC1B,MAAM,aAAa,YAAY;AAE/B,QACE,oBAAC;EAAoB;YACnB,oBAAC;GAAkC;GAAgC;aACjE,oBAAC;IAA+B;cAC9B,oBAAC;KAAsB,UAAU;KAAoB;eACnD,oBAAC;MAAkB,OAAO;OAAE;OAAW;OAAY;OAAM;OAAU;gBACjE,oBAAC;OACC,UAAU;OACV,WAAW,GAAG,2BAA2B,UAAU;OACnD,WAAW;QAAE;QAAW;QAAU;OACf;OACN;OACM;OACH;OACJ;OAEX;QACoB;OACL;MACE;KACN;IACG;GACjB"}
@@ -0,0 +1,38 @@
1
+ import { LocalDriveFileNode, LocalDriveNodeWithAsset } from "../lib/validators.mjs";
2
+ import { LocalDriveUploadClient } from "../lib/upload.client.mjs";
3
+ import React from "react";
4
+
5
+ //#region src/providers/local/components/upload-zone-context.client.d.ts
6
+ /**
7
+ * Upload Zone Context Value
8
+ */
9
+ type LocalDriveUploadZoneContextValue = {
10
+ driveUploadClient: LocalDriveUploadClient;
11
+ onUpload: (file: File) => Promise<LocalDriveFileNode>;
12
+ onRemove: (ids: string[]) => Promise<void>;
13
+ optimistic?: {
14
+ add?: (newValue: LocalDriveNodeWithAsset) => Promise<void> | void;
15
+ replace?: (input: {
16
+ id: string;
17
+ newValue: LocalDriveNodeWithAsset;
18
+ }) => Promise<void> | void;
19
+ remove?: (ids: string[]) => Promise<void> | void;
20
+ invalidate?: () => Promise<void> | void;
21
+ cancel?: () => Promise<void> | void;
22
+ };
23
+ disabled?: boolean;
24
+ };
25
+ /**
26
+ * Upload Zone Context
27
+ */
28
+ declare const LocalDriveUploadZoneContext: React.Context<LocalDriveUploadZoneContextValue | null>;
29
+ type DriveUploadZoneContextValue = LocalDriveUploadZoneContextValue;
30
+ declare const DriveUploadZoneContext: React.Context<LocalDriveUploadZoneContextValue | null>;
31
+ /**
32
+ * Upload Zone Hook
33
+ */
34
+ declare function useLocalDriveUploadZone(): LocalDriveUploadZoneContextValue;
35
+ declare const useDriveUploadZone: typeof useLocalDriveUploadZone;
36
+ //#endregion
37
+ export { DriveUploadZoneContext, DriveUploadZoneContextValue, LocalDriveUploadZoneContext, LocalDriveUploadZoneContextValue, useDriveUploadZone, useLocalDriveUploadZone };
38
+ //# sourceMappingURL=upload-zone-context.client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-zone-context.client.d.mts","names":[],"sources":["../../../../src/providers/local/components/upload-zone-context.client.tsx"],"mappings":";;;;;;;AASA;KAAY,gCAAA;EACV,iBAAA,EAAmB,sBAAA;EACnB,QAAA,GAAW,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,kBAAA;EAClC,QAAA,GAAW,GAAA,eAAkB,OAAA;EAC7B,UAAA;IACE,GAAA,IAAO,QAAA,EAAU,uBAAA,KAA4B,OAAA;IAC7C,OAAA,IAAW,KAAA;MAAS,EAAA;MAAY,QAAA,EAAU,uBAAA;IAAA,MAA8B,OAAA;IACxE,MAAA,IAAU,GAAA,eAAkB,OAAA;IAC5B,UAAA,SAAmB,OAAA;IACnB,MAAA,SAAe,OAAA;EAAA;EAEjB,QAAA;AAAA;;;;cAMW,2BAAA,EAA2B,KAAA,CAAA,OAAA,CAAA,gCAAA;AAAA,KAG5B,2BAAA,GAA8B,gCAAA;AAAA,cAC7B,sBAAA,EAAsB,KAAA,CAAA,OAAA,CAAA,gCAAA;;;;iBAKnB,uBAAA,CAAA,GAAuB,gCAAA;AAAA,cAQ1B,kBAAA,SAAkB,uBAAA"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ import React from "react";
4
+
5
+ //#region src/providers/local/components/upload-zone-context.client.tsx
6
+ /**
7
+ * Upload Zone Context
8
+ */
9
+ const LocalDriveUploadZoneContext = React.createContext(null);
10
+ const DriveUploadZoneContext = LocalDriveUploadZoneContext;
11
+ /**
12
+ * Upload Zone Hook
13
+ */
14
+ function useLocalDriveUploadZone() {
15
+ const context = React.useContext(LocalDriveUploadZoneContext);
16
+ if (!context) throw new Error("useUploadZone must be used within an UploadZoneContext provider");
17
+ return context;
18
+ }
19
+ const useDriveUploadZone = useLocalDriveUploadZone;
20
+
21
+ //#endregion
22
+ export { DriveUploadZoneContext, LocalDriveUploadZoneContext, useDriveUploadZone, useLocalDriveUploadZone };
23
+ //# sourceMappingURL=upload-zone-context.client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-zone-context.client.mjs","names":[],"sources":["../../../../src/providers/local/components/upload-zone-context.client.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport type { LocalDriveUploadClient } from \"@/providers/local/lib/upload.client\";\nimport type { LocalDriveFileNode, LocalDriveNodeWithAsset } from \"@/providers/local/lib/validators\";\n\n/**\n * Upload Zone Context Value\n */\nexport type LocalDriveUploadZoneContextValue = {\n driveUploadClient: LocalDriveUploadClient;\n onUpload: (file: File) => Promise<LocalDriveFileNode>;\n onRemove: (ids: string[]) => Promise<void>;\n optimistic?: {\n add?: (newValue: LocalDriveNodeWithAsset) => Promise<void> | void;\n replace?: (input: { id: string; newValue: LocalDriveNodeWithAsset }) => Promise<void> | void;\n remove?: (ids: string[]) => Promise<void> | void;\n invalidate?: () => Promise<void> | void;\n cancel?: () => Promise<void> | void;\n };\n disabled?: boolean;\n};\n\n/**\n * Upload Zone Context\n */\nexport const LocalDriveUploadZoneContext =\n React.createContext<LocalDriveUploadZoneContextValue | null>(null);\n\nexport type DriveUploadZoneContextValue = LocalDriveUploadZoneContextValue;\nexport const DriveUploadZoneContext = LocalDriveUploadZoneContext;\n\n/**\n * Upload Zone Hook\n */\nexport function useLocalDriveUploadZone() {\n const context = React.useContext(LocalDriveUploadZoneContext);\n if (!context) {\n throw new Error(\"useUploadZone must be used within an UploadZoneContext provider\");\n }\n return context;\n}\n\nexport const useDriveUploadZone = useLocalDriveUploadZone;\n"],"mappings":";;;;;;;;AA0BA,MAAa,8BACX,MAAM,cAAuD,KAAK;AAGpE,MAAa,yBAAyB;;;;AAKtC,SAAgB,0BAA0B;CACxC,MAAM,UAAU,MAAM,WAAW,4BAA4B;AAC7D,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,kEAAkE;AAEpF,QAAO;;AAGT,MAAa,qBAAqB"}
@@ -0,0 +1,30 @@
1
+ import { LocalDriveFileNode } from "../lib/validators.mjs";
2
+ import { LocalDriveUploadHooks, PrepareLocalDriveUploadInput } from "../lib/upload.client.mjs";
3
+ import { LocalDriveUploadZoneContextValue } from "./upload-zone-context.client.mjs";
4
+ import { ComponentProps } from "react";
5
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
+
7
+ //#region src/providers/local/components/upload-zone.client.d.ts
8
+ type LocalDriveUploadZoneProps = ComponentProps<"div"> & Pick<LocalDriveUploadZoneContextValue, "optimistic" | "driveUploadClient" | "disabled"> & {
9
+ variables: Pick<PrepareLocalDriveUploadInput, "namespace" | "parentId" | "readonly" | "hidden" | "visibility">;
10
+ uploadHooks?: LocalDriveUploadHooks;
11
+ onUploadCompleted?: (node: LocalDriveFileNode) => Promise<void> | void;
12
+ onUploadFailed?: (error: unknown) => Promise<void> | void;
13
+ };
14
+ type DriveUploadZoneProps = LocalDriveUploadZoneProps;
15
+ declare function LocalDriveUploadZone({
16
+ variables,
17
+ optimistic,
18
+ driveUploadClient,
19
+ uploadHooks,
20
+ onUploadCompleted,
21
+ onUploadFailed,
22
+ disabled,
23
+ children,
24
+ className,
25
+ ...props
26
+ }: LocalDriveUploadZoneProps): react_jsx_runtime0.JSX.Element;
27
+ declare const DriveUploadZone: typeof LocalDriveUploadZone;
28
+ //#endregion
29
+ export { DriveUploadZone, DriveUploadZoneProps, LocalDriveUploadZone, LocalDriveUploadZoneProps };
30
+ //# sourceMappingURL=upload-zone.client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-zone.client.d.mts","names":[],"sources":["../../../../src/providers/local/components/upload-zone.client.tsx"],"mappings":";;;;;;;KAoBY,yBAAA,GAA4B,cAAA,UACtC,IAAA,CAAK,gCAAA;EACH,SAAA,EAAW,IAAA,CACT,4BAAA;EAGF,WAAA,GAAc,qBAAA;EAEd,iBAAA,IAAqB,IAAA,EAAM,kBAAA,KAAuB,OAAA;EAClD,cAAA,IAAkB,KAAA,cAAmB,OAAA;AAAA;AAAA,KAG7B,oBAAA,GAAuB,yBAAA;AAAA,iBAEnB,oBAAA,CAAA;EACd,SAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;EACA,iBAAA;EACA,cAAA;EACA,QAAA;EACA,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,yBAAA,GAAyB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAqJf,eAAA,SAAe,oBAAA"}
@@ -0,0 +1,147 @@
1
+ "use client";
2
+
3
+ import { inferLocalDriveNodeSubtype } from "../lib/helpers.mjs";
4
+ import { LocalDriveUploadZoneContext } from "./upload-zone-context.client.mjs";
5
+ import { cn } from "@tulip-systems/core/lib";
6
+ import { useCallback } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { toast } from "@tulip-systems/core/components/client";
9
+ import { useAction } from "@tulip-systems/core/lib/client";
10
+ import { useDropzone } from "react-dropzone";
11
+
12
+ //#region src/providers/local/components/upload-zone.client.tsx
13
+ function LocalDriveUploadZone({ variables, optimistic, driveUploadClient, uploadHooks, onUploadCompleted, onUploadFailed, disabled = false, children, className, ...props }) {
14
+ /**
15
+ * Delete mutation
16
+ */
17
+ const deleteMutation = useAction({
18
+ mutationFn: async (ids) => driveUploadClient.deleteFiles(ids),
19
+ onMutate: async (ids) => {
20
+ await optimistic?.cancel?.();
21
+ await optimistic?.remove?.(ids);
22
+ },
23
+ onError: async (error) => {
24
+ console.error("Delete failed upload error: ", error);
25
+ await onUploadFailed?.(error);
26
+ },
27
+ onSettled: () => {
28
+ optimistic?.invalidate?.();
29
+ }
30
+ });
31
+ /**
32
+ * Upload mutation
33
+ */
34
+ const uploadMutation = useAction({
35
+ mutationFn: async (params) => driveUploadClient.upload(params, uploadHooks),
36
+ onMutate: async (variables) => {
37
+ await optimistic?.cancel?.();
38
+ const newNode = {
39
+ id: variables.uploadId,
40
+ provider: "local",
41
+ createdAt: /* @__PURE__ */ new Date(),
42
+ updatedAt: /* @__PURE__ */ new Date(),
43
+ type: "file",
44
+ name: variables.file.name,
45
+ namespace: variables.namespace,
46
+ parentId: variables.parentId ?? null,
47
+ size: variables.file.size,
48
+ contentType: variables.file.type || "application/octet-stream",
49
+ readonly: variables.readonly ?? false,
50
+ hidden: variables.hidden ?? false,
51
+ archivedAt: null,
52
+ assetId: null,
53
+ subtype: inferLocalDriveNodeSubtype({
54
+ name: variables.file.name,
55
+ contentType: variables.file.type || "application/octet-stream"
56
+ }),
57
+ links: {
58
+ view: null,
59
+ download: null,
60
+ preview: null,
61
+ thumbnail: null
62
+ },
63
+ availability: "pending",
64
+ asset: {
65
+ status: "pending",
66
+ name: variables.file.name,
67
+ contentType: variables.file.type || "application/octet-stream",
68
+ size: variables.file.size,
69
+ visibility: variables.visibility || "private"
70
+ }
71
+ };
72
+ await optimistic?.add?.(newNode);
73
+ },
74
+ onSuccess: async (data, variables) => {
75
+ await optimistic?.replace?.({
76
+ id: variables.uploadId,
77
+ newValue: {
78
+ ...data,
79
+ asset: {
80
+ status: "ready",
81
+ name: data.name,
82
+ contentType: data.contentType,
83
+ size: data.size,
84
+ visibility: variables.visibility || "private"
85
+ }
86
+ }
87
+ });
88
+ await onUploadCompleted?.(data);
89
+ toast.success(`Succesvol geupload: ${data.name}`);
90
+ },
91
+ onError: async (error) => {
92
+ await onUploadFailed?.(error);
93
+ console.error("Upload error: ", error);
94
+ toast.error("Bestand uploaden mislukt", { description: error instanceof Error ? error.message : void 0 });
95
+ },
96
+ onSettled: () => {
97
+ optimistic?.invalidate?.();
98
+ }
99
+ });
100
+ /**
101
+ * Upload file handler
102
+ */
103
+ const onUpload = useCallback(async (file) => {
104
+ console.info("Uploading file", file);
105
+ const req = driveUploadClient.prepareUpload({
106
+ ...variables,
107
+ file
108
+ });
109
+ return await uploadMutation.mutateAsync(req);
110
+ }, [
111
+ driveUploadClient,
112
+ variables,
113
+ uploadMutation
114
+ ]);
115
+ const { getRootProps, getInputProps, isDragActive } = useDropzone({
116
+ onDrop: useCallback(async (acceptedFiles) => {
117
+ if (acceptedFiles.length === 0) return;
118
+ await Promise.allSettled(acceptedFiles.map(onUpload));
119
+ }, [onUpload]),
120
+ noClick: true,
121
+ disabled
122
+ });
123
+ return /* @__PURE__ */ jsxs("div", {
124
+ ...props,
125
+ ...getRootProps(),
126
+ className: cn("relative z-0", className),
127
+ children: [
128
+ /* @__PURE__ */ jsx("input", { ...getInputProps() }),
129
+ isDragActive && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 z-10 rounded-md bg-primary/20 opacity-70 backdrop-blur-3xl" }),
130
+ /* @__PURE__ */ jsx(LocalDriveUploadZoneContext, {
131
+ value: {
132
+ driveUploadClient,
133
+ onUpload,
134
+ onRemove: deleteMutation.mutateAsync,
135
+ optimistic,
136
+ disabled
137
+ },
138
+ children
139
+ })
140
+ ]
141
+ });
142
+ }
143
+ const DriveUploadZone = LocalDriveUploadZone;
144
+
145
+ //#endregion
146
+ export { DriveUploadZone, LocalDriveUploadZone };
147
+ //# sourceMappingURL=upload-zone.client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-zone.client.mjs","names":[],"sources":["../../../../src/providers/local/components/upload-zone.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { toast } from \"@tulip-systems/core/components/client\";\nimport { cn } from \"@tulip-systems/core/lib\";\nimport { useAction } from \"@tulip-systems/core/lib/client\";\nimport type { StorageAsset } from \"@tulip-systems/core/storage\";\nimport { type ComponentProps, useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { inferLocalDriveNodeSubtype } from \"@/providers/local/lib/helpers\";\nimport type {\n LocalDriveUploadFileRequest,\n LocalDriveUploadHooks,\n PrepareLocalDriveUploadInput,\n} from \"@/providers/local/lib/upload.client\";\nimport type { LocalDriveFileNode, LocalDriveNodeWithAsset } from \"@/providers/local/lib/validators\";\nimport {\n LocalDriveUploadZoneContext,\n type LocalDriveUploadZoneContextValue,\n} from \"./upload-zone-context.client\";\n\nexport type LocalDriveUploadZoneProps = ComponentProps<\"div\"> &\n Pick<LocalDriveUploadZoneContextValue, \"optimistic\" | \"driveUploadClient\" | \"disabled\"> & {\n variables: Pick<\n PrepareLocalDriveUploadInput,\n \"namespace\" | \"parentId\" | \"readonly\" | \"hidden\" | \"visibility\"\n >;\n uploadHooks?: LocalDriveUploadHooks;\n\n onUploadCompleted?: (node: LocalDriveFileNode) => Promise<void> | void;\n onUploadFailed?: (error: unknown) => Promise<void> | void;\n };\n\nexport type DriveUploadZoneProps = LocalDriveUploadZoneProps;\n\nexport function LocalDriveUploadZone({\n variables,\n optimistic,\n driveUploadClient,\n uploadHooks,\n onUploadCompleted,\n onUploadFailed,\n disabled = false,\n children,\n className,\n ...props\n}: LocalDriveUploadZoneProps) {\n /**\n * Delete mutation\n */\n const deleteMutation = useAction({\n mutationFn: async (ids: string[]) => driveUploadClient.deleteFiles(ids),\n onMutate: async (ids) => {\n await optimistic?.cancel?.();\n await optimistic?.remove?.(ids);\n },\n onError: async (error) => {\n console.error(\"Delete failed upload error: \", error);\n await onUploadFailed?.(error);\n },\n onSettled: () => {\n optimistic?.invalidate?.();\n },\n });\n\n /**\n * Upload mutation\n */\n const uploadMutation = useAction({\n mutationFn: async (params: LocalDriveUploadFileRequest) =>\n driveUploadClient.upload(params, uploadHooks),\n onMutate: async (variables) => {\n await optimistic?.cancel?.();\n\n // Generate a new node\n const newNode = {\n id: variables.uploadId,\n provider: \"local\",\n createdAt: new Date(),\n updatedAt: new Date(),\n type: \"file\",\n name: variables.file.name,\n namespace: variables.namespace,\n parentId: variables.parentId ?? null,\n size: variables.file.size,\n contentType: variables.file.type || \"application/octet-stream\",\n readonly: variables.readonly ?? false,\n hidden: variables.hidden ?? false,\n archivedAt: null,\n assetId: null,\n subtype: inferLocalDriveNodeSubtype({\n name: variables.file.name,\n contentType: variables.file.type || \"application/octet-stream\",\n }),\n links: {\n view: null,\n download: null,\n preview: null,\n thumbnail: null,\n },\n availability: \"pending\",\n asset: {\n status: \"pending\",\n name: variables.file.name,\n contentType: variables.file.type || \"application/octet-stream\",\n size: variables.file.size,\n visibility: variables.visibility || \"private\",\n } as StorageAsset,\n } as LocalDriveNodeWithAsset;\n\n await optimistic?.add?.(newNode);\n },\n onSuccess: async (data, variables) => {\n await optimistic?.replace?.({\n id: variables.uploadId,\n newValue: {\n ...data,\n asset: {\n status: \"ready\",\n name: data.name,\n contentType: data.contentType,\n size: data.size,\n visibility: variables.visibility || \"private\",\n } as StorageAsset,\n },\n });\n await onUploadCompleted?.(data);\n toast.success(`Succesvol geupload: ${data.name}`);\n },\n onError: async (error) => {\n await onUploadFailed?.(error);\n\n console.error(\"Upload error: \", error);\n toast.error(\"Bestand uploaden mislukt\", {\n description: error instanceof Error ? error.message : undefined,\n });\n },\n onSettled: () => {\n optimistic?.invalidate?.();\n },\n });\n\n /**\n * Upload file handler\n */\n const onUpload = useCallback(\n async (file: File) => {\n console.info(\"Uploading file\", file);\n const req = driveUploadClient.prepareUpload({ ...variables, file });\n return await uploadMutation.mutateAsync(req);\n },\n [driveUploadClient, variables, uploadMutation],\n );\n\n /**\n * Drop handler\n */\n const onDrop = useCallback(\n async (acceptedFiles: File[]) => {\n if (acceptedFiles.length === 0) return;\n await Promise.allSettled(acceptedFiles.map(onUpload));\n },\n [onUpload],\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n noClick: true,\n disabled,\n });\n\n return (\n <div {...props} {...getRootProps()} className={cn(\"relative z-0\", className)}>\n <input {...getInputProps()} />\n\n {/* Show drag overlay when drag is active */}\n {isDragActive && (\n <div className=\"absolute inset-0 z-10 rounded-md bg-primary/20 opacity-70 backdrop-blur-3xl\" />\n )}\n\n <LocalDriveUploadZoneContext\n value={{\n driveUploadClient,\n onUpload,\n onRemove: deleteMutation.mutateAsync,\n optimistic,\n disabled,\n }}\n >\n {children}\n </LocalDriveUploadZoneContext>\n </div>\n );\n}\n\nexport const DriveUploadZone = LocalDriveUploadZone;\n"],"mappings":";;;;;;;;;;;;AAkCA,SAAgB,qBAAqB,EACnC,WACA,YACA,mBACA,aACA,mBACA,gBACA,WAAW,OACX,UACA,WACA,GAAG,SACyB;;;;CAI5B,MAAM,iBAAiB,UAAU;EAC/B,YAAY,OAAO,QAAkB,kBAAkB,YAAY,IAAI;EACvE,UAAU,OAAO,QAAQ;AACvB,SAAM,YAAY,UAAU;AAC5B,SAAM,YAAY,SAAS,IAAI;;EAEjC,SAAS,OAAO,UAAU;AACxB,WAAQ,MAAM,gCAAgC,MAAM;AACpD,SAAM,iBAAiB,MAAM;;EAE/B,iBAAiB;AACf,eAAY,cAAc;;EAE7B,CAAC;;;;CAKF,MAAM,iBAAiB,UAAU;EAC/B,YAAY,OAAO,WACjB,kBAAkB,OAAO,QAAQ,YAAY;EAC/C,UAAU,OAAO,cAAc;AAC7B,SAAM,YAAY,UAAU;GAG5B,MAAM,UAAU;IACd,IAAI,UAAU;IACd,UAAU;IACV,2BAAW,IAAI,MAAM;IACrB,2BAAW,IAAI,MAAM;IACrB,MAAM;IACN,MAAM,UAAU,KAAK;IACrB,WAAW,UAAU;IACrB,UAAU,UAAU,YAAY;IAChC,MAAM,UAAU,KAAK;IACrB,aAAa,UAAU,KAAK,QAAQ;IACpC,UAAU,UAAU,YAAY;IAChC,QAAQ,UAAU,UAAU;IAC5B,YAAY;IACZ,SAAS;IACT,SAAS,2BAA2B;KAClC,MAAM,UAAU,KAAK;KACrB,aAAa,UAAU,KAAK,QAAQ;KACrC,CAAC;IACF,OAAO;KACL,MAAM;KACN,UAAU;KACV,SAAS;KACT,WAAW;KACZ;IACD,cAAc;IACd,OAAO;KACL,QAAQ;KACR,MAAM,UAAU,KAAK;KACrB,aAAa,UAAU,KAAK,QAAQ;KACpC,MAAM,UAAU,KAAK;KACrB,YAAY,UAAU,cAAc;KACrC;IACF;AAED,SAAM,YAAY,MAAM,QAAQ;;EAElC,WAAW,OAAO,MAAM,cAAc;AACpC,SAAM,YAAY,UAAU;IAC1B,IAAI,UAAU;IACd,UAAU;KACR,GAAG;KACH,OAAO;MACL,QAAQ;MACR,MAAM,KAAK;MACX,aAAa,KAAK;MAClB,MAAM,KAAK;MACX,YAAY,UAAU,cAAc;MACrC;KACF;IACF,CAAC;AACF,SAAM,oBAAoB,KAAK;AAC/B,SAAM,QAAQ,uBAAuB,KAAK,OAAO;;EAEnD,SAAS,OAAO,UAAU;AACxB,SAAM,iBAAiB,MAAM;AAE7B,WAAQ,MAAM,kBAAkB,MAAM;AACtC,SAAM,MAAM,4BAA4B,EACtC,aAAa,iBAAiB,QAAQ,MAAM,UAAU,QACvD,CAAC;;EAEJ,iBAAiB;AACf,eAAY,cAAc;;EAE7B,CAAC;;;;CAKF,MAAM,WAAW,YACf,OAAO,SAAe;AACpB,UAAQ,KAAK,kBAAkB,KAAK;EACpC,MAAM,MAAM,kBAAkB,cAAc;GAAE,GAAG;GAAW;GAAM,CAAC;AACnE,SAAO,MAAM,eAAe,YAAY,IAAI;IAE9C;EAAC;EAAmB;EAAW;EAAe,CAC/C;CAaD,MAAM,EAAE,cAAc,eAAe,iBAAiB,YAAY;EAChE,QATa,YACb,OAAO,kBAA0B;AAC/B,OAAI,cAAc,WAAW,EAAG;AAChC,SAAM,QAAQ,WAAW,cAAc,IAAI,SAAS,CAAC;KAEvD,CAAC,SAAS,CACX;EAIC,SAAS;EACT;EACD,CAAC;AAEF,QACE,qBAAC;EAAI,GAAI;EAAO,GAAI,cAAc;EAAE,WAAW,GAAG,gBAAgB,UAAU;;GAC1E,oBAAC,WAAM,GAAI,eAAe,GAAI;GAG7B,gBACC,oBAAC,SAAI,WAAU,gFAAgF;GAGjG,oBAAC;IACC,OAAO;KACL;KACA;KACA,UAAU,eAAe;KACzB;KACA;KACD;IAEA;KAC2B;;GAC1B;;AAIV,MAAa,kBAAkB"}