sellmate-design-system-react 9.0.0-beta.60 → 9.0.0-beta.62
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/AGENTS.md +33 -10
- package/dist/components/SBadge/README.md +1 -0
- package/dist/components/SBadge/SBadge.d.ts +1 -1
- package/dist/components/SBarChart/README.md +15 -0
- package/dist/components/SBarChart/SBarChart.d.ts +15 -1
- package/dist/components/SBarChart/index.d.ts +1 -1
- package/dist/components/SCalendarBoard/README.md +2 -1
- package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +2 -2
- package/dist/components/SCalendarBoard/types.d.ts +1 -1
- package/dist/components/SCallout/README.md +1 -0
- package/dist/components/SCallout/SCallout.d.ts +6 -1
- package/dist/components/SChip/README.md +25 -0
- package/dist/components/SChip/SChip.d.ts +8 -0
- package/dist/components/SChip/index.d.ts +1 -1
- package/dist/components/SDonutChart/README.md +91 -0
- package/dist/components/SDonutChart/SDonutChart.d.ts +70 -0
- package/dist/components/SDonutChart/index.d.ts +1 -0
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SLineChart/README.md +15 -0
- package/dist/components/SLineChart/SLineChart.d.ts +15 -1
- package/dist/components/SLineChart/index.d.ts +1 -1
- package/dist/components/SLineChart/lineChart.config.d.ts +11 -7
- package/dist/components/SMeatballButton/README.md +67 -0
- package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
- package/dist/components/SMeatballButton/index.d.ts +1 -0
- package/dist/components/SPieChart/README.md +91 -0
- package/dist/components/SPieChart/SPieChart.d.ts +69 -0
- package/dist/components/SPieChart/index.d.ts +1 -0
- package/dist/index.cjs +702 -230
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +698 -230
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/cartesian.d.ts +2 -2
- package/dist/lib/chart/radial.d.ts +89 -0
- package/dist/lib/chart/tooltip.d.ts +18 -1
- package/dist/lib/dropdown-menu.d.ts +19 -0
- package/dist/llms-full.txt +361 -22
- package/dist/llms.txt +53 -23
- package/dist/styles.css +85 -0
- package/dist/theme.css +62 -0
- package/eslint/scale.gen.mjs +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { createPortal } from 'react-dom';
|
|
|
8
8
|
import * as RCheckbox from '@radix-ui/react-checkbox';
|
|
9
9
|
import { createRoot } from 'react-dom/client';
|
|
10
10
|
import * as RTooltip from '@radix-ui/react-tooltip';
|
|
11
|
-
import * as
|
|
11
|
+
import * as RDropdown5 from '@radix-ui/react-dropdown-menu';
|
|
12
12
|
import * as RSwitch from '@radix-ui/react-switch';
|
|
13
13
|
import * as RDialog from '@radix-ui/react-dialog';
|
|
14
14
|
import * as Ariakit from '@ariakit/react';
|
|
@@ -3921,6 +3921,7 @@ var BADGE_COLORS = [
|
|
|
3921
3921
|
"blue",
|
|
3922
3922
|
"darkblue",
|
|
3923
3923
|
"indigo",
|
|
3924
|
+
"purple",
|
|
3924
3925
|
"grey"
|
|
3925
3926
|
];
|
|
3926
3927
|
var SBadge = /* @__PURE__ */ forwardRef(function SBadge2({ color = "blue", className, ...rest }, ref) {
|
|
@@ -4247,7 +4248,7 @@ var TAG_SIZE_CONFIG = {
|
|
|
4247
4248
|
radius: 6,
|
|
4248
4249
|
iconSize: 16,
|
|
4249
4250
|
fontSize: 12,
|
|
4250
|
-
fontWeight:
|
|
4251
|
+
fontWeight: 600,
|
|
4251
4252
|
lineHeight: 20
|
|
4252
4253
|
},
|
|
4253
4254
|
md: {
|
|
@@ -8006,8 +8007,8 @@ function renderItems(message, depth = 1) {
|
|
|
8006
8007
|
});
|
|
8007
8008
|
return out;
|
|
8008
8009
|
}
|
|
8009
|
-
var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default", message = [], children, className, style }, ref) {
|
|
8010
|
-
const
|
|
8010
|
+
var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default", showTitle = true, message = [], children, className, style }, ref) {
|
|
8011
|
+
const hasDangerTitle = type === "danger" && showTitle;
|
|
8011
8012
|
const surface = SURFACE[type];
|
|
8012
8013
|
const vars = {
|
|
8013
8014
|
"--co-bg": surface.bg,
|
|
@@ -8026,7 +8027,7 @@ var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default",
|
|
|
8026
8027
|
),
|
|
8027
8028
|
style: { ...vars, ...style },
|
|
8028
8029
|
children: [
|
|
8029
|
-
|
|
8030
|
+
hasDangerTitle && /* @__PURE__ */ jsxs(
|
|
8030
8031
|
"div",
|
|
8031
8032
|
{
|
|
8032
8033
|
className: "flex shrink-0 flex-col items-center justify-center gap-[var(--cmp-callout-danger-title-gap)] px-[var(--cmp-callout-danger-title-paddingX)] py-[8px] text-[16px] font-bold leading-[26px]",
|
|
@@ -8353,6 +8354,58 @@ function clampToAvailableWidth(value, availableWidth) {
|
|
|
8353
8354
|
const css = typeof value === "number" ? `${value}px` : value;
|
|
8354
8355
|
return `min(${css}, ${availableWidth})`;
|
|
8355
8356
|
}
|
|
8357
|
+
var VIEWPORT_PADDING = 12;
|
|
8358
|
+
var itemClass = cn(
|
|
8359
|
+
"flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
|
|
8360
|
+
"text-[color:var(--sys-color-fg-secondary)]",
|
|
8361
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
|
|
8362
|
+
"data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
|
|
8363
|
+
);
|
|
8364
|
+
function DropdownMenuContent({
|
|
8365
|
+
items,
|
|
8366
|
+
onItemClick,
|
|
8367
|
+
align = "start",
|
|
8368
|
+
className,
|
|
8369
|
+
...contentProps
|
|
8370
|
+
}) {
|
|
8371
|
+
const portalContainer = usePortalContainer();
|
|
8372
|
+
return /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
8373
|
+
RDropdown5.Content,
|
|
8374
|
+
{
|
|
8375
|
+
sideOffset: 4,
|
|
8376
|
+
align,
|
|
8377
|
+
collisionPadding: VIEWPORT_PADDING,
|
|
8378
|
+
className: cn(
|
|
8379
|
+
"z-50 overflow-hidden rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-normal-sm",
|
|
8380
|
+
// 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 호출부가 하한(min-width)을 줄 때도 같은
|
|
8381
|
+
// 상한으로 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
|
|
8382
|
+
"max-w-[var(--radix-dropdown-menu-content-available-width)]",
|
|
8383
|
+
FLOATING_SLIDE_ANIM,
|
|
8384
|
+
className
|
|
8385
|
+
),
|
|
8386
|
+
...contentProps,
|
|
8387
|
+
children: items.map((it) => /* @__PURE__ */ jsxs(
|
|
8388
|
+
RDropdown5.Item,
|
|
8389
|
+
{
|
|
8390
|
+
disabled: it.disabled,
|
|
8391
|
+
onSelect: () => onItemClick?.(it.value),
|
|
8392
|
+
className: itemClass,
|
|
8393
|
+
children: [
|
|
8394
|
+
it.icon && /* @__PURE__ */ jsx(SIcon, { name: it.icon, size: 12 }),
|
|
8395
|
+
/* @__PURE__ */ jsx(
|
|
8396
|
+
"span",
|
|
8397
|
+
{
|
|
8398
|
+
className: "min-w-0 break-words",
|
|
8399
|
+
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
|
|
8400
|
+
}
|
|
8401
|
+
)
|
|
8402
|
+
]
|
|
8403
|
+
},
|
|
8404
|
+
it.value
|
|
8405
|
+
))
|
|
8406
|
+
}
|
|
8407
|
+
) });
|
|
8408
|
+
}
|
|
8356
8409
|
var SIZE2 = {
|
|
8357
8410
|
xs: { height: 24, paddingX: 8, gap: 6, arrow: 12, fontSize: 12, minWidth: 64, splitMinWidth: 72 },
|
|
8358
8411
|
sm: {
|
|
@@ -8389,13 +8442,6 @@ function splitDivider(color, outline) {
|
|
|
8389
8442
|
};
|
|
8390
8443
|
return (outline ? outlined : solid)[color];
|
|
8391
8444
|
}
|
|
8392
|
-
var VIEWPORT_PADDING = 12;
|
|
8393
|
-
var itemClass = cn(
|
|
8394
|
-
"flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
|
|
8395
|
-
"text-[color:var(--sys-color-fg-secondary)]",
|
|
8396
|
-
"data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
|
|
8397
|
-
"data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
|
|
8398
|
-
);
|
|
8399
8445
|
var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
8400
8446
|
function SDropdownButton({
|
|
8401
8447
|
color = "primary",
|
|
@@ -8411,7 +8457,6 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
|
8411
8457
|
className,
|
|
8412
8458
|
style
|
|
8413
8459
|
}, ref) {
|
|
8414
|
-
const portalContainer = usePortalContainer();
|
|
8415
8460
|
const insideModal = useInsideModal();
|
|
8416
8461
|
const [open, setOpen] = useState(false);
|
|
8417
8462
|
const splitWrapRef = useRef(null);
|
|
@@ -8465,45 +8510,20 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
|
8465
8510
|
"border-[color:var(--dd-border)] bg-[var(--dd-bg)] text-[color:var(--dd-text)]",
|
|
8466
8511
|
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-[var(--dd-bg-hover)]"
|
|
8467
8512
|
);
|
|
8468
|
-
const menu = /* @__PURE__ */ jsx(
|
|
8469
|
-
|
|
8513
|
+
const menu = /* @__PURE__ */ jsx(
|
|
8514
|
+
DropdownMenuContent,
|
|
8470
8515
|
{
|
|
8471
|
-
|
|
8472
|
-
|
|
8516
|
+
items,
|
|
8517
|
+
onItemClick,
|
|
8473
8518
|
alignOffset: split ? splitAlignOffset : 0,
|
|
8474
|
-
collisionPadding: VIEWPORT_PADDING,
|
|
8475
8519
|
className: cn(
|
|
8476
|
-
"
|
|
8477
|
-
// 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 트리거 너비를 따르는 하한도 같은 상한으로
|
|
8478
|
-
// 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
|
|
8479
|
-
"max-w-[var(--radix-dropdown-menu-content-available-width)]",
|
|
8480
|
-
!split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]",
|
|
8481
|
-
FLOATING_SLIDE_ANIM
|
|
8520
|
+
!split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]"
|
|
8482
8521
|
),
|
|
8483
|
-
style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0
|
|
8484
|
-
children: items.map((it) => /* @__PURE__ */ jsxs(
|
|
8485
|
-
RDropdown3.Item,
|
|
8486
|
-
{
|
|
8487
|
-
disabled: it.disabled,
|
|
8488
|
-
onSelect: () => onItemClick?.(it.value),
|
|
8489
|
-
className: itemClass,
|
|
8490
|
-
children: [
|
|
8491
|
-
it.icon && /* @__PURE__ */ jsx(SIcon, { name: it.icon, size: 12 }),
|
|
8492
|
-
/* @__PURE__ */ jsx(
|
|
8493
|
-
"span",
|
|
8494
|
-
{
|
|
8495
|
-
className: "min-w-0 break-words",
|
|
8496
|
-
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
|
|
8497
|
-
}
|
|
8498
|
-
)
|
|
8499
|
-
]
|
|
8500
|
-
},
|
|
8501
|
-
it.value
|
|
8502
|
-
))
|
|
8522
|
+
style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0
|
|
8503
8523
|
}
|
|
8504
|
-
)
|
|
8524
|
+
);
|
|
8505
8525
|
return /* @__PURE__ */ jsxs(
|
|
8506
|
-
|
|
8526
|
+
RDropdown5.Root,
|
|
8507
8527
|
{
|
|
8508
8528
|
modal: !insideModal,
|
|
8509
8529
|
open,
|
|
@@ -8535,7 +8555,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
|
8535
8555
|
children: label
|
|
8536
8556
|
}
|
|
8537
8557
|
),
|
|
8538
|
-
/* @__PURE__ */ jsx(
|
|
8558
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
8539
8559
|
"button",
|
|
8540
8560
|
{
|
|
8541
8561
|
ref: splitToggleRef,
|
|
@@ -8554,7 +8574,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
|
8554
8574
|
) })
|
|
8555
8575
|
]
|
|
8556
8576
|
}
|
|
8557
|
-
) : /* @__PURE__ */ jsx(
|
|
8577
|
+
) : /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
8558
8578
|
"button",
|
|
8559
8579
|
{
|
|
8560
8580
|
type: "button",
|
|
@@ -8582,6 +8602,87 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
|
|
|
8582
8602
|
}
|
|
8583
8603
|
);
|
|
8584
8604
|
var SDropdownButton2 = /* @__PURE__ */ withDisplayName(SDropdownButtonImpl, "SDropdownButton");
|
|
8605
|
+
var DEFAULT_LABEL = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30";
|
|
8606
|
+
var SMeatballButtonImpl = /* @__PURE__ */ forwardRef(
|
|
8607
|
+
function SMeatballButton({
|
|
8608
|
+
size = "sm",
|
|
8609
|
+
intent = "default",
|
|
8610
|
+
items = [],
|
|
8611
|
+
// 기본값을 리터럴로 둬야 README(docs:gen)에 실제 문구가 찍힌다
|
|
8612
|
+
tooltipText = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30",
|
|
8613
|
+
ariaLabel,
|
|
8614
|
+
disabled = false,
|
|
8615
|
+
onItemClick,
|
|
8616
|
+
onOpenChange,
|
|
8617
|
+
className,
|
|
8618
|
+
style
|
|
8619
|
+
}, ref) {
|
|
8620
|
+
const insideModal = useInsideModal();
|
|
8621
|
+
const [open, setOpen] = useState(false);
|
|
8622
|
+
const buttonRef = useRef(null);
|
|
8623
|
+
const pointerRef = useRef(false);
|
|
8624
|
+
const setMenuOpen = (o) => {
|
|
8625
|
+
setOpen(o);
|
|
8626
|
+
onOpenChange?.(o);
|
|
8627
|
+
};
|
|
8628
|
+
useImperativeHandle(
|
|
8629
|
+
ref,
|
|
8630
|
+
() => ({
|
|
8631
|
+
open: () => setOpen(true),
|
|
8632
|
+
close: () => setOpen(false)
|
|
8633
|
+
}),
|
|
8634
|
+
[]
|
|
8635
|
+
);
|
|
8636
|
+
const label = ariaLabel?.trim() || tooltipText.trim() || DEFAULT_LABEL;
|
|
8637
|
+
return /* @__PURE__ */ jsxs(
|
|
8638
|
+
RDropdown5.Root,
|
|
8639
|
+
{
|
|
8640
|
+
modal: !insideModal,
|
|
8641
|
+
open,
|
|
8642
|
+
onOpenChange: setMenuOpen,
|
|
8643
|
+
children: [
|
|
8644
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx(
|
|
8645
|
+
"span",
|
|
8646
|
+
{
|
|
8647
|
+
className: cn("inline-flex", className),
|
|
8648
|
+
style,
|
|
8649
|
+
onPointerDownCapture: () => pointerRef.current = true,
|
|
8650
|
+
onKeyDownCapture: () => pointerRef.current = false,
|
|
8651
|
+
children: /* @__PURE__ */ jsx(
|
|
8652
|
+
SGhostButton,
|
|
8653
|
+
{
|
|
8654
|
+
ref: buttonRef,
|
|
8655
|
+
icon: "etc",
|
|
8656
|
+
size,
|
|
8657
|
+
intent,
|
|
8658
|
+
tooltipText: open ? "" : tooltipText,
|
|
8659
|
+
ariaLabel: label,
|
|
8660
|
+
ariaExpanded: open,
|
|
8661
|
+
disabled
|
|
8662
|
+
}
|
|
8663
|
+
)
|
|
8664
|
+
}
|
|
8665
|
+
) }),
|
|
8666
|
+
/* @__PURE__ */ jsx(
|
|
8667
|
+
DropdownMenuContent,
|
|
8668
|
+
{
|
|
8669
|
+
items,
|
|
8670
|
+
onItemClick,
|
|
8671
|
+
onPointerDown: () => pointerRef.current = true,
|
|
8672
|
+
onPointerDownOutside: () => pointerRef.current = true,
|
|
8673
|
+
onKeyDown: () => pointerRef.current = false,
|
|
8674
|
+
onCloseAutoFocus: (e) => {
|
|
8675
|
+
e.preventDefault();
|
|
8676
|
+
if (!pointerRef.current) buttonRef.current?.focus();
|
|
8677
|
+
}
|
|
8678
|
+
}
|
|
8679
|
+
)
|
|
8680
|
+
]
|
|
8681
|
+
}
|
|
8682
|
+
);
|
|
8683
|
+
}
|
|
8684
|
+
);
|
|
8685
|
+
var SMeatballButton2 = /* @__PURE__ */ withDisplayName(SMeatballButtonImpl, "SMeatballButton");
|
|
8585
8686
|
function SSwitch({
|
|
8586
8687
|
value = false,
|
|
8587
8688
|
leftLabel,
|
|
@@ -9557,7 +9658,7 @@ var SPopup = /* @__PURE__ */ forwardRef(function SPopup2({
|
|
|
9557
9658
|
}
|
|
9558
9659
|
);
|
|
9559
9660
|
});
|
|
9560
|
-
var
|
|
9661
|
+
var DEFAULT_LABEL2 = { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" };
|
|
9561
9662
|
var ICON = { tip: "helpOutline", notion: "notion" };
|
|
9562
9663
|
var VIEWPORT_GUTTER = 24;
|
|
9563
9664
|
var CLOSE_INSET = 12;
|
|
@@ -9579,7 +9680,7 @@ function SGuide({
|
|
|
9579
9680
|
const portalContainer = usePortalContainer();
|
|
9580
9681
|
const isNotion = type === "notion";
|
|
9581
9682
|
const isAutoWidth = popupWidth === "auto";
|
|
9582
|
-
const defaultLabel =
|
|
9683
|
+
const defaultLabel = DEFAULT_LABEL2[type];
|
|
9583
9684
|
const iconName = ICON[type];
|
|
9584
9685
|
const messages = flattenMessages(message);
|
|
9585
9686
|
const active = open;
|
|
@@ -13591,6 +13692,7 @@ var CALENDAR_BOARD_EVENT_COLORS = [
|
|
|
13591
13692
|
"yellow",
|
|
13592
13693
|
"orange",
|
|
13593
13694
|
"red",
|
|
13695
|
+
"purple",
|
|
13594
13696
|
"white"
|
|
13595
13697
|
];
|
|
13596
13698
|
var BG = (name) => `var(--cmp-calendarBoard-eventButton-bg-${name})`;
|
|
@@ -13603,6 +13705,7 @@ var CALENDAR_BOARD_EVENT_PRESETS = {
|
|
|
13603
13705
|
yellow: { bg: BG("yellow"), dot: "yellow" },
|
|
13604
13706
|
orange: { bg: BG("orange"), dot: "orange" },
|
|
13605
13707
|
red: { bg: BG("red"), dot: "red" },
|
|
13708
|
+
purple: { bg: BG("purple"), dot: "purple" },
|
|
13606
13709
|
white: { bg: BG("white"), dot: "grey" }
|
|
13607
13710
|
};
|
|
13608
13711
|
var CALENDAR_BOARD_MAX_VISIBLE_EVENTS = 4;
|
|
@@ -15533,7 +15636,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15533
15636
|
useEffect(() => {
|
|
15534
15637
|
setColumnWidths(visibleCols.map(colWidthFromDef));
|
|
15535
15638
|
}, [colSignature]);
|
|
15536
|
-
const selectedKeys = useMemo(() => new Set(selected.map((
|
|
15639
|
+
const selectedKeys = useMemo(() => new Set(selected.map((r3) => r3[rowKey])), [selected, rowKey]);
|
|
15537
15640
|
const rangeAnchorRef = useRef(null);
|
|
15538
15641
|
const shiftPressedRef = useRef(false);
|
|
15539
15642
|
const isRowSelected = useCallback(
|
|
@@ -15553,7 +15656,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15553
15656
|
const targets = rws.filter(canSelectRow);
|
|
15554
15657
|
const total = targets.length;
|
|
15555
15658
|
if (total === 0) return false;
|
|
15556
|
-
const cnt = targets.filter((
|
|
15659
|
+
const cnt = targets.filter((r3) => selectedKeys.has(r3[rowKey])).length;
|
|
15557
15660
|
if (cnt === 0) return false;
|
|
15558
15661
|
if (cnt === total) return true;
|
|
15559
15662
|
return null;
|
|
@@ -15757,16 +15860,16 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15757
15860
|
updateRowSelect: (row) => {
|
|
15758
15861
|
if (!canSelectRow(row)) return;
|
|
15759
15862
|
if (selectedKeys.has(row[rowKey]))
|
|
15760
|
-
onSelectedChange?.(selected.filter((
|
|
15863
|
+
onSelectedChange?.(selected.filter((r3) => r3[rowKey] !== row[rowKey]));
|
|
15761
15864
|
else onSelectedChange?.([...selected, row]);
|
|
15762
15865
|
},
|
|
15763
15866
|
toggleSelectAll: (checked, rws) => {
|
|
15764
15867
|
if (checked) {
|
|
15765
|
-
const add = rws.filter((
|
|
15868
|
+
const add = rws.filter((r3) => canSelectRow(r3) && !selectedKeys.has(r3[rowKey]));
|
|
15766
15869
|
onSelectedChange?.([...selected, ...add]);
|
|
15767
15870
|
} else {
|
|
15768
|
-
const keys = new Set(rws.map((
|
|
15769
|
-
onSelectedChange?.(selected.filter((
|
|
15871
|
+
const keys = new Set(rws.map((r3) => r3[rowKey]));
|
|
15872
|
+
onSelectedChange?.(selected.filter((r3) => !keys.has(r3[rowKey])));
|
|
15770
15873
|
}
|
|
15771
15874
|
}
|
|
15772
15875
|
}),
|
|
@@ -15860,10 +15963,10 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15860
15963
|
const toggleAll = () => {
|
|
15861
15964
|
rangeAnchorRef.current = null;
|
|
15862
15965
|
if (headerCheck === true) {
|
|
15863
|
-
const targetKeys = new Set(selectAllRows.map((
|
|
15864
|
-
onSelectedChange?.(selected.filter((
|
|
15966
|
+
const targetKeys = new Set(selectAllRows.map((r3) => r3[rowKey]));
|
|
15967
|
+
onSelectedChange?.(selected.filter((r3) => !targetKeys.has(r3[rowKey])));
|
|
15865
15968
|
} else {
|
|
15866
|
-
const add = selectAllRows.filter((
|
|
15969
|
+
const add = selectAllRows.filter((r3) => canSelectRow(r3) && !selectedKeys.has(r3[rowKey]));
|
|
15867
15970
|
onSelectedChange?.([...selected, ...add]);
|
|
15868
15971
|
}
|
|
15869
15972
|
};
|
|
@@ -15876,17 +15979,17 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15876
15979
|
const shouldSelect = selectedKeys.has(anchor.key);
|
|
15877
15980
|
const range = rows.slice(from, to + 1).filter(canSelectRow);
|
|
15878
15981
|
if (shouldSelect) {
|
|
15879
|
-
const add = range.filter((
|
|
15982
|
+
const add = range.filter((r3) => !selectedKeys.has(r3[rowKey]));
|
|
15880
15983
|
onSelectedChange?.([...selected, ...add]);
|
|
15881
15984
|
} else {
|
|
15882
|
-
const keys = new Set(range.map((
|
|
15883
|
-
onSelectedChange?.(selected.filter((
|
|
15985
|
+
const keys = new Set(range.map((r3) => r3[rowKey]));
|
|
15986
|
+
onSelectedChange?.(selected.filter((r3) => !keys.has(r3[rowKey])));
|
|
15884
15987
|
}
|
|
15885
15988
|
return;
|
|
15886
15989
|
}
|
|
15887
15990
|
rangeAnchorRef.current = { index, key: row[rowKey] };
|
|
15888
15991
|
if (selectedKeys.has(row[rowKey]))
|
|
15889
|
-
onSelectedChange?.(selected.filter((
|
|
15992
|
+
onSelectedChange?.(selected.filter((r3) => r3[rowKey] !== row[rowKey]));
|
|
15890
15993
|
else onSelectedChange?.([...selected, row]);
|
|
15891
15994
|
};
|
|
15892
15995
|
const isViewSelected = (row) => row != null && (dragPreviewKeys ?? selectedKeys).has(row[rowKey]);
|
|
@@ -15894,14 +15997,14 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15894
15997
|
const [a, b] = from <= to ? [from, to] : [to, from];
|
|
15895
15998
|
return rows.slice(a, b + 1).filter(canSelectRow);
|
|
15896
15999
|
};
|
|
15897
|
-
const dragPreviewOf = (base, anchor, to) => /* @__PURE__ */ new Set([...base, ...dragRangeRows(anchor, to).map((
|
|
16000
|
+
const dragPreviewOf = (base, anchor, to) => /* @__PURE__ */ new Set([...base, ...dragRangeRows(anchor, to).map((r3) => r3[rowKey])]);
|
|
15898
16001
|
const startDragSelect = (index, event) => {
|
|
15899
16002
|
if (event.button !== 0) return;
|
|
15900
16003
|
const target = event.target;
|
|
15901
16004
|
if (target?.closest?.(ROW_INTERACTIVE_SELECTOR)) return;
|
|
15902
16005
|
event.preventDefault();
|
|
15903
16006
|
const baseRows = event.ctrlKey || event.metaKey ? selected : [];
|
|
15904
|
-
const baseKeys = new Set(baseRows.map((
|
|
16007
|
+
const baseKeys = new Set(baseRows.map((r3) => r3[rowKey]));
|
|
15905
16008
|
dragRef.current = { anchor: index, last: index, baseKeys, baseRows };
|
|
15906
16009
|
setDragPreviewKeys(dragPreviewOf(baseKeys, index, index));
|
|
15907
16010
|
};
|
|
@@ -15918,7 +16021,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
15918
16021
|
if (!d) return;
|
|
15919
16022
|
dragRef.current = null;
|
|
15920
16023
|
setDragPreviewKeys(null);
|
|
15921
|
-
const add = dragRangeRows(d.anchor, d.last).filter((
|
|
16024
|
+
const add = dragRangeRows(d.anchor, d.last).filter((r3) => !d.baseKeys.has(r3[rowKey]));
|
|
15922
16025
|
onSelectedChange?.([...d.baseRows, ...add]);
|
|
15923
16026
|
};
|
|
15924
16027
|
useEffect(() => {
|
|
@@ -16475,7 +16578,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
16475
16578
|
),
|
|
16476
16579
|
contextMenuOn && typeof document !== "undefined" && createPortal(
|
|
16477
16580
|
/* @__PURE__ */ jsxs(
|
|
16478
|
-
|
|
16581
|
+
RDropdown5.Root,
|
|
16479
16582
|
{
|
|
16480
16583
|
modal: false,
|
|
16481
16584
|
open: contextMenuOpen,
|
|
@@ -16483,7 +16586,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
16483
16586
|
if (!open) setContextMenu((m) => m == null ? null : { ...m, open: false });
|
|
16484
16587
|
},
|
|
16485
16588
|
children: [
|
|
16486
|
-
/* @__PURE__ */ jsx(
|
|
16589
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
16487
16590
|
"span",
|
|
16488
16591
|
{
|
|
16489
16592
|
"aria-hidden": true,
|
|
@@ -16492,7 +16595,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
16492
16595
|
}
|
|
16493
16596
|
) }),
|
|
16494
16597
|
/* @__PURE__ */ jsx(
|
|
16495
|
-
|
|
16598
|
+
RDropdown5.Content,
|
|
16496
16599
|
{
|
|
16497
16600
|
align: "start",
|
|
16498
16601
|
side: "bottom",
|
|
@@ -16506,7 +16609,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
|
|
|
16506
16609
|
FLOATING_SLIDE_ANIM
|
|
16507
16610
|
),
|
|
16508
16611
|
children: contextMenuItems?.map((item4) => /* @__PURE__ */ jsxs(
|
|
16509
|
-
|
|
16612
|
+
RDropdown5.Item,
|
|
16510
16613
|
{
|
|
16511
16614
|
disabled: item4.disabled,
|
|
16512
16615
|
onSelect: () => onContextMenuItemClick?.(item4.value, contextMenu?.rows ?? []),
|
|
@@ -18391,10 +18494,10 @@ function SDateRangePicker({
|
|
|
18391
18494
|
lineHeight: 20,
|
|
18392
18495
|
radius: 4
|
|
18393
18496
|
};
|
|
18394
|
-
const select = (
|
|
18497
|
+
const select = (r3) => {
|
|
18395
18498
|
setPendingStart(null);
|
|
18396
|
-
onValueChange?.(
|
|
18397
|
-
if (rules && rules.length > 0) setRuleError(runRules(
|
|
18499
|
+
onValueChange?.(r3);
|
|
18500
|
+
if (rules && rules.length > 0) setRuleError(runRules(r3, rules));
|
|
18398
18501
|
if (!showTimePicker) setOpen(false);
|
|
18399
18502
|
};
|
|
18400
18503
|
const clear = () => {
|
|
@@ -18530,7 +18633,19 @@ function SDateRangePicker({
|
|
|
18530
18633
|
}
|
|
18531
18634
|
);
|
|
18532
18635
|
}
|
|
18636
|
+
var CHIP_COLORS = [
|
|
18637
|
+
"red",
|
|
18638
|
+
"orange",
|
|
18639
|
+
"yellow",
|
|
18640
|
+
"green",
|
|
18641
|
+
"blue",
|
|
18642
|
+
"darkblue",
|
|
18643
|
+
"indigo",
|
|
18644
|
+
"purple",
|
|
18645
|
+
"grey"
|
|
18646
|
+
];
|
|
18533
18647
|
var SChipImpl = /* @__PURE__ */ forwardRef(function SChip({
|
|
18648
|
+
color,
|
|
18534
18649
|
name,
|
|
18535
18650
|
value = "",
|
|
18536
18651
|
error: errorProp = false,
|
|
@@ -18605,9 +18720,10 @@ var SChipImpl = /* @__PURE__ */ forwardRef(function SChip({
|
|
|
18605
18720
|
cancel();
|
|
18606
18721
|
}
|
|
18607
18722
|
};
|
|
18608
|
-
const
|
|
18609
|
-
const
|
|
18610
|
-
const
|
|
18723
|
+
const colored = color != null && !disabled && !error && !editing;
|
|
18724
|
+
const bg = disabled ? "var(--cmp-chip-bg-disabled)" : error ? "var(--cmp-chip-bg-error)" : editing ? "var(--cmp-chip-bg-focus)" : colored ? `var(--cmp-chip-chip-${color}-bg)` : "var(--cmp-chip-bg-default)";
|
|
18725
|
+
const content = disabled ? "var(--cmp-chip-content-disabled)" : error ? "var(--cmp-chip-content-error)" : editing ? "var(--cmp-chip-content-focus)" : colored ? `var(--cmp-chip-chip-${color}-content)` : "var(--cmp-chip-content-default)";
|
|
18726
|
+
const borderColor = editing && !error ? "var(--cmp-chip-border-focus)" : colored ? `var(--cmp-chip-chip-${color}-border)` : "transparent";
|
|
18611
18727
|
return (
|
|
18612
18728
|
// 외곽 span 은 비상호작용 컨테이너다. 편집 진입 트리거는 값 텍스트의 실제 <button>
|
|
18613
18729
|
// 이 담당하고, remove 는 형제 <button> 으로 둔다 — role="button" 안에 버튼을 넣던
|
|
@@ -18963,8 +19079,8 @@ function SKeyValueTable({
|
|
|
18963
19079
|
const isLabelCol = [];
|
|
18964
19080
|
const labelColWidth = [];
|
|
18965
19081
|
let maxCols = 0;
|
|
18966
|
-
fields.forEach((row,
|
|
18967
|
-
const occupied = grid[
|
|
19082
|
+
fields.forEach((row, r3) => {
|
|
19083
|
+
const occupied = grid[r3];
|
|
18968
19084
|
let col = 0;
|
|
18969
19085
|
const skipOccupied = () => {
|
|
18970
19086
|
let sawThSupply = false;
|
|
@@ -18981,7 +19097,7 @@ function SKeyValueTable({
|
|
|
18981
19097
|
const tdColSpan = f.tdColSpan && f.tdColSpan > 1 ? f.tdColSpan : 1;
|
|
18982
19098
|
const thSuppliedAbove = skipOccupied();
|
|
18983
19099
|
const showTh = !f.hideTh && !thSuppliedAbove;
|
|
18984
|
-
showThAt[
|
|
19100
|
+
showThAt[r3][i] = showTh;
|
|
18985
19101
|
if (showTh) {
|
|
18986
19102
|
isLabelCol[col] = true;
|
|
18987
19103
|
if (thColSpan === 1 && f.thWidth != null && labelColWidth[col] == null)
|
|
@@ -18989,7 +19105,7 @@ function SKeyValueTable({
|
|
|
18989
19105
|
for (let dr = 1; dr < thRowSpan; dr++) {
|
|
18990
19106
|
const kind = dr >= tdRowSpan ? "th-supply" : "blocked";
|
|
18991
19107
|
for (let dc = 0; dc < thColSpan; dc++) {
|
|
18992
|
-
const target = grid[
|
|
19108
|
+
const target = grid[r3 + dr];
|
|
18993
19109
|
if (target) target[col + dc] = kind;
|
|
18994
19110
|
}
|
|
18995
19111
|
}
|
|
@@ -18998,7 +19114,7 @@ function SKeyValueTable({
|
|
|
18998
19114
|
skipOccupied();
|
|
18999
19115
|
for (let dr = 1; dr < tdRowSpan; dr++) {
|
|
19000
19116
|
for (let dc = 0; dc < tdColSpan; dc++) {
|
|
19001
|
-
const target = grid[
|
|
19117
|
+
const target = grid[r3 + dr];
|
|
19002
19118
|
if (target) target[col + dc] = "blocked";
|
|
19003
19119
|
}
|
|
19004
19120
|
}
|
|
@@ -19023,10 +19139,10 @@ function SKeyValueTable({
|
|
|
19023
19139
|
{ length: maxCols },
|
|
19024
19140
|
(_, i) => isLabelCol[i] ? /* @__PURE__ */ jsx("col", { style: { width: cssLen2(labelColWidth[i]) ?? "120px" } }, `col-${i}`) : /* @__PURE__ */ jsx("col", {}, `col-${i}`)
|
|
19025
19141
|
) }),
|
|
19026
|
-
/* @__PURE__ */ jsx("tbody", { children: fields.map((row,
|
|
19027
|
-
const cellBorder =
|
|
19142
|
+
/* @__PURE__ */ jsx("tbody", { children: fields.map((row, r3) => {
|
|
19143
|
+
const cellBorder = r3 === 0 ? "" : "border-t border-solid border-[color:var(--cmp-table-border-color)]";
|
|
19028
19144
|
return /* @__PURE__ */ jsx("tr", { children: row.map((f, c) => {
|
|
19029
|
-
const showTh = showThAt[
|
|
19145
|
+
const showTh = showThAt[r3][c];
|
|
19030
19146
|
const isReadOnlyCell = f.render == null && (f.type == null || f.type === "text");
|
|
19031
19147
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
19032
19148
|
showTh && /* @__PURE__ */ jsx(
|
|
@@ -19062,7 +19178,7 @@ function SKeyValueTable({
|
|
|
19062
19178
|
)
|
|
19063
19179
|
] })
|
|
19064
19180
|
},
|
|
19065
|
-
`th-${
|
|
19181
|
+
`th-${r3}-${c}`
|
|
19066
19182
|
),
|
|
19067
19183
|
/* @__PURE__ */ jsx(
|
|
19068
19184
|
"td",
|
|
@@ -19079,10 +19195,10 @@ function SKeyValueTable({
|
|
|
19079
19195
|
style: { height: cellHeight, paddingTop: cellPadY, paddingBottom: cellPadY },
|
|
19080
19196
|
children: renderField(f)
|
|
19081
19197
|
},
|
|
19082
|
-
`td-${
|
|
19198
|
+
`td-${r3}-${c}`
|
|
19083
19199
|
)
|
|
19084
|
-
] }, `${
|
|
19085
|
-
}) },
|
|
19200
|
+
] }, `${r3}-${c}`);
|
|
19201
|
+
}) }, r3);
|
|
19086
19202
|
}) })
|
|
19087
19203
|
]
|
|
19088
19204
|
}
|
|
@@ -19388,6 +19504,7 @@ function ChartTooltip({
|
|
|
19388
19504
|
anchor,
|
|
19389
19505
|
bounds,
|
|
19390
19506
|
gapX = DEFAULT_GAP_X,
|
|
19507
|
+
footer,
|
|
19391
19508
|
className
|
|
19392
19509
|
}) {
|
|
19393
19510
|
const { ref, size } = useElementSize();
|
|
@@ -19438,7 +19555,8 @@ function ChartTooltip({
|
|
|
19438
19555
|
]
|
|
19439
19556
|
},
|
|
19440
19557
|
`${item4.label}-${index}`
|
|
19441
|
-
))
|
|
19558
|
+
)),
|
|
19559
|
+
footer != null && footer !== false && /* @__PURE__ */ jsx("div", { children: footer })
|
|
19442
19560
|
]
|
|
19443
19561
|
}
|
|
19444
19562
|
);
|
|
@@ -19493,23 +19611,23 @@ function barOpacity(hoveredCategory, categoryIndex) {
|
|
|
19493
19611
|
return hoveredCategory === categoryIndex ? BAR_OPACITY_HOVER : BAR_OPACITY_DIMMED;
|
|
19494
19612
|
}
|
|
19495
19613
|
function barPath(x, y, width, height, direction, negative) {
|
|
19496
|
-
const
|
|
19497
|
-
if (
|
|
19614
|
+
const r3 = Math.max(0, Math.min(BAR_RADIUS, width / 2, height / 2));
|
|
19615
|
+
if (r3 === 0) return `M${x} ${y}h${width}v${height}h${-width}Z`;
|
|
19498
19616
|
if (direction === "vertical") {
|
|
19499
19617
|
return negative ? (
|
|
19500
19618
|
// 아래로 자란다 — 아래쪽 두 모서리가 둥글다
|
|
19501
|
-
`M${x} ${y}h${width}v${height -
|
|
19619
|
+
`M${x} ${y}h${width}v${height - r3}a${r3} ${r3} 0 0 1 ${-r3} ${r3}h${-(width - 2 * r3)}a${r3} ${r3} 0 0 1 ${-r3} ${-r3}Z`
|
|
19502
19620
|
) : (
|
|
19503
19621
|
// 위로 자란다 — 위쪽 두 모서리가 둥글다
|
|
19504
|
-
`M${x} ${y + height}v${-(height -
|
|
19622
|
+
`M${x} ${y + height}v${-(height - r3)}a${r3} ${r3} 0 0 1 ${r3} ${-r3}h${width - 2 * r3}a${r3} ${r3} 0 0 1 ${r3} ${r3}v${height - r3}Z`
|
|
19505
19623
|
);
|
|
19506
19624
|
}
|
|
19507
19625
|
return negative ? (
|
|
19508
19626
|
// 왼쪽으로 자란다
|
|
19509
|
-
`M${x + width} ${y}h${-(width -
|
|
19627
|
+
`M${x + width} ${y}h${-(width - r3)}a${r3} ${r3} 0 0 0 ${-r3} ${r3}v${height - 2 * r3}a${r3} ${r3} 0 0 0 ${r3} ${r3}h${width - r3}Z`
|
|
19510
19628
|
) : (
|
|
19511
19629
|
// 오른쪽으로 자란다
|
|
19512
|
-
`M${x} ${y}h${width -
|
|
19630
|
+
`M${x} ${y}h${width - r3}a${r3} ${r3} 0 0 1 ${r3} ${r3}v${height - 2 * r3}a${r3} ${r3} 0 0 1 ${-r3} ${r3}h${-(width - r3)}Z`
|
|
19513
19631
|
);
|
|
19514
19632
|
}
|
|
19515
19633
|
var SBarChart = /* @__PURE__ */ forwardRef(function SBarChart2({
|
|
@@ -19529,6 +19647,7 @@ var SBarChart = /* @__PURE__ */ forwardRef(function SBarChart2({
|
|
|
19529
19647
|
formatValue = defaultFormat,
|
|
19530
19648
|
height,
|
|
19531
19649
|
onBarClick,
|
|
19650
|
+
tooltipFooter,
|
|
19532
19651
|
className,
|
|
19533
19652
|
style
|
|
19534
19653
|
}, ref) {
|
|
@@ -19957,7 +20076,16 @@ var SBarChart = /* @__PURE__ */ forwardRef(function SBarChart2({
|
|
|
19957
20076
|
items: tooltipItems,
|
|
19958
20077
|
anchor: tooltipAnchor,
|
|
19959
20078
|
bounds: size,
|
|
19960
|
-
gapX: tooltipGapX
|
|
20079
|
+
gapX: tooltipGapX,
|
|
20080
|
+
footer: tooltipFooter?.({
|
|
20081
|
+
categoryIndex: hoveredCategory,
|
|
20082
|
+
name: categories[hoveredCategory] ?? "",
|
|
20083
|
+
points: series.flatMap((s, seriesIndex) => {
|
|
20084
|
+
const value = s.data[hoveredCategory];
|
|
20085
|
+
if (value == null || !Number.isFinite(value)) return [];
|
|
20086
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value }];
|
|
20087
|
+
})
|
|
20088
|
+
})
|
|
19961
20089
|
}
|
|
19962
20090
|
)
|
|
19963
20091
|
]
|
|
@@ -20019,7 +20147,8 @@ var POINT_HOVER_BG = "var(--cmp-chart-bg)";
|
|
|
20019
20147
|
var POINT_HOVER_EXTENT = POINT_HOVER_RADIUS + POINT_HOVER_BORDER_WIDTH / 2;
|
|
20020
20148
|
var BAND_MIN = 40;
|
|
20021
20149
|
var VALUE_LABEL_GAP2 = 6;
|
|
20022
|
-
var
|
|
20150
|
+
var AREA_OPACITY_TOP = "30%";
|
|
20151
|
+
var AREA_OPACITY_BOTTOM = "var(--opacity-005)";
|
|
20023
20152
|
var LINE_DATA_LABEL_COLOR = "var(--cmp-chart-bar-dataLabel-color-default)";
|
|
20024
20153
|
var LINE_DATA_LABEL_TYPO = "typo-body-sm-medium";
|
|
20025
20154
|
var LINE_DATA_LABEL_TYPO_HOVER = "typo-body-md-bold";
|
|
@@ -20115,6 +20244,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20115
20244
|
formatValue = defaultFormat2,
|
|
20116
20245
|
height,
|
|
20117
20246
|
onPointClick,
|
|
20247
|
+
tooltipFooter,
|
|
20118
20248
|
className,
|
|
20119
20249
|
style
|
|
20120
20250
|
}, ref) {
|
|
@@ -20122,6 +20252,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20122
20252
|
const { ref: plotRef, size } = useElementSize();
|
|
20123
20253
|
const { ref: axisTextRef, size: axisText } = useElementSize();
|
|
20124
20254
|
const { ref: axisSampleRef, size: axisSample } = useElementSize();
|
|
20255
|
+
const gradientId = useId();
|
|
20125
20256
|
const [hoveredCategory, setHoveredCategory] = useState(null);
|
|
20126
20257
|
const colorAt = useCallback(
|
|
20127
20258
|
(seriesIndex) => paletteColor(palette, seriesIndex, customColors),
|
|
@@ -20149,26 +20280,41 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20149
20280
|
),
|
|
20150
20281
|
[rows, tickCount, max]
|
|
20151
20282
|
);
|
|
20152
|
-
const
|
|
20153
|
-
const
|
|
20283
|
+
const count = categories.length;
|
|
20284
|
+
const step = count > 1 ? size.width / (count - 1) : 0;
|
|
20285
|
+
const xAt = useCallback(
|
|
20286
|
+
(index) => count > 1 ? index * step : size.width / 2,
|
|
20287
|
+
[count, step, size.width]
|
|
20288
|
+
);
|
|
20289
|
+
const cellOf = useCallback(
|
|
20290
|
+
(index) => count > 1 ? {
|
|
20291
|
+
left: Math.max(0, xAt(index) - step / 2),
|
|
20292
|
+
right: Math.min(size.width, xAt(index) + step / 2)
|
|
20293
|
+
} : { left: 0, right: size.width },
|
|
20294
|
+
[count, step, xAt, size.width]
|
|
20295
|
+
);
|
|
20296
|
+
const edgeOf = useCallback(
|
|
20297
|
+
(index) => count > 1 && index === 0 ? "start" : count > 1 && index === count - 1 ? "end" : null,
|
|
20298
|
+
[count]
|
|
20299
|
+
);
|
|
20300
|
+
const minPlotWidth = categories.length * BAND_MIN;
|
|
20154
20301
|
const totalHeight = height ?? 320;
|
|
20155
20302
|
const plotHeight = typeof totalHeight === "number" ? Math.max(0, totalHeight - axisText.height) : `calc(${totalHeight} - ${axisText.height}px)`;
|
|
20156
20303
|
const plotted = useMemo(() => {
|
|
20157
20304
|
if (size.width <= 0 || size.height <= 0) return [];
|
|
20158
|
-
const xOf = (index) => AXIS_EDGE_PADDING + (index + 0.5) * band;
|
|
20159
20305
|
const yOf = (value) => size.height - ratioOf(value, scale) * size.height;
|
|
20160
20306
|
return rows.map(
|
|
20161
20307
|
(row) => row.map(
|
|
20162
|
-
(point, categoryIndex) => point == null ? null : { x:
|
|
20308
|
+
(point, categoryIndex) => point == null ? null : { x: xAt(categoryIndex), y: yOf(point.value), baseY: yOf(point.base), own: point.own }
|
|
20163
20309
|
)
|
|
20164
20310
|
);
|
|
20165
|
-
}, [rows, size.width, size.height,
|
|
20311
|
+
}, [rows, size.width, size.height, xAt, scale]);
|
|
20166
20312
|
const legend = showLegend ? /* @__PURE__ */ jsx(ChartLegend, { items: series.map((s, i) => ({ name: s.name, color: colorAt(i) })) }) : null;
|
|
20167
20313
|
const handleMove = (event) => {
|
|
20168
|
-
if (!showTooltip ||
|
|
20314
|
+
if (!showTooltip || count === 0 || size.width <= 0 || series.length === 0) return;
|
|
20169
20315
|
const rect = event.currentTarget.getBoundingClientRect();
|
|
20170
|
-
const along = event.clientX - rect.left
|
|
20171
|
-
const category = Math.
|
|
20316
|
+
const along = event.clientX - rect.left;
|
|
20317
|
+
const category = count > 1 ? Math.round(along / step) : 0;
|
|
20172
20318
|
setHoveredCategory(category >= 0 && category < categories.length ? category : null);
|
|
20173
20319
|
};
|
|
20174
20320
|
const tooltipItems = hoveredCategory == null ? [] : rows.flatMap((row, seriesIndex) => {
|
|
@@ -20194,10 +20340,9 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20194
20340
|
const { ref: valueLabelRef, metrics: valueLabel } = useSvgTextMetrics();
|
|
20195
20341
|
const tooltipAnchor = useMemo(() => {
|
|
20196
20342
|
if (hoveredCategory == null || anchorTop == null) return null;
|
|
20197
|
-
const left = AXIS_EDGE_PADDING + hoveredCategory * band;
|
|
20198
20343
|
const top = showValueLabel ? anchorTop - POINT_RADIUS - VALUE_LABEL_GAP2 + valueLabel.top : anchorTop - POINT_HOVER_EXTENT;
|
|
20199
|
-
return {
|
|
20200
|
-
}, [hoveredCategory, anchorTop,
|
|
20344
|
+
return { ...cellOf(hoveredCategory), top };
|
|
20345
|
+
}, [hoveredCategory, anchorTop, cellOf, showValueLabel, valueLabel.top]);
|
|
20201
20346
|
const categoryLabels = /* @__PURE__ */ jsxs(
|
|
20202
20347
|
"div",
|
|
20203
20348
|
{
|
|
@@ -20208,8 +20353,11 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20208
20353
|
categories.map((label, index) => /* @__PURE__ */ jsx(
|
|
20209
20354
|
"span",
|
|
20210
20355
|
{
|
|
20211
|
-
className:
|
|
20212
|
-
|
|
20356
|
+
className: cn(
|
|
20357
|
+
"absolute top-0 whitespace-nowrap",
|
|
20358
|
+
edgeOf(index) === "start" ? "translate-x-0" : edgeOf(index) === "end" ? "-translate-x-full" : "-translate-x-1/2"
|
|
20359
|
+
),
|
|
20360
|
+
style: { left: xAt(index) },
|
|
20213
20361
|
children: label
|
|
20214
20362
|
},
|
|
20215
20363
|
`${label}-${index}`
|
|
@@ -20233,13 +20381,43 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20233
20381
|
{
|
|
20234
20382
|
"aria-hidden": true,
|
|
20235
20383
|
d,
|
|
20236
|
-
style: { fill:
|
|
20384
|
+
style: { fill: `url(#${gradientId}-area-${seriesIndex})` }
|
|
20237
20385
|
},
|
|
20238
20386
|
`area-${seriesIndex}-${runIndex}`
|
|
20239
20387
|
);
|
|
20240
20388
|
})
|
|
20241
20389
|
);
|
|
20242
|
-
}, [area, plotted, smooth,
|
|
20390
|
+
}, [area, plotted, smooth, gradientId]);
|
|
20391
|
+
const areaGradients = useMemo(() => {
|
|
20392
|
+
if (!area) return null;
|
|
20393
|
+
return /* @__PURE__ */ jsx("defs", { children: plotted.map((_, seriesIndex) => /* @__PURE__ */ jsxs(
|
|
20394
|
+
"linearGradient",
|
|
20395
|
+
{
|
|
20396
|
+
id: `${gradientId}-area-${seriesIndex}`,
|
|
20397
|
+
x1: "0",
|
|
20398
|
+
y1: "0",
|
|
20399
|
+
x2: "0",
|
|
20400
|
+
y2: "1",
|
|
20401
|
+
children: [
|
|
20402
|
+
/* @__PURE__ */ jsx(
|
|
20403
|
+
"stop",
|
|
20404
|
+
{
|
|
20405
|
+
offset: "0",
|
|
20406
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_TOP }
|
|
20407
|
+
}
|
|
20408
|
+
),
|
|
20409
|
+
/* @__PURE__ */ jsx(
|
|
20410
|
+
"stop",
|
|
20411
|
+
{
|
|
20412
|
+
offset: "1",
|
|
20413
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_BOTTOM }
|
|
20414
|
+
}
|
|
20415
|
+
)
|
|
20416
|
+
]
|
|
20417
|
+
},
|
|
20418
|
+
`area-gradient-${seriesIndex}`
|
|
20419
|
+
)) });
|
|
20420
|
+
}, [area, plotted, colorAt, gradientId]);
|
|
20243
20421
|
const lines = useMemo(
|
|
20244
20422
|
() => plotted.flatMap(
|
|
20245
20423
|
(row, seriesIndex) => runsOf(row).map((run, runIndex) => {
|
|
@@ -20319,7 +20497,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20319
20497
|
y: point.y - POINT_RADIUS - VALUE_LABEL_GAP2,
|
|
20320
20498
|
className: hoveredCategory === categoryIndex ? LINE_DATA_LABEL_TYPO_HOVER : LINE_DATA_LABEL_TYPO,
|
|
20321
20499
|
style: { fill: LINE_DATA_LABEL_COLOR },
|
|
20322
|
-
textAnchor: "middle",
|
|
20500
|
+
textAnchor: edgeOf(categoryIndex) === "start" ? "start" : edgeOf(categoryIndex) === "end" ? "end" : "middle",
|
|
20323
20501
|
dominantBaseline: "auto",
|
|
20324
20502
|
children: formatValue(point.own)
|
|
20325
20503
|
},
|
|
@@ -20327,7 +20505,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20327
20505
|
)
|
|
20328
20506
|
)
|
|
20329
20507
|
) : [],
|
|
20330
|
-
[showValueLabel, plotted, hoveredCategory, formatValue]
|
|
20508
|
+
[showValueLabel, plotted, hoveredCategory, formatValue, edgeOf]
|
|
20331
20509
|
);
|
|
20332
20510
|
const inset = { paddingTop: axisSample.height / 2, paddingBottom: axisSample.height / 2 };
|
|
20333
20511
|
return /* @__PURE__ */ jsx(
|
|
@@ -20357,95 +20535,385 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
|
|
|
20357
20535
|
sampleRef: axisSampleRef
|
|
20358
20536
|
}
|
|
20359
20537
|
) }),
|
|
20360
|
-
/* @__PURE__ */ jsxs(
|
|
20361
|
-
|
|
20362
|
-
|
|
20363
|
-
|
|
20364
|
-
|
|
20365
|
-
|
|
20366
|
-
|
|
20538
|
+
/* @__PURE__ */ jsxs(
|
|
20539
|
+
"div",
|
|
20540
|
+
{
|
|
20541
|
+
className: "min-w-0 overflow-x-auto",
|
|
20542
|
+
style: { marginInline: -POINT_HOVER_EXTENT, paddingInline: POINT_HOVER_EXTENT },
|
|
20543
|
+
children: [
|
|
20544
|
+
/* @__PURE__ */ jsx(
|
|
20367
20545
|
"div",
|
|
20368
20546
|
{
|
|
20369
|
-
|
|
20370
|
-
|
|
20371
|
-
|
|
20372
|
-
|
|
20373
|
-
|
|
20374
|
-
|
|
20375
|
-
"
|
|
20376
|
-
|
|
20377
|
-
|
|
20378
|
-
|
|
20379
|
-
|
|
20380
|
-
|
|
20381
|
-
|
|
20382
|
-
|
|
20383
|
-
|
|
20384
|
-
|
|
20385
|
-
|
|
20386
|
-
|
|
20387
|
-
|
|
20388
|
-
|
|
20389
|
-
|
|
20390
|
-
|
|
20391
|
-
|
|
20392
|
-
|
|
20393
|
-
|
|
20394
|
-
|
|
20395
|
-
|
|
20396
|
-
|
|
20397
|
-
|
|
20398
|
-
|
|
20399
|
-
|
|
20400
|
-
|
|
20401
|
-
|
|
20402
|
-
|
|
20403
|
-
|
|
20404
|
-
|
|
20405
|
-
|
|
20406
|
-
|
|
20407
|
-
|
|
20408
|
-
|
|
20409
|
-
|
|
20410
|
-
|
|
20411
|
-
|
|
20412
|
-
|
|
20413
|
-
|
|
20414
|
-
|
|
20415
|
-
|
|
20416
|
-
|
|
20417
|
-
|
|
20418
|
-
|
|
20419
|
-
|
|
20420
|
-
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
20424
|
-
|
|
20425
|
-
|
|
20426
|
-
|
|
20427
|
-
|
|
20428
|
-
|
|
20429
|
-
|
|
20430
|
-
|
|
20431
|
-
|
|
20432
|
-
|
|
20433
|
-
|
|
20434
|
-
|
|
20435
|
-
|
|
20436
|
-
|
|
20547
|
+
className: "relative min-w-0",
|
|
20548
|
+
style: { height: plotHeight, minWidth: minPlotWidth || void 0, ...inset },
|
|
20549
|
+
children: /* @__PURE__ */ jsxs(
|
|
20550
|
+
"div",
|
|
20551
|
+
{
|
|
20552
|
+
ref: plotRef,
|
|
20553
|
+
className: "relative h-full w-full",
|
|
20554
|
+
onMouseMove: handleMove,
|
|
20555
|
+
onMouseLeave: () => setHoveredCategory(null),
|
|
20556
|
+
children: [
|
|
20557
|
+
size.width > 0 && size.height > 0 && /* @__PURE__ */ jsxs(
|
|
20558
|
+
"svg",
|
|
20559
|
+
{
|
|
20560
|
+
width: size.width,
|
|
20561
|
+
height: size.height,
|
|
20562
|
+
overflow: "visible",
|
|
20563
|
+
role: "img",
|
|
20564
|
+
"aria-label": `${categories.length}\uAC1C \uD56D\uBAA9, ${series.length}\uAC1C \uACC4\uC5F4 ${stacked ? "\uB204\uC801 " : ""}\uAEBE\uC740\uC120 \uADF8\uB798\uD504`,
|
|
20565
|
+
children: [
|
|
20566
|
+
/* @__PURE__ */ jsx(
|
|
20567
|
+
"text",
|
|
20568
|
+
{
|
|
20569
|
+
ref: valueLabelRef,
|
|
20570
|
+
"aria-hidden": true,
|
|
20571
|
+
x: 0,
|
|
20572
|
+
y: 0,
|
|
20573
|
+
className: LINE_DATA_LABEL_TYPO_HOVER,
|
|
20574
|
+
dominantBaseline: "auto",
|
|
20575
|
+
style: { visibility: "hidden" },
|
|
20576
|
+
children: "0"
|
|
20577
|
+
}
|
|
20578
|
+
),
|
|
20579
|
+
/* @__PURE__ */ jsx(
|
|
20580
|
+
ChartGrid,
|
|
20581
|
+
{
|
|
20582
|
+
scale,
|
|
20583
|
+
direction: "vertical",
|
|
20584
|
+
width: size.width,
|
|
20585
|
+
height: size.height
|
|
20586
|
+
}
|
|
20587
|
+
),
|
|
20588
|
+
hoveredCategory != null && /* @__PURE__ */ jsx(
|
|
20589
|
+
"rect",
|
|
20590
|
+
{
|
|
20591
|
+
"aria-hidden": true,
|
|
20592
|
+
x: cellOf(hoveredCategory).left,
|
|
20593
|
+
y: 0,
|
|
20594
|
+
width: cellOf(hoveredCategory).right - cellOf(hoveredCategory).left,
|
|
20595
|
+
height: size.height,
|
|
20596
|
+
style: {
|
|
20597
|
+
fill: "var(--cmp-chart-barContainer-hover-bg)",
|
|
20598
|
+
fillOpacity: "var(--cmp-chart-barContainer-hover-opacity)"
|
|
20599
|
+
}
|
|
20600
|
+
}
|
|
20601
|
+
),
|
|
20602
|
+
areaGradients,
|
|
20603
|
+
areas,
|
|
20604
|
+
lines,
|
|
20605
|
+
pointHalos,
|
|
20606
|
+
pointDots,
|
|
20607
|
+
valueLabels
|
|
20608
|
+
]
|
|
20609
|
+
}
|
|
20610
|
+
),
|
|
20611
|
+
showTooltip && hoveredCategory != null && tooltipAnchor != null && tooltipItems.length > 0 && /* @__PURE__ */ jsx(
|
|
20612
|
+
ChartTooltip,
|
|
20613
|
+
{
|
|
20614
|
+
title: categories[hoveredCategory] ?? "",
|
|
20615
|
+
items: tooltipItems,
|
|
20616
|
+
anchor: tooltipAnchor,
|
|
20617
|
+
bounds: size,
|
|
20618
|
+
gapX: { after: -4, before: -4 },
|
|
20619
|
+
footer: tooltipFooter?.({
|
|
20620
|
+
categoryIndex: hoveredCategory,
|
|
20621
|
+
name: categories[hoveredCategory] ?? "",
|
|
20622
|
+
points: rows.flatMap((row, seriesIndex) => {
|
|
20623
|
+
const point = row[hoveredCategory];
|
|
20624
|
+
if (point == null) return [];
|
|
20625
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value: point.own }];
|
|
20626
|
+
})
|
|
20627
|
+
})
|
|
20628
|
+
}
|
|
20629
|
+
)
|
|
20630
|
+
]
|
|
20631
|
+
}
|
|
20632
|
+
)
|
|
20437
20633
|
}
|
|
20438
|
-
)
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
|
|
20442
|
-
|
|
20634
|
+
),
|
|
20635
|
+
/* @__PURE__ */ jsx("div", { ref: axisTextRef, children: categoryLabels })
|
|
20636
|
+
]
|
|
20637
|
+
}
|
|
20638
|
+
)
|
|
20443
20639
|
]
|
|
20444
20640
|
}
|
|
20445
20641
|
)
|
|
20446
20642
|
}
|
|
20447
20643
|
);
|
|
20448
20644
|
});
|
|
20645
|
+
var DONUT_INNER_RATIO = 0.4;
|
|
20646
|
+
var LABEL_MIN_RATIO = 0.05;
|
|
20647
|
+
var PIE_LABEL_RADIUS_RATIO = 0.65;
|
|
20648
|
+
var HOVER_GROW = 4;
|
|
20649
|
+
var HOVER_CORNER = 2;
|
|
20650
|
+
var OPACITY_DEFAULT = "var(--cmp-chart-bar-opacity-default)";
|
|
20651
|
+
var OPACITY_DIMMED = "var(--cmp-chart-bar-opacity-dimmed)";
|
|
20652
|
+
var OPACITY_HOVER = 1;
|
|
20653
|
+
var defaultFormat3 = (value) => value.toLocaleString();
|
|
20654
|
+
function formatRatio(ratio) {
|
|
20655
|
+
if (ratio > 0 && ratio < 0.01) return "<1%";
|
|
20656
|
+
return `${Math.round(ratio * 100)}%`;
|
|
20657
|
+
}
|
|
20658
|
+
var r2 = (value) => Math.round(value * 100) / 100;
|
|
20659
|
+
function polar(center, radius, angle) {
|
|
20660
|
+
return { x: center + radius * Math.sin(angle), y: center - radius * Math.cos(angle) };
|
|
20661
|
+
}
|
|
20662
|
+
var arc = (radius, large, sweep, p) => `A${r2(radius)} ${r2(radius)} 0 ${large} ${sweep} ${r2(p.x)} ${r2(p.y)}`;
|
|
20663
|
+
function fitCorner(corner, outer, inner, span) {
|
|
20664
|
+
if (corner <= 0 || outer <= 0) return 0;
|
|
20665
|
+
let fitted = Math.min(corner, (outer - inner) / 2);
|
|
20666
|
+
if (span < Math.PI) {
|
|
20667
|
+
const half = Math.sin(span / 2);
|
|
20668
|
+
fitted = Math.min(fitted, outer * half / (1 + half));
|
|
20669
|
+
if (inner > 0) fitted = Math.min(fitted, inner * half / (1 - half));
|
|
20670
|
+
}
|
|
20671
|
+
return fitted >= 0.5 ? fitted : 0;
|
|
20672
|
+
}
|
|
20673
|
+
function slicePath(center, outer, inner, start, end, corner = 0) {
|
|
20674
|
+
if (end - start >= Math.PI * 2 - 1e-6) {
|
|
20675
|
+
const ring = (radius) => `M${r2(center - radius)} ${r2(center)}A${r2(radius)} ${r2(radius)} 0 1 1 ${r2(center + radius)} ${r2(center)}A${r2(radius)} ${r2(radius)} 0 1 1 ${r2(center - radius)} ${r2(center)}Z`;
|
|
20676
|
+
return inner > 0 ? ring(outer) + ring(inner) : ring(outer);
|
|
20677
|
+
}
|
|
20678
|
+
const span = end - start;
|
|
20679
|
+
const round = fitCorner(corner, outer, inner, span);
|
|
20680
|
+
const outerLine = Math.sqrt(Math.max(outer * outer - 2 * outer * round, 0));
|
|
20681
|
+
const outerPhi = round > 0 ? Math.asin(round / (outer - round)) : 0;
|
|
20682
|
+
const outerLarge = span - 2 * outerPhi > Math.PI ? 1 : 0;
|
|
20683
|
+
const o0 = polar(center, outerLine, start);
|
|
20684
|
+
let d = `M${r2(o0.x)} ${r2(o0.y)}`;
|
|
20685
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outer, start + outerPhi));
|
|
20686
|
+
d += arc(outer, outerLarge, 1, polar(center, outer, end - outerPhi));
|
|
20687
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outerLine, end));
|
|
20688
|
+
if (inner <= 0) return `${d}L${r2(center)} ${r2(center)}Z`;
|
|
20689
|
+
const innerLine = Math.sqrt(inner * inner + 2 * inner * round);
|
|
20690
|
+
const innerPhi = round > 0 ? Math.asin(round / (inner + round)) : 0;
|
|
20691
|
+
const innerLarge = span - 2 * innerPhi > Math.PI ? 1 : 0;
|
|
20692
|
+
const i0 = polar(center, innerLine, end);
|
|
20693
|
+
d += `L${r2(i0.x)} ${r2(i0.y)}`;
|
|
20694
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, inner, end - innerPhi));
|
|
20695
|
+
d += arc(inner, innerLarge, 0, polar(center, inner, start + innerPhi));
|
|
20696
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, innerLine, start));
|
|
20697
|
+
return `${d}Z`;
|
|
20698
|
+
}
|
|
20699
|
+
var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
|
|
20700
|
+
data,
|
|
20701
|
+
palette = "multi",
|
|
20702
|
+
colors,
|
|
20703
|
+
showValueLabel = false,
|
|
20704
|
+
showLegend = true,
|
|
20705
|
+
legendPosition = "top",
|
|
20706
|
+
showTooltip = true,
|
|
20707
|
+
formatValue = defaultFormat3,
|
|
20708
|
+
onSliceClick,
|
|
20709
|
+
tooltipFooter,
|
|
20710
|
+
className,
|
|
20711
|
+
style,
|
|
20712
|
+
innerRatio,
|
|
20713
|
+
kind
|
|
20714
|
+
}, ref) {
|
|
20715
|
+
const { ref: plotRef, size } = useElementSize();
|
|
20716
|
+
const [hovered, setHovered] = useState(null);
|
|
20717
|
+
const arcs = useMemo(() => {
|
|
20718
|
+
const effective = palette === "custom" && !colors?.length ? "multi" : palette;
|
|
20719
|
+
const valid = data.map((slice2, index) => ({ ...slice2, index })).filter((slice2) => Number.isFinite(slice2.value) && slice2.value > 0);
|
|
20720
|
+
const sum = valid.reduce((acc, slice2) => acc + slice2.value, 0);
|
|
20721
|
+
let angle = 0;
|
|
20722
|
+
const list = valid.map((slice2) => {
|
|
20723
|
+
const ratio = slice2.value / sum;
|
|
20724
|
+
const start = angle;
|
|
20725
|
+
angle += ratio * Math.PI * 2;
|
|
20726
|
+
return {
|
|
20727
|
+
index: slice2.index,
|
|
20728
|
+
name: slice2.name,
|
|
20729
|
+
value: slice2.value,
|
|
20730
|
+
ratio,
|
|
20731
|
+
start,
|
|
20732
|
+
end: angle,
|
|
20733
|
+
color: paletteColor(effective, slice2.index, colors)
|
|
20734
|
+
};
|
|
20735
|
+
});
|
|
20736
|
+
return list;
|
|
20737
|
+
}, [data, palette, colors]);
|
|
20738
|
+
const diameter = size.width;
|
|
20739
|
+
const center = diameter / 2;
|
|
20740
|
+
const outer = Math.max(center - HOVER_GROW, 0);
|
|
20741
|
+
const inner = outer * innerRatio;
|
|
20742
|
+
const hoveredArc = arcs.find((arc2) => arc2.index === hovered) ?? null;
|
|
20743
|
+
const legend = showLegend ? /* @__PURE__ */ jsx(
|
|
20744
|
+
ChartLegend,
|
|
20745
|
+
{
|
|
20746
|
+
items: arcs.map((arc2) => ({ name: arc2.name, color: arc2.color })),
|
|
20747
|
+
activeIndex: hoveredArc ? arcs.indexOf(hoveredArc) : null
|
|
20748
|
+
}
|
|
20749
|
+
) : null;
|
|
20750
|
+
const tooltipAnchor = useMemo(() => {
|
|
20751
|
+
if (!hoveredArc || diameter <= 0) return null;
|
|
20752
|
+
const mid = (hoveredArc.start + hoveredArc.end) / 2;
|
|
20753
|
+
const point = polar(center, (outer + inner) / 2, mid);
|
|
20754
|
+
return { left: point.x, right: point.x, top: point.y };
|
|
20755
|
+
}, [hoveredArc, diameter, center, outer, inner]);
|
|
20756
|
+
const labelRadius = inner > 0 ? (outer + inner) / 2 : outer * PIE_LABEL_RADIUS_RATIO;
|
|
20757
|
+
const slice = (target) => {
|
|
20758
|
+
const picked = hovered === target.index;
|
|
20759
|
+
return slicePath(
|
|
20760
|
+
center,
|
|
20761
|
+
picked ? outer + HOVER_GROW : outer,
|
|
20762
|
+
picked ? Math.max(inner - HOVER_GROW, 0) : inner,
|
|
20763
|
+
target.start,
|
|
20764
|
+
target.end,
|
|
20765
|
+
picked ? HOVER_CORNER : 0
|
|
20766
|
+
);
|
|
20767
|
+
};
|
|
20768
|
+
return /* @__PURE__ */ jsx(
|
|
20769
|
+
ChartFrame,
|
|
20770
|
+
{
|
|
20771
|
+
ref,
|
|
20772
|
+
legend,
|
|
20773
|
+
legendPosition,
|
|
20774
|
+
className,
|
|
20775
|
+
style,
|
|
20776
|
+
children: /* @__PURE__ */ jsxs("div", { ref: plotRef, className: "relative aspect-square w-full", children: [
|
|
20777
|
+
diameter > 0 && /* @__PURE__ */ jsxs(
|
|
20778
|
+
"svg",
|
|
20779
|
+
{
|
|
20780
|
+
width: diameter,
|
|
20781
|
+
height: diameter,
|
|
20782
|
+
role: "img",
|
|
20783
|
+
"aria-label": `${arcs.length}\uAC1C \uD56D\uBAA9 ${kind}`,
|
|
20784
|
+
onMouseLeave: () => setHovered(null),
|
|
20785
|
+
children: [
|
|
20786
|
+
arcs.length === 0 ? (
|
|
20787
|
+
// 그릴 값이 없어도 자리는 남긴다 — 차트가 사라지면 화면이 무너진 것처럼 보인다.
|
|
20788
|
+
/* @__PURE__ */ jsx(
|
|
20789
|
+
"path",
|
|
20790
|
+
{
|
|
20791
|
+
"aria-hidden": true,
|
|
20792
|
+
d: slicePath(center, outer, inner, 0, Math.PI * 2),
|
|
20793
|
+
fillRule: "evenodd",
|
|
20794
|
+
style: { fill: "var(--cmp-chart-grid-line-color)" }
|
|
20795
|
+
}
|
|
20796
|
+
)
|
|
20797
|
+
) : arcs.map((arc2) => {
|
|
20798
|
+
const opacity = hovered == null ? OPACITY_DEFAULT : hovered === arc2.index ? OPACITY_HOVER : OPACITY_DIMMED;
|
|
20799
|
+
return /* @__PURE__ */ jsx(
|
|
20800
|
+
"path",
|
|
20801
|
+
{
|
|
20802
|
+
d: slice(arc2),
|
|
20803
|
+
fillRule: "evenodd",
|
|
20804
|
+
className: "transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20805
|
+
style: {
|
|
20806
|
+
fill: arc2.color,
|
|
20807
|
+
opacity,
|
|
20808
|
+
cursor: onSliceClick ? "pointer" : void 0
|
|
20809
|
+
},
|
|
20810
|
+
onMouseEnter: () => setHovered(arc2.index),
|
|
20811
|
+
onClick: onSliceClick ? () => onSliceClick({
|
|
20812
|
+
index: arc2.index,
|
|
20813
|
+
name: arc2.name,
|
|
20814
|
+
value: arc2.value,
|
|
20815
|
+
ratio: arc2.ratio
|
|
20816
|
+
}) : void 0,
|
|
20817
|
+
children: /* @__PURE__ */ jsx("title", { children: `${arc2.name} ${formatValue(arc2.value)} (${formatRatio(arc2.ratio)})` })
|
|
20818
|
+
},
|
|
20819
|
+
`slice-${arc2.index}`
|
|
20820
|
+
);
|
|
20821
|
+
}),
|
|
20822
|
+
showValueLabel && arcs.map((arc2) => {
|
|
20823
|
+
if (arc2.ratio < LABEL_MIN_RATIO) return null;
|
|
20824
|
+
const point = polar(center, labelRadius, (arc2.start + arc2.end) / 2);
|
|
20825
|
+
return /* @__PURE__ */ jsx(
|
|
20826
|
+
"text",
|
|
20827
|
+
{
|
|
20828
|
+
"aria-hidden": true,
|
|
20829
|
+
x: point.x,
|
|
20830
|
+
y: point.y,
|
|
20831
|
+
textAnchor: "middle",
|
|
20832
|
+
dominantBaseline: "central",
|
|
20833
|
+
className: "pointer-events-none typo-body-sm-bold transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20834
|
+
style: {
|
|
20835
|
+
fill: "var(--sys-color-fg-inverse)",
|
|
20836
|
+
opacity: hovered != null && hovered !== arc2.index ? OPACITY_DIMMED : void 0
|
|
20837
|
+
},
|
|
20838
|
+
children: formatRatio(arc2.ratio)
|
|
20839
|
+
},
|
|
20840
|
+
`label-${arc2.index}`
|
|
20841
|
+
);
|
|
20842
|
+
})
|
|
20843
|
+
]
|
|
20844
|
+
}
|
|
20845
|
+
),
|
|
20846
|
+
showTooltip && hoveredArc && tooltipAnchor && /* @__PURE__ */ jsx(
|
|
20847
|
+
ChartTooltip,
|
|
20848
|
+
{
|
|
20849
|
+
title: hoveredArc.name,
|
|
20850
|
+
items: [
|
|
20851
|
+
{
|
|
20852
|
+
color: hoveredArc.color,
|
|
20853
|
+
label: formatValue(hoveredArc.value),
|
|
20854
|
+
value: formatRatio(hoveredArc.ratio)
|
|
20855
|
+
}
|
|
20856
|
+
],
|
|
20857
|
+
anchor: tooltipAnchor,
|
|
20858
|
+
bounds: size,
|
|
20859
|
+
footer: tooltipFooter?.({
|
|
20860
|
+
index: hoveredArc.index,
|
|
20861
|
+
name: hoveredArc.name,
|
|
20862
|
+
value: hoveredArc.value,
|
|
20863
|
+
ratio: hoveredArc.ratio
|
|
20864
|
+
})
|
|
20865
|
+
}
|
|
20866
|
+
)
|
|
20867
|
+
] })
|
|
20868
|
+
}
|
|
20869
|
+
);
|
|
20870
|
+
});
|
|
20871
|
+
var SPieChart = /* @__PURE__ */ forwardRef(function SPieChart2({
|
|
20872
|
+
palette = "multi",
|
|
20873
|
+
showValueLabel = false,
|
|
20874
|
+
showLegend = true,
|
|
20875
|
+
legendPosition = "top",
|
|
20876
|
+
showTooltip = true,
|
|
20877
|
+
...props
|
|
20878
|
+
}, ref) {
|
|
20879
|
+
return /* @__PURE__ */ jsx(
|
|
20880
|
+
RadialChart,
|
|
20881
|
+
{
|
|
20882
|
+
ref,
|
|
20883
|
+
...props,
|
|
20884
|
+
palette,
|
|
20885
|
+
showValueLabel,
|
|
20886
|
+
showLegend,
|
|
20887
|
+
legendPosition,
|
|
20888
|
+
showTooltip,
|
|
20889
|
+
innerRatio: 0,
|
|
20890
|
+
kind: "\uD30C\uC774 \uADF8\uB798\uD504"
|
|
20891
|
+
}
|
|
20892
|
+
);
|
|
20893
|
+
});
|
|
20894
|
+
var SDonutChart = /* @__PURE__ */ forwardRef(function SDonutChart2({
|
|
20895
|
+
palette = "multi",
|
|
20896
|
+
showValueLabel = false,
|
|
20897
|
+
showLegend = true,
|
|
20898
|
+
legendPosition = "top",
|
|
20899
|
+
showTooltip = true,
|
|
20900
|
+
...props
|
|
20901
|
+
}, ref) {
|
|
20902
|
+
return /* @__PURE__ */ jsx(
|
|
20903
|
+
RadialChart,
|
|
20904
|
+
{
|
|
20905
|
+
ref,
|
|
20906
|
+
...props,
|
|
20907
|
+
palette,
|
|
20908
|
+
showValueLabel,
|
|
20909
|
+
showLegend,
|
|
20910
|
+
legendPosition,
|
|
20911
|
+
showTooltip,
|
|
20912
|
+
innerRatio: DONUT_INNER_RATIO,
|
|
20913
|
+
kind: "\uB3C4\uB11B \uADF8\uB798\uD504"
|
|
20914
|
+
}
|
|
20915
|
+
);
|
|
20916
|
+
});
|
|
20449
20917
|
var BUTTON_STYLE = {
|
|
20450
20918
|
default: { color: "secondary" },
|
|
20451
20919
|
danger: { color: "danger", outline: true },
|
|
@@ -21728,7 +22196,7 @@ var PaletteItem = ({
|
|
|
21728
22196
|
className,
|
|
21729
22197
|
onSelect,
|
|
21730
22198
|
children
|
|
21731
|
-
}) => asMenu ? /* @__PURE__ */ jsx(
|
|
22199
|
+
}) => asMenu ? /* @__PURE__ */ jsx(RDropdown5.Item, { title: label, "aria-label": label, className, onSelect, children }) : /* @__PURE__ */ jsx("button", { type: "button", title: label, "aria-label": label, className, onClick: onSelect, children });
|
|
21732
22200
|
var ColorPalette = ({
|
|
21733
22201
|
colors,
|
|
21734
22202
|
columns,
|
|
@@ -21814,14 +22282,14 @@ var TableSizePicker = ({
|
|
|
21814
22282
|
onPick(size.rows, size.cols);
|
|
21815
22283
|
}
|
|
21816
22284
|
},
|
|
21817
|
-
children: Array.from({ length: TABLE_PICKER_ROWS }, (_,
|
|
21818
|
-
const on =
|
|
22285
|
+
children: Array.from({ length: TABLE_PICKER_ROWS }, (_, r3) => /* @__PURE__ */ jsx("div", { role: "row", className: "flex", style: { gap: TABLE_PICKER_GAP }, children: Array.from({ length: TABLE_PICKER_COLS }, (_2, c) => {
|
|
22286
|
+
const on = r3 < size.rows && c < size.cols;
|
|
21819
22287
|
return /* @__PURE__ */ jsx(
|
|
21820
22288
|
"button",
|
|
21821
22289
|
{
|
|
21822
22290
|
type: "button",
|
|
21823
22291
|
role: "gridcell",
|
|
21824
|
-
"aria-label": `${
|
|
22292
|
+
"aria-label": `${r3 + 1}\uD589 ${c + 1}\uC5F4`,
|
|
21825
22293
|
"aria-selected": on,
|
|
21826
22294
|
tabIndex: -1,
|
|
21827
22295
|
className: "box-border cursor-pointer rounded-[3px] border border-solid p-0 outline-none",
|
|
@@ -21831,13 +22299,13 @@ var TableSizePicker = ({
|
|
|
21831
22299
|
borderColor: on ? "var(--sys-color-bg-accent)" : "var(--sys-color-border-default)",
|
|
21832
22300
|
background: on ? "var(--color-bg-accentFaint)" : "transparent"
|
|
21833
22301
|
},
|
|
21834
|
-
onMouseEnter: () => setSize({ rows:
|
|
21835
|
-
onFocus: () => setSize({ rows:
|
|
21836
|
-
onClick: () => onPick(
|
|
22302
|
+
onMouseEnter: () => setSize({ rows: r3 + 1, cols: c + 1 }),
|
|
22303
|
+
onFocus: () => setSize({ rows: r3 + 1, cols: c + 1 }),
|
|
22304
|
+
onClick: () => onPick(r3 + 1, c + 1)
|
|
21837
22305
|
},
|
|
21838
22306
|
c
|
|
21839
22307
|
);
|
|
21840
|
-
}) },
|
|
22308
|
+
}) }, r3))
|
|
21841
22309
|
}
|
|
21842
22310
|
),
|
|
21843
22311
|
/* @__PURE__ */ jsxs(
|
|
@@ -21860,7 +22328,7 @@ var TableMenuItem = ({
|
|
|
21860
22328
|
disabled,
|
|
21861
22329
|
onSelect
|
|
21862
22330
|
}) => /* @__PURE__ */ jsx(
|
|
21863
|
-
|
|
22331
|
+
RDropdown5.Item,
|
|
21864
22332
|
{
|
|
21865
22333
|
className: cn(menuItemClass, menuItemDisabledClass),
|
|
21866
22334
|
disabled,
|
|
@@ -22027,8 +22495,8 @@ function EditorToolbarBar({
|
|
|
22027
22495
|
const node = (item4) => {
|
|
22028
22496
|
switch (item4) {
|
|
22029
22497
|
case "heading":
|
|
22030
|
-
return /* @__PURE__ */ jsxs(
|
|
22031
|
-
/* @__PURE__ */ jsx(
|
|
22498
|
+
return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
|
|
22499
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(
|
|
22032
22500
|
ToolbarButton,
|
|
22033
22501
|
{
|
|
22034
22502
|
label: "\uC81C\uBAA9 \uB2E8\uACC4",
|
|
@@ -22041,9 +22509,9 @@ function EditorToolbarBar({
|
|
|
22041
22509
|
]
|
|
22042
22510
|
}
|
|
22043
22511
|
) }),
|
|
22044
|
-
/* @__PURE__ */ jsx(
|
|
22512
|
+
/* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22045
22513
|
/* @__PURE__ */ jsx(
|
|
22046
|
-
|
|
22514
|
+
RDropdown5.Item,
|
|
22047
22515
|
{
|
|
22048
22516
|
className: menuItemClass,
|
|
22049
22517
|
onSelect: () => chain()?.setParagraph().run(),
|
|
@@ -22051,7 +22519,7 @@ function EditorToolbarBar({
|
|
|
22051
22519
|
}
|
|
22052
22520
|
),
|
|
22053
22521
|
SEDITOR_HEADING_LEVELS.map((level) => /* @__PURE__ */ jsx(
|
|
22054
|
-
|
|
22522
|
+
RDropdown5.Item,
|
|
22055
22523
|
{
|
|
22056
22524
|
className: menuItemClass,
|
|
22057
22525
|
onSelect: () => chain()?.setHeading({ level }).run(),
|
|
@@ -22062,13 +22530,13 @@ function EditorToolbarBar({
|
|
|
22062
22530
|
] }) })
|
|
22063
22531
|
] }, item4);
|
|
22064
22532
|
case "fontSize":
|
|
22065
|
-
return /* @__PURE__ */ jsxs(
|
|
22066
|
-
/* @__PURE__ */ jsx(
|
|
22533
|
+
return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
|
|
22534
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uAE00\uC790 \uD06C\uAE30", disabled: off, className: "px-[6px]", children: [
|
|
22067
22535
|
/* @__PURE__ */ jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ?? FONT_SIZE_DEFAULT_LABEL }),
|
|
22068
22536
|
/* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: 12 })
|
|
22069
22537
|
] }) }),
|
|
22070
|
-
/* @__PURE__ */ jsx(
|
|
22071
|
-
|
|
22538
|
+
/* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
|
|
22539
|
+
RDropdown5.Content,
|
|
22072
22540
|
{
|
|
22073
22541
|
sideOffset: 4,
|
|
22074
22542
|
align: "start",
|
|
@@ -22076,7 +22544,7 @@ function EditorToolbarBar({
|
|
|
22076
22544
|
style: { maxHeight: FONT_SIZE_MENU_MAX_HEIGHT },
|
|
22077
22545
|
children: [
|
|
22078
22546
|
/* @__PURE__ */ jsx(
|
|
22079
|
-
|
|
22547
|
+
RDropdown5.Item,
|
|
22080
22548
|
{
|
|
22081
22549
|
className: cn(menuItemClass, activeFontSize === null && menuItemSelectedClass),
|
|
22082
22550
|
title: `${FONT_SIZE_DEFAULT_LABEL} (\uBCF8\uBB38 ${SEDITOR_DEFAULT_FONT_SIZE}px)`,
|
|
@@ -22085,7 +22553,7 @@ function EditorToolbarBar({
|
|
|
22085
22553
|
}
|
|
22086
22554
|
),
|
|
22087
22555
|
SEDITOR_FONT_SIZES.map((size) => /* @__PURE__ */ jsx(
|
|
22088
|
-
|
|
22556
|
+
RDropdown5.Item,
|
|
22089
22557
|
{
|
|
22090
22558
|
ref: activeFontSize === size ? (el) => {
|
|
22091
22559
|
el?.scrollIntoView({ block: "nearest" });
|
|
@@ -22177,9 +22645,9 @@ function EditorToolbarBar({
|
|
|
22177
22645
|
},
|
|
22178
22646
|
item4
|
|
22179
22647
|
);
|
|
22180
|
-
return /* @__PURE__ */ jsxs(
|
|
22181
|
-
/* @__PURE__ */ jsx(
|
|
22182
|
-
/* @__PURE__ */ jsx(
|
|
22648
|
+
return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
|
|
22649
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsx(ToolbarButton, { label: "\uAE00\uC790\uC0C9", disabled: off, children: /* @__PURE__ */ jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
|
|
22650
|
+
/* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: /* @__PURE__ */ jsx(
|
|
22183
22651
|
ColorPalette,
|
|
22184
22652
|
{
|
|
22185
22653
|
asMenu: true,
|
|
@@ -22285,14 +22753,14 @@ function EditorToolbarBar({
|
|
|
22285
22753
|
case "list": {
|
|
22286
22754
|
const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
|
|
22287
22755
|
const listActive = state2.bulletList || state2.orderedList || state2.taskList;
|
|
22288
|
-
return /* @__PURE__ */ jsxs(
|
|
22289
|
-
/* @__PURE__ */ jsx(
|
|
22756
|
+
return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
|
|
22757
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uBAA9\uB85D", active: listActive, disabled: off, className: "px-[4px]", children: [
|
|
22290
22758
|
/* @__PURE__ */ jsx(ListIcon, { size: ICON_SIZE }),
|
|
22291
22759
|
/* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22292
22760
|
] }) }),
|
|
22293
|
-
/* @__PURE__ */ jsx(
|
|
22761
|
+
/* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22294
22762
|
/* @__PURE__ */ jsxs(
|
|
22295
|
-
|
|
22763
|
+
RDropdown5.Item,
|
|
22296
22764
|
{
|
|
22297
22765
|
className: menuItemClass,
|
|
22298
22766
|
onSelect: () => chain()?.toggleBulletList().run(),
|
|
@@ -22303,7 +22771,7 @@ function EditorToolbarBar({
|
|
|
22303
22771
|
}
|
|
22304
22772
|
),
|
|
22305
22773
|
/* @__PURE__ */ jsxs(
|
|
22306
|
-
|
|
22774
|
+
RDropdown5.Item,
|
|
22307
22775
|
{
|
|
22308
22776
|
className: menuItemClass,
|
|
22309
22777
|
onSelect: () => chain()?.toggleOrderedList().run(),
|
|
@@ -22314,7 +22782,7 @@ function EditorToolbarBar({
|
|
|
22314
22782
|
}
|
|
22315
22783
|
),
|
|
22316
22784
|
/* @__PURE__ */ jsxs(
|
|
22317
|
-
|
|
22785
|
+
RDropdown5.Item,
|
|
22318
22786
|
{
|
|
22319
22787
|
className: menuItemClass,
|
|
22320
22788
|
onSelect: () => chain()?.toggleTaskList().run(),
|
|
@@ -22418,17 +22886,17 @@ function EditorToolbarBar({
|
|
|
22418
22886
|
);
|
|
22419
22887
|
case "table":
|
|
22420
22888
|
return /* @__PURE__ */ jsxs(
|
|
22421
|
-
|
|
22889
|
+
RDropdown5.Root,
|
|
22422
22890
|
{
|
|
22423
22891
|
open: tableOpen,
|
|
22424
22892
|
onOpenChange: setTableOpen,
|
|
22425
22893
|
modal: !insideModal,
|
|
22426
22894
|
children: [
|
|
22427
|
-
/* @__PURE__ */ jsx(
|
|
22895
|
+
/* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uD45C", active: state2.inTable, disabled: off, className: "px-[6px]", children: [
|
|
22428
22896
|
/* @__PURE__ */ jsx(IconTable, { size: ICON_SIZE }),
|
|
22429
22897
|
/* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22430
22898
|
] }) }),
|
|
22431
|
-
/* @__PURE__ */ jsx(
|
|
22899
|
+
/* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22432
22900
|
!state2.inTable && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22433
22901
|
/* @__PURE__ */ jsx(
|
|
22434
22902
|
TableSizePicker,
|
|
@@ -22440,7 +22908,7 @@ function EditorToolbarBar({
|
|
|
22440
22908
|
}
|
|
22441
22909
|
}
|
|
22442
22910
|
),
|
|
22443
|
-
/* @__PURE__ */ jsx(
|
|
22911
|
+
/* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass })
|
|
22444
22912
|
] }),
|
|
22445
22913
|
/* @__PURE__ */ jsx(
|
|
22446
22914
|
TableMenuItem,
|
|
@@ -22474,7 +22942,7 @@ function EditorToolbarBar({
|
|
|
22474
22942
|
onSelect: () => chain()?.addColumnAfter().run()
|
|
22475
22943
|
}
|
|
22476
22944
|
),
|
|
22477
|
-
/* @__PURE__ */ jsx(
|
|
22945
|
+
/* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass }),
|
|
22478
22946
|
/* @__PURE__ */ jsx(
|
|
22479
22947
|
TableMenuItem,
|
|
22480
22948
|
{
|
|
@@ -22507,7 +22975,7 @@ function EditorToolbarBar({
|
|
|
22507
22975
|
onSelect: () => chain()?.toggleHeaderColumn().run()
|
|
22508
22976
|
}
|
|
22509
22977
|
),
|
|
22510
|
-
/* @__PURE__ */ jsx(
|
|
22978
|
+
/* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass }),
|
|
22511
22979
|
/* @__PURE__ */ jsx(
|
|
22512
22980
|
TableMenuItem,
|
|
22513
22981
|
{
|
|
@@ -26460,6 +26928,6 @@ function STimeRangePicker({
|
|
|
26460
26928
|
);
|
|
26461
26929
|
}
|
|
26462
26930
|
|
|
26463
|
-
export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, COLOR_KEYS, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_LOGO_SERVICE_GAP, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SLoginCard2 as SLoginCard, SLogo, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
|
|
26931
|
+
export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, CHIP_COLORS, COLOR_KEYS, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_LOGO_SERVICE_GAP, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDonutChart, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SLoginCard2 as SLoginCard, SLogo, SMeatballButton2 as SMeatballButton, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPieChart, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
|
|
26464
26932
|
//# sourceMappingURL=index.js.map
|
|
26465
26933
|
//# sourceMappingURL=index.js.map
|