ode-explorer 1.3.3-develop-b2school.202402271516 → 1.3.3-develop-pedago.202402271742

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/index.html CHANGED
@@ -15,16 +15,22 @@
15
15
  <div id="portal"></div>
16
16
  <!-- SET INITIALISATION CONFIG -->
17
17
  <script>
18
- var WORFLOW_ACCESS = "org.entcore.blog.controllers.BlogController|blog";
18
+ var WORFLOW_ACCESS =
19
+ "net.atos.entng.mindmap.controllers.MindmapController|view";
19
20
  var WORKFLOW_CREATE =
20
- "org.entcore.blog.controllers.BlogController|create";
21
+ "net.atos.entng.mindmap.controllers.MindmapController|create";
22
+ var WORKFLOW_PRINT =
23
+ "net.atos.entng.mindmap.controllers.MindmapController|printView";
24
+ var WORKFLOW_EXPORT_PNG =
25
+ "net.atos.entng.mindmap.controllers.MindmapController|exportPngMindmap";
26
+ var WORKFLOW_EXPORT_SVG =
27
+ "net.atos.entng.mindmap.controllers.MindmapController|exportSvgMindmap";
21
28
  var WORKFLOW_PUBLISH =
22
- "org.entcore.blog.controllers.BlogController|publish";
23
- var WORKFLOW_PRINT = "org.entcore.blog.controllers.BlogController|print";
24
- ///////////
29
+ "net.atos.entng.mindmap.controllers.MindmapController|publish";
25
30
  var explorerConfig = {
26
- app: "blog",
27
- types: ["blog"],
31
+ app: "mindmap",
32
+ types: ["mindmap"],
33
+ libraryAppFilter: "MindMap",
28
34
  filters: [
29
35
  { id: "owner", defaultValue: true },
30
36
  { id: "public", defaultValue: false },
@@ -59,10 +65,10 @@
59
65
  target: "tree",
60
66
  },
61
67
  {
62
- id: "createPublic",
63
- workflow:
64
- "org.entcore.blog.controllers.BlogController|createPublicBlog",
65
- target: "tree",
68
+ id: "copy",
69
+ workflow: WORFLOW_ACCESS,
70
+ target: "actionbar",
71
+ right: "read",
66
72
  },
67
73
  {
68
74
  id: "move",
package/dist/index.js CHANGED
@@ -62268,7 +62268,7 @@ const ActionBar$1 = /* @__PURE__ */ reactExports.forwardRef(({
62268
62268
  const classes2 = clsx("d-flex flex-wrap p-16 gap-8 border-bottom bg-white", {
62269
62269
  "justify-content-between": render,
62270
62270
  "mx-n16": !isFullscreen,
62271
- "z-2000 top-0 start-0 end-0": isFullscreen
62271
+ "z-3 top-0 start-0 end-0": isFullscreen
62272
62272
  });
62273
62273
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref: ref2, className: classes2, ...restProps, children: [
62274
62274
  children,
@@ -62550,7 +62550,7 @@ const useDropdown = (placement, extraTriggerKeyDownHandler) => {
62550
62550
  rects,
62551
62551
  elements
62552
62552
  }) {
62553
- elements.floating.style, `${rects.reference.width}`;
62553
+ elements.floating.style.minWidth = `${rects.reference.width}px`;
62554
62554
  }
62555
62555
  }), flip$2({
62556
62556
  padding: 0
@@ -62717,22 +62717,28 @@ const useDropdown = (placement, extraTriggerKeyDownHandler) => {
62717
62717
  function useToast() {
62718
62718
  return {
62719
62719
  success: (message, options) => _t.custom(/* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "success", isToast: true, isDismissible: options == null ? void 0 : options.isDismissible, className: "mb-12", children: message }), {
62720
+ id: options == null ? void 0 : options.id,
62720
62721
  duration: options == null ? void 0 : options.duration,
62721
62722
  position: (options == null ? void 0 : options.position) ?? DEFAULT_POSITION
62722
62723
  }),
62723
62724
  error: (message, options) => _t.custom(/* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "danger", isToast: true, isDismissible: options == null ? void 0 : options.isDismissible, className: "mb-12", children: message }), {
62725
+ id: options == null ? void 0 : options.id,
62724
62726
  duration: options == null ? void 0 : options.duration,
62725
62727
  position: (options == null ? void 0 : options.position) ?? DEFAULT_POSITION
62726
62728
  }),
62727
62729
  info: (message, options) => _t.custom(/* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "info", isToast: true, isDismissible: options == null ? void 0 : options.isDismissible, className: "mb-12", children: message }), {
62730
+ id: options == null ? void 0 : options.id,
62728
62731
  duration: options == null ? void 0 : options.duration,
62729
62732
  position: (options == null ? void 0 : options.position) ?? DEFAULT_POSITION
62730
62733
  }),
62731
62734
  warning: (message, options) => _t.custom(/* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "warning", isToast: true, isDismissible: options == null ? void 0 : options.isDismissible, className: "mb-12", children: message }), {
62735
+ id: options == null ? void 0 : options.id,
62732
62736
  duration: options == null ? void 0 : options.duration,
62733
62737
  position: (options == null ? void 0 : options.position) ?? DEFAULT_POSITION
62734
62738
  }),
62735
- loading: _t.loading
62739
+ loading: _t.loading,
62740
+ dismiss: (id2) => _t.dismiss(id2),
62741
+ remove: (id2) => _t.remove(id2)
62736
62742
  };
62737
62743
  }
62738
62744
  function useHover() {
@@ -62852,13 +62858,16 @@ const useLibraryUrl = () => {
62852
62858
  const {
62853
62859
  user,
62854
62860
  appCode
62855
- } = useOdeClient(), appName = libraryMaps[appCode], libraryUrlSplitted = (_a2 = user.apps.find((app) => app.isExternal && app.address.includes("library") && app.name.includes("library"))) == null ? void 0 : _a2.address.split("?");
62856
- let libraryHost = libraryUrlSplitted == null ? void 0 : libraryUrlSplitted[0];
62857
- libraryHost != null && libraryHost.endsWith("/") || (libraryHost = `${libraryHost}/`);
62858
- const platformParam = libraryUrlSplitted == null ? void 0 : libraryUrlSplitted[1], searchParams = `application%5B0%5D=${appName}&page=1&sort_field=views&sort_order=desc`;
62859
- return {
62860
- libraryUrl: `${libraryHost}search/?${platformParam}&${searchParams}`
62861
- };
62861
+ } = useOdeClient(), appName = libraryMaps[appCode], libraryApp = user.apps.find((app) => app.isExternal && app.address.includes("library"));
62862
+ if (!libraryApp)
62863
+ return null;
62864
+ const libraryUrlSplit = (_a2 = libraryApp.address) == null ? void 0 : _a2.split("?");
62865
+ if (!libraryUrlSplit || libraryUrlSplit.length < 2)
62866
+ return null;
62867
+ let libraryHost = libraryUrlSplit[0];
62868
+ libraryHost.endsWith("/") || (libraryHost = `${libraryHost}/`);
62869
+ const platformURLParam = libraryUrlSplit == null ? void 0 : libraryUrlSplit[1], searchParams = `application%5B0%5D=${appName}&page=1&sort_field=views&sort_order=desc`;
62870
+ return `${libraryHost}search/?${platformURLParam}&${searchParams}`;
62862
62871
  }, useLibraryUrl$1 = useLibraryUrl;
62863
62872
  function useOdeIcons() {
62864
62873
  const iconOfWidget = {
@@ -63031,8 +63040,7 @@ const Image$1 = /* @__PURE__ */ reactExports.forwardRef(({
63031
63040
  app,
63032
63041
  size: size2 = "24",
63033
63042
  iconFit = "contain",
63034
- variant = "square",
63035
- className = ""
63043
+ variant = "square"
63036
63044
  }, ref2) => {
63037
63045
  const {
63038
63046
  isIconUrl,
@@ -63050,19 +63058,14 @@ const Image$1 = /* @__PURE__ */ reactExports.forwardRef(({
63050
63058
  }, iconFits = {
63051
63059
  "icon-contain": isContain,
63052
63060
  "icon-ratio": isRatio
63053
- }, icon = typeof app == "string" ? app : (app == null ? void 0 : app.icon) !== void 0 ? app.icon : "placeholder", displayName = typeof app != "string" && (app == null ? void 0 : app.displayName) !== void 0 ? app.displayName : "", code = app ? getIconCode(app) : "", isIconURL = isIconUrl(icon), appCode = code || "placeholder";
63054
- if (isIconURL) {
63055
- const classes22 = clsx("h-full", className);
63056
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Image$2, { src: icon, alt: displayName, objectFit: "contain", width: size2, height: size2, className: classes22 });
63057
- }
63058
- const classes2 = clsx("app-icon", {
63061
+ }, icon = typeof app == "string" ? app : (app == null ? void 0 : app.icon) !== void 0 ? app.icon : "placeholder", displayName = typeof app != "string" && (app == null ? void 0 : app.displayName) !== void 0 ? app.displayName : "", code = app ? getIconCode(app) : "", isIconURL = isIconUrl(icon), appCode = code || "placeholder", classes2 = clsx("app-icon", {
63059
63062
  ...iconSizes,
63060
63063
  ...iconVariant,
63061
63064
  ...iconFits,
63062
63065
  [`bg-light-${appCode}`]: appCode && !isContain,
63063
63066
  [`color-app-${appCode}`]: appCode
63064
- }, className);
63065
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2, style: {
63067
+ });
63068
+ return isIconURL ? /* @__PURE__ */ jsxRuntimeExports.jsx(Image$2, { src: icon, alt: displayName, objectFit: "contain", width: size2, height: size2, className: "h-full" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2, style: {
63066
63069
  width: size2 + "px",
63067
63070
  height: size2 + "px"
63068
63071
  }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { ref: ref2, width: size2, height: size2, role: "img", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { xlinkHref: `${iconPath}/apps.svg#${appCode}` }) }) });
@@ -63874,12 +63877,12 @@ const ImagePicker = /* @__PURE__ */ reactExports.forwardRef(({
63874
63877
  onValueChange == null || onValueChange(value);
63875
63878
  }
63876
63879
  }, [localValue]);
63877
- const label = typeof localValue == "object" ? localValue.label : localValue;
63880
+ const label = typeof localValue == "object" ? localValue.label : localValue, iconChange = typeof localValue == "object" ? localValue.icon : void 0;
63878
63881
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Dropdown$1, { overflow, block, children: [
63879
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger$1, { icon, label: t2(label || placeholderOption), variant, size: size2, disabled }),
63882
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger$1, { icon: iconChange || icon, label: t2(label || placeholderOption), variant, size: size2, disabled }),
63880
63883
  /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown$1.Menu, { role: "listbox", children: options == null ? void 0 : options.map((option) => {
63881
- const value = typeof option == "object" ? option.value : option, label2 = typeof option == "object" ? option.label : option;
63882
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown$1.Item, { type: "action", onClick: () => setLocalValue(option), children: label2 }, value);
63884
+ const value = typeof option == "object" ? option.value : option, label2 = typeof option == "object" ? option.label : option, icon2 = typeof option == "object" ? option.icon : void 0;
63885
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown$1.Item, { type: "action", onClick: () => setLocalValue(option), icon: icon2, children: label2 }, value);
63883
63886
  }) })
63884
63887
  ] });
63885
63888
  }, Select$1 = Select;
@@ -64542,8 +64545,8 @@ function PublishModal$2({
64542
64545
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-24", children: [
64543
64546
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: "", className: "form-label", children: t2("bpr.form.publication.age") }),
64544
64547
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "d-flex gap-8", children: [
64545
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col col-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(AgeSelect, { control, name: "ageMin", placeholderOption: defaultSelectAgeMinOption, validate: (value, formValues) => parseInt(value) <= parseInt(formValues.ageMax) }) }),
64546
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col col-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(AgeSelect, { control, name: "ageMax", placeholderOption: defaultSelectAgeMaxOption, validate: (value, formValues) => parseInt(value) >= parseInt(formValues.ageMin) }) })
64548
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col col-md-2 d-flex", children: /* @__PURE__ */ jsxRuntimeExports.jsx(AgeSelect, { control, name: "ageMin", placeholderOption: defaultSelectAgeMinOption, validate: (value, formValues) => parseInt(value) <= parseInt(formValues.ageMax) }) }),
64549
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col col-md-2 d-flex", children: /* @__PURE__ */ jsxRuntimeExports.jsx(AgeSelect, { control, name: "ageMax", placeholderOption: defaultSelectAgeMaxOption, validate: (value, formValues) => parseInt(value) >= parseInt(formValues.ageMin) }) })
64547
64550
  ] })
64548
64551
  ] }),
64549
64552
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-24", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl$1, { id: "keywords", isOptional: true, children: [
@@ -65766,7 +65769,7 @@ function ShareResourceModal({
65766
65769
  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { message: "Vos favoris de partage s’affichent en priorité dans votre liste lorsque vous recherchez un groupe ou une personne, vous pouvez les retrouver dans l’annuaire.", placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SvgInfoCircle$1, { className: "c-pointer", height: "18" }) })
65767
65770
  ] }),
65768
65771
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "row", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Combobox$1, { value: searchInputValue, placeholder: searchPlaceholder, isLoading: showSearchLoading(), noResult: showSearchNoResults(), options: searchResults, searchMinLength: getSearchMinLength(), onSearchInputChange: handleSearchInputChange, onSearchResultsChange: handleSearchResultsChange }) }) }),
65769
- typeof children == "function" ? children(resource) : children
65772
+ children
65770
65773
  ] }),
65771
65774
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal$1.Footer, { children: [
65772
65775
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { type: "button", color: "tertiary", variant: "ghost", onClick: onCancel, children: t2("explorer.cancel") }),
@@ -66494,6 +66497,12 @@ const restoreAll = async ({
66494
66497
  };
66495
66498
  return await odeServices.resource(searchParams.application).restoreAll(trashParameters, useAssetIds);
66496
66499
  };
66500
+ const copyResource = async (searchParams, resourceId) => {
66501
+ return await odeServices.resource(searchParams.application).copy({
66502
+ application: searchParams.application,
66503
+ resourceId
66504
+ });
66505
+ };
66497
66506
  const moveToFolder = async ({
66498
66507
  searchParams,
66499
66508
  resourceIds,
@@ -67363,6 +67372,74 @@ const useDelete = () => {
67363
67372
  }
67364
67373
  });
67365
67374
  };
67375
+ const useCopyResource = () => {
67376
+ const toast = useToast();
67377
+ const searchParams = useSearchParams();
67378
+ const queryClient2 = useQueryClient();
67379
+ const { user } = useUser();
67380
+ const { filters: filters2, trashed } = searchParams;
67381
+ const TOAST_INFO_ID = "duplicate_start";
67382
+ const queryKey = [
67383
+ "context",
67384
+ {
67385
+ folderId: filters2.folder,
67386
+ filters: filters2,
67387
+ trashed
67388
+ }
67389
+ ];
67390
+ return useMutation({
67391
+ mutationFn: async (resource) => {
67392
+ toast.info(t$4("duplicate.start"), {
67393
+ id: TOAST_INFO_ID
67394
+ });
67395
+ return await copyResource(searchParams, resource.assetId);
67396
+ },
67397
+ onSuccess: async (data, variables) => {
67398
+ toast.remove(TOAST_INFO_ID);
67399
+ toast.success(t$4("duplicate.done"));
67400
+ await queryClient2.cancelQueries({ queryKey });
67401
+ const previousData = queryClient2.getQueryData(queryKey);
67402
+ const newResource = {
67403
+ ...variables,
67404
+ name: `${variables.name}${t$4("duplicate.suffix")}`,
67405
+ assetId: data.duplicateId,
67406
+ id: data.duplicateId,
67407
+ creatorId: user == null ? void 0 : user.userId,
67408
+ creatorName: user == null ? void 0 : user.username,
67409
+ createdAt: Date.now(),
67410
+ slug: variables.slug || "",
67411
+ modifiedAt: Date.now(),
67412
+ modifierId: (user == null ? void 0 : user.userId) || "",
67413
+ modifierName: (user == null ? void 0 : user.username) || "",
67414
+ updatedAt: Date.now(),
67415
+ trashed: false,
67416
+ rights: [`creator:${user == null ? void 0 : user.userId}`]
67417
+ };
67418
+ if (previousData) {
67419
+ return queryClient2.setQueryData(queryKey, (prev) => {
67420
+ if (prev) {
67421
+ return {
67422
+ ...prev,
67423
+ pages: prev == null ? void 0 : prev.pages.map((page) => {
67424
+ return {
67425
+ ...page,
67426
+ resources: [newResource, ...page.resources]
67427
+ };
67428
+ })
67429
+ };
67430
+ }
67431
+ return void 0;
67432
+ });
67433
+ }
67434
+ },
67435
+ onError: (error) => {
67436
+ toast.remove(TOAST_INFO_ID);
67437
+ if (typeof error === "string") {
67438
+ toast.error(`${t$4("duplicate.error")}: ${error}`);
67439
+ }
67440
+ }
67441
+ });
67442
+ };
67366
67443
  const useMoveItem = () => {
67367
67444
  const toast = useToast();
67368
67445
  const queryClient2 = useQueryClient();
@@ -68212,20 +68289,21 @@ const queryClient = new QueryClient({
68212
68289
  });
68213
68290
  const getHTMLConfig = getExplorerConfig();
68214
68291
  createRoot(root).render(
68215
- // <StrictMode>
68216
- /* @__PURE__ */ jsxRuntimeExports.jsxs(QueryClientProvider, { client: queryClient, children: [
68217
- /* @__PURE__ */ jsxRuntimeExports.jsx(
68218
- OdeClientProvider,
68219
- {
68220
- params: {
68221
- app: getHTMLConfig.app
68222
- },
68223
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root, {}) })
68224
- }
68225
- ),
68226
- /* @__PURE__ */ jsxRuntimeExports.jsx(ReactQueryDevtools2, { initialIsOpen: false })
68292
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(reactExports.StrictMode, { children: [
68293
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(QueryClientProvider, { client: queryClient, children: [
68294
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
68295
+ OdeClientProvider,
68296
+ {
68297
+ params: {
68298
+ app: getHTMLConfig.app
68299
+ },
68300
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root, {}) })
68301
+ }
68302
+ ),
68303
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ReactQueryDevtools2, { initialIsOpen: false })
68304
+ ] }),
68305
+ ","
68227
68306
  ] })
68228
- // </StrictMode>,
68229
68307
  );
68230
68308
  function EmptyScreenApp() {
68231
68309
  const { appCode } = useOdeClient();
@@ -68819,9 +68897,9 @@ const AppAction$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineP
68819
68897
  const Library = () => {
68820
68898
  const { t: t2 } = useTranslation();
68821
68899
  const { theme } = useOdeTheme();
68822
- const { libraryUrl } = useLibraryUrl$1();
68900
+ const libraryUrl = useLibraryUrl$1();
68823
68901
  const [imagePath] = usePaths();
68824
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-16", children: [
68902
+ return libraryUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-16", children: [
68825
68903
  /* @__PURE__ */ jsxRuntimeExports.jsx(
68826
68904
  Image$2,
68827
68905
  {
@@ -68933,6 +69011,7 @@ function useActionBar() {
68933
69011
  const restoreItem = useRestore();
68934
69012
  const isTrashResource = useResourceIsTrash();
68935
69013
  const searchParams = useSearchParams();
69014
+ const copyResource2 = useCopyResource();
68936
69015
  const {
68937
69016
  openResource,
68938
69017
  printSelectedResource,
@@ -68966,6 +69045,8 @@ function useActionBar() {
68966
69045
  folderId: selectedFolders[0].id
68967
69046
  });
68968
69047
  }
69048
+ case ACTION.COPY:
69049
+ return onCopy();
68969
69050
  case ACTION.MOVE:
68970
69051
  return setOpenedModalName("move");
68971
69052
  case ACTION.PRINT:
@@ -68980,7 +69061,11 @@ function useActionBar() {
68980
69061
  case "edit":
68981
69062
  return onEdit();
68982
69063
  case "export":
68983
- return onExport();
69064
+ if (resourceIds.length > 0) {
69065
+ return onExport();
69066
+ } else {
69067
+ return null;
69068
+ }
68984
69069
  case ACTION.SHARE:
68985
69070
  return setOpenedModalName("share");
68986
69071
  default:
@@ -69003,6 +69088,8 @@ function useActionBar() {
69003
69088
  return onlyOneItemSelected && noFolderSelected;
69004
69089
  case ACTION.SHARE:
69005
69090
  return noFolderSelected && onlyOneItemSelected;
69091
+ case "export":
69092
+ return onlyOneItemSelected && noFolderSelected;
69006
69093
  case ACTION.PRINT:
69007
69094
  return onlyOneItemSelected && noFolderSelected;
69008
69095
  case "edit":
@@ -69050,6 +69137,14 @@ function useActionBar() {
69050
69137
  const onEditResourceCancel = onFinish("edit_resource");
69051
69138
  const onShareResourceSuccess = onFinish("share");
69052
69139
  const onShareResourceCancel = onFinish("share");
69140
+ async function onCopy() {
69141
+ if (selectedResources && selectedResources.length > 0) {
69142
+ const selectedResource = selectedResources[0];
69143
+ await copyResource2.mutate(selectedResource);
69144
+ clearSelectedItems();
69145
+ clearSelectedIds();
69146
+ }
69147
+ }
69053
69148
  function onEdit() {
69054
69149
  if (resourceIds && resourceIds.length > 0) {
69055
69150
  const selectedResource = selectedResources[0].assetId;
package/dist/version.txt CHANGED
@@ -1 +1 @@
1
- ode-explorer=1.0-b2school-SNAPSHOT 27/02/2024 15:16:57
1
+ ode-explorer=1.0-b2school-SNAPSHOT 27/02/2024 17:42:52