@mercurjs/dashboard-shared 2.3.6-canary.6 → 2.3.6-canary.7
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.d.ts +153 -7
- package/dist/index.js +459 -297
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -13313,6 +13313,8 @@ var TransferOwnershipSchema = z.object({
|
|
|
13313
13313
|
// src/components/common/action-menu/action-menu.tsx
|
|
13314
13314
|
import { DropdownMenu, IconButton, clx } from "@medusajs/ui";
|
|
13315
13315
|
import { EllipsisHorizontal } from "@medusajs/icons";
|
|
13316
|
+
import { useContext as useContext2, useMemo as useMemo2 } from "react";
|
|
13317
|
+
import { useTranslation } from "react-i18next";
|
|
13316
13318
|
import { Link } from "react-router-dom";
|
|
13317
13319
|
|
|
13318
13320
|
// src/components/common/conditional-tooltip/conditional-tooltip.tsx
|
|
@@ -13361,14 +13363,100 @@ var useDocumentDirection = () => {
|
|
|
13361
13363
|
return direction;
|
|
13362
13364
|
};
|
|
13363
13365
|
|
|
13366
|
+
// src/permissions/action-permissions.ts
|
|
13367
|
+
import { useContext, useMemo } from "react";
|
|
13368
|
+
|
|
13369
|
+
// ../dashboard-sdk/dist/index.js
|
|
13370
|
+
var PERMISSION_RIGHT_RANK = {
|
|
13371
|
+
view: 1,
|
|
13372
|
+
edit: 2,
|
|
13373
|
+
manage: 3
|
|
13374
|
+
};
|
|
13375
|
+
function parsePermission(permission) {
|
|
13376
|
+
const index = permission.lastIndexOf(":");
|
|
13377
|
+
if (index <= 0) {
|
|
13378
|
+
return null;
|
|
13379
|
+
}
|
|
13380
|
+
const right = permission.slice(index + 1);
|
|
13381
|
+
if (!(right in PERMISSION_RIGHT_RANK)) {
|
|
13382
|
+
return null;
|
|
13383
|
+
}
|
|
13384
|
+
return {
|
|
13385
|
+
key: permission.slice(0, index),
|
|
13386
|
+
right
|
|
13387
|
+
};
|
|
13388
|
+
}
|
|
13389
|
+
function satisfiesPermission(permissions, key, right) {
|
|
13390
|
+
const granted = permissions[key];
|
|
13391
|
+
return !!granted && PERMISSION_RIGHT_RANK[granted] >= PERMISSION_RIGHT_RANK[right];
|
|
13392
|
+
}
|
|
13393
|
+
|
|
13394
|
+
// src/permissions/permission-check.ts
|
|
13395
|
+
var toPermissionList = (permission) => !permission ? [] : Array.isArray(permission) ? permission : [permission];
|
|
13396
|
+
var isPermitted = (checks, permission, requireAll = false) => {
|
|
13397
|
+
const list = toPermissionList(permission);
|
|
13398
|
+
if (!checks || !list.length) {
|
|
13399
|
+
return true;
|
|
13400
|
+
}
|
|
13401
|
+
return requireAll ? checks.hasAllPermissions(list) : checks.hasAnyPermission(list);
|
|
13402
|
+
};
|
|
13403
|
+
var permissionMapAllows = (map, permission, requireAll = true) => {
|
|
13404
|
+
const list = toPermissionList(permission);
|
|
13405
|
+
if (!map || !list.length) {
|
|
13406
|
+
return true;
|
|
13407
|
+
}
|
|
13408
|
+
const allows = (entry) => {
|
|
13409
|
+
const parsed = parsePermission(entry);
|
|
13410
|
+
return !!parsed && satisfiesPermission(map, parsed.key, parsed.right);
|
|
13411
|
+
};
|
|
13412
|
+
return requireAll ? list.every(allows) : list.some(allows);
|
|
13413
|
+
};
|
|
13414
|
+
var isForbidden = (error) => !!error && typeof error === "object" && error.status === 403;
|
|
13415
|
+
|
|
13416
|
+
// src/permissions/permissions-context.tsx
|
|
13417
|
+
import { createContext } from "react";
|
|
13418
|
+
var PermissionsContext = createContext(
|
|
13419
|
+
null
|
|
13420
|
+
);
|
|
13421
|
+
|
|
13422
|
+
// src/permissions/action-permissions.ts
|
|
13423
|
+
var applyActionPermissions = (groups, checks, deniedTooltip) => groups.map((group) => ({
|
|
13424
|
+
...group,
|
|
13425
|
+
actions: group.actions.map(
|
|
13426
|
+
(action) => isPermitted(checks, action.permission, action.requireAll) ? action : { ...action, disabled: true, disabledTooltip: deniedTooltip }
|
|
13427
|
+
)
|
|
13428
|
+
}));
|
|
13429
|
+
var filterCommandsByPermission = (commands, checks) => commands.filter(
|
|
13430
|
+
(command) => isPermitted(checks, command.permission, command.requireAll)
|
|
13431
|
+
).map(
|
|
13432
|
+
({ permission: _permission, requireAll: _requireAll, ...command }) => command
|
|
13433
|
+
);
|
|
13434
|
+
var usePermittedCommands = (commands) => {
|
|
13435
|
+
const context = useContext(PermissionsContext);
|
|
13436
|
+
return useMemo(
|
|
13437
|
+
() => filterCommandsByPermission(commands, context),
|
|
13438
|
+
[commands, context]
|
|
13439
|
+
);
|
|
13440
|
+
};
|
|
13441
|
+
|
|
13364
13442
|
// src/components/common/action-menu/action-menu.tsx
|
|
13365
13443
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
13366
13444
|
var ActionMenu = ({
|
|
13367
|
-
groups,
|
|
13445
|
+
groups: declaredGroups,
|
|
13368
13446
|
variant = "transparent",
|
|
13369
13447
|
children
|
|
13370
13448
|
}) => {
|
|
13371
13449
|
const direction = useDocumentDirection();
|
|
13450
|
+
const { t: t2 } = useTranslation();
|
|
13451
|
+
const permissions = useContext2(PermissionsContext);
|
|
13452
|
+
const groups = useMemo2(
|
|
13453
|
+
() => applyActionPermissions(
|
|
13454
|
+
declaredGroups,
|
|
13455
|
+
permissions,
|
|
13456
|
+
t2("permissions.accessDenied.action")
|
|
13457
|
+
),
|
|
13458
|
+
[declaredGroups, permissions, t2]
|
|
13459
|
+
);
|
|
13372
13460
|
const inner = children ?? /* @__PURE__ */ jsx2(IconButton, { size: "small", variant, children: /* @__PURE__ */ jsx2(EllipsisHorizontal, {}) });
|
|
13373
13461
|
return /* @__PURE__ */ jsxs(DropdownMenu, { dir: direction, children: [
|
|
13374
13462
|
/* @__PURE__ */ jsx2(DropdownMenu.Trigger, { asChild: true, children: inner }),
|
|
@@ -13436,7 +13524,7 @@ var ActionMenu = ({
|
|
|
13436
13524
|
|
|
13437
13525
|
// src/components/common/badge-list-summary/badge-list-summary.tsx
|
|
13438
13526
|
import { Badge, Tooltip as Tooltip2, clx as clx2 } from "@medusajs/ui";
|
|
13439
|
-
import { useTranslation } from "react-i18next";
|
|
13527
|
+
import { useTranslation as useTranslation2 } from "react-i18next";
|
|
13440
13528
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
13441
13529
|
var BadgeListSummary = ({
|
|
13442
13530
|
list,
|
|
@@ -13445,7 +13533,7 @@ var BadgeListSummary = ({
|
|
|
13445
13533
|
rounded = false,
|
|
13446
13534
|
n = 2
|
|
13447
13535
|
}) => {
|
|
13448
|
-
const { t: t2 } =
|
|
13536
|
+
const { t: t2 } = useTranslation2();
|
|
13449
13537
|
const title = t2("general.plusCount", {
|
|
13450
13538
|
count: list.length - n
|
|
13451
13539
|
});
|
|
@@ -13487,12 +13575,12 @@ var BadgeListSummary = ({
|
|
|
13487
13575
|
// src/components/common/chip-group/chip-group.tsx
|
|
13488
13576
|
import { XMarkMini } from "@medusajs/icons";
|
|
13489
13577
|
import { Button, clx as clx3 } from "@medusajs/ui";
|
|
13490
|
-
import { Children, createContext, useContext } from "react";
|
|
13491
|
-
import { useTranslation as
|
|
13578
|
+
import { Children, createContext as createContext2, useContext as useContext3 } from "react";
|
|
13579
|
+
import { useTranslation as useTranslation3 } from "react-i18next";
|
|
13492
13580
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
13493
|
-
var GroupContext =
|
|
13581
|
+
var GroupContext = createContext2(null);
|
|
13494
13582
|
var useGroupContext = () => {
|
|
13495
|
-
const context =
|
|
13583
|
+
const context = useContext3(GroupContext);
|
|
13496
13584
|
if (!context) {
|
|
13497
13585
|
throw new Error("useGroupContext must be used within a ChipGroup component");
|
|
13498
13586
|
}
|
|
@@ -13505,7 +13593,7 @@ var Group = ({
|
|
|
13505
13593
|
className,
|
|
13506
13594
|
children
|
|
13507
13595
|
}) => {
|
|
13508
|
-
const { t: t2 } =
|
|
13596
|
+
const { t: t2 } = useTranslation3();
|
|
13509
13597
|
const showClearAll = !!onClearAll && Children.count(children) > 0;
|
|
13510
13598
|
return /* @__PURE__ */ jsx4(GroupContext.Provider, { value: { onRemove, variant }, children: /* @__PURE__ */ jsxs3(
|
|
13511
13599
|
"ul",
|
|
@@ -13568,7 +13656,7 @@ var ChipGroup = Object.assign(Group, { Chip });
|
|
|
13568
13656
|
// src/components/common/confirm-prompt/confirm-prompt.tsx
|
|
13569
13657
|
import { Label, Prompt, Textarea } from "@medusajs/ui";
|
|
13570
13658
|
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
13571
|
-
import { useTranslation as
|
|
13659
|
+
import { useTranslation as useTranslation4 } from "react-i18next";
|
|
13572
13660
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
13573
13661
|
var ConfirmPrompt = ({
|
|
13574
13662
|
open,
|
|
@@ -13585,7 +13673,7 @@ var ConfirmPrompt = ({
|
|
|
13585
13673
|
isLoading = false,
|
|
13586
13674
|
onConfirm
|
|
13587
13675
|
}) => {
|
|
13588
|
-
const { t: t2 } =
|
|
13676
|
+
const { t: t2 } = useTranslation4();
|
|
13589
13677
|
const [note, setNote] = useState2(defaultNote);
|
|
13590
13678
|
useEffect2(() => {
|
|
13591
13679
|
if (open) {
|
|
@@ -13646,11 +13734,11 @@ var ConfirmPrompt = ({
|
|
|
13646
13734
|
|
|
13647
13735
|
// src/components/common/customer-info/customer-info.tsx
|
|
13648
13736
|
import { Avatar, Copy, Text } from "@medusajs/ui";
|
|
13649
|
-
import { useTranslation as
|
|
13737
|
+
import { useTranslation as useTranslation5 } from "react-i18next";
|
|
13650
13738
|
import { Link as Link2 } from "react-router-dom";
|
|
13651
13739
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
13652
13740
|
var ID = ({ data }) => {
|
|
13653
|
-
const { t: t2 } =
|
|
13741
|
+
const { t: t2 } = useTranslation5();
|
|
13654
13742
|
const id = data.customer_id;
|
|
13655
13743
|
const name = getOrderCustomer(data);
|
|
13656
13744
|
const email = data.email;
|
|
@@ -13679,7 +13767,7 @@ var ID = ({ data }) => {
|
|
|
13679
13767
|
] });
|
|
13680
13768
|
};
|
|
13681
13769
|
var Company = ({ data }) => {
|
|
13682
|
-
const { t: t2 } =
|
|
13770
|
+
const { t: t2 } = useTranslation5();
|
|
13683
13771
|
const company = data.shipping_address?.company || data.billing_address?.company;
|
|
13684
13772
|
if (!company) {
|
|
13685
13773
|
return null;
|
|
@@ -13690,7 +13778,7 @@ var Company = ({ data }) => {
|
|
|
13690
13778
|
] });
|
|
13691
13779
|
};
|
|
13692
13780
|
var Contact = ({ data }) => {
|
|
13693
|
-
const { t: t2 } =
|
|
13781
|
+
const { t: t2 } = useTranslation5();
|
|
13694
13782
|
const phone = data.shipping_address?.phone || data.billing_address?.phone;
|
|
13695
13783
|
const email = data.email || "";
|
|
13696
13784
|
return /* @__PURE__ */ jsxs5("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-start px-6 py-4", children: [
|
|
@@ -13727,7 +13815,7 @@ var AddressPrint = ({
|
|
|
13727
13815
|
address,
|
|
13728
13816
|
type
|
|
13729
13817
|
}) => {
|
|
13730
|
-
const { t: t2 } =
|
|
13818
|
+
const { t: t2 } = useTranslation5();
|
|
13731
13819
|
return /* @__PURE__ */ jsxs5("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-start px-6 py-4", children: [
|
|
13732
13820
|
/* @__PURE__ */ jsx6(Text, { size: "small", leading: "compact", weight: "plus", children: type === "shipping" ? t2("addresses.shippingAddress.label") : t2("addresses.billingAddress.label") }),
|
|
13733
13821
|
address ? /* @__PURE__ */ jsxs5("div", { className: "grid grid-cols-[1fr_20px] items-start gap-x-2", children: [
|
|
@@ -13748,7 +13836,7 @@ var AddressPrint = ({
|
|
|
13748
13836
|
] });
|
|
13749
13837
|
};
|
|
13750
13838
|
var Addresses = ({ data }) => {
|
|
13751
|
-
const { t: t2 } =
|
|
13839
|
+
const { t: t2 } = useTranslation5();
|
|
13752
13840
|
return /* @__PURE__ */ jsxs5("div", { className: "divide-y", children: [
|
|
13753
13841
|
/* @__PURE__ */ jsx6(AddressPrint, { address: data.shipping_address, type: "shipping" }),
|
|
13754
13842
|
!isSameAddress(data.shipping_address, data.billing_address) ? /* @__PURE__ */ jsx6(AddressPrint, { address: data.billing_address, type: "billing" }) : /* @__PURE__ */ jsxs5("div", { className: "grid grid-cols-2 items-center px-6 py-4", children: [
|
|
@@ -13788,7 +13876,7 @@ var getOrderCustomer = (obj) => {
|
|
|
13788
13876
|
|
|
13789
13877
|
// src/components/common/date-range-display/date-range-display.tsx
|
|
13790
13878
|
import { Text as Text2, clx as clx4 } from "@medusajs/ui";
|
|
13791
|
-
import { useTranslation as
|
|
13879
|
+
import { useTranslation as useTranslation6 } from "react-i18next";
|
|
13792
13880
|
|
|
13793
13881
|
// src/hooks/use-date.tsx
|
|
13794
13882
|
import { format, formatDistance, sub } from "date-fns";
|
|
@@ -13825,7 +13913,7 @@ var DateRangeDisplay = ({
|
|
|
13825
13913
|
}) => {
|
|
13826
13914
|
const startDate = startsAt ? new Date(startsAt) : null;
|
|
13827
13915
|
const endDate = endsAt ? new Date(endsAt) : null;
|
|
13828
|
-
const { t: t2 } =
|
|
13916
|
+
const { t: t2 } = useTranslation6();
|
|
13829
13917
|
const { getFullDate } = useDate();
|
|
13830
13918
|
return /* @__PURE__ */ jsxs6("div", { className: "grid gap-3 md:grid-cols-2", children: [
|
|
13831
13919
|
/* @__PURE__ */ jsxs6("div", { className: "shadow-elevation-card-rest bg-ui-bg-component text-ui-fg-subtle flex items-center gap-x-3 rounded-md px-3 py-1.5", children: [
|
|
@@ -13864,16 +13952,31 @@ var Bar = ({ date }) => {
|
|
|
13864
13952
|
};
|
|
13865
13953
|
|
|
13866
13954
|
// src/components/common/display-id/display-id.tsx
|
|
13867
|
-
import { useTranslation as
|
|
13955
|
+
import { useTranslation as useTranslation7 } from "react-i18next";
|
|
13868
13956
|
import { useState as useState3 } from "react";
|
|
13869
13957
|
import copy from "copy-to-clipboard";
|
|
13870
13958
|
import { clx as clx5, toast, Tooltip as Tooltip3 } from "@medusajs/ui";
|
|
13871
13959
|
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
13872
13960
|
|
|
13961
|
+
// src/permissions/use-permission-gate.tsx
|
|
13962
|
+
import { useContext as useContext4 } from "react";
|
|
13963
|
+
import { useTranslation as useTranslation8 } from "react-i18next";
|
|
13964
|
+
var usePermissionGate = (permission, requireAll = false) => {
|
|
13965
|
+
const { t: t2 } = useTranslation8();
|
|
13966
|
+
const context = useContext4(PermissionsContext);
|
|
13967
|
+
const allowed = isPermitted(context, permission, requireAll);
|
|
13968
|
+
return {
|
|
13969
|
+
allowed,
|
|
13970
|
+
denied: !allowed,
|
|
13971
|
+
tooltip: allowed ? void 0 : t2("permissions.accessDenied.action")
|
|
13972
|
+
};
|
|
13973
|
+
};
|
|
13974
|
+
|
|
13873
13975
|
// src/components/common/empty-table-content/empty-table-content.tsx
|
|
13976
|
+
import { cloneElement } from "react";
|
|
13874
13977
|
import { ExclamationCircle, MagnifyingGlass, PlusMini } from "@medusajs/icons";
|
|
13875
|
-
import { Button as Button2, Text as Text3, clx as clx6 } from "@medusajs/ui";
|
|
13876
|
-
import { useTranslation as
|
|
13978
|
+
import { Button as Button2, Text as Text3, clx as clx6, Tooltip as Tooltip4 } from "@medusajs/ui";
|
|
13979
|
+
import { useTranslation as useTranslation9 } from "react-i18next";
|
|
13877
13980
|
import { Link as Link3 } from "react-router-dom";
|
|
13878
13981
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
13879
13982
|
var NoResults = ({
|
|
@@ -13882,7 +13985,7 @@ var NoResults = ({
|
|
|
13882
13985
|
className,
|
|
13883
13986
|
icon = /* @__PURE__ */ jsx9(MagnifyingGlass, {})
|
|
13884
13987
|
}) => {
|
|
13885
|
-
const { t: t2 } =
|
|
13988
|
+
const { t: t2 } = useTranslation9();
|
|
13886
13989
|
return /* @__PURE__ */ jsx9(
|
|
13887
13990
|
"div",
|
|
13888
13991
|
{
|
|
@@ -13898,8 +14001,18 @@ var NoResults = ({
|
|
|
13898
14001
|
}
|
|
13899
14002
|
);
|
|
13900
14003
|
};
|
|
13901
|
-
var
|
|
13902
|
-
|
|
14004
|
+
var ActionLink = ({
|
|
14005
|
+
action,
|
|
14006
|
+
children
|
|
14007
|
+
}) => {
|
|
14008
|
+
const gate = usePermissionGate(action.permission);
|
|
14009
|
+
if (gate.denied) {
|
|
14010
|
+
return /* @__PURE__ */ jsx9(Tooltip4, { content: gate.tooltip, children: /* @__PURE__ */ jsx9("span", { className: "inline-flex", children: cloneElement(children, { disabled: true }) }) });
|
|
14011
|
+
}
|
|
14012
|
+
return /* @__PURE__ */ jsx9(Link3, { to: action.to, children });
|
|
14013
|
+
};
|
|
14014
|
+
var DefaultButton = ({ action }) => action && /* @__PURE__ */ jsx9(ActionLink, { action, children: /* @__PURE__ */ jsx9(Button2, { variant: "secondary", size: "small", children: action.label }) });
|
|
14015
|
+
var TransparentIconLeftButton = ({ action }) => action && /* @__PURE__ */ jsx9(ActionLink, { action, children: /* @__PURE__ */ jsxs8(Button2, { variant: "transparent", className: "text-ui-fg-interactive", children: [
|
|
13903
14016
|
/* @__PURE__ */ jsx9(PlusMini, {}),
|
|
13904
14017
|
" ",
|
|
13905
14018
|
action.label
|
|
@@ -13912,7 +14025,7 @@ var NoRecords = ({
|
|
|
13912
14025
|
buttonVariant = "default",
|
|
13913
14026
|
icon = /* @__PURE__ */ jsx9(ExclamationCircle, { className: "text-ui-fg-subtle" })
|
|
13914
14027
|
}) => {
|
|
13915
|
-
const { t: t2 } =
|
|
14028
|
+
const { t: t2 } = useTranslation9();
|
|
13916
14029
|
return /* @__PURE__ */ jsxs8(
|
|
13917
14030
|
"div",
|
|
13918
14031
|
{
|
|
@@ -14192,14 +14305,14 @@ import {
|
|
|
14192
14305
|
Hint as HintComponent,
|
|
14193
14306
|
Label as LabelComponent,
|
|
14194
14307
|
Text as Text6,
|
|
14195
|
-
Tooltip as
|
|
14308
|
+
Tooltip as Tooltip5,
|
|
14196
14309
|
clx as clx8
|
|
14197
14310
|
} from "@medusajs/ui";
|
|
14198
14311
|
import { Slot } from "radix-ui";
|
|
14199
14312
|
import {
|
|
14200
|
-
createContext as
|
|
14313
|
+
createContext as createContext3,
|
|
14201
14314
|
forwardRef,
|
|
14202
|
-
useContext as
|
|
14315
|
+
useContext as useContext5,
|
|
14203
14316
|
useId
|
|
14204
14317
|
} from "react";
|
|
14205
14318
|
import {
|
|
@@ -14208,10 +14321,10 @@ import {
|
|
|
14208
14321
|
useFormContext,
|
|
14209
14322
|
useFormState
|
|
14210
14323
|
} from "react-hook-form";
|
|
14211
|
-
import { useTranslation as
|
|
14324
|
+
import { useTranslation as useTranslation10 } from "react-i18next";
|
|
14212
14325
|
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
14213
14326
|
var Provider = FormProvider;
|
|
14214
|
-
var FormFieldContext =
|
|
14327
|
+
var FormFieldContext = createContext3(
|
|
14215
14328
|
{}
|
|
14216
14329
|
);
|
|
14217
14330
|
var Field = ({
|
|
@@ -14219,12 +14332,12 @@ var Field = ({
|
|
|
14219
14332
|
}) => {
|
|
14220
14333
|
return /* @__PURE__ */ jsx12(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx12(Controller, { ...props }) });
|
|
14221
14334
|
};
|
|
14222
|
-
var FormItemContext =
|
|
14335
|
+
var FormItemContext = createContext3(
|
|
14223
14336
|
{}
|
|
14224
14337
|
);
|
|
14225
14338
|
var useFormField = () => {
|
|
14226
|
-
const fieldContext =
|
|
14227
|
-
const itemContext =
|
|
14339
|
+
const fieldContext = useContext5(FormFieldContext);
|
|
14340
|
+
const itemContext = useContext5(FormItemContext);
|
|
14228
14341
|
const { getFieldState } = useFormContext();
|
|
14229
14342
|
const formState = useFormState({ name: fieldContext.name });
|
|
14230
14343
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -14258,7 +14371,7 @@ var Item = forwardRef(
|
|
|
14258
14371
|
Item.displayName = "Form.Item";
|
|
14259
14372
|
var Label2 = forwardRef(({ className, optional = false, tooltip, icon, ...props }, ref) => {
|
|
14260
14373
|
const { formLabelId, formItemId } = useFormField();
|
|
14261
|
-
const { t: t2 } =
|
|
14374
|
+
const { t: t2 } = useTranslation10();
|
|
14262
14375
|
return /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-x-1", children: [
|
|
14263
14376
|
/* @__PURE__ */ jsx12(
|
|
14264
14377
|
LabelComponent,
|
|
@@ -14272,7 +14385,7 @@ var Label2 = forwardRef(({ className, optional = false, tooltip, icon, ...props
|
|
|
14272
14385
|
...props
|
|
14273
14386
|
}
|
|
14274
14387
|
),
|
|
14275
|
-
tooltip && /* @__PURE__ */ jsx12(
|
|
14388
|
+
tooltip && /* @__PURE__ */ jsx12(Tooltip5, { content: tooltip, children: /* @__PURE__ */ jsx12(InformationCircleSolid, { className: "text-ui-fg-muted" }) }),
|
|
14276
14389
|
icon,
|
|
14277
14390
|
optional && /* @__PURE__ */ jsxs11(Text6, { size: "small", leading: "compact", className: "text-ui-fg-muted", children: [
|
|
14278
14391
|
"(",
|
|
@@ -14409,7 +14522,7 @@ function ImageAvatar({
|
|
|
14409
14522
|
|
|
14410
14523
|
// src/components/common/infinite-list/infinite-list.tsx
|
|
14411
14524
|
import { useInfiniteQuery } from "@tanstack/react-query";
|
|
14412
|
-
import { useEffect as useEffect3, useMemo, useRef as useRef2 } from "react";
|
|
14525
|
+
import { useEffect as useEffect3, useMemo as useMemo3, useRef as useRef2 } from "react";
|
|
14413
14526
|
import { toast as toast2 } from "@medusajs/ui";
|
|
14414
14527
|
import { Spinner as Spinner2 } from "@medusajs/icons";
|
|
14415
14528
|
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
@@ -14451,7 +14564,7 @@ var InfiniteList = ({
|
|
|
14451
14564
|
},
|
|
14452
14565
|
...queryOptions
|
|
14453
14566
|
});
|
|
14454
|
-
const items =
|
|
14567
|
+
const items = useMemo3(() => {
|
|
14455
14568
|
return data?.pages.flatMap((p) => p[responseKey]) ?? [];
|
|
14456
14569
|
}, [data, responseKey]);
|
|
14457
14570
|
const parentRef = useRef2(null);
|
|
@@ -14539,10 +14652,10 @@ import {
|
|
|
14539
14652
|
} from "@medusajs/ui";
|
|
14540
14653
|
import Primitive from "@uiw/react-json-view";
|
|
14541
14654
|
import { Suspense, useState as useState5 } from "react";
|
|
14542
|
-
import { Trans, useTranslation as
|
|
14655
|
+
import { Trans, useTranslation as useTranslation11 } from "react-i18next";
|
|
14543
14656
|
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
14544
14657
|
var JsonViewSection = ({ data }) => {
|
|
14545
|
-
const { t: t2 } =
|
|
14658
|
+
const { t: t2 } = useTranslation11();
|
|
14546
14659
|
const numberOfKeys = Object.keys(data).length;
|
|
14547
14660
|
return /* @__PURE__ */ jsxs13(Container, { className: "flex items-center justify-between px-6 py-4", children: [
|
|
14548
14661
|
/* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-x-4", children: [
|
|
@@ -14721,8 +14834,8 @@ var LinkButton = ({
|
|
|
14721
14834
|
};
|
|
14722
14835
|
|
|
14723
14836
|
// src/components/common/list-summary/list-summary.tsx
|
|
14724
|
-
import { Tooltip as
|
|
14725
|
-
import { useTranslation as
|
|
14837
|
+
import { Tooltip as Tooltip6, clx as clx12 } from "@medusajs/ui";
|
|
14838
|
+
import { useTranslation as useTranslation12 } from "react-i18next";
|
|
14726
14839
|
import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
14727
14840
|
var ListSummary = ({
|
|
14728
14841
|
list,
|
|
@@ -14731,7 +14844,7 @@ var ListSummary = ({
|
|
|
14731
14844
|
inline,
|
|
14732
14845
|
n = 2
|
|
14733
14846
|
}) => {
|
|
14734
|
-
const { t: t2 } =
|
|
14847
|
+
const { t: t2 } = useTranslation12();
|
|
14735
14848
|
const title = t2("general.plusCountMore", {
|
|
14736
14849
|
count: list.length - n
|
|
14737
14850
|
});
|
|
@@ -14751,7 +14864,7 @@ var ListSummary = ({
|
|
|
14751
14864
|
children: [
|
|
14752
14865
|
/* @__PURE__ */ jsx18("div", { className: "flex-1 truncate", children: /* @__PURE__ */ jsx18("span", { className: "truncate", children: list.slice(0, n).join(", ") }) }),
|
|
14753
14866
|
list.length > n && /* @__PURE__ */ jsx18("div", { className: "whitespace-nowrap", children: /* @__PURE__ */ jsx18(
|
|
14754
|
-
|
|
14867
|
+
Tooltip6,
|
|
14755
14868
|
{
|
|
14756
14869
|
content: /* @__PURE__ */ jsx18("ul", { children: list.slice(n).map((c) => /* @__PURE__ */ jsx18("li", { children: c }, c)) }),
|
|
14757
14870
|
children: /* @__PURE__ */ jsx18("span", { className: "cursor-default whitespace-nowrap", children: title })
|
|
@@ -14787,14 +14900,14 @@ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
|
14787
14900
|
// src/components/common/metadata-section/metadata-section.tsx
|
|
14788
14901
|
import { ArrowUpRightOnBox as ArrowUpRightOnBox2 } from "@medusajs/icons";
|
|
14789
14902
|
import { Badge as Badge3, Container as Container2, Heading as Heading2, IconButton as IconButton4 } from "@medusajs/ui";
|
|
14790
|
-
import { useTranslation as
|
|
14903
|
+
import { useTranslation as useTranslation13 } from "react-i18next";
|
|
14791
14904
|
import { Link as Link5 } from "react-router-dom";
|
|
14792
14905
|
import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
14793
14906
|
var MetadataSection = ({
|
|
14794
14907
|
data,
|
|
14795
14908
|
href = "metadata/edit"
|
|
14796
14909
|
}) => {
|
|
14797
|
-
const { t: t2 } =
|
|
14910
|
+
const { t: t2 } = useTranslation13();
|
|
14798
14911
|
if (!data) {
|
|
14799
14912
|
return null;
|
|
14800
14913
|
}
|
|
@@ -14826,14 +14939,14 @@ var MetadataSection = ({
|
|
|
14826
14939
|
import { ExclamationCircleSolid } from "@medusajs/icons";
|
|
14827
14940
|
import { Container as Container3, Heading as Heading3, Text as Text9, clx as clx15 } from "@medusajs/ui";
|
|
14828
14941
|
import { useQueries } from "@tanstack/react-query";
|
|
14829
|
-
import { Fragment as Fragment3, useMemo as
|
|
14830
|
-
import { useTranslation as
|
|
14942
|
+
import { Fragment as Fragment3, useMemo as useMemo5 } from "react";
|
|
14943
|
+
import { useTranslation as useTranslation15 } from "react-i18next";
|
|
14831
14944
|
|
|
14832
14945
|
// src/components/common/rich-text/rich-text.tsx
|
|
14833
14946
|
import { Button as Button3, Text as Text8, clx as clx13 } from "@medusajs/ui";
|
|
14834
14947
|
import DOMPurify from "dompurify";
|
|
14835
|
-
import { useEffect as useEffect4, useMemo as
|
|
14836
|
-
import { useTranslation as
|
|
14948
|
+
import { useEffect as useEffect4, useMemo as useMemo4, useRef as useRef3, useState as useState6 } from "react";
|
|
14949
|
+
import { useTranslation as useTranslation14 } from "react-i18next";
|
|
14837
14950
|
|
|
14838
14951
|
// src/lib/rich-text.ts
|
|
14839
14952
|
var RICH_TEXT_ALLOWED_TAGS = [
|
|
@@ -14891,7 +15004,7 @@ var Collapsible = ({
|
|
|
14891
15004
|
dataTestId,
|
|
14892
15005
|
children
|
|
14893
15006
|
}) => {
|
|
14894
|
-
const { t: t2 } =
|
|
15007
|
+
const { t: t2 } = useTranslation14();
|
|
14895
15008
|
const contentRef = useRef3(null);
|
|
14896
15009
|
const [isOverflowing, setIsOverflowing] = useState6(false);
|
|
14897
15010
|
const [isExpanded, setIsExpanded] = useState6(false);
|
|
@@ -14946,7 +15059,7 @@ var RichText = ({
|
|
|
14946
15059
|
collapsedHeight,
|
|
14947
15060
|
"data-testid": dataTestId
|
|
14948
15061
|
}) => {
|
|
14949
|
-
const sanitized =
|
|
15062
|
+
const sanitized = useMemo4(
|
|
14950
15063
|
() => html && isHtml(html) ? sanitizeRichText(html) : null,
|
|
14951
15064
|
[html]
|
|
14952
15065
|
);
|
|
@@ -15080,7 +15193,7 @@ var FieldDiffValue = ({
|
|
|
15080
15193
|
diff,
|
|
15081
15194
|
lookups
|
|
15082
15195
|
}) => {
|
|
15083
|
-
const { t: t2 } =
|
|
15196
|
+
const { t: t2 } = useTranslation15();
|
|
15084
15197
|
const booleanLabels = {
|
|
15085
15198
|
true: t2("general.yes"),
|
|
15086
15199
|
false: t2("general.no")
|
|
@@ -15179,7 +15292,7 @@ var AttributeValue = ({
|
|
|
15179
15292
|
change,
|
|
15180
15293
|
lookup
|
|
15181
15294
|
}) => {
|
|
15182
|
-
const { t: t2 } =
|
|
15295
|
+
const { t: t2 } = useTranslation15();
|
|
15183
15296
|
const { name, previous, next } = attributeDisplay(change, lookup, {
|
|
15184
15297
|
true: t2("general.yes"),
|
|
15185
15298
|
false: t2("general.no")
|
|
@@ -15225,23 +15338,23 @@ var ProductChangePanel = ({
|
|
|
15225
15338
|
headerDescription,
|
|
15226
15339
|
footer
|
|
15227
15340
|
}) => {
|
|
15228
|
-
const { t: t2 } =
|
|
15229
|
-
const view =
|
|
15230
|
-
const variantsById =
|
|
15341
|
+
const { t: t2 } = useTranslation15();
|
|
15342
|
+
const view = useMemo5(() => buildProductChangeView(actions), [actions]);
|
|
15343
|
+
const variantsById = useMemo5(() => {
|
|
15231
15344
|
const map = /* @__PURE__ */ new Map();
|
|
15232
15345
|
for (const variant of product.variants ?? []) {
|
|
15233
15346
|
if (variant?.id) map.set(variant.id, variant);
|
|
15234
15347
|
}
|
|
15235
15348
|
return map;
|
|
15236
15349
|
}, [product.variants]);
|
|
15237
|
-
const productAttributesById =
|
|
15350
|
+
const productAttributesById = useMemo5(() => {
|
|
15238
15351
|
const map = /* @__PURE__ */ new Map();
|
|
15239
15352
|
for (const attr of product.attributes ?? []) {
|
|
15240
15353
|
if (attr?.id) map.set(attr.id, attr);
|
|
15241
15354
|
}
|
|
15242
15355
|
return map;
|
|
15243
15356
|
}, [product.attributes]);
|
|
15244
|
-
const referenceIds =
|
|
15357
|
+
const referenceIds = useMemo5(() => {
|
|
15245
15358
|
const types = /* @__PURE__ */ new Set();
|
|
15246
15359
|
const collections = /* @__PURE__ */ new Set();
|
|
15247
15360
|
const categories = /* @__PURE__ */ new Set();
|
|
@@ -15267,7 +15380,7 @@ var ProductChangePanel = ({
|
|
|
15267
15380
|
tags: Array.from(tags)
|
|
15268
15381
|
};
|
|
15269
15382
|
}, [view.productUpdated]);
|
|
15270
|
-
const attributeIdsToFetch =
|
|
15383
|
+
const attributeIdsToFetch = useMemo5(() => {
|
|
15271
15384
|
const ids = /* @__PURE__ */ new Set();
|
|
15272
15385
|
for (const change of view.attributes) {
|
|
15273
15386
|
if (change.attributeId && !productAttributesById.has(change.attributeId)) {
|
|
@@ -15276,7 +15389,7 @@ var ProductChangePanel = ({
|
|
|
15276
15389
|
}
|
|
15277
15390
|
return Array.from(ids);
|
|
15278
15391
|
}, [view.attributes, productAttributesById]);
|
|
15279
|
-
const variantIdsToFetch =
|
|
15392
|
+
const variantIdsToFetch = useMemo5(() => {
|
|
15280
15393
|
const ids = /* @__PURE__ */ new Set();
|
|
15281
15394
|
for (const action of view.variantsRemoved) {
|
|
15282
15395
|
const id = action.details?.variant_id;
|
|
@@ -15324,7 +15437,7 @@ var ProductChangePanel = ({
|
|
|
15324
15437
|
}))
|
|
15325
15438
|
});
|
|
15326
15439
|
const isResolving = typeQueries.some((q) => q.isPending) || collectionQueries.some((q) => q.isPending) || categoryQueries.some((q) => q.isPending) || tagQueries.some((q) => q.isPending) || attributeQueries.some((q) => q.isPending) || variantQueries.some((q) => q.isPending);
|
|
15327
|
-
const lookups =
|
|
15440
|
+
const lookups = useMemo5(() => {
|
|
15328
15441
|
const toMap = (ids, queries) => {
|
|
15329
15442
|
const map = /* @__PURE__ */ new Map();
|
|
15330
15443
|
ids.forEach((id, idx) => {
|
|
@@ -15346,7 +15459,7 @@ var ProductChangePanel = ({
|
|
|
15346
15459
|
categoryQueries,
|
|
15347
15460
|
tagQueries
|
|
15348
15461
|
]);
|
|
15349
|
-
const attributeLookup =
|
|
15462
|
+
const attributeLookup = useMemo5(() => {
|
|
15350
15463
|
const map = /* @__PURE__ */ new Map();
|
|
15351
15464
|
const addEntry = (id, name, allValues, selected) => {
|
|
15352
15465
|
const valueNameById = /* @__PURE__ */ new Map();
|
|
@@ -15972,9 +16085,9 @@ import { DotsSix } from "@medusajs/icons";
|
|
|
15972
16085
|
import { IconButton as IconButton5, clx as clx19 } from "@medusajs/ui";
|
|
15973
16086
|
import {
|
|
15974
16087
|
Fragment as Fragment5,
|
|
15975
|
-
createContext as
|
|
15976
|
-
useContext as
|
|
15977
|
-
useMemo as
|
|
16088
|
+
createContext as createContext4,
|
|
16089
|
+
useContext as useContext6,
|
|
16090
|
+
useMemo as useMemo6,
|
|
15978
16091
|
useState as useState7
|
|
15979
16092
|
} from "react";
|
|
15980
16093
|
import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
@@ -15984,7 +16097,7 @@ var List = ({
|
|
|
15984
16097
|
renderItem
|
|
15985
16098
|
}) => {
|
|
15986
16099
|
const [active, setActive] = useState7(null);
|
|
15987
|
-
const [activeItem, activeIndex] =
|
|
16100
|
+
const [activeItem, activeIndex] = useMemo6(() => {
|
|
15988
16101
|
if (active === null) {
|
|
15989
16102
|
return [null, null];
|
|
15990
16103
|
}
|
|
@@ -16051,9 +16164,9 @@ var Overlay = ({ children }) => {
|
|
|
16051
16164
|
}
|
|
16052
16165
|
);
|
|
16053
16166
|
};
|
|
16054
|
-
var SortableItemContext =
|
|
16167
|
+
var SortableItemContext = createContext4(null);
|
|
16055
16168
|
var useSortableItemContext = () => {
|
|
16056
|
-
const context =
|
|
16169
|
+
const context = useContext6(SortableItemContext);
|
|
16057
16170
|
if (!context) {
|
|
16058
16171
|
throw new Error(
|
|
16059
16172
|
"useSortableItemContext must be used within a SortableItemContext"
|
|
@@ -16075,7 +16188,7 @@ var Item2 = ({
|
|
|
16075
16188
|
transform,
|
|
16076
16189
|
transition
|
|
16077
16190
|
} = useSortable({ id });
|
|
16078
|
-
const context =
|
|
16191
|
+
const context = useMemo6(
|
|
16079
16192
|
() => ({
|
|
16080
16193
|
attributes,
|
|
16081
16194
|
listeners,
|
|
@@ -16137,7 +16250,7 @@ import {
|
|
|
16137
16250
|
verticalListSortingStrategy
|
|
16138
16251
|
} from "@dnd-kit/sortable";
|
|
16139
16252
|
import { CSS as CSS3 } from "@dnd-kit/utilities";
|
|
16140
|
-
import { useEffect as useEffect5, useMemo as
|
|
16253
|
+
import { useEffect as useEffect5, useMemo as useMemo7, useRef as useRef4, useState as useState8 } from "react";
|
|
16141
16254
|
import { createPortal } from "react-dom";
|
|
16142
16255
|
|
|
16143
16256
|
// src/components/common/sortable-tree/keyboard-coordinates.ts
|
|
@@ -16667,7 +16780,7 @@ function SortableTree({
|
|
|
16667
16780
|
const [overId, setOverId] = useState8(null);
|
|
16668
16781
|
const [offsetLeft, setOffsetLeft] = useState8(0);
|
|
16669
16782
|
const [currentPosition, setCurrentPosition] = useState8(null);
|
|
16670
|
-
const flattenedItems =
|
|
16783
|
+
const flattenedItems = useMemo7(() => {
|
|
16671
16784
|
const flattenedTree = flattenTree(items, childrenProp);
|
|
16672
16785
|
const collapsedItems = flattenedTree.reduce(
|
|
16673
16786
|
(acc, item) => {
|
|
@@ -16704,7 +16817,7 @@ function SortableTree({
|
|
|
16704
16817
|
coordinateGetter
|
|
16705
16818
|
})
|
|
16706
16819
|
);
|
|
16707
|
-
const sortedIds =
|
|
16820
|
+
const sortedIds = useMemo7(
|
|
16708
16821
|
() => flattenedItems.map(({ id }) => id),
|
|
16709
16822
|
[flattenedItems]
|
|
16710
16823
|
);
|
|
@@ -16925,15 +17038,15 @@ var SwitchBox = ({
|
|
|
16925
17038
|
|
|
16926
17039
|
// src/components/common/tax-badge/tax-badge.tsx
|
|
16927
17040
|
import { TaxExclusive, TaxInclusive } from "@medusajs/icons";
|
|
16928
|
-
import { Tooltip as
|
|
16929
|
-
import { useTranslation as
|
|
17041
|
+
import { Tooltip as Tooltip7 } from "@medusajs/ui";
|
|
17042
|
+
import { useTranslation as useTranslation16 } from "react-i18next";
|
|
16930
17043
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
16931
17044
|
var IncludesTaxTooltip = ({
|
|
16932
17045
|
includesTax
|
|
16933
17046
|
}) => {
|
|
16934
|
-
const { t: t2 } =
|
|
17047
|
+
const { t: t2 } = useTranslation16();
|
|
16935
17048
|
return /* @__PURE__ */ jsx35(
|
|
16936
|
-
|
|
17049
|
+
Tooltip7,
|
|
16937
17050
|
{
|
|
16938
17051
|
maxWidth: 999,
|
|
16939
17052
|
content: includesTax ? t2("general.includesTaxTooltip") : t2("general.excludesTaxTooltip"),
|
|
@@ -16962,18 +17075,18 @@ var useCombinedRefs = (...refs) => {
|
|
|
16962
17075
|
};
|
|
16963
17076
|
|
|
16964
17077
|
// src/components/data-grid/hooks/use-data-grid-cell.tsx
|
|
16965
|
-
import { useCallback, useEffect as useEffect6, useMemo as
|
|
17078
|
+
import { useCallback, useEffect as useEffect6, useMemo as useMemo8, useRef as useRef5, useState as useState9 } from "react";
|
|
16966
17079
|
|
|
16967
17080
|
// src/components/data-grid/context/data-grid-context.tsx
|
|
16968
|
-
import { createContext as
|
|
16969
|
-
var DataGridContext =
|
|
17081
|
+
import { createContext as createContext5 } from "react";
|
|
17082
|
+
var DataGridContext = createContext5(
|
|
16970
17083
|
null
|
|
16971
17084
|
);
|
|
16972
17085
|
|
|
16973
17086
|
// src/components/data-grid/context/use-data-grid-context.tsx
|
|
16974
|
-
import { useContext as
|
|
17087
|
+
import { useContext as useContext7 } from "react";
|
|
16975
17088
|
var useDataGridContext = () => {
|
|
16976
|
-
const context =
|
|
17089
|
+
const context = useContext7(DataGridContext);
|
|
16977
17090
|
if (!context) {
|
|
16978
17091
|
throw new Error(
|
|
16979
17092
|
"useDataGridContext must be used within a DataGridContextProvider"
|
|
@@ -17019,11 +17132,11 @@ var useDataGridCell = ({
|
|
|
17019
17132
|
getCellMetadata
|
|
17020
17133
|
} = useDataGridContext();
|
|
17021
17134
|
const { rowIndex, columnIndex } = context;
|
|
17022
|
-
const coords =
|
|
17135
|
+
const coords = useMemo8(
|
|
17023
17136
|
() => ({ row: rowIndex, col: columnIndex }),
|
|
17024
17137
|
[rowIndex, columnIndex]
|
|
17025
17138
|
);
|
|
17026
|
-
const { id, field, type, innerAttributes, inputAttributes } =
|
|
17139
|
+
const { id, field, type, innerAttributes, inputAttributes } = useMemo8(() => {
|
|
17027
17140
|
return getCellMetadata(coords);
|
|
17028
17141
|
}, [coords, getCellMetadata]);
|
|
17029
17142
|
const [showOverlay, setShowOverlay] = useState9(true);
|
|
@@ -17143,10 +17256,10 @@ var useDataGridCell = ({
|
|
|
17143
17256
|
},
|
|
17144
17257
|
[showOverlay, validateKeyStroke]
|
|
17145
17258
|
);
|
|
17146
|
-
const isAnchor =
|
|
17259
|
+
const isAnchor = useMemo8(() => {
|
|
17147
17260
|
return anchor ? isCellMatch(coords, anchor) : false;
|
|
17148
17261
|
}, [anchor, coords]);
|
|
17149
|
-
const fieldWithoutOverlay =
|
|
17262
|
+
const fieldWithoutOverlay = useMemo8(() => {
|
|
17150
17263
|
return type === "boolean";
|
|
17151
17264
|
}, [type]);
|
|
17152
17265
|
useEffect6(() => {
|
|
@@ -17191,14 +17304,14 @@ var useDataGridCell = ({
|
|
|
17191
17304
|
};
|
|
17192
17305
|
|
|
17193
17306
|
// src/components/data-grid/hooks/use-data-grid-cell-error.tsx
|
|
17194
|
-
import { useMemo as
|
|
17307
|
+
import { useMemo as useMemo9 } from "react";
|
|
17195
17308
|
import { get } from "react-hook-form";
|
|
17196
17309
|
var useDataGridCellError = ({
|
|
17197
17310
|
context
|
|
17198
17311
|
}) => {
|
|
17199
17312
|
const { errors, getCellErrorMetadata, navigateToField } = useDataGridContext();
|
|
17200
17313
|
const { rowIndex, columnIndex } = context;
|
|
17201
|
-
const { accessor, field } =
|
|
17314
|
+
const { accessor, field } = useMemo9(() => {
|
|
17202
17315
|
return getCellErrorMetadata({ row: rowIndex, col: columnIndex });
|
|
17203
17316
|
}, [rowIndex, columnIndex, getCellErrorMetadata]);
|
|
17204
17317
|
const rowErrorsObject = accessor && columnIndex === 0 ? get(errors, accessor) : void 0;
|
|
@@ -17957,7 +18070,7 @@ function getColumnName(column) {
|
|
|
17957
18070
|
import { useWatch } from "react-hook-form";
|
|
17958
18071
|
|
|
17959
18072
|
// src/components/data-grid/hooks/use-data-grid-error-highlighting.tsx
|
|
17960
|
-
import { useCallback as useCallback7, useMemo as
|
|
18073
|
+
import { useCallback as useCallback7, useMemo as useMemo10, useState as useState11 } from "react";
|
|
17961
18074
|
var useDataGridErrorHighlighting = (matrix, grid, errors) => {
|
|
17962
18075
|
const [isHighlighted, setIsHighlighted] = useState11(false);
|
|
17963
18076
|
const [visibilitySnapshot, setVisibilitySnapshot] = useState11(null);
|
|
@@ -17965,7 +18078,7 @@ var useDataGridErrorHighlighting = (matrix, grid, errors) => {
|
|
|
17965
18078
|
const flatColumns = grid.getAllFlatColumns();
|
|
17966
18079
|
const errorPaths = findErrorPaths(errors);
|
|
17967
18080
|
const errorCount = errorPaths.length;
|
|
17968
|
-
const { rowsWithErrors, columnsWithErrors } =
|
|
18081
|
+
const { rowsWithErrors, columnsWithErrors } = useMemo10(() => {
|
|
17969
18082
|
const rowsWithErrors2 = /* @__PURE__ */ new Set();
|
|
17970
18083
|
const columnsWithErrors2 = /* @__PURE__ */ new Set();
|
|
17971
18084
|
errorPaths.forEach((errorPath) => {
|
|
@@ -18882,12 +18995,12 @@ var useDataGridQueryTool = (containerRef) => {
|
|
|
18882
18995
|
// src/components/data-grid/components/data-grid-cell-container.tsx
|
|
18883
18996
|
import { ErrorMessage as ErrorMessage2 } from "@hookform/error-message";
|
|
18884
18997
|
import { ExclamationCircle as ExclamationCircle2 } from "@medusajs/icons";
|
|
18885
|
-
import { Tooltip as
|
|
18998
|
+
import { Tooltip as Tooltip9, clx as clx21 } from "@medusajs/ui";
|
|
18886
18999
|
import { get as get2 } from "react-hook-form";
|
|
18887
19000
|
|
|
18888
19001
|
// src/components/data-grid/components/data-grid-row-error-indicator.tsx
|
|
18889
|
-
import { Badge as Badge5, Tooltip as
|
|
18890
|
-
import { useTranslation as
|
|
19002
|
+
import { Badge as Badge5, Tooltip as Tooltip8 } from "@medusajs/ui";
|
|
19003
|
+
import { useTranslation as useTranslation17 } from "react-i18next";
|
|
18891
19004
|
import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
18892
19005
|
var DataGridRowErrorIndicator = ({
|
|
18893
19006
|
rowErrors
|
|
@@ -18897,7 +19010,7 @@ var DataGridRowErrorIndicator = ({
|
|
|
18897
19010
|
return null;
|
|
18898
19011
|
}
|
|
18899
19012
|
return /* @__PURE__ */ jsx36(
|
|
18900
|
-
|
|
19013
|
+
Tooltip8,
|
|
18901
19014
|
{
|
|
18902
19015
|
content: /* @__PURE__ */ jsx36("ul", { className: "flex flex-col gap-y-3", children: rowErrors.map((error, index) => /* @__PURE__ */ jsx36(DataGridRowErrorLine, { error }, index)) }),
|
|
18903
19016
|
delayDuration: 0,
|
|
@@ -18908,7 +19021,7 @@ var DataGridRowErrorIndicator = ({
|
|
|
18908
19021
|
var DataGridRowErrorLine = ({
|
|
18909
19022
|
error
|
|
18910
19023
|
}) => {
|
|
18911
|
-
const { t: t2 } =
|
|
19024
|
+
const { t: t2 } = useTranslation17();
|
|
18912
19025
|
return /* @__PURE__ */ jsxs27("li", { className: "txt-compact-small flex flex-col items-start", children: [
|
|
18913
19026
|
error.message,
|
|
18914
19027
|
/* @__PURE__ */ jsx36(
|
|
@@ -18966,7 +19079,7 @@ var DataGridCellContainer = ({
|
|
|
18966
19079
|
name: field,
|
|
18967
19080
|
errors,
|
|
18968
19081
|
render: ({ message }) => {
|
|
18969
|
-
return /* @__PURE__ */ jsx37("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx37(
|
|
19082
|
+
return /* @__PURE__ */ jsx37("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx37(Tooltip9, { content: message, delayDuration: 0, children: /* @__PURE__ */ jsx37(ExclamationCircle2, { className: "text-ui-tag-red-icon z-[3]" }) }) });
|
|
18970
19083
|
}
|
|
18971
19084
|
}
|
|
18972
19085
|
),
|
|
@@ -19366,11 +19479,11 @@ import {
|
|
|
19366
19479
|
import {
|
|
19367
19480
|
useCallback as useCallback15,
|
|
19368
19481
|
useEffect as useEffect11,
|
|
19369
|
-
useMemo as
|
|
19482
|
+
useMemo as useMemo12,
|
|
19370
19483
|
useRef as useRef8,
|
|
19371
19484
|
useState as useState17
|
|
19372
19485
|
} from "react";
|
|
19373
|
-
import { useTranslation as
|
|
19486
|
+
import { useTranslation as useTranslation19 } from "react-i18next";
|
|
19374
19487
|
|
|
19375
19488
|
// src/hooks/use-command-history.tsx
|
|
19376
19489
|
import { useCallback as useCallback14, useState as useState15 } from "react";
|
|
@@ -19428,12 +19541,12 @@ import {
|
|
|
19428
19541
|
Text as Text13
|
|
19429
19542
|
} from "@medusajs/ui";
|
|
19430
19543
|
import { Dialog as RadixDialog } from "radix-ui";
|
|
19431
|
-
import { useMemo as
|
|
19432
|
-
import { useTranslation as
|
|
19544
|
+
import { useMemo as useMemo11, useState as useState16 } from "react";
|
|
19545
|
+
import { useTranslation as useTranslation18 } from "react-i18next";
|
|
19433
19546
|
import { jsx as jsx43, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
19434
19547
|
var useDataGridShortcuts = () => {
|
|
19435
|
-
const { t: t2 } =
|
|
19436
|
-
const shortcuts =
|
|
19548
|
+
const { t: t2 } = useTranslation18();
|
|
19549
|
+
const shortcuts = useMemo11(
|
|
19437
19550
|
() => [
|
|
19438
19551
|
{
|
|
19439
19552
|
label: t2("dataGrid.shortcuts.commands.undo"),
|
|
@@ -19577,10 +19690,10 @@ var DataGridKeyboardShortcutModal = ({
|
|
|
19577
19690
|
open,
|
|
19578
19691
|
onOpenChange
|
|
19579
19692
|
}) => {
|
|
19580
|
-
const { t: t2 } =
|
|
19693
|
+
const { t: t2 } = useTranslation18();
|
|
19581
19694
|
const [searchValue, onSearchValueChange] = useState16("");
|
|
19582
19695
|
const shortcuts = useDataGridShortcuts();
|
|
19583
|
-
const searchResults =
|
|
19696
|
+
const searchResults = useMemo11(() => {
|
|
19584
19697
|
return shortcuts.filter(
|
|
19585
19698
|
(shortcut) => shortcut.label.toLowerCase().includes(searchValue.toLowerCase())
|
|
19586
19699
|
);
|
|
@@ -19712,7 +19825,7 @@ var DataGridRoot = ({
|
|
|
19712
19825
|
});
|
|
19713
19826
|
const { flatRows } = grid.getRowModel();
|
|
19714
19827
|
const flatColumns = grid.getAllFlatColumns();
|
|
19715
|
-
const visibleRows =
|
|
19828
|
+
const visibleRows = useMemo12(
|
|
19716
19829
|
() => flatRows.filter((_, index) => rowVisibility?.[index] !== false),
|
|
19717
19830
|
[flatRows, rowVisibility]
|
|
19718
19831
|
);
|
|
@@ -19831,7 +19944,7 @@ var DataGridRoot = ({
|
|
|
19831
19944
|
virtualPaddingLeft = virtualColumns[0]?.start ?? 0;
|
|
19832
19945
|
virtualPaddingRight = columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0);
|
|
19833
19946
|
}
|
|
19834
|
-
const matrix =
|
|
19947
|
+
const matrix = useMemo12(
|
|
19835
19948
|
() => new DataGridMatrix(
|
|
19836
19949
|
flatRows,
|
|
19837
19950
|
columns,
|
|
@@ -20027,7 +20140,7 @@ var DataGridRoot = ({
|
|
|
20027
20140
|
}
|
|
20028
20141
|
}
|
|
20029
20142
|
}, [anchor, matrix, setSingleRange]);
|
|
20030
|
-
const values =
|
|
20143
|
+
const values = useMemo12(
|
|
20031
20144
|
() => ({
|
|
20032
20145
|
anchor,
|
|
20033
20146
|
control,
|
|
@@ -20259,7 +20372,7 @@ var DataGridHeader = ({
|
|
|
20259
20372
|
}) => {
|
|
20260
20373
|
const [shortcutsOpen, setShortcutsOpen] = useState17(false);
|
|
20261
20374
|
const [columnsOpen, setColumnsOpen] = useState17(false);
|
|
20262
|
-
const { t: t2 } =
|
|
20375
|
+
const { t: t2 } = useTranslation19();
|
|
20263
20376
|
const direction = useDocumentDirection();
|
|
20264
20377
|
const hasChanged = columnOptions.some((column) => !column.checked);
|
|
20265
20378
|
const handleShortcutsOpenChange = (value) => {
|
|
@@ -21027,10 +21140,11 @@ import {
|
|
|
21027
21140
|
useDataTable,
|
|
21028
21141
|
Heading as Heading6,
|
|
21029
21142
|
Text as Text14,
|
|
21030
|
-
Button as Button7
|
|
21143
|
+
Button as Button7,
|
|
21144
|
+
Tooltip as Tooltip10
|
|
21031
21145
|
} from "@medusajs/ui";
|
|
21032
|
-
import React6, { useCallback as useCallback17, useMemo as
|
|
21033
|
-
import { useTranslation as
|
|
21146
|
+
import React6, { useCallback as useCallback17, useMemo as useMemo13 } from "react";
|
|
21147
|
+
import { useTranslation as useTranslation20 } from "react-i18next";
|
|
21034
21148
|
import { Link as Link7, useNavigate, useSearchParams as useSearchParams2 } from "react-router-dom";
|
|
21035
21149
|
|
|
21036
21150
|
// src/hooks/use-query-params.tsx
|
|
@@ -21048,11 +21162,12 @@ function useQueryParams(keys, prefix) {
|
|
|
21048
21162
|
|
|
21049
21163
|
// src/components/data-table/data-table.tsx
|
|
21050
21164
|
import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
21165
|
+
var EMPTY_COMMANDS = [];
|
|
21051
21166
|
var DataTable = ({
|
|
21052
21167
|
data = [],
|
|
21053
21168
|
columns,
|
|
21054
21169
|
filters,
|
|
21055
|
-
commands,
|
|
21170
|
+
commands: declaredCommands,
|
|
21056
21171
|
action,
|
|
21057
21172
|
actions,
|
|
21058
21173
|
actionMenu,
|
|
@@ -21079,9 +21194,11 @@ var DataTable = ({
|
|
|
21079
21194
|
onColumnOrderChange,
|
|
21080
21195
|
filterBarContent
|
|
21081
21196
|
}) => {
|
|
21082
|
-
const { t: t2 } =
|
|
21197
|
+
const { t: t2 } = useTranslation20();
|
|
21083
21198
|
const enableFiltering = filters && filters.length > 0;
|
|
21084
21199
|
const showFilterMenu = enableFilterMenu !== void 0 ? enableFilterMenu : enableFiltering;
|
|
21200
|
+
const permittedCommands = usePermittedCommands(declaredCommands ?? EMPTY_COMMANDS);
|
|
21201
|
+
const commands = declaredCommands ? permittedCommands : void 0;
|
|
21085
21202
|
const enableCommands = commands && commands.length > 0;
|
|
21086
21203
|
const enableSorting = columns.some((column) => column.enableSorting);
|
|
21087
21204
|
const [columnVisibility, setColumnVisibility] = React6.useState(initialColumnVisibility);
|
|
@@ -21102,7 +21219,7 @@ var DataTable = ({
|
|
|
21102
21219
|
},
|
|
21103
21220
|
[onColumnVisibilityChange]
|
|
21104
21221
|
);
|
|
21105
|
-
const filterIds =
|
|
21222
|
+
const filterIds = useMemo13(() => filters?.map((f) => f.id) ?? [], [filters]);
|
|
21106
21223
|
const prefixedFilterIds = filterIds.map((id) => getQueryParamKey(id, prefix));
|
|
21107
21224
|
const { offset, order, q, ...filterParams } = useQueryParams(
|
|
21108
21225
|
[
|
|
@@ -21114,7 +21231,7 @@ var DataTable = ({
|
|
|
21114
21231
|
prefix
|
|
21115
21232
|
);
|
|
21116
21233
|
const [_, setSearchParams] = useSearchParams2();
|
|
21117
|
-
const search =
|
|
21234
|
+
const search = useMemo13(() => {
|
|
21118
21235
|
return q ?? "";
|
|
21119
21236
|
}, [q]);
|
|
21120
21237
|
const handleSearchChange = (value) => {
|
|
@@ -21127,7 +21244,7 @@ var DataTable = ({
|
|
|
21127
21244
|
return prev;
|
|
21128
21245
|
});
|
|
21129
21246
|
};
|
|
21130
|
-
const pagination =
|
|
21247
|
+
const pagination = useMemo13(() => {
|
|
21131
21248
|
return offset ? parsePaginationState(offset, pageSize) : { pageIndex: 0, pageSize };
|
|
21132
21249
|
}, [offset, pageSize]);
|
|
21133
21250
|
const handlePaginationChange = (value) => {
|
|
@@ -21143,7 +21260,7 @@ var DataTable = ({
|
|
|
21143
21260
|
return prev;
|
|
21144
21261
|
});
|
|
21145
21262
|
};
|
|
21146
|
-
const filtering =
|
|
21263
|
+
const filtering = useMemo13(
|
|
21147
21264
|
() => parseFilterState(filterIds, filterParams),
|
|
21148
21265
|
[filterIds, filterParams]
|
|
21149
21266
|
);
|
|
@@ -21168,7 +21285,7 @@ var DataTable = ({
|
|
|
21168
21285
|
return prev;
|
|
21169
21286
|
});
|
|
21170
21287
|
};
|
|
21171
|
-
const sorting =
|
|
21288
|
+
const sorting = useMemo13(() => {
|
|
21172
21289
|
return order ? parseSortingState(order) : null;
|
|
21173
21290
|
}, [order]);
|
|
21174
21291
|
const handleSortingChange = (value) => {
|
|
@@ -21318,7 +21435,7 @@ function getQueryParamKey(key, prefix) {
|
|
|
21318
21435
|
return prefix ? `${prefix}_${key}` : key;
|
|
21319
21436
|
}
|
|
21320
21437
|
var useDataTableTranslations = () => {
|
|
21321
|
-
const { t: t2 } =
|
|
21438
|
+
const { t: t2 } = useTranslation20();
|
|
21322
21439
|
const paginationTranslations = {
|
|
21323
21440
|
of: t2("general.of"),
|
|
21324
21441
|
results: t2("general.results"),
|
|
@@ -21339,14 +21456,19 @@ var useDataTableTranslations = () => {
|
|
|
21339
21456
|
var DataTableAction = ({
|
|
21340
21457
|
label,
|
|
21341
21458
|
disabled,
|
|
21459
|
+
permission,
|
|
21342
21460
|
...props
|
|
21343
21461
|
}) => {
|
|
21462
|
+
const gate = usePermissionGate(permission);
|
|
21344
21463
|
const buttonProps = {
|
|
21345
21464
|
size: "small",
|
|
21346
21465
|
disabled: disabled ?? false,
|
|
21347
21466
|
type: "button",
|
|
21348
21467
|
variant: "secondary"
|
|
21349
21468
|
};
|
|
21469
|
+
if (gate.denied) {
|
|
21470
|
+
return /* @__PURE__ */ jsx50(Tooltip10, { content: gate.tooltip, children: /* @__PURE__ */ jsx50("span", { className: "inline-flex", children: /* @__PURE__ */ jsx50(Button7, { ...buttonProps, disabled: true, children: label }) }) });
|
|
21471
|
+
}
|
|
21350
21472
|
if ("to" in props) {
|
|
21351
21473
|
return /* @__PURE__ */ jsx50(Button7, { ...buttonProps, asChild: true, children: /* @__PURE__ */ jsx50(Link7, { to: props.to, children: label }) });
|
|
21352
21474
|
}
|
|
@@ -21392,7 +21514,7 @@ var AddFilterMenu = ({ availableKeys }) => {
|
|
|
21392
21514
|
import { ArrowUpDown } from "@medusajs/icons";
|
|
21393
21515
|
import { DropdownMenu as DropdownMenu4, IconButton as IconButton8 } from "@medusajs/ui";
|
|
21394
21516
|
import { useState as useState20 } from "react";
|
|
21395
|
-
import { useTranslation as
|
|
21517
|
+
import { useTranslation as useTranslation21 } from "react-i18next";
|
|
21396
21518
|
import { useSearchParams as useSearchParams4 } from "react-router-dom";
|
|
21397
21519
|
import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
21398
21520
|
var initState = (params) => {
|
|
@@ -21423,7 +21545,7 @@ var formatKey = (key) => {
|
|
|
21423
21545
|
var OrderBy = ({ keys }) => {
|
|
21424
21546
|
const [searchParams, setSearchParams] = useSearchParams4();
|
|
21425
21547
|
const [state, setState] = useState20(initState(searchParams));
|
|
21426
|
-
const { t: t2 } =
|
|
21548
|
+
const { t: t2 } = useTranslation21();
|
|
21427
21549
|
const direction = useDocumentDirection();
|
|
21428
21550
|
const handleDirChange = (dir) => {
|
|
21429
21551
|
setState((prev) => ({
|
|
@@ -21520,11 +21642,11 @@ var OrderBy = ({ keys }) => {
|
|
|
21520
21642
|
import { Input as Input2 } from "@medusajs/ui";
|
|
21521
21643
|
import debounce from "lodash.debounce";
|
|
21522
21644
|
import { useCallback as useCallback18, useEffect as useEffect14, useState as useState21 } from "react";
|
|
21523
|
-
import { useTranslation as
|
|
21645
|
+
import { useTranslation as useTranslation22 } from "react-i18next";
|
|
21524
21646
|
import { useSearchParams as useSearchParams5 } from "react-router-dom";
|
|
21525
21647
|
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
21526
21648
|
var Query = ({ placeholder }) => {
|
|
21527
|
-
const { t: t2 } =
|
|
21649
|
+
const { t: t2 } = useTranslation22();
|
|
21528
21650
|
const placeholderText = placeholder || t2("general.search");
|
|
21529
21651
|
const [searchParams, setSearchParams] = useSearchParams5();
|
|
21530
21652
|
const [inputValue, setInputValue] = useState21(searchParams.get("q") || "");
|
|
@@ -21565,7 +21687,7 @@ var Query = ({ placeholder }) => {
|
|
|
21565
21687
|
|
|
21566
21688
|
// src/components/forms/address-form/address-form.tsx
|
|
21567
21689
|
import { Heading as Heading7, Input as Input3, Select as Select2, clx as clx29 } from "@medusajs/ui";
|
|
21568
|
-
import { useTranslation as
|
|
21690
|
+
import { useTranslation as useTranslation24 } from "react-i18next";
|
|
21569
21691
|
|
|
21570
21692
|
// src/components/inputs/country-select/country-select.tsx
|
|
21571
21693
|
import {
|
|
@@ -21573,11 +21695,11 @@ import {
|
|
|
21573
21695
|
useImperativeHandle,
|
|
21574
21696
|
useRef as useRef11
|
|
21575
21697
|
} from "react";
|
|
21576
|
-
import { useTranslation as
|
|
21698
|
+
import { useTranslation as useTranslation23 } from "react-i18next";
|
|
21577
21699
|
import { Select } from "@medusajs/ui";
|
|
21578
21700
|
import { jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
21579
21701
|
var CountrySelect = forwardRef3(({ disabled, placeholder, defaultValue, onChange, ...field }, ref) => {
|
|
21580
|
-
const { t: t2 } =
|
|
21702
|
+
const { t: t2 } = useTranslation23();
|
|
21581
21703
|
const innerRef = useRef11(null);
|
|
21582
21704
|
useImperativeHandle(ref, () => innerRef.current);
|
|
21583
21705
|
return /* @__PURE__ */ jsx54("div", { className: "relative", children: /* @__PURE__ */ jsxs39(
|
|
@@ -21616,7 +21738,7 @@ var AddressForm = ({
|
|
|
21616
21738
|
countries: countries2,
|
|
21617
21739
|
layout
|
|
21618
21740
|
}) => {
|
|
21619
|
-
const { t: t2 } =
|
|
21741
|
+
const { t: t2 } = useTranslation24();
|
|
21620
21742
|
const direction = useDocumentDirection();
|
|
21621
21743
|
const style = clx29("gap-4", {
|
|
21622
21744
|
"flex flex-col": layout === "stack",
|
|
@@ -21807,13 +21929,13 @@ var import_types3 = __toESM(require_dist2(), 1);
|
|
|
21807
21929
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
21808
21930
|
import { Button as Button9, InlineTip, Input as Input5, Label as Label3 } from "@medusajs/ui";
|
|
21809
21931
|
import { useForm } from "react-hook-form";
|
|
21810
|
-
import { useTranslation as
|
|
21932
|
+
import { useTranslation as useTranslation28 } from "react-i18next";
|
|
21811
21933
|
import * as zod from "zod";
|
|
21812
21934
|
|
|
21813
21935
|
// src/components/inputs/attribute-value-input/attribute-value-input.tsx
|
|
21814
21936
|
var import_types2 = __toESM(require_dist2(), 1);
|
|
21815
21937
|
import { Input as Input4, Select as Select3, Textarea as Textarea3 } from "@medusajs/ui";
|
|
21816
|
-
import { useTranslation as
|
|
21938
|
+
import { useTranslation as useTranslation26 } from "react-i18next";
|
|
21817
21939
|
|
|
21818
21940
|
// src/components/inputs/combobox/combobox.tsx
|
|
21819
21941
|
import {
|
|
@@ -21840,12 +21962,12 @@ import {
|
|
|
21840
21962
|
useCallback as useCallback19,
|
|
21841
21963
|
useDeferredValue,
|
|
21842
21964
|
useImperativeHandle as useImperativeHandle2,
|
|
21843
|
-
useMemo as
|
|
21965
|
+
useMemo as useMemo14,
|
|
21844
21966
|
useRef as useRef12,
|
|
21845
21967
|
useState as useState22,
|
|
21846
21968
|
useTransition
|
|
21847
21969
|
} from "react";
|
|
21848
|
-
import { useTranslation as
|
|
21970
|
+
import { useTranslation as useTranslation25 } from "react-i18next";
|
|
21849
21971
|
|
|
21850
21972
|
// src/components/utilities/generic-forward-ref/generic-forward-ref.tsx
|
|
21851
21973
|
import {
|
|
@@ -21879,7 +22001,7 @@ var ComboboxImpl = ({
|
|
|
21879
22001
|
}, ref) => {
|
|
21880
22002
|
const [open, setOpen] = useState22(false);
|
|
21881
22003
|
const [isPending, startTransition] = useTransition();
|
|
21882
|
-
const { t: t2 } =
|
|
22004
|
+
const { t: t2 } = useTranslation25();
|
|
21883
22005
|
const comboboxRef = useRef12(null);
|
|
21884
22006
|
const listboxRef = useRef12(null);
|
|
21885
22007
|
useImperativeHandle2(ref, () => comboboxRef.current);
|
|
@@ -21918,7 +22040,7 @@ var ComboboxImpl = ({
|
|
|
21918
22040
|
onSearchValueChange(query);
|
|
21919
22041
|
}
|
|
21920
22042
|
};
|
|
21921
|
-
const matches =
|
|
22043
|
+
const matches = useMemo14(() => {
|
|
21922
22044
|
if (isSearchControlled) {
|
|
21923
22045
|
return [];
|
|
21924
22046
|
}
|
|
@@ -21966,7 +22088,7 @@ var ComboboxImpl = ({
|
|
|
21966
22088
|
const hideInput = forceHideInput || !isArrayValue && hasValue && !open;
|
|
21967
22089
|
const selectedLabel = options.find((o) => o.value === selectedValues)?.label;
|
|
21968
22090
|
const hidePlaceholder = showSelected || open;
|
|
21969
|
-
const tagWidth =
|
|
22091
|
+
const tagWidth = useMemo14(() => {
|
|
21970
22092
|
if (!Array.isArray(selectedValues)) {
|
|
21971
22093
|
return TAG_BASE_WIDTH + TABLUAR_NUM_WIDTH;
|
|
21972
22094
|
}
|
|
@@ -21974,7 +22096,7 @@ var ComboboxImpl = ({
|
|
|
21974
22096
|
const digits = count.toString().length;
|
|
21975
22097
|
return TAG_BASE_WIDTH + digits * TABLUAR_NUM_WIDTH;
|
|
21976
22098
|
}, [selectedValues]);
|
|
21977
|
-
const results =
|
|
22099
|
+
const results = useMemo14(() => {
|
|
21978
22100
|
return isSearchControlled ? options : matches;
|
|
21979
22101
|
}, [matches, options, isSearchControlled]);
|
|
21980
22102
|
return /* @__PURE__ */ jsxs41(
|
|
@@ -22188,7 +22310,7 @@ var AttributeValueInput = ({
|
|
|
22188
22310
|
availableValues = [],
|
|
22189
22311
|
placeholder
|
|
22190
22312
|
}) => {
|
|
22191
|
-
const { t: t2 } =
|
|
22313
|
+
const { t: t2 } = useTranslation26();
|
|
22192
22314
|
const ph = placeholder ?? t2("products.create.attributes.valuePlaceholder");
|
|
22193
22315
|
switch (type) {
|
|
22194
22316
|
case import_types2.AttributeType.MULTI_SELECT:
|
|
@@ -22431,11 +22553,11 @@ import { useEffect as useEffect15, useState as useState26 } from "react";
|
|
|
22431
22553
|
import { useNavigate as useNavigate3 } from "react-router-dom";
|
|
22432
22554
|
|
|
22433
22555
|
// src/components/modals/hooks/use-state-aware-to.tsx
|
|
22434
|
-
import { useMemo as
|
|
22556
|
+
import { useMemo as useMemo15 } from "react";
|
|
22435
22557
|
import { useLocation } from "react-router-dom";
|
|
22436
22558
|
var useStateAwareTo = (prev) => {
|
|
22437
22559
|
const location = useLocation();
|
|
22438
|
-
const to =
|
|
22560
|
+
const to = useMemo15(() => {
|
|
22439
22561
|
const params = location.state?.restore_params;
|
|
22440
22562
|
if (params) {
|
|
22441
22563
|
return `${prev}?${params.toString()}`;
|
|
@@ -22450,7 +22572,7 @@ var useStateAwareTo = (prev) => {
|
|
|
22450
22572
|
|
|
22451
22573
|
// src/components/modals/route-modal-form/route-modal-form.tsx
|
|
22452
22574
|
import { Prompt as Prompt2 } from "@medusajs/ui";
|
|
22453
|
-
import { useTranslation as
|
|
22575
|
+
import { useTranslation as useTranslation27 } from "react-i18next";
|
|
22454
22576
|
import { useBlocker } from "react-router-dom";
|
|
22455
22577
|
import { jsx as jsx59, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
22456
22578
|
var RouteModalForm = ({
|
|
@@ -22459,7 +22581,7 @@ var RouteModalForm = ({
|
|
|
22459
22581
|
children,
|
|
22460
22582
|
onClose
|
|
22461
22583
|
}) => {
|
|
22462
|
-
const { t: t2 } =
|
|
22584
|
+
const { t: t2 } = useTranslation27();
|
|
22463
22585
|
const {
|
|
22464
22586
|
formState: { isDirty }
|
|
22465
22587
|
} = form;
|
|
@@ -22509,12 +22631,12 @@ var RouteModalForm = ({
|
|
|
22509
22631
|
};
|
|
22510
22632
|
|
|
22511
22633
|
// src/components/modals/route-modal-provider/route-provider.tsx
|
|
22512
|
-
import { useCallback as useCallback20, useMemo as
|
|
22634
|
+
import { useCallback as useCallback20, useMemo as useMemo16, useState as useState24 } from "react";
|
|
22513
22635
|
import { useLocation as useLocation2, useNavigate as useNavigate2 } from "react-router-dom";
|
|
22514
22636
|
|
|
22515
22637
|
// src/components/modals/route-modal-provider/route-modal-context.tsx
|
|
22516
|
-
import { createContext as
|
|
22517
|
-
var RouteModalProviderContext =
|
|
22638
|
+
import { createContext as createContext6 } from "react";
|
|
22639
|
+
var RouteModalProviderContext = createContext6(null);
|
|
22518
22640
|
|
|
22519
22641
|
// src/components/modals/route-modal-provider/route-provider.tsx
|
|
22520
22642
|
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
@@ -22542,7 +22664,7 @@ var RouteModalProvider = ({
|
|
|
22542
22664
|
},
|
|
22543
22665
|
[navigate, prev, location]
|
|
22544
22666
|
);
|
|
22545
|
-
const value =
|
|
22667
|
+
const value = useMemo16(
|
|
22546
22668
|
() => ({
|
|
22547
22669
|
handleSuccess,
|
|
22548
22670
|
setCloseOnEscape,
|
|
@@ -22557,8 +22679,8 @@ var RouteModalProvider = ({
|
|
|
22557
22679
|
import { useState as useState25 } from "react";
|
|
22558
22680
|
|
|
22559
22681
|
// src/components/modals/stacked-modal-provider/stacked-modal-context.tsx
|
|
22560
|
-
import { createContext as
|
|
22561
|
-
var StackedModalContext =
|
|
22682
|
+
import { createContext as createContext7 } from "react";
|
|
22683
|
+
var StackedModalContext = createContext7(null);
|
|
22562
22684
|
|
|
22563
22685
|
// src/components/modals/stacked-modal-provider/stacked-modal-provider.tsx
|
|
22564
22686
|
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
@@ -22605,9 +22727,9 @@ var StackedModalProvider = ({
|
|
|
22605
22727
|
};
|
|
22606
22728
|
|
|
22607
22729
|
// src/components/modals/stacked-modal-provider/use-stacked-modal.ts
|
|
22608
|
-
import { useContext as
|
|
22730
|
+
import { useContext as useContext8 } from "react";
|
|
22609
22731
|
var useStackedModal = () => {
|
|
22610
|
-
const context =
|
|
22732
|
+
const context = useContext8(StackedModalContext);
|
|
22611
22733
|
if (!context) {
|
|
22612
22734
|
throw new Error(
|
|
22613
22735
|
"useStackedModal must be used within a StackedModalProvider"
|
|
@@ -22672,9 +22794,9 @@ import { useEffect as useEffect16, useState as useState27 } from "react";
|
|
|
22672
22794
|
import { useNavigate as useNavigate4 } from "react-router-dom";
|
|
22673
22795
|
|
|
22674
22796
|
// src/components/modals/route-modal-provider/use-route-modal.tsx
|
|
22675
|
-
import { useContext as
|
|
22797
|
+
import { useContext as useContext9 } from "react";
|
|
22676
22798
|
var useRouteModal = () => {
|
|
22677
|
-
const context =
|
|
22799
|
+
const context = useContext9(RouteModalProviderContext);
|
|
22678
22800
|
if (!context) {
|
|
22679
22801
|
throw new Error("useRouteModal must be used within a RouteModalProvider");
|
|
22680
22802
|
}
|
|
@@ -22905,7 +23027,7 @@ var EditAttributeForm = (props) => {
|
|
|
22905
23027
|
return /* @__PURE__ */ jsx67(EditCatalogAttributeForm, { ...props });
|
|
22906
23028
|
};
|
|
22907
23029
|
var AttributeWarning = () => {
|
|
22908
|
-
const { t: t2 } =
|
|
23030
|
+
const { t: t2 } = useTranslation28();
|
|
22909
23031
|
return /* @__PURE__ */ jsx67(
|
|
22910
23032
|
InlineTip,
|
|
22911
23033
|
{
|
|
@@ -22916,7 +23038,7 @@ var AttributeWarning = () => {
|
|
|
22916
23038
|
);
|
|
22917
23039
|
};
|
|
22918
23040
|
var VariantAxisTip = () => {
|
|
22919
|
-
const { t: t2 } =
|
|
23041
|
+
const { t: t2 } = useTranslation28();
|
|
22920
23042
|
return /* @__PURE__ */ jsx67(InlineTip, { label: t2("products.create.attributes.tip"), children: t2("products.create.attributes.editVariantAxisTip") });
|
|
22921
23043
|
};
|
|
22922
23044
|
var EditScopedAttributeForm = ({
|
|
@@ -22924,7 +23046,7 @@ var EditScopedAttributeForm = ({
|
|
|
22924
23046
|
isPending,
|
|
22925
23047
|
onSubmit
|
|
22926
23048
|
}) => {
|
|
22927
|
-
const { t: t2 } =
|
|
23049
|
+
const { t: t2 } = useTranslation28();
|
|
22928
23050
|
const { handleSuccess } = useRouteModal();
|
|
22929
23051
|
const isAxis = isVariantAxis(attribute);
|
|
22930
23052
|
const currentValues = attribute.values ?? attribute.all_values ?? [];
|
|
@@ -23063,7 +23185,7 @@ var EditCatalogAttributeForm = ({
|
|
|
23063
23185
|
isPending,
|
|
23064
23186
|
onSubmit
|
|
23065
23187
|
}) => {
|
|
23066
|
-
const { t: t2 } =
|
|
23188
|
+
const { t: t2 } = useTranslation28();
|
|
23067
23189
|
const { handleSuccess } = useRouteModal();
|
|
23068
23190
|
const isAxis = isVariantAxis(attribute);
|
|
23069
23191
|
const hasPresetValues = attribute.type === import_types3.AttributeType.SINGLE_SELECT || attribute.type === import_types3.AttributeType.MULTI_SELECT;
|
|
@@ -23148,10 +23270,10 @@ var EditCatalogAttributeForm = ({
|
|
|
23148
23270
|
|
|
23149
23271
|
// src/components/forms/email-form/email-form.tsx
|
|
23150
23272
|
import { Input as Input6, clx as clx36 } from "@medusajs/ui";
|
|
23151
|
-
import { useTranslation as
|
|
23273
|
+
import { useTranslation as useTranslation29 } from "react-i18next";
|
|
23152
23274
|
import { jsx as jsx68, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
23153
23275
|
var EmailForm = ({ control, layout = "stack" }) => {
|
|
23154
|
-
const { t: t2 } =
|
|
23276
|
+
const { t: t2 } = useTranslation29();
|
|
23155
23277
|
return /* @__PURE__ */ jsx68(
|
|
23156
23278
|
"div",
|
|
23157
23279
|
{
|
|
@@ -23189,7 +23311,7 @@ import {
|
|
|
23189
23311
|
toast as toast3
|
|
23190
23312
|
} from "@medusajs/ui";
|
|
23191
23313
|
import { useFieldArray, useForm as useForm2 } from "react-hook-form";
|
|
23192
|
-
import { useTranslation as
|
|
23314
|
+
import { useTranslation as useTranslation30 } from "react-i18next";
|
|
23193
23315
|
import { z as z2 } from "zod";
|
|
23194
23316
|
import {
|
|
23195
23317
|
ArrowDownMini,
|
|
@@ -23208,7 +23330,7 @@ var MetadataSchema = z2.object({
|
|
|
23208
23330
|
metadata: z2.array(MetadataFieldSchema)
|
|
23209
23331
|
});
|
|
23210
23332
|
var MetadataForm = (props) => {
|
|
23211
|
-
const { t: t2 } =
|
|
23333
|
+
const { t: t2 } = useTranslation30();
|
|
23212
23334
|
const { isPending, ...innerProps } = props;
|
|
23213
23335
|
return /* @__PURE__ */ jsxs47(RouteDrawer, { children: [
|
|
23214
23336
|
/* @__PURE__ */ jsxs47(RouteDrawer.Header, { children: [
|
|
@@ -23225,7 +23347,7 @@ var InnerForm = ({
|
|
|
23225
23347
|
hook,
|
|
23226
23348
|
isMutating
|
|
23227
23349
|
}) => {
|
|
23228
|
-
const { t: t2 } =
|
|
23350
|
+
const { t: t2 } = useTranslation30();
|
|
23229
23351
|
const { handleSuccess } = useRouteModal();
|
|
23230
23352
|
const direction = useDocumentDirection();
|
|
23231
23353
|
const hasUneditableRows = getHasUneditableRows(metadata);
|
|
@@ -23767,7 +23889,7 @@ import {
|
|
|
23767
23889
|
useRef as useRef15
|
|
23768
23890
|
} from "react";
|
|
23769
23891
|
import { Select as Select4 } from "@medusajs/ui";
|
|
23770
|
-
import { useTranslation as
|
|
23892
|
+
import { useTranslation as useTranslation31 } from "react-i18next";
|
|
23771
23893
|
|
|
23772
23894
|
// src/lib/data/country-states.ts
|
|
23773
23895
|
function getCountryProvinceObjectByIso2(iso2) {
|
|
@@ -25036,7 +25158,7 @@ var ProvinceSelect = forwardRef12(
|
|
|
25036
25158
|
onChange,
|
|
25037
25159
|
...field
|
|
25038
25160
|
}, ref) => {
|
|
25039
|
-
const { t: t2 } =
|
|
25161
|
+
const { t: t2 } = useTranslation31();
|
|
25040
25162
|
const innerRef = useRef15(null);
|
|
25041
25163
|
useImperativeHandle4(ref, () => innerRef.current);
|
|
25042
25164
|
const provinceObject = getCountryProvinceObjectByIso2(country_code);
|
|
@@ -25087,7 +25209,7 @@ import {
|
|
|
25087
25209
|
useRef as useRef17,
|
|
25088
25210
|
useState as useState30
|
|
25089
25211
|
} from "react";
|
|
25090
|
-
import { useTranslation as
|
|
25212
|
+
import { useTranslation as useTranslation33 } from "react-i18next";
|
|
25091
25213
|
|
|
25092
25214
|
// src/components/inputs/rich-text-editor/rich-text-toolbar.tsx
|
|
25093
25215
|
import {
|
|
@@ -25102,7 +25224,7 @@ import {
|
|
|
25102
25224
|
DropdownMenu as DropdownMenu6,
|
|
25103
25225
|
IconButton as IconButton10,
|
|
25104
25226
|
Input as Input9,
|
|
25105
|
-
Tooltip as
|
|
25227
|
+
Tooltip as Tooltip11,
|
|
25106
25228
|
clx as clx39
|
|
25107
25229
|
} from "@medusajs/ui";
|
|
25108
25230
|
import { Popover as RadixPopover2 } from "radix-ui";
|
|
@@ -25110,7 +25232,7 @@ import {
|
|
|
25110
25232
|
useRef as useRef16,
|
|
25111
25233
|
useState as useState29
|
|
25112
25234
|
} from "react";
|
|
25113
|
-
import { useTranslation as
|
|
25235
|
+
import { useTranslation as useTranslation32 } from "react-i18next";
|
|
25114
25236
|
import { Fragment as Fragment7, jsx as jsx74, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
25115
25237
|
var ToolbarButton = ({
|
|
25116
25238
|
label,
|
|
@@ -25119,7 +25241,7 @@ var ToolbarButton = ({
|
|
|
25119
25241
|
onClick,
|
|
25120
25242
|
children,
|
|
25121
25243
|
"data-testid": dataTestId
|
|
25122
|
-
}) => /* @__PURE__ */ jsx74(
|
|
25244
|
+
}) => /* @__PURE__ */ jsx74(Tooltip11, { content: label, children: /* @__PURE__ */ jsx74(
|
|
25123
25245
|
IconButton10,
|
|
25124
25246
|
{
|
|
25125
25247
|
type: "button",
|
|
@@ -25152,7 +25274,7 @@ var HeadingMenu = ({
|
|
|
25152
25274
|
editor,
|
|
25153
25275
|
disabled
|
|
25154
25276
|
}) => {
|
|
25155
|
-
const { t: t2 } =
|
|
25277
|
+
const { t: t2 } = useTranslation32();
|
|
25156
25278
|
const active = editor.isActive("heading", { level: 2 }) ? 2 : editor.isActive("heading", { level: 3 }) ? 3 : null;
|
|
25157
25279
|
const label = active ? t2(`richTextEditor.heading${active}`) : t2("richTextEditor.paragraph");
|
|
25158
25280
|
const setHeading = (level) => {
|
|
@@ -25199,7 +25321,7 @@ var LinkPopover = ({
|
|
|
25199
25321
|
editor,
|
|
25200
25322
|
disabled
|
|
25201
25323
|
}) => {
|
|
25202
|
-
const { t: t2 } =
|
|
25324
|
+
const { t: t2 } = useTranslation32();
|
|
25203
25325
|
const [open, setOpen] = useState29(false);
|
|
25204
25326
|
const [url, setUrl] = useState29("");
|
|
25205
25327
|
const isActive = editor.isActive("link");
|
|
@@ -25299,7 +25421,7 @@ var ImageButton = ({
|
|
|
25299
25421
|
disabled,
|
|
25300
25422
|
isUploading
|
|
25301
25423
|
}) => {
|
|
25302
|
-
const { t: t2 } =
|
|
25424
|
+
const { t: t2 } = useTranslation32();
|
|
25303
25425
|
const inputRef = useRef16(null);
|
|
25304
25426
|
const handleChange = (e) => {
|
|
25305
25427
|
const files = Array.from(e.target.files ?? []);
|
|
@@ -25341,7 +25463,7 @@ var RichTextToolbar = ({
|
|
|
25341
25463
|
isUploading,
|
|
25342
25464
|
onPickImages
|
|
25343
25465
|
}) => {
|
|
25344
|
-
const { t: t2 } =
|
|
25466
|
+
const { t: t2 } = useTranslation32();
|
|
25345
25467
|
const chain = () => editor.chain().focus();
|
|
25346
25468
|
return /* @__PURE__ */ jsxs52(
|
|
25347
25469
|
"div",
|
|
@@ -25483,7 +25605,7 @@ var RichTextEditor = forwardRef13(
|
|
|
25483
25605
|
contentClassName,
|
|
25484
25606
|
...props
|
|
25485
25607
|
}, ref) => {
|
|
25486
|
-
const { t: t2 } =
|
|
25608
|
+
const { t: t2 } = useTranslation33();
|
|
25487
25609
|
const [isUploading, setIsUploading] = useState30(false);
|
|
25488
25610
|
const lastEmitted = useRef17(value ?? "");
|
|
25489
25611
|
const onChangeRef = useRef17(onChange);
|
|
@@ -25765,10 +25887,10 @@ var TwoColumnPage = Object.assign(Root5, { Main, Sidebar });
|
|
|
25765
25887
|
// src/components/localization/localized-table-pagination/localized-table-pagination.tsx
|
|
25766
25888
|
import { Table } from "@medusajs/ui";
|
|
25767
25889
|
import { forwardRef as forwardRef14 } from "react";
|
|
25768
|
-
import { useTranslation as
|
|
25890
|
+
import { useTranslation as useTranslation34 } from "react-i18next";
|
|
25769
25891
|
import { jsx as jsx78 } from "react/jsx-runtime";
|
|
25770
25892
|
var LocalizedTablePagination = forwardRef14((props, ref) => {
|
|
25771
|
-
const { t: t2 } =
|
|
25893
|
+
const { t: t2 } = useTranslation34();
|
|
25772
25894
|
const translations = {
|
|
25773
25895
|
of: t2("general.of"),
|
|
25774
25896
|
results: t2("general.results"),
|
|
@@ -25794,10 +25916,10 @@ import {
|
|
|
25794
25916
|
Container as Container5,
|
|
25795
25917
|
Heading as Heading9,
|
|
25796
25918
|
Text as Text18,
|
|
25797
|
-
Tooltip as
|
|
25919
|
+
Tooltip as Tooltip12,
|
|
25798
25920
|
usePrompt
|
|
25799
25921
|
} from "@medusajs/ui";
|
|
25800
|
-
import { useTranslation as
|
|
25922
|
+
import { useTranslation as useTranslation35 } from "react-i18next";
|
|
25801
25923
|
|
|
25802
25924
|
// src/extensions/registry.ts
|
|
25803
25925
|
var PLACEMENTS = ["before", "after"];
|
|
@@ -25837,7 +25959,8 @@ var ExtensionRegistry = class {
|
|
|
25837
25959
|
const entry = this.ensureSlot(slot);
|
|
25838
25960
|
const resolved = {
|
|
25839
25961
|
Component: widget.Component,
|
|
25840
|
-
widgetId: widget.widgetId
|
|
25962
|
+
widgetId: widget.widgetId,
|
|
25963
|
+
permission: widget.permission
|
|
25841
25964
|
};
|
|
25842
25965
|
entry[placement].push(resolved);
|
|
25843
25966
|
}
|
|
@@ -25948,9 +26071,9 @@ var ExtensionRegistry = class {
|
|
|
25948
26071
|
};
|
|
25949
26072
|
|
|
25950
26073
|
// src/extensions/context.tsx
|
|
25951
|
-
import { createContext as
|
|
26074
|
+
import { createContext as createContext8, useContext as useContext10, useMemo as useMemo17 } from "react";
|
|
25952
26075
|
import { jsx as jsx79 } from "react/jsx-runtime";
|
|
25953
|
-
var ExtensionContext =
|
|
26076
|
+
var ExtensionContext = createContext8(null);
|
|
25954
26077
|
var activeRegistry = null;
|
|
25955
26078
|
var getExtensionRegistry = () => activeRegistry;
|
|
25956
26079
|
var ExtensionProvider = ({
|
|
@@ -25959,7 +26082,7 @@ var ExtensionProvider = ({
|
|
|
25959
26082
|
customFields,
|
|
25960
26083
|
children
|
|
25961
26084
|
}) => {
|
|
25962
|
-
const registry =
|
|
26085
|
+
const registry = useMemo17(() => {
|
|
25963
26086
|
const next = new ExtensionRegistry({ widgets, navigation, customFields });
|
|
25964
26087
|
activeRegistry = next;
|
|
25965
26088
|
return next;
|
|
@@ -25968,14 +26091,21 @@ var ExtensionProvider = ({
|
|
|
25968
26091
|
};
|
|
25969
26092
|
var EMPTY_REGISTRY = new ExtensionRegistry();
|
|
25970
26093
|
var useExtension = () => {
|
|
25971
|
-
return
|
|
26094
|
+
return useContext10(ExtensionContext) ?? EMPTY_REGISTRY;
|
|
25972
26095
|
};
|
|
25973
26096
|
|
|
25974
26097
|
// src/extensions/widget-zone.tsx
|
|
25975
|
-
import { Fragment as Fragment8 } from "react";
|
|
26098
|
+
import { Fragment as Fragment8, useContext as useContext11 } from "react";
|
|
25976
26099
|
import { jsx as jsx80, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
25977
26100
|
var WidgetZone = ({ id, data, children }) => {
|
|
25978
|
-
const
|
|
26101
|
+
const widgets = useExtension().getWidgets(id);
|
|
26102
|
+
const permissions = useContext11(PermissionsContext);
|
|
26103
|
+
const before = widgets.before.filter(
|
|
26104
|
+
(widget) => isPermitted(permissions, widget.permission)
|
|
26105
|
+
);
|
|
26106
|
+
const after = widgets.after.filter(
|
|
26107
|
+
(widget) => isPermitted(permissions, widget.permission)
|
|
26108
|
+
);
|
|
25979
26109
|
return /* @__PURE__ */ jsxs56(Fragment8, { children: [
|
|
25980
26110
|
before.map(({ Component, widgetId }) => /* @__PURE__ */ jsx80(Component, { data }, `before-${widgetId}`)),
|
|
25981
26111
|
children,
|
|
@@ -26179,7 +26309,7 @@ function useDisplayFieldOverride(model, zone, id) {
|
|
|
26179
26309
|
}
|
|
26180
26310
|
|
|
26181
26311
|
// src/extensions/use-extendable-table.tsx
|
|
26182
|
-
import { useMemo as
|
|
26312
|
+
import { useMemo as useMemo18 } from "react";
|
|
26183
26313
|
import { createColumnHelper as createColumnHelper2 } from "@tanstack/react-table";
|
|
26184
26314
|
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
26185
26315
|
function columnId(col) {
|
|
@@ -26190,7 +26320,7 @@ function useExtendableTable({
|
|
|
26190
26320
|
columns: baseColumns
|
|
26191
26321
|
}) {
|
|
26192
26322
|
const ext = useExtension().getListExtension(model);
|
|
26193
|
-
return
|
|
26323
|
+
return useMemo18(() => {
|
|
26194
26324
|
const helper = createColumnHelper2();
|
|
26195
26325
|
const build = (c) => helper.display({
|
|
26196
26326
|
id: c.id,
|
|
@@ -26288,7 +26418,7 @@ function buildAdditionalDataDefaults(registry, model, data, zone, tab) {
|
|
|
26288
26418
|
|
|
26289
26419
|
// src/extensions/use-extendable-form.ts
|
|
26290
26420
|
import { zodResolver as zodResolver3 } from "@hookform/resolvers/zod";
|
|
26291
|
-
import { useMemo as
|
|
26421
|
+
import { useMemo as useMemo19 } from "react";
|
|
26292
26422
|
import { useForm as useForm3 } from "react-hook-form";
|
|
26293
26423
|
import { z as z4 } from "zod";
|
|
26294
26424
|
var useExtendableForm = ({
|
|
@@ -26301,11 +26431,11 @@ var useExtendableForm = ({
|
|
|
26301
26431
|
...props
|
|
26302
26432
|
}) => {
|
|
26303
26433
|
const extension = useExtension();
|
|
26304
|
-
const schema =
|
|
26434
|
+
const schema = useMemo19(() => {
|
|
26305
26435
|
const additionalData = buildAdditionalDataSchema(extension, model, zone, tab).partial().optional();
|
|
26306
26436
|
return typeof baseSchema.extend === "function" ? baseSchema.extend({ additional_data: additionalData }) : baseSchema.and(z4.object({ additional_data: additionalData }));
|
|
26307
26437
|
}, [baseSchema, extension, model, zone, tab]);
|
|
26308
|
-
const defaultValues =
|
|
26438
|
+
const defaultValues = useMemo19(
|
|
26309
26439
|
() => ({
|
|
26310
26440
|
...baseDefaultValues,
|
|
26311
26441
|
additional_data: buildAdditionalDataDefaults(
|
|
@@ -26326,7 +26456,7 @@ var useExtendableForm = ({
|
|
|
26326
26456
|
};
|
|
26327
26457
|
|
|
26328
26458
|
// src/extensions/action-locks.ts
|
|
26329
|
-
import { useCallback as useCallback22, useMemo as
|
|
26459
|
+
import { useCallback as useCallback22, useMemo as useMemo20 } from "react";
|
|
26330
26460
|
var useActionLocks = (model, entity) => {
|
|
26331
26461
|
const registry = useExtension();
|
|
26332
26462
|
return useCallback22(
|
|
@@ -26336,7 +26466,7 @@ var useActionLocks = (model, entity) => {
|
|
|
26336
26466
|
};
|
|
26337
26467
|
var useExtensionActivity = (model, entity) => {
|
|
26338
26468
|
const registry = useExtension();
|
|
26339
|
-
return
|
|
26469
|
+
return useMemo20(
|
|
26340
26470
|
() => registry.getActivity(model, entity),
|
|
26341
26471
|
[registry, model, entity]
|
|
26342
26472
|
);
|
|
@@ -26349,7 +26479,7 @@ var AttributeActions = ({
|
|
|
26349
26479
|
editHref,
|
|
26350
26480
|
onDelete
|
|
26351
26481
|
}) => {
|
|
26352
|
-
const { t: t2 } =
|
|
26482
|
+
const { t: t2 } = useTranslation35();
|
|
26353
26483
|
const prompt = usePrompt();
|
|
26354
26484
|
const handleDelete = async () => {
|
|
26355
26485
|
const res = await prompt({
|
|
@@ -26374,6 +26504,7 @@ var AttributeActions = ({
|
|
|
26374
26504
|
{
|
|
26375
26505
|
label: t2("actions.edit"),
|
|
26376
26506
|
to: editHref,
|
|
26507
|
+
permission: "products:edit",
|
|
26377
26508
|
icon: /* @__PURE__ */ jsx84(PencilSquare, {})
|
|
26378
26509
|
}
|
|
26379
26510
|
]
|
|
@@ -26384,6 +26515,7 @@ var AttributeActions = ({
|
|
|
26384
26515
|
{
|
|
26385
26516
|
label: t2("actions.delete"),
|
|
26386
26517
|
onClick: handleDelete,
|
|
26518
|
+
permission: "products:edit",
|
|
26387
26519
|
icon: /* @__PURE__ */ jsx84(Trash2, {})
|
|
26388
26520
|
}
|
|
26389
26521
|
]
|
|
@@ -26394,7 +26526,7 @@ var AttributeActions = ({
|
|
|
26394
26526
|
);
|
|
26395
26527
|
};
|
|
26396
26528
|
var AttributeValue2 = ({ attribute }) => {
|
|
26397
|
-
const { t: t2 } =
|
|
26529
|
+
const { t: t2 } = useTranslation35();
|
|
26398
26530
|
const values = attribute.values?.map((v) => v.name) ?? [];
|
|
26399
26531
|
if (attribute.is_required && !values.length) {
|
|
26400
26532
|
return /* @__PURE__ */ jsx84(
|
|
@@ -26420,7 +26552,7 @@ var AttributeValue2 = ({ attribute }) => {
|
|
|
26420
26552
|
)) });
|
|
26421
26553
|
}
|
|
26422
26554
|
const textValue = attribute.type === "toggle" ? values.map((val) => val === "true" ? t2("general.yes") : t2("general.no")).join(", ") || "-" : values.join(", ") || "-";
|
|
26423
|
-
return /* @__PURE__ */ jsx84(
|
|
26555
|
+
return /* @__PURE__ */ jsx84(Tooltip12, { content: /* @__PURE__ */ jsx84("span", { className: "break-all", children: textValue }), children: /* @__PURE__ */ jsx84(
|
|
26424
26556
|
Text18,
|
|
26425
26557
|
{
|
|
26426
26558
|
size: "small",
|
|
@@ -26438,7 +26570,7 @@ var AttributeGroup = ({
|
|
|
26438
26570
|
getEditHref,
|
|
26439
26571
|
onDelete
|
|
26440
26572
|
}) => {
|
|
26441
|
-
const { t: t2 } =
|
|
26573
|
+
const { t: t2 } = useTranslation35();
|
|
26442
26574
|
if (!attributes.length) {
|
|
26443
26575
|
return null;
|
|
26444
26576
|
}
|
|
@@ -26458,9 +26590,9 @@ var AttributeGroup = ({
|
|
|
26458
26590
|
children: /* @__PURE__ */ jsxs59("div", { className: "grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)_28px] items-center gap-4 px-3 py-2 bg-ui-bg-component", children: [
|
|
26459
26591
|
/* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-x-2 text-ui-fg-subtle", children: [
|
|
26460
26592
|
/* @__PURE__ */ jsx84(Text18, { size: "small", weight: "plus", leading: "compact", children: attr.name }),
|
|
26461
|
-
attr.description && /* @__PURE__ */ jsx84(
|
|
26593
|
+
attr.description && /* @__PURE__ */ jsx84(Tooltip12, { content: attr.description, children: /* @__PURE__ */ jsx84("span", { className: "text-ui-fg-muted flex items-center", children: /* @__PURE__ */ jsx84(InformationCircleSolid2, {}) }) }),
|
|
26462
26594
|
attr.is_required && /* @__PURE__ */ jsx84(
|
|
26463
|
-
|
|
26595
|
+
Tooltip12,
|
|
26464
26596
|
{
|
|
26465
26597
|
content: t2("products.attributeRequiredByMarketplace"),
|
|
26466
26598
|
children: /* @__PURE__ */ jsx84("span", { className: "text-ui-fg-muted flex items-center", children: /* @__PURE__ */ jsx84(InformationCircleSolid2, {}) })
|
|
@@ -26492,7 +26624,7 @@ var ProductAttributeSection = ({
|
|
|
26492
26624
|
addExistingHref = "attributes/add",
|
|
26493
26625
|
createNewHref = "attributes/create"
|
|
26494
26626
|
}) => {
|
|
26495
|
-
const { t: t2 } =
|
|
26627
|
+
const { t: t2 } = useTranslation35();
|
|
26496
26628
|
const attributes = product.attributes ?? [];
|
|
26497
26629
|
const attachedIds = new Set(attributes.map((a) => a.id));
|
|
26498
26630
|
const missing = (requiredAttributes ?? []).filter((required) => !attachedIds.has(required.id)).map(
|
|
@@ -26522,11 +26654,13 @@ var ProductAttributeSection = ({
|
|
|
26522
26654
|
{
|
|
26523
26655
|
label: t2("products.create.attributes.addExisting"),
|
|
26524
26656
|
to: addExistingHref,
|
|
26657
|
+
permission: "products:edit",
|
|
26525
26658
|
icon: /* @__PURE__ */ jsx84(Plus, {})
|
|
26526
26659
|
},
|
|
26527
26660
|
{
|
|
26528
26661
|
label: t2("products.create.attributes.createNew"),
|
|
26529
26662
|
to: createNewHref,
|
|
26663
|
+
permission: "products:edit",
|
|
26530
26664
|
icon: /* @__PURE__ */ jsx84(PencilSquare, {})
|
|
26531
26665
|
}
|
|
26532
26666
|
]
|
|
@@ -26568,19 +26702,19 @@ var ProductAttributeSection = ({
|
|
|
26568
26702
|
import { Button as Button12, ProgressTabs } from "@medusajs/ui";
|
|
26569
26703
|
import {
|
|
26570
26704
|
Children as Children3,
|
|
26571
|
-
createContext as
|
|
26572
|
-
useContext as
|
|
26573
|
-
useMemo as
|
|
26705
|
+
createContext as createContext9,
|
|
26706
|
+
useContext as useContext12,
|
|
26707
|
+
useMemo as useMemo22
|
|
26574
26708
|
} from "react";
|
|
26575
|
-
import { useTranslation as
|
|
26709
|
+
import { useTranslation as useTranslation36 } from "react-i18next";
|
|
26576
26710
|
|
|
26577
26711
|
// src/components/tabbed-form/use-tab-management.ts
|
|
26578
|
-
import { useCallback as useCallback23, useEffect as useEffect20, useMemo as
|
|
26712
|
+
import { useCallback as useCallback23, useEffect as useEffect20, useMemo as useMemo21, useState as useState31 } from "react";
|
|
26579
26713
|
var useTabManagement = ({
|
|
26580
26714
|
tabs,
|
|
26581
26715
|
form
|
|
26582
26716
|
}) => {
|
|
26583
|
-
const visibleTabs =
|
|
26717
|
+
const visibleTabs = useMemo21(
|
|
26584
26718
|
() => tabs.filter((t2) => !t2.isVisible || t2.isVisible(form)),
|
|
26585
26719
|
[tabs, form]
|
|
26586
26720
|
);
|
|
@@ -26642,9 +26776,9 @@ var useTabManagement = ({
|
|
|
26642
26776
|
|
|
26643
26777
|
// src/components/tabbed-form/tabbed-form.tsx
|
|
26644
26778
|
import { jsx as jsx85, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
26645
|
-
var TabbedFormContext =
|
|
26779
|
+
var TabbedFormContext = createContext9(null);
|
|
26646
26780
|
var useTabbedForm = () => {
|
|
26647
|
-
const form =
|
|
26781
|
+
const form = useContext12(TabbedFormContext);
|
|
26648
26782
|
if (!form) {
|
|
26649
26783
|
throw new Error("useTabbedForm must be used within a TabbedForm");
|
|
26650
26784
|
}
|
|
@@ -26688,12 +26822,12 @@ function Root6({
|
|
|
26688
26822
|
footer,
|
|
26689
26823
|
transformTabs
|
|
26690
26824
|
}) {
|
|
26691
|
-
const { t: t2 } =
|
|
26692
|
-
const { tabs: rawTabs, elements } =
|
|
26825
|
+
const { t: t2 } = useTranslation36();
|
|
26826
|
+
const { tabs: rawTabs, elements } = useMemo22(
|
|
26693
26827
|
() => collectTabs(children),
|
|
26694
26828
|
[children]
|
|
26695
26829
|
);
|
|
26696
|
-
const tabs =
|
|
26830
|
+
const tabs = useMemo22(
|
|
26697
26831
|
() => transformTabs ? transformTabs(rawTabs) : rawTabs,
|
|
26698
26832
|
[transformTabs, rawTabs]
|
|
26699
26833
|
);
|
|
@@ -26784,7 +26918,7 @@ var DefaultFooter = ({
|
|
|
26784
26918
|
onNext,
|
|
26785
26919
|
isLoading
|
|
26786
26920
|
}) => {
|
|
26787
|
-
const { t: t2 } =
|
|
26921
|
+
const { t: t2 } = useTranslation36();
|
|
26788
26922
|
return /* @__PURE__ */ jsxs60("div", { className: "flex items-center justify-end gap-x-2", children: [
|
|
26789
26923
|
/* @__PURE__ */ jsx85(RouteFocusModal.Close, { asChild: true, children: /* @__PURE__ */ jsx85(Button12, { variant: "secondary", size: "small", children: t2("actions.cancel") }) }),
|
|
26790
26924
|
isLastTab ? /* @__PURE__ */ jsx85(
|
|
@@ -26824,15 +26958,15 @@ import { memo } from "react";
|
|
|
26824
26958
|
// src/components/table/data-table/data-table-filter/data-table-filter.tsx
|
|
26825
26959
|
import { Button as Button13, clx as clx47 } from "@medusajs/ui";
|
|
26826
26960
|
import { Popover as RadixPopover8 } from "radix-ui";
|
|
26827
|
-
import { useCallback as useCallback26, useEffect as useEffect23, useMemo as
|
|
26961
|
+
import { useCallback as useCallback26, useEffect as useEffect23, useMemo as useMemo24, useRef as useRef18, useState as useState36 } from "react";
|
|
26828
26962
|
import { useSearchParams as useSearchParams7 } from "react-router-dom";
|
|
26829
|
-
import { useTranslation as
|
|
26963
|
+
import { useTranslation as useTranslation41 } from "react-i18next";
|
|
26830
26964
|
|
|
26831
26965
|
// src/components/table/data-table/data-table-filter/context.tsx
|
|
26832
|
-
import { createContext as
|
|
26833
|
-
var DataTableFilterContext =
|
|
26966
|
+
import { createContext as createContext10, useContext as useContext13 } from "react";
|
|
26967
|
+
var DataTableFilterContext = createContext10(null);
|
|
26834
26968
|
var useDataTableFilterContext = () => {
|
|
26835
|
-
const ctx =
|
|
26969
|
+
const ctx = useContext13(DataTableFilterContext);
|
|
26836
26970
|
if (!ctx) {
|
|
26837
26971
|
throw new Error(
|
|
26838
26972
|
"useDataTableFacetedFilterContext must be used within a DataTableFacetedFilter"
|
|
@@ -26846,9 +26980,9 @@ import { EllipseMiniSolid as EllipseMiniSolid2 } from "@medusajs/icons";
|
|
|
26846
26980
|
import { DatePicker, Text as Text20, clx as clx43 } from "@medusajs/ui";
|
|
26847
26981
|
import isEqual from "lodash.isequal";
|
|
26848
26982
|
import { Popover as RadixPopover4 } from "radix-ui";
|
|
26849
|
-
import { useMemo as
|
|
26983
|
+
import { useMemo as useMemo23, useState as useState32 } from "react";
|
|
26850
26984
|
import { t } from "i18next";
|
|
26851
|
-
import { useTranslation as
|
|
26985
|
+
import { useTranslation as useTranslation38 } from "react-i18next";
|
|
26852
26986
|
|
|
26853
26987
|
// src/components/table/data-table/hooks.tsx
|
|
26854
26988
|
import { useSearchParams as useSearchParams6 } from "react-router-dom";
|
|
@@ -26921,7 +27055,7 @@ var useSelectedParams = ({
|
|
|
26921
27055
|
import { XMarkMini as XMarkMini5 } from "@medusajs/icons";
|
|
26922
27056
|
import { Text as Text19, clx as clx42 } from "@medusajs/ui";
|
|
26923
27057
|
import { Popover as RadixPopover3 } from "radix-ui";
|
|
26924
|
-
import { useTranslation as
|
|
27058
|
+
import { useTranslation as useTranslation37 } from "react-i18next";
|
|
26925
27059
|
import { jsx as jsx86, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
26926
27060
|
var FilterChip = ({
|
|
26927
27061
|
hadPreviousValue,
|
|
@@ -26931,7 +27065,7 @@ var FilterChip = ({
|
|
|
26931
27065
|
hasOperator,
|
|
26932
27066
|
onRemove
|
|
26933
27067
|
}) => {
|
|
26934
|
-
const { t: t2 } =
|
|
27068
|
+
const { t: t2 } = useTranslation37();
|
|
26935
27069
|
const handleRemove = (e) => {
|
|
26936
27070
|
e.stopPropagation();
|
|
26937
27071
|
onRemove();
|
|
@@ -27194,8 +27328,8 @@ var DateFilter = ({
|
|
|
27194
27328
|
var today = /* @__PURE__ */ new Date();
|
|
27195
27329
|
today.setHours(0, 0, 0, 0);
|
|
27196
27330
|
var usePresets = () => {
|
|
27197
|
-
const { t: t2 } =
|
|
27198
|
-
return
|
|
27331
|
+
const { t: t2 } = useTranslation38();
|
|
27332
|
+
return useMemo23(
|
|
27199
27333
|
() => [
|
|
27200
27334
|
{
|
|
27201
27335
|
label: t2("filters.date.today"),
|
|
@@ -27266,7 +27400,7 @@ import {
|
|
|
27266
27400
|
RadioGroup as RadixRadioGroup
|
|
27267
27401
|
} from "radix-ui";
|
|
27268
27402
|
import { useCallback as useCallback24, useEffect as useEffect21, useState as useState33 } from "react";
|
|
27269
|
-
import { useTranslation as
|
|
27403
|
+
import { useTranslation as useTranslation39 } from "react-i18next";
|
|
27270
27404
|
import { jsx as jsx88, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
27271
27405
|
var NumberFilter = ({
|
|
27272
27406
|
filter,
|
|
@@ -27274,7 +27408,7 @@ var NumberFilter = ({
|
|
|
27274
27408
|
readonly,
|
|
27275
27409
|
openOnMount
|
|
27276
27410
|
}) => {
|
|
27277
|
-
const { t: t2 } =
|
|
27411
|
+
const { t: t2 } = useTranslation39();
|
|
27278
27412
|
const [open, setOpen] = useState33(openOnMount);
|
|
27279
27413
|
const { key, label } = filter;
|
|
27280
27414
|
const { removeFilter } = useDataTableFilterContext();
|
|
@@ -27509,7 +27643,7 @@ import { clx as clx45 } from "@medusajs/ui";
|
|
|
27509
27643
|
import { Command } from "cmdk";
|
|
27510
27644
|
import { Popover as RadixPopover6 } from "radix-ui";
|
|
27511
27645
|
import { useState as useState34 } from "react";
|
|
27512
|
-
import { useTranslation as
|
|
27646
|
+
import { useTranslation as useTranslation40 } from "react-i18next";
|
|
27513
27647
|
import { jsx as jsx89, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
27514
27648
|
var SelectFilter = ({
|
|
27515
27649
|
filter,
|
|
@@ -27523,7 +27657,7 @@ var SelectFilter = ({
|
|
|
27523
27657
|
const [open, setOpen] = useState34(openOnMount);
|
|
27524
27658
|
const [search, setSearch] = useState34("");
|
|
27525
27659
|
const [searchRef, setSearchRef] = useState34(null);
|
|
27526
|
-
const { t: t2 } =
|
|
27660
|
+
const { t: t2 } = useTranslation40();
|
|
27527
27661
|
const { removeFilter } = useDataTableFilterContext();
|
|
27528
27662
|
const { key, label } = filter;
|
|
27529
27663
|
const selectedParams = useSelectedParams({ param: key, prefix, multiple });
|
|
@@ -27763,7 +27897,7 @@ var DataTableFilter2 = ({
|
|
|
27763
27897
|
readonly,
|
|
27764
27898
|
prefix
|
|
27765
27899
|
}) => {
|
|
27766
|
-
const { t: t2 } =
|
|
27900
|
+
const { t: t2 } = useTranslation41();
|
|
27767
27901
|
const [searchParams] = useSearchParams7();
|
|
27768
27902
|
const [open, setOpen] = useState36(false);
|
|
27769
27903
|
const [activeFilters, setActiveFilters] = useState36(
|
|
@@ -27814,7 +27948,7 @@ var DataTableFilter2 = ({
|
|
|
27814
27948
|
return /* @__PURE__ */ jsx91(
|
|
27815
27949
|
DataTableFilterContext.Provider,
|
|
27816
27950
|
{
|
|
27817
|
-
value:
|
|
27951
|
+
value: useMemo24(
|
|
27818
27952
|
() => ({
|
|
27819
27953
|
removeFilter,
|
|
27820
27954
|
removeAllFilters
|
|
@@ -27978,7 +28112,7 @@ var getInitialFilters = ({
|
|
|
27978
28112
|
import { DescendingSorting } from "@medusajs/icons";
|
|
27979
28113
|
import { DropdownMenu as DropdownMenu7, IconButton as IconButton11 } from "@medusajs/ui";
|
|
27980
28114
|
import { useState as useState37 } from "react";
|
|
27981
|
-
import { useTranslation as
|
|
28115
|
+
import { useTranslation as useTranslation42 } from "react-i18next";
|
|
27982
28116
|
import { useSearchParams as useSearchParams8 } from "react-router-dom";
|
|
27983
28117
|
import { jsx as jsx92, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
27984
28118
|
var initState2 = (params, prefix) => {
|
|
@@ -28003,7 +28137,7 @@ var DataTableOrderBy = ({
|
|
|
28003
28137
|
const [searchParams, setSearchParams] = useSearchParams8();
|
|
28004
28138
|
const [state, setState] = useState37(initState2(searchParams, prefix));
|
|
28005
28139
|
const param = prefix ? `${prefix}_order` : "order";
|
|
28006
|
-
const { t: t2 } =
|
|
28140
|
+
const { t: t2 } = useTranslation42();
|
|
28007
28141
|
const direction = useDocumentDirection();
|
|
28008
28142
|
const handleDirChange = (dir) => {
|
|
28009
28143
|
setState((prev) => ({
|
|
@@ -28102,7 +28236,7 @@ var DataTableOrderBy = ({
|
|
|
28102
28236
|
// src/components/table/data-table/data-table-search/data-table-search.tsx
|
|
28103
28237
|
import { Input as Input13 } from "@medusajs/ui";
|
|
28104
28238
|
import { useCallback as useCallback27, useEffect as useEffect24 } from "react";
|
|
28105
|
-
import { useTranslation as
|
|
28239
|
+
import { useTranslation as useTranslation43 } from "react-i18next";
|
|
28106
28240
|
import debounce4 from "lodash.debounce";
|
|
28107
28241
|
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
28108
28242
|
var DataTableSearch = ({
|
|
@@ -28110,7 +28244,7 @@ var DataTableSearch = ({
|
|
|
28110
28244
|
prefix,
|
|
28111
28245
|
autofocus: _autofocus
|
|
28112
28246
|
}) => {
|
|
28113
|
-
const { t: t2 } =
|
|
28247
|
+
const { t: t2 } = useTranslation43();
|
|
28114
28248
|
const placeholderText = placeholder || t2("general.search");
|
|
28115
28249
|
const selectedParams = useSelectedParams({
|
|
28116
28250
|
param: "q",
|
|
@@ -28180,9 +28314,10 @@ import {
|
|
|
28180
28314
|
Fragment as Fragment11,
|
|
28181
28315
|
useEffect as useEffect25,
|
|
28182
28316
|
useRef as useRef19,
|
|
28183
|
-
useState as useState38
|
|
28317
|
+
useState as useState38,
|
|
28318
|
+
useContext as useContext14
|
|
28184
28319
|
} from "react";
|
|
28185
|
-
import { useTranslation as
|
|
28320
|
+
import { useTranslation as useTranslation44 } from "react-i18next";
|
|
28186
28321
|
import { Link as Link8 } from "react-router-dom";
|
|
28187
28322
|
import { jsx as jsx95, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
28188
28323
|
var DataTableRoot = ({
|
|
@@ -28197,11 +28332,12 @@ var DataTableRoot = ({
|
|
|
28197
28332
|
noHeader = false,
|
|
28198
28333
|
layout = "fit"
|
|
28199
28334
|
}) => {
|
|
28200
|
-
const { t: t2 } =
|
|
28335
|
+
const { t: t2 } = useTranslation44();
|
|
28201
28336
|
const [showStickyBorder, setShowStickyBorder] = useState38(false);
|
|
28202
28337
|
const scrollableRef = useRef19(null);
|
|
28203
28338
|
const hasSelect = columns.find((c) => c.id === "select");
|
|
28204
28339
|
const hasActions = columns.find((c) => c.id === "actions");
|
|
28340
|
+
const permissions = useContext14(PermissionsContext);
|
|
28205
28341
|
const hasCommandBar = commands && commands.length > 0;
|
|
28206
28342
|
const rowSelection = table.getState().rowSelection;
|
|
28207
28343
|
const { pageIndex, pageSize } = table.getState().pagination;
|
|
@@ -28387,7 +28523,12 @@ var DataTableRoot = ({
|
|
|
28387
28523
|
{
|
|
28388
28524
|
label: command.label,
|
|
28389
28525
|
shortcut: command.shortcut,
|
|
28390
|
-
action: () => handleAction(command.action)
|
|
28526
|
+
action: () => handleAction(command.action),
|
|
28527
|
+
disabled: !isPermitted(
|
|
28528
|
+
permissions,
|
|
28529
|
+
command.permission,
|
|
28530
|
+
command.requireAll
|
|
28531
|
+
)
|
|
28391
28532
|
}
|
|
28392
28533
|
),
|
|
28393
28534
|
index < commands.length - 1 && /* @__PURE__ */ jsx95(CommandBar.Seperator, {})
|
|
@@ -28399,7 +28540,7 @@ var DataTableRoot = ({
|
|
|
28399
28540
|
);
|
|
28400
28541
|
};
|
|
28401
28542
|
var Pagination = (props) => {
|
|
28402
|
-
const { t: t2 } =
|
|
28543
|
+
const { t: t2 } = useTranslation44();
|
|
28403
28544
|
const translations = {
|
|
28404
28545
|
of: t2("general.of"),
|
|
28405
28546
|
results: t2("general.results"),
|
|
@@ -28513,8 +28654,8 @@ var CodeHeader = ({ text }) => {
|
|
|
28513
28654
|
};
|
|
28514
28655
|
|
|
28515
28656
|
// src/components/table/table-cells/common/created-at-cell/created-at-cell.tsx
|
|
28516
|
-
import { Tooltip as
|
|
28517
|
-
import { useTranslation as
|
|
28657
|
+
import { Tooltip as Tooltip13 } from "@medusajs/ui";
|
|
28658
|
+
import { useTranslation as useTranslation45 } from "react-i18next";
|
|
28518
28659
|
|
|
28519
28660
|
// src/components/table/table-cells/common/placeholder-cell/placeholder-cell.tsx
|
|
28520
28661
|
import { jsx as jsx98 } from "react/jsx-runtime";
|
|
@@ -28530,7 +28671,7 @@ var CreatedAtCell = ({ date }) => {
|
|
|
28530
28671
|
return /* @__PURE__ */ jsx99(PlaceholderCell, {});
|
|
28531
28672
|
}
|
|
28532
28673
|
return /* @__PURE__ */ jsx99("div", { className: "flex h-full w-full items-center overflow-hidden", children: /* @__PURE__ */ jsx99(
|
|
28533
|
-
|
|
28674
|
+
Tooltip13,
|
|
28534
28675
|
{
|
|
28535
28676
|
className: "z-10",
|
|
28536
28677
|
content: /* @__PURE__ */ jsx99("span", { className: "text-pretty", children: `${getFullDate({
|
|
@@ -28542,13 +28683,13 @@ var CreatedAtCell = ({ date }) => {
|
|
|
28542
28683
|
) });
|
|
28543
28684
|
};
|
|
28544
28685
|
var CreatedAtHeader = () => {
|
|
28545
|
-
const { t: t2 } =
|
|
28686
|
+
const { t: t2 } = useTranslation45();
|
|
28546
28687
|
return /* @__PURE__ */ jsx99("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx99("span", { className: "truncate", children: t2("fields.createdAt") }) });
|
|
28547
28688
|
};
|
|
28548
28689
|
|
|
28549
28690
|
// src/components/table/table-cells/common/date-cell/date-cell.tsx
|
|
28550
|
-
import { Tooltip as
|
|
28551
|
-
import { useTranslation as
|
|
28691
|
+
import { Tooltip as Tooltip14 } from "@medusajs/ui";
|
|
28692
|
+
import { useTranslation as useTranslation46 } from "react-i18next";
|
|
28552
28693
|
import { jsx as jsx100 } from "react/jsx-runtime";
|
|
28553
28694
|
var DateCell = ({ date }) => {
|
|
28554
28695
|
const { getFullDate } = useDate();
|
|
@@ -28556,7 +28697,7 @@ var DateCell = ({ date }) => {
|
|
|
28556
28697
|
return /* @__PURE__ */ jsx100(PlaceholderCell, {});
|
|
28557
28698
|
}
|
|
28558
28699
|
return /* @__PURE__ */ jsx100("div", { className: "flex h-full w-full items-center overflow-hidden", children: /* @__PURE__ */ jsx100(
|
|
28559
|
-
|
|
28700
|
+
Tooltip14,
|
|
28560
28701
|
{
|
|
28561
28702
|
className: "z-10",
|
|
28562
28703
|
content: /* @__PURE__ */ jsx100("span", { className: "text-pretty", children: `${getFullDate({
|
|
@@ -28568,12 +28709,12 @@ var DateCell = ({ date }) => {
|
|
|
28568
28709
|
) });
|
|
28569
28710
|
};
|
|
28570
28711
|
var DateHeader = () => {
|
|
28571
|
-
const { t: t2 } =
|
|
28712
|
+
const { t: t2 } = useTranslation46();
|
|
28572
28713
|
return /* @__PURE__ */ jsx100("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx100("span", { className: "truncate", children: t2("fields.date") }) });
|
|
28573
28714
|
};
|
|
28574
28715
|
|
|
28575
28716
|
// src/components/table/table-cells/common/email-cell/email-cell.tsx
|
|
28576
|
-
import { useTranslation as
|
|
28717
|
+
import { useTranslation as useTranslation47 } from "react-i18next";
|
|
28577
28718
|
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
28578
28719
|
var EmailCell = ({ email }) => {
|
|
28579
28720
|
if (!email) {
|
|
@@ -28582,7 +28723,7 @@ var EmailCell = ({ email }) => {
|
|
|
28582
28723
|
return /* @__PURE__ */ jsx101("div", { className: "flex h-full w-full items-center overflow-hidden", children: /* @__PURE__ */ jsx101("span", { className: "truncate", children: email }) });
|
|
28583
28724
|
};
|
|
28584
28725
|
var EmailHeader = () => {
|
|
28585
|
-
const { t: t2 } =
|
|
28726
|
+
const { t: t2 } = useTranslation47();
|
|
28586
28727
|
return /* @__PURE__ */ jsx101("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx101("span", { className: "truncate", children: t2("fields.email") }) });
|
|
28587
28728
|
};
|
|
28588
28729
|
|
|
@@ -28616,7 +28757,7 @@ var MoneyAmountCell = ({
|
|
|
28616
28757
|
};
|
|
28617
28758
|
|
|
28618
28759
|
// src/components/table/table-cells/common/name-cell/name-cell.tsx
|
|
28619
|
-
import { useTranslation as
|
|
28760
|
+
import { useTranslation as useTranslation48 } from "react-i18next";
|
|
28620
28761
|
import { jsx as jsx103 } from "react/jsx-runtime";
|
|
28621
28762
|
var NameCell = ({ firstName, lastName }) => {
|
|
28622
28763
|
if (!firstName && !lastName) {
|
|
@@ -28626,7 +28767,7 @@ var NameCell = ({ firstName, lastName }) => {
|
|
|
28626
28767
|
return /* @__PURE__ */ jsx103("div", { className: "flex h-full w-full items-center overflow-hidden", children: /* @__PURE__ */ jsx103("span", { className: "truncate", children: name }) });
|
|
28627
28768
|
};
|
|
28628
28769
|
var NameHeader = () => {
|
|
28629
|
-
const { t: t2 } =
|
|
28770
|
+
const { t: t2 } = useTranslation48();
|
|
28630
28771
|
return /* @__PURE__ */ jsx103("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx103("span", { className: "truncate", children: t2("fields.name") }) });
|
|
28631
28772
|
};
|
|
28632
28773
|
|
|
@@ -28696,7 +28837,7 @@ var TextHeader = ({ text, align = "left" }) => {
|
|
|
28696
28837
|
// src/components/utilities/error-boundary/error-boundary.tsx
|
|
28697
28838
|
import { ExclamationCircle as ExclamationCircle4 } from "@medusajs/icons";
|
|
28698
28839
|
import { Text as Text21 } from "@medusajs/ui";
|
|
28699
|
-
import { useTranslation as
|
|
28840
|
+
import { useTranslation as useTranslation49 } from "react-i18next";
|
|
28700
28841
|
import { Navigate, useLocation as useLocation3, useRouteError } from "react-router-dom";
|
|
28701
28842
|
|
|
28702
28843
|
// src/lib/is-fetch-error.ts
|
|
@@ -28710,7 +28851,7 @@ import { jsx as jsx106, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
|
28710
28851
|
var ErrorBoundary = () => {
|
|
28711
28852
|
const error = useRouteError();
|
|
28712
28853
|
const location = useLocation3();
|
|
28713
|
-
const { t: t2 } =
|
|
28854
|
+
const { t: t2 } = useTranslation49();
|
|
28714
28855
|
let code = null;
|
|
28715
28856
|
if (isClientError(error)) {
|
|
28716
28857
|
if (error.status === 401) {
|
|
@@ -28770,7 +28911,7 @@ import {
|
|
|
28770
28911
|
getPaginationRowModel,
|
|
28771
28912
|
useReactTable as useReactTable2
|
|
28772
28913
|
} from "@tanstack/react-table";
|
|
28773
|
-
import { useEffect as useEffect26, useMemo as
|
|
28914
|
+
import { useEffect as useEffect26, useMemo as useMemo25, useState as useState39 } from "react";
|
|
28774
28915
|
import { useSearchParams as useSearchParams9 } from "react-router-dom";
|
|
28775
28916
|
var useDataTable2 = ({
|
|
28776
28917
|
data = [],
|
|
@@ -28793,7 +28934,7 @@ var useDataTable2 = ({
|
|
|
28793
28934
|
pageIndex: offset ? Math.ceil(Number(offset) / _pageSize) : 0,
|
|
28794
28935
|
pageSize: _pageSize
|
|
28795
28936
|
});
|
|
28796
|
-
const pagination =
|
|
28937
|
+
const pagination = useMemo25(
|
|
28797
28938
|
() => ({
|
|
28798
28939
|
pageIndex,
|
|
28799
28940
|
pageSize
|
|
@@ -28854,41 +28995,8 @@ var useDataTable2 = ({
|
|
|
28854
28995
|
return { table };
|
|
28855
28996
|
};
|
|
28856
28997
|
|
|
28857
|
-
// src/permissions/permissions-context.tsx
|
|
28858
|
-
import { createContext as createContext10 } from "react";
|
|
28859
|
-
var PermissionsContext = createContext10(
|
|
28860
|
-
null
|
|
28861
|
-
);
|
|
28862
|
-
|
|
28863
|
-
// src/permissions/permissions-provider.tsx
|
|
28864
|
-
import { useCallback as useCallback28, useMemo as useMemo24 } from "react";
|
|
28865
|
-
|
|
28866
|
-
// ../dashboard-sdk/dist/index.js
|
|
28867
|
-
var PERMISSION_RIGHT_RANK = {
|
|
28868
|
-
view: 1,
|
|
28869
|
-
edit: 2,
|
|
28870
|
-
manage: 3
|
|
28871
|
-
};
|
|
28872
|
-
function parsePermission(permission) {
|
|
28873
|
-
const index = permission.lastIndexOf(":");
|
|
28874
|
-
if (index <= 0) {
|
|
28875
|
-
return null;
|
|
28876
|
-
}
|
|
28877
|
-
const right = permission.slice(index + 1);
|
|
28878
|
-
if (!(right in PERMISSION_RIGHT_RANK)) {
|
|
28879
|
-
return null;
|
|
28880
|
-
}
|
|
28881
|
-
return {
|
|
28882
|
-
key: permission.slice(0, index),
|
|
28883
|
-
right
|
|
28884
|
-
};
|
|
28885
|
-
}
|
|
28886
|
-
function satisfiesPermission(permissions, key, right) {
|
|
28887
|
-
const granted = permissions[key];
|
|
28888
|
-
return !!granted && PERMISSION_RIGHT_RANK[granted] >= PERMISSION_RIGHT_RANK[right];
|
|
28889
|
-
}
|
|
28890
|
-
|
|
28891
28998
|
// src/permissions/permissions-provider.tsx
|
|
28999
|
+
import { useCallback as useCallback28, useMemo as useMemo26 } from "react";
|
|
28892
29000
|
import { jsx as jsx108 } from "react/jsx-runtime";
|
|
28893
29001
|
var PermissionsProvider = ({
|
|
28894
29002
|
permissions = null,
|
|
@@ -28918,7 +29026,7 @@ var PermissionsProvider = ({
|
|
|
28918
29026
|
(list) => !permissions || list.every(hasPermission),
|
|
28919
29027
|
[permissions, hasPermission]
|
|
28920
29028
|
);
|
|
28921
|
-
const value =
|
|
29029
|
+
const value = useMemo26(
|
|
28922
29030
|
() => ({
|
|
28923
29031
|
permissions,
|
|
28924
29032
|
isLoading,
|
|
@@ -28934,9 +29042,9 @@ var PermissionsProvider = ({
|
|
|
28934
29042
|
};
|
|
28935
29043
|
|
|
28936
29044
|
// src/permissions/use-permissions.tsx
|
|
28937
|
-
import { useContext as
|
|
29045
|
+
import { useContext as useContext15 } from "react";
|
|
28938
29046
|
var usePermissions = () => {
|
|
28939
|
-
const context =
|
|
29047
|
+
const context = useContext15(PermissionsContext);
|
|
28940
29048
|
if (!context) {
|
|
28941
29049
|
throw new Error("usePermissions must be used within a PermissionsProvider");
|
|
28942
29050
|
}
|
|
@@ -28960,8 +29068,8 @@ var PermissionGuard = ({
|
|
|
28960
29068
|
// src/permissions/route-permission-guard.tsx
|
|
28961
29069
|
import { ExclamationCircle as ExclamationCircle5 } from "@medusajs/icons";
|
|
28962
29070
|
import { Container as Container6, Heading as Heading10, Text as Text22 } from "@medusajs/ui";
|
|
28963
|
-
import { useMemo as
|
|
28964
|
-
import { useTranslation as
|
|
29071
|
+
import { useMemo as useMemo27 } from "react";
|
|
29072
|
+
import { useTranslation as useTranslation50 } from "react-i18next";
|
|
28965
29073
|
import { Navigate as Navigate2, Outlet as Outlet3, useMatches } from "react-router-dom";
|
|
28966
29074
|
import { jsx as jsx110, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
28967
29075
|
var readRequirementFromHandle = (handle) => {
|
|
@@ -28993,7 +29101,7 @@ var readRequirementFromHandle = (handle) => {
|
|
|
28993
29101
|
var RoutePermissionGuard = () => {
|
|
28994
29102
|
const matches = useMatches();
|
|
28995
29103
|
const { hasAnyPermission, hasAllPermissions, isLoading } = usePermissions();
|
|
28996
|
-
const requirement =
|
|
29104
|
+
const requirement = useMemo27(() => {
|
|
28997
29105
|
for (let i = matches.length - 1; i >= 0; i--) {
|
|
28998
29106
|
const found = readRequirementFromHandle(matches[i].handle);
|
|
28999
29107
|
if (found) {
|
|
@@ -29017,7 +29125,7 @@ var RoutePermissionGuard = () => {
|
|
|
29017
29125
|
var AccessDenied = ({
|
|
29018
29126
|
requirement
|
|
29019
29127
|
}) => {
|
|
29020
|
-
const { t: t2 } =
|
|
29128
|
+
const { t: t2 } = useTranslation50();
|
|
29021
29129
|
return /* @__PURE__ */ jsx110("div", { className: "bg-ui-bg-subtle absolute bottom-0 left-0 right-0 top-0 flex min-h-screen items-center justify-center p-4", children: /* @__PURE__ */ jsx110(Container6, { className: "max-w-md", children: /* @__PURE__ */ jsxs73("div", { className: "flex flex-col items-center gap-y-4 py-8 text-center", children: [
|
|
29022
29130
|
/* @__PURE__ */ jsx110("div", { className: "bg-ui-bg-subtle flex h-12 w-12 items-center justify-center rounded-full", children: /* @__PURE__ */ jsx110(ExclamationCircle5, { className: "text-ui-fg-muted" }) }),
|
|
29023
29131
|
/* @__PURE__ */ jsxs73("div", { className: "flex flex-col gap-y-1", children: [
|
|
@@ -29031,10 +29139,10 @@ var AccessDenied = ({
|
|
|
29031
29139
|
};
|
|
29032
29140
|
|
|
29033
29141
|
// src/permissions/use-resource-permissions.tsx
|
|
29034
|
-
import { useMemo as
|
|
29142
|
+
import { useMemo as useMemo28 } from "react";
|
|
29035
29143
|
var useResourcePermissions = (key) => {
|
|
29036
29144
|
const { can, isLoading } = usePermissions();
|
|
29037
|
-
return
|
|
29145
|
+
return useMemo28(
|
|
29038
29146
|
() => ({
|
|
29039
29147
|
canView: can(key, "view"),
|
|
29040
29148
|
canEdit: can(key, "edit"),
|
|
@@ -29046,6 +29154,48 @@ var useResourcePermissions = (key) => {
|
|
|
29046
29154
|
);
|
|
29047
29155
|
};
|
|
29048
29156
|
|
|
29157
|
+
// src/permissions/use-can.tsx
|
|
29158
|
+
var useCan = (key, right = "view") => usePermissions().can(key, right);
|
|
29159
|
+
|
|
29160
|
+
// src/permissions/permission-action.tsx
|
|
29161
|
+
import { Tooltip as Tooltip15 } from "@medusajs/ui";
|
|
29162
|
+
import {
|
|
29163
|
+
cloneElement as cloneElement2,
|
|
29164
|
+
isValidElement
|
|
29165
|
+
} from "react";
|
|
29166
|
+
import { jsx as jsx111 } from "react/jsx-runtime";
|
|
29167
|
+
var PermissionAction = ({
|
|
29168
|
+
permission,
|
|
29169
|
+
requireAll = false,
|
|
29170
|
+
children
|
|
29171
|
+
}) => {
|
|
29172
|
+
const gate = usePermissionGate(permission, requireAll);
|
|
29173
|
+
if (gate.allowed) {
|
|
29174
|
+
return children;
|
|
29175
|
+
}
|
|
29176
|
+
const inner = children.props.children;
|
|
29177
|
+
const label = children.props.asChild && isValidElement(inner) ? inner.props.children : inner;
|
|
29178
|
+
return /* @__PURE__ */ jsx111(Tooltip15, { content: gate.tooltip, children: /* @__PURE__ */ jsx111("span", { className: "inline-flex", children: cloneElement2(children, { disabled: true, asChild: false }, label) }) });
|
|
29179
|
+
};
|
|
29180
|
+
|
|
29181
|
+
// src/permissions/section-no-access.tsx
|
|
29182
|
+
import { Text as Text23 } from "@medusajs/ui";
|
|
29183
|
+
import { useTranslation as useTranslation51 } from "react-i18next";
|
|
29184
|
+
import { jsx as jsx112 } from "react/jsx-runtime";
|
|
29185
|
+
var SectionNoAccess = ({ className }) => {
|
|
29186
|
+
const { t: t2 } = useTranslation51();
|
|
29187
|
+
return /* @__PURE__ */ jsx112("div", { className: className ?? "px-6 py-4", "data-testid": "section-no-access", children: /* @__PURE__ */ jsx112(Text23, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: t2("permissions.noAccess") }) });
|
|
29188
|
+
};
|
|
29189
|
+
|
|
29190
|
+
// src/permissions/with-permission.ts
|
|
29191
|
+
var createWithPermission = (getPermissions) => (loader, permission, options = {}) => async (args) => {
|
|
29192
|
+
const permissions = await getPermissions().catch(() => null);
|
|
29193
|
+
if (!permissionMapAllows(permissions, permission, options.requireAll ?? true)) {
|
|
29194
|
+
return null;
|
|
29195
|
+
}
|
|
29196
|
+
return loader(args);
|
|
29197
|
+
};
|
|
29198
|
+
|
|
29049
29199
|
// src/providers/sidebar-provider/classes.ts
|
|
29050
29200
|
var SIDEBAR_RAIL_FADE = [
|
|
29051
29201
|
"transition-opacity duration-150 delay-100 ease-out motion-reduce:transition-none",
|
|
@@ -29059,9 +29209,9 @@ import { createContext as createContext11 } from "react";
|
|
|
29059
29209
|
var SidebarContext = createContext11(null);
|
|
29060
29210
|
|
|
29061
29211
|
// src/providers/sidebar-provider/sidebar-provider.tsx
|
|
29062
|
-
import { useCallback as useCallback29, useEffect as useEffect27, useMemo as
|
|
29212
|
+
import { useCallback as useCallback29, useEffect as useEffect27, useMemo as useMemo29, useState as useState40 } from "react";
|
|
29063
29213
|
import { useLocation as useLocation4 } from "react-router-dom";
|
|
29064
|
-
import { jsx as
|
|
29214
|
+
import { jsx as jsx113 } from "react/jsx-runtime";
|
|
29065
29215
|
var SidebarProvider = ({ children }) => {
|
|
29066
29216
|
const [desktop, setDesktop] = useState40(true);
|
|
29067
29217
|
const [mobile, setMobile] = useState40(false);
|
|
@@ -29076,7 +29226,7 @@ var SidebarProvider = ({ children }) => {
|
|
|
29076
29226
|
setMobile((open) => !open);
|
|
29077
29227
|
}
|
|
29078
29228
|
}, []);
|
|
29079
|
-
const value =
|
|
29229
|
+
const value = useMemo29(
|
|
29080
29230
|
() => ({
|
|
29081
29231
|
state: desktop ? "expanded" : "collapsed",
|
|
29082
29232
|
desktop,
|
|
@@ -29087,16 +29237,16 @@ var SidebarProvider = ({ children }) => {
|
|
|
29087
29237
|
}),
|
|
29088
29238
|
[desktop, mobile, toggle]
|
|
29089
29239
|
);
|
|
29090
|
-
return /* @__PURE__ */
|
|
29240
|
+
return /* @__PURE__ */ jsx113(SidebarContext.Provider, { value, children });
|
|
29091
29241
|
};
|
|
29092
29242
|
|
|
29093
29243
|
// src/providers/sidebar-provider/use-collapsed-sidebar.tsx
|
|
29094
29244
|
import { useEffect as useEffect28, useRef as useRef20 } from "react";
|
|
29095
29245
|
|
|
29096
29246
|
// src/providers/sidebar-provider/use-sidebar.tsx
|
|
29097
|
-
import { useContext as
|
|
29247
|
+
import { useContext as useContext16 } from "react";
|
|
29098
29248
|
var useSidebar = () => {
|
|
29099
|
-
const context =
|
|
29249
|
+
const context = useContext16(SidebarContext);
|
|
29100
29250
|
if (!context) {
|
|
29101
29251
|
throw new Error("useSidebar must be used within a SidebarProvider");
|
|
29102
29252
|
}
|
|
@@ -29350,6 +29500,7 @@ export {
|
|
|
29350
29500
|
NoResults,
|
|
29351
29501
|
OrderBy,
|
|
29352
29502
|
PercentageInput,
|
|
29503
|
+
PermissionAction,
|
|
29353
29504
|
PermissionGuard,
|
|
29354
29505
|
PermissionsContext,
|
|
29355
29506
|
PermissionsProvider,
|
|
@@ -29372,6 +29523,7 @@ export {
|
|
|
29372
29523
|
RoutePermissionGuard,
|
|
29373
29524
|
SIDEBAR_MENU_CONTENT,
|
|
29374
29525
|
SIDEBAR_RAIL_FADE,
|
|
29526
|
+
SectionNoAccess,
|
|
29375
29527
|
SectionRow,
|
|
29376
29528
|
SegmentedControl,
|
|
29377
29529
|
SidebarContext,
|
|
@@ -29400,6 +29552,7 @@ export {
|
|
|
29400
29552
|
VisuallyHidden,
|
|
29401
29553
|
WidgetZone,
|
|
29402
29554
|
_DataTable,
|
|
29555
|
+
applyActionPermissions,
|
|
29403
29556
|
applyNavOverrides,
|
|
29404
29557
|
buildAdditionalDataDefaults,
|
|
29405
29558
|
buildAdditionalDataSchema,
|
|
@@ -29409,9 +29562,11 @@ export {
|
|
|
29409
29562
|
createDataGridHelper,
|
|
29410
29563
|
createDataGridPriceColumns,
|
|
29411
29564
|
createFormHelper,
|
|
29565
|
+
createWithPermission,
|
|
29412
29566
|
currencies,
|
|
29413
29567
|
extractPricesFromOffers,
|
|
29414
29568
|
extractReferenceIds,
|
|
29569
|
+
filterCommandsByPermission,
|
|
29415
29570
|
formatFieldValue,
|
|
29416
29571
|
genericForwardRef,
|
|
29417
29572
|
getCountryByIso2,
|
|
@@ -29427,22 +29582,27 @@ export {
|
|
|
29427
29582
|
getStylizedAmount,
|
|
29428
29583
|
humanizeFieldName,
|
|
29429
29584
|
isAmountLessThenRoundingError,
|
|
29585
|
+
isForbidden,
|
|
29430
29586
|
isHtml,
|
|
29431
29587
|
isImageList,
|
|
29432
29588
|
isOrderActionable,
|
|
29433
29589
|
isOrderAwaitingAction,
|
|
29590
|
+
isPermitted,
|
|
29434
29591
|
isPriceListGroupRow,
|
|
29435
29592
|
isProductRow,
|
|
29436
29593
|
isReferenceField,
|
|
29437
29594
|
isSameAddress,
|
|
29438
29595
|
linkFields,
|
|
29596
|
+
permissionMapAllows,
|
|
29439
29597
|
plainTextToHtml,
|
|
29440
29598
|
productChangeViewHasContent,
|
|
29441
29599
|
queryClient,
|
|
29442
29600
|
queryKeysFactory,
|
|
29443
29601
|
richTextContentClasses,
|
|
29444
29602
|
sanitizeRichText,
|
|
29603
|
+
toPermissionList,
|
|
29445
29604
|
useActionLocks,
|
|
29605
|
+
useCan,
|
|
29446
29606
|
useCollapsedSidebar,
|
|
29447
29607
|
useCombinedRefs,
|
|
29448
29608
|
useCommandHistory,
|
|
@@ -29456,7 +29616,9 @@ export {
|
|
|
29456
29616
|
useExtension,
|
|
29457
29617
|
useExtensionActivity,
|
|
29458
29618
|
useLinkQuery,
|
|
29619
|
+
usePermissionGate,
|
|
29459
29620
|
usePermissions,
|
|
29621
|
+
usePermittedCommands,
|
|
29460
29622
|
useQueryParams,
|
|
29461
29623
|
useResourcePermissions,
|
|
29462
29624
|
useRouteModal,
|