@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.
- package/dist/client.d.mts +5 -0
- package/dist/client.mjs +6 -0
- package/dist/components/content.d.mts +14 -0
- package/dist/components/content.d.mts.map +1 -0
- package/dist/components/content.mjs +18 -0
- package/dist/components/content.mjs.map +1 -0
- package/dist/components/context.client.d.mts +14 -0
- package/dist/components/context.client.d.mts.map +1 -0
- package/dist/components/dnd.client.d.mts +17 -0
- package/dist/components/dnd.client.d.mts.map +1 -0
- package/dist/components/dnd.client.mjs +30 -0
- package/dist/components/dnd.client.mjs.map +1 -0
- package/dist/components/grid-card.client.d.mts +43 -0
- package/dist/components/grid-card.client.d.mts.map +1 -0
- package/dist/components/grid-card.client.mjs +173 -0
- package/dist/components/grid-card.client.mjs.map +1 -0
- package/dist/components/grid.client.d.mts +54 -0
- package/dist/components/grid.client.d.mts.map +1 -0
- package/dist/components/grid.client.mjs +54 -0
- package/dist/components/grid.client.mjs.map +1 -0
- package/dist/components/navigation/breadcrumbs.client.d.mts +26 -0
- package/dist/components/navigation/breadcrumbs.client.d.mts.map +1 -0
- package/dist/components/navigation/breadcrumbs.client.mjs +52 -0
- package/dist/components/navigation/breadcrumbs.client.mjs.map +1 -0
- package/dist/components/navigation/header.client.d.mts +28 -0
- package/dist/components/navigation/header.client.d.mts.map +1 -0
- package/dist/components/navigation/header.client.mjs +41 -0
- package/dist/components/navigation/header.client.mjs.map +1 -0
- package/dist/components/navigation/toolbar.client.d.mts +24 -0
- package/dist/components/navigation/toolbar.client.d.mts.map +1 -0
- package/dist/components/navigation/toolbar.client.mjs +35 -0
- package/dist/components/navigation/toolbar.client.mjs.map +1 -0
- package/dist/components/navigation/view-switcher.client.d.mts +10 -0
- package/dist/components/navigation/view-switcher.client.d.mts.map +1 -0
- package/dist/components/navigation/view-switcher.client.mjs +36 -0
- package/dist/components/navigation/view-switcher.client.mjs.map +1 -0
- package/dist/components/selection.client.d.mts +28 -0
- package/dist/components/selection.client.d.mts.map +1 -0
- package/dist/components/selection.client.mjs +39 -0
- package/dist/components/selection.client.mjs.map +1 -0
- package/dist/components/view.client.d.mts +26 -0
- package/dist/components/view.client.d.mts.map +1 -0
- package/dist/components/view.client.mjs +44 -0
- package/dist/components/view.client.mjs.map +1 -0
- package/dist/config/filters.mjs +15 -0
- package/dist/config/filters.mjs.map +1 -0
- package/dist/config/types.mjs +61 -0
- package/dist/config/types.mjs.map +1 -0
- package/dist/google/client.d.mts +8 -0
- package/dist/google/client.mjs +9 -0
- package/dist/google/server.d.mts +3 -0
- package/dist/google/server.mjs +4 -0
- package/dist/google.d.mts +6 -0
- package/dist/google.mjs +7 -0
- package/dist/index.d.mts +7 -0
- package/dist/index.mjs +7 -0
- package/dist/lib/constants.d.mts +12 -0
- package/dist/lib/constants.d.mts.map +1 -0
- package/dist/lib/constants.mjs +21 -0
- package/dist/lib/constants.mjs.map +1 -0
- package/dist/lib/contracts.d.mts +101 -0
- package/dist/lib/contracts.d.mts.map +1 -0
- package/dist/lib/dto.d.mts +118 -0
- package/dist/lib/dto.d.mts.map +1 -0
- package/dist/lib/dto.mjs +58 -0
- package/dist/lib/dto.mjs.map +1 -0
- package/dist/lib/helpers.d.mts +18 -0
- package/dist/lib/helpers.d.mts.map +1 -0
- package/dist/lib/helpers.mjs +37 -0
- package/dist/lib/helpers.mjs.map +1 -0
- package/dist/lib/helpers.server.d.mts +14 -0
- package/dist/lib/helpers.server.d.mts.map +1 -0
- package/dist/lib/helpers.server.mjs +16 -0
- package/dist/lib/helpers.server.mjs.map +1 -0
- package/dist/lib/search-params.d.mts +9 -0
- package/dist/lib/search-params.d.mts.map +1 -0
- package/dist/lib/search-params.mjs +8 -0
- package/dist/lib/search-params.mjs.map +1 -0
- package/dist/lib/validators.d.mts +158 -0
- package/dist/lib/validators.d.mts.map +1 -0
- package/dist/lib/validators.mjs +66 -0
- package/dist/lib/validators.mjs.map +1 -0
- package/dist/local/client.d.mts +13 -0
- package/dist/local/client.mjs +13 -0
- package/dist/local/server.d.mts +4 -0
- package/dist/local/server.mjs +5 -0
- package/dist/local.d.mts +8 -0
- package/dist/local.mjs +9 -0
- package/dist/providers/google/components/command-file-update.d.mts +22 -0
- package/dist/providers/google/components/command-file-update.d.mts.map +1 -0
- package/dist/providers/google/components/command-file-update.mjs +52 -0
- package/dist/providers/google/components/command-file-update.mjs.map +1 -0
- package/dist/providers/google/components/command-folder-create.d.mts +22 -0
- package/dist/providers/google/components/command-folder-create.d.mts.map +1 -0
- package/dist/providers/google/components/command-folder-create.mjs +59 -0
- package/dist/providers/google/components/command-folder-create.mjs.map +1 -0
- package/dist/providers/google/components/command-folder-update.d.mts +22 -0
- package/dist/providers/google/components/command-folder-update.d.mts.map +1 -0
- package/dist/providers/google/components/command-folder-update.mjs +52 -0
- package/dist/providers/google/components/command-folder-update.mjs.map +1 -0
- package/dist/providers/google/components/content.client.d.mts +10 -0
- package/dist/providers/google/components/content.client.d.mts.map +1 -0
- package/dist/providers/google/components/content.client.mjs +11 -0
- package/dist/providers/google/components/content.client.mjs.map +1 -0
- package/dist/providers/google/components/navigation.client.d.mts +16 -0
- package/dist/providers/google/components/navigation.client.d.mts.map +1 -0
- package/dist/providers/google/components/navigation.client.mjs +18 -0
- package/dist/providers/google/components/navigation.client.mjs.map +1 -0
- package/dist/providers/google/components/provider.client.d.mts +33 -0
- package/dist/providers/google/components/provider.client.d.mts.map +1 -0
- package/dist/providers/google/components/provider.client.mjs +43 -0
- package/dist/providers/google/components/provider.client.mjs.map +1 -0
- package/dist/providers/google/components/view.client.d.mts +41 -0
- package/dist/providers/google/components/view.client.d.mts.map +1 -0
- package/dist/providers/google/components/view.client.mjs +98 -0
- package/dist/providers/google/components/view.client.mjs.map +1 -0
- package/dist/providers/google/config/columns-data.d.mts +8 -0
- package/dist/providers/google/config/columns-data.d.mts.map +1 -0
- package/dist/providers/google/config/columns-data.mjs +70 -0
- package/dist/providers/google/config/columns-data.mjs.map +1 -0
- package/dist/providers/google/config/filters.d.mts +16 -0
- package/dist/providers/google/config/filters.d.mts.map +1 -0
- package/dist/providers/google/config/filters.mjs +8 -0
- package/dist/providers/google/config/filters.mjs.map +1 -0
- package/dist/providers/google/lib/constants.mjs +13 -0
- package/dist/providers/google/lib/constants.mjs.map +1 -0
- package/dist/providers/google/lib/dto.d.mts +39 -0
- package/dist/providers/google/lib/dto.d.mts.map +1 -0
- package/dist/providers/google/lib/dto.mjs +66 -0
- package/dist/providers/google/lib/dto.mjs.map +1 -0
- package/dist/providers/google/lib/helpers.mjs +46 -0
- package/dist/providers/google/lib/helpers.mjs.map +1 -0
- package/dist/providers/google/lib/router.server.d.mts +612 -0
- package/dist/providers/google/lib/router.server.d.mts.map +1 -0
- package/dist/providers/google/lib/router.server.mjs +40 -0
- package/dist/providers/google/lib/router.server.mjs.map +1 -0
- package/dist/providers/google/lib/search-params.d.mts +15 -0
- package/dist/providers/google/lib/search-params.d.mts.map +1 -0
- package/dist/providers/google/lib/search-params.mjs +12 -0
- package/dist/providers/google/lib/search-params.mjs.map +1 -0
- package/dist/providers/google/lib/service.server.d.mts +186 -0
- package/dist/providers/google/lib/service.server.d.mts.map +1 -0
- package/dist/providers/google/lib/service.server.mjs +613 -0
- package/dist/providers/google/lib/service.server.mjs.map +1 -0
- package/dist/providers/google/lib/validators.d.mts +303 -0
- package/dist/providers/google/lib/validators.d.mts.map +1 -0
- package/dist/providers/google/lib/validators.mjs +59 -0
- package/dist/providers/google/lib/validators.mjs.map +1 -0
- package/dist/providers/local/components/command-file-update.d.mts +18 -0
- package/dist/providers/local/components/command-file-update.d.mts.map +1 -0
- package/dist/providers/local/components/command-file-update.mjs +48 -0
- package/dist/providers/local/components/command-file-update.mjs.map +1 -0
- package/dist/providers/local/components/command-file-upload.d.mts +11 -0
- package/dist/providers/local/components/command-file-upload.d.mts.map +1 -0
- package/dist/providers/local/components/command-file-upload.mjs +35 -0
- package/dist/providers/local/components/command-file-upload.mjs.map +1 -0
- package/dist/providers/local/components/command-folder-create.d.mts +18 -0
- package/dist/providers/local/components/command-folder-create.d.mts.map +1 -0
- package/dist/providers/local/components/command-folder-create.mjs +55 -0
- package/dist/providers/local/components/command-folder-create.mjs.map +1 -0
- package/dist/providers/local/components/command-folder-update.d.mts +18 -0
- package/dist/providers/local/components/command-folder-update.d.mts.map +1 -0
- package/dist/providers/local/components/command-folder-update.mjs +48 -0
- package/dist/providers/local/components/command-folder-update.mjs.map +1 -0
- package/dist/providers/local/components/content.client.d.mts +7 -0
- package/dist/providers/local/components/content.client.d.mts.map +1 -0
- package/dist/providers/local/components/content.client.mjs +8 -0
- package/dist/providers/local/components/content.client.mjs.map +1 -0
- package/dist/providers/local/components/navigation.client.d.mts +16 -0
- package/dist/providers/local/components/navigation.client.d.mts.map +1 -0
- package/dist/providers/local/components/navigation.client.mjs +18 -0
- package/dist/providers/local/components/navigation.client.mjs.map +1 -0
- package/dist/providers/local/components/provider.client.d.mts +40 -0
- package/dist/providers/local/components/provider.client.d.mts.map +1 -0
- package/dist/providers/local/components/provider.client.mjs +61 -0
- package/dist/providers/local/components/provider.client.mjs.map +1 -0
- package/dist/providers/local/components/upload-zone-context.client.d.mts +38 -0
- package/dist/providers/local/components/upload-zone-context.client.d.mts.map +1 -0
- package/dist/providers/local/components/upload-zone-context.client.mjs +23 -0
- package/dist/providers/local/components/upload-zone-context.client.mjs.map +1 -0
- package/dist/providers/local/components/upload-zone.client.d.mts +30 -0
- package/dist/providers/local/components/upload-zone.client.d.mts.map +1 -0
- package/dist/providers/local/components/upload-zone.client.mjs +147 -0
- package/dist/providers/local/components/upload-zone.client.mjs.map +1 -0
- package/dist/providers/local/components/view.client.d.mts +32 -0
- package/dist/providers/local/components/view.client.d.mts.map +1 -0
- package/dist/providers/local/components/view.client.mjs +91 -0
- package/dist/providers/local/components/view.client.mjs.map +1 -0
- package/dist/providers/local/config/columns-data.d.mts +8 -0
- package/dist/providers/local/config/columns-data.d.mts.map +1 -0
- package/dist/providers/local/config/columns-data.mjs +70 -0
- package/dist/providers/local/config/columns-data.mjs.map +1 -0
- package/dist/providers/local/config/filters.d.mts +26 -0
- package/dist/providers/local/config/filters.d.mts.map +1 -0
- package/dist/providers/local/config/filters.mjs +15 -0
- package/dist/providers/local/config/filters.mjs.map +1 -0
- package/dist/providers/local/lib/constants.d.mts +12 -0
- package/dist/providers/local/lib/constants.d.mts.map +1 -0
- package/dist/providers/local/lib/constants.mjs +29 -0
- package/dist/providers/local/lib/constants.mjs.map +1 -0
- package/dist/providers/local/lib/helpers.d.mts +45 -0
- package/dist/providers/local/lib/helpers.d.mts.map +1 -0
- package/dist/providers/local/lib/helpers.mjs +110 -0
- package/dist/providers/local/lib/helpers.mjs.map +1 -0
- package/dist/providers/local/lib/route-handler.server.d.mts +34 -0
- package/dist/providers/local/lib/route-handler.server.d.mts.map +1 -0
- package/dist/providers/local/lib/route-handler.server.mjs +114 -0
- package/dist/providers/local/lib/route-handler.server.mjs.map +1 -0
- package/dist/providers/local/lib/router.server.d.mts +41648 -0
- package/dist/providers/local/lib/router.server.d.mts.map +1 -0
- package/dist/providers/local/lib/router.server.mjs +52 -0
- package/dist/providers/local/lib/router.server.mjs.map +1 -0
- package/dist/providers/local/lib/schema.d.mts +1113 -0
- package/dist/providers/local/lib/schema.d.mts.map +1 -0
- package/dist/providers/local/lib/schema.mjs +71 -0
- package/dist/providers/local/lib/schema.mjs.map +1 -0
- package/dist/providers/local/lib/search-params.d.mts +14 -0
- package/dist/providers/local/lib/search-params.d.mts.map +1 -0
- package/dist/providers/local/lib/search-params.mjs +9 -0
- package/dist/providers/local/lib/search-params.mjs.map +1 -0
- package/dist/providers/local/lib/service.server.d.mts +489 -0
- package/dist/providers/local/lib/service.server.d.mts.map +1 -0
- package/dist/providers/local/lib/service.server.mjs +668 -0
- package/dist/providers/local/lib/service.server.mjs.map +1 -0
- package/dist/providers/local/lib/upload.client.d.mts +62 -0
- package/dist/providers/local/lib/upload.client.d.mts.map +1 -0
- package/dist/providers/local/lib/upload.client.mjs +100 -0
- package/dist/providers/local/lib/upload.client.mjs.map +1 -0
- package/dist/providers/local/lib/validators.d.mts +454 -0
- package/dist/providers/local/lib/validators.d.mts.map +1 -0
- package/dist/providers/local/lib/validators.mjs +96 -0
- package/dist/providers/local/lib/validators.mjs.map +1 -0
- package/dist/server.d.mts +2 -0
- package/dist/server.mjs +3 -0
- package/package.json +3 -2
- 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 @@
|
|
|
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"}
|