@aixa-transformation/pptx-viewer 2.0.24 → 2.0.27
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/{chunk-ZSZ2WR4A.js → chunk-2GATFIDB.js} +6 -2
- package/dist/{chunk-RI6OBMEG.mjs → chunk-3VKZ7ZNY.mjs} +6 -2
- package/dist/{chunk-OUD7I3ER.mjs → chunk-KWR2VRGW.mjs} +108 -22
- package/dist/{chunk-VFVF632V.js → chunk-Z7ZISSMC.js} +510 -423
- package/dist/index.js +10 -10
- package/dist/index.mjs +2 -2
- package/dist/internals.js +73 -73
- package/dist/internals.mjs +1 -1
- package/dist/viewer/index.js +15 -15
- package/dist/viewer/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk2GATFIDB_js = require('./chunk-2GATFIDB.js');
|
|
4
4
|
var chunkDHNQHQ66_js = require('./chunk-DHNQHQ66.js');
|
|
5
5
|
var chunkCUUYYYC5_js = require('./chunk-CUUYYYC5.js');
|
|
6
6
|
var chunkHUD73YBT_js = require('./chunk-HUD73YBT.js');
|
|
@@ -8,10 +8,12 @@ var React18 = require('react');
|
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var reactI18next = require('react-i18next');
|
|
10
10
|
var lu = require('react-icons/lu');
|
|
11
|
+
var JSZip = require('jszip');
|
|
11
12
|
|
|
12
13
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
14
|
|
|
14
15
|
var React18__default = /*#__PURE__*/_interopDefault(React18);
|
|
16
|
+
var JSZip__default = /*#__PURE__*/_interopDefault(JSZip);
|
|
15
17
|
|
|
16
18
|
var ViewerThemeContext = React18.createContext(void 0);
|
|
17
19
|
function ViewerThemeProvider({ theme, children }) {
|
|
@@ -42,7 +44,7 @@ function CollaborationProvider({
|
|
|
42
44
|
canvasHeight,
|
|
43
45
|
children
|
|
44
46
|
}) {
|
|
45
|
-
const value =
|
|
47
|
+
const value = chunk2GATFIDB_js.useCollaborativeState({
|
|
46
48
|
config,
|
|
47
49
|
canvasWidth,
|
|
48
50
|
canvasHeight
|
|
@@ -474,7 +476,7 @@ function RibbonGroup({
|
|
|
474
476
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
475
477
|
"section",
|
|
476
478
|
{
|
|
477
|
-
className:
|
|
479
|
+
className: chunk2GATFIDB_js.cn(
|
|
478
480
|
"relative flex min-h-[78px] shrink-0 items-start gap-1 border-r border-border/60 px-2 pb-4 pt-1 last:border-r-0",
|
|
479
481
|
className
|
|
480
482
|
),
|
|
@@ -502,7 +504,7 @@ function RibbonCommand({
|
|
|
502
504
|
onClick,
|
|
503
505
|
disabled,
|
|
504
506
|
title: title ?? label,
|
|
505
|
-
className:
|
|
507
|
+
className: chunk2GATFIDB_js.cn(
|
|
506
508
|
"inline-flex rounded-sm text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-35",
|
|
507
509
|
active && "bg-primary/15 text-primary ring-1 ring-primary/35",
|
|
508
510
|
compact ? "h-[26px] min-w-[88px] items-center gap-1.5 px-1.5 text-left text-[10px] leading-3" : "h-[58px] min-w-[54px] max-w-[72px] flex-col items-center justify-start gap-0.5 px-1 py-1 text-center text-[9px] leading-[11px]"
|
|
@@ -511,7 +513,7 @@ function RibbonCommand({
|
|
|
511
513
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
512
514
|
"span",
|
|
513
515
|
{
|
|
514
|
-
className:
|
|
516
|
+
className: chunk2GATFIDB_js.cn(
|
|
515
517
|
"grid shrink-0 place-items-center text-primary",
|
|
516
518
|
compact ? "h-4 w-4 [&>svg]:h-4 [&>svg]:w-4" : "h-7 w-7 [&>svg]:h-6 [&>svg]:w-6"
|
|
517
519
|
),
|
|
@@ -540,7 +542,7 @@ function RibbonToggle({
|
|
|
540
542
|
"label",
|
|
541
543
|
{
|
|
542
544
|
title,
|
|
543
|
-
className:
|
|
545
|
+
className: chunk2GATFIDB_js.cn(
|
|
544
546
|
"flex h-[19px] items-center gap-1 whitespace-nowrap rounded-sm px-1 text-[10px] text-foreground",
|
|
545
547
|
checked && "bg-primary/15 text-primary"
|
|
546
548
|
),
|
|
@@ -952,7 +954,7 @@ function ArrangeSection(p) {
|
|
|
952
954
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
953
955
|
"data-testid": "format-painter-toggle",
|
|
954
956
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
955
|
-
className:
|
|
957
|
+
className: chunk2GATFIDB_js.cn(
|
|
956
958
|
pill,
|
|
957
959
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
958
960
|
),
|
|
@@ -1067,7 +1069,7 @@ function DesignSection(p) {
|
|
|
1067
1069
|
{
|
|
1068
1070
|
onClick: p.onToggleThemeGallery,
|
|
1069
1071
|
disabled: !p.canEdit,
|
|
1070
|
-
className:
|
|
1072
|
+
className: chunk2GATFIDB_js.cn(
|
|
1071
1073
|
pill,
|
|
1072
1074
|
p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
1073
1075
|
),
|
|
@@ -1083,7 +1085,7 @@ function DesignSection(p) {
|
|
|
1083
1085
|
{
|
|
1084
1086
|
onClick: p.onToggleThemeEditor,
|
|
1085
1087
|
disabled: !p.canEdit,
|
|
1086
|
-
className:
|
|
1088
|
+
className: chunk2GATFIDB_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
1087
1089
|
title: t("pptx.ribbon.editThemeTitle"),
|
|
1088
1090
|
children: [
|
|
1089
1091
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
|
|
@@ -1108,7 +1110,7 @@ function DesignSection(p) {
|
|
|
1108
1110
|
"button",
|
|
1109
1111
|
{
|
|
1110
1112
|
onClick: p.onToggleInspector,
|
|
1111
|
-
className:
|
|
1113
|
+
className: chunk2GATFIDB_js.cn(
|
|
1112
1114
|
pill,
|
|
1113
1115
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
1114
1116
|
),
|
|
@@ -1150,7 +1152,7 @@ function TransitionsSection(p) {
|
|
|
1150
1152
|
{
|
|
1151
1153
|
type: "button",
|
|
1152
1154
|
onClick: () => setSelected(preset.value),
|
|
1153
|
-
className:
|
|
1155
|
+
className: chunk2GATFIDB_js.cn(
|
|
1154
1156
|
"flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
|
|
1155
1157
|
selected === preset.value ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
|
|
1156
1158
|
),
|
|
@@ -1235,7 +1237,7 @@ function TransitionsSection(p) {
|
|
|
1235
1237
|
{
|
|
1236
1238
|
type: "button",
|
|
1237
1239
|
onClick: p.onToggleInspector,
|
|
1238
|
-
className:
|
|
1240
|
+
className: chunk2GATFIDB_js.cn(
|
|
1239
1241
|
pill,
|
|
1240
1242
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
1241
1243
|
),
|
|
@@ -1256,7 +1258,7 @@ function DrawSection(p) {
|
|
|
1256
1258
|
{
|
|
1257
1259
|
type: "button",
|
|
1258
1260
|
onClick: () => p.onSetActiveTool(tool.id),
|
|
1259
|
-
className:
|
|
1261
|
+
className: chunk2GATFIDB_js.cn(
|
|
1260
1262
|
i < a.length - 1 ? gB : gL,
|
|
1261
1263
|
p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
|
|
1262
1264
|
),
|
|
@@ -1340,7 +1342,7 @@ function AccountPage() {
|
|
|
1340
1342
|
return void 0;
|
|
1341
1343
|
});
|
|
1342
1344
|
};
|
|
1343
|
-
const version = "2.0.
|
|
1345
|
+
const version = "2.0.27" ;
|
|
1344
1346
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1345
1347
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
1346
1348
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -1380,7 +1382,7 @@ function AccountPage() {
|
|
|
1380
1382
|
"aria-label": color,
|
|
1381
1383
|
"aria-pressed": profile.avatarColor === color,
|
|
1382
1384
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
1383
|
-
className:
|
|
1385
|
+
className: chunk2GATFIDB_js.cn(
|
|
1384
1386
|
"size-7 rounded-full border-2 transition-transform",
|
|
1385
1387
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
1386
1388
|
),
|
|
@@ -1530,7 +1532,7 @@ function FileSection(p) {
|
|
|
1530
1532
|
const [page, setPage] = React18.useState("home");
|
|
1531
1533
|
const [query, setQuery] = React18.useState("");
|
|
1532
1534
|
const [recent, setRecent] = React18.useState([]);
|
|
1533
|
-
const { isHidden } =
|
|
1535
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(p.hiddenActions);
|
|
1534
1536
|
const exportHidden = isHidden("export");
|
|
1535
1537
|
React18.useEffect(() => {
|
|
1536
1538
|
void chunkDHNQHQ66_js.listBackstageRecentFiles().then(setRecent);
|
|
@@ -1845,7 +1847,7 @@ function RibbonMenu({
|
|
|
1845
1847
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1846
1848
|
"div",
|
|
1847
1849
|
{
|
|
1848
|
-
className:
|
|
1850
|
+
className: chunk2GATFIDB_js.cn("fixed z-50", className),
|
|
1849
1851
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
1850
1852
|
children
|
|
1851
1853
|
}
|
|
@@ -1899,7 +1901,7 @@ function ChartElementView({
|
|
|
1899
1901
|
const selectedPart = selection?.elementId === element.id ? selection.part : null;
|
|
1900
1902
|
const canEdit = editable && Boolean(onUpdateElement);
|
|
1901
1903
|
const viewModel = React18.useMemo(
|
|
1902
|
-
() => canEdit ?
|
|
1904
|
+
() => canEdit ? chunk2GATFIDB_js.buildReactChartViewModel(element) : null,
|
|
1903
1905
|
[canEdit, element]
|
|
1904
1906
|
);
|
|
1905
1907
|
React18.useEffect(ensureInteractionStyles, []);
|
|
@@ -2048,7 +2050,7 @@ function ChartElementView({
|
|
|
2048
2050
|
onPointerUp: handlePointerUp,
|
|
2049
2051
|
onDoubleClick: handleDoubleClick,
|
|
2050
2052
|
children: [
|
|
2051
|
-
|
|
2053
|
+
chunk2GATFIDB_js.renderChartElement(renderedElement),
|
|
2052
2054
|
dragValue !== null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1 z-10 rounded bg-primary/90 px-1.5 py-0.5 text-[10px] font-medium text-white pointer-events-none", children: chunkDHNQHQ66_js.formatAxisValue(dragValue) }),
|
|
2053
2055
|
titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2054
2056
|
"input",
|
|
@@ -2241,7 +2243,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
2241
2243
|
...filter ? { filter } : {},
|
|
2242
2244
|
...opacity !== void 0 ? { opacity } : {}
|
|
2243
2245
|
};
|
|
2244
|
-
if (
|
|
2246
|
+
if (chunk2GATFIDB_js.isImageTiled(el)) {
|
|
2245
2247
|
const tileSrc = imgSrc(el);
|
|
2246
2248
|
if (!tileSrc) {
|
|
2247
2249
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: "Image" });
|
|
@@ -2252,7 +2254,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
2252
2254
|
"div",
|
|
2253
2255
|
{
|
|
2254
2256
|
className: "pointer-events-none select-none w-full h-full",
|
|
2255
|
-
style: { ...
|
|
2257
|
+
style: { ...chunk2GATFIDB_js.getImageTilingStyle(el), ...effectStyles }
|
|
2256
2258
|
}
|
|
2257
2259
|
)
|
|
2258
2260
|
] });
|
|
@@ -2261,7 +2263,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
2261
2263
|
chunkHUD73YBT_js.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
|
|
2262
2264
|
);
|
|
2263
2265
|
const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
|
|
2264
|
-
const duotoneColors =
|
|
2266
|
+
const duotoneColors = chunk2GATFIDB_js.getDuotoneColors(el);
|
|
2265
2267
|
const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
|
|
2266
2268
|
const filterForImg = useDuotoneCanvas ? chunkDHNQHQ66_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
|
|
2267
2269
|
const canvasEffectStyles = {
|
|
@@ -2474,7 +2476,7 @@ function ResizeHandles({
|
|
|
2474
2476
|
"button",
|
|
2475
2477
|
{
|
|
2476
2478
|
type: "button",
|
|
2477
|
-
className:
|
|
2479
|
+
className: chunk2GATFIDB_js.cn("absolute z-10 group", posClass, cursor),
|
|
2478
2480
|
style: peStyle,
|
|
2479
2481
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
2480
2482
|
onMouseDown: (e) => {
|
|
@@ -2492,7 +2494,7 @@ function ResizeHandles({
|
|
|
2492
2494
|
"button",
|
|
2493
2495
|
{
|
|
2494
2496
|
type: "button",
|
|
2495
|
-
className:
|
|
2497
|
+
className: chunk2GATFIDB_js.cn("absolute z-10", posClass, cursor),
|
|
2496
2498
|
style: peStyle,
|
|
2497
2499
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
2498
2500
|
onMouseDown: (e) => {
|
|
@@ -2500,7 +2502,7 @@ function ResizeHandles({
|
|
|
2500
2502
|
onResizePointerDown(elementId, e, handle);
|
|
2501
2503
|
},
|
|
2502
2504
|
children: [
|
|
2503
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
2505
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk2GATFIDB_js.cn(sizeClass, "border border-white bg-primary shadow") }),
|
|
2504
2506
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
|
|
2505
2507
|
]
|
|
2506
2508
|
},
|
|
@@ -2581,7 +2583,7 @@ var ConnectorElementRenderer = React18__default.default.memo(
|
|
|
2581
2583
|
const viewHeight = Math.max(el.height, 1);
|
|
2582
2584
|
const ss = shapeEl?.shapeStyle;
|
|
2583
2585
|
const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
|
|
2584
|
-
const strokeColor = chunkDHNQHQ66_js.normalizeHexColor(ss?.strokeColor,
|
|
2586
|
+
const strokeColor = chunkDHNQHQ66_js.normalizeHexColor(ss?.strokeColor, chunk2GATFIDB_js.DEFAULT_STROKE_COLOR);
|
|
2585
2587
|
const strokePaint = chunkDHNQHQ66_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
|
|
2586
2588
|
const dashType = chunkDHNQHQ66_js.normalizeStrokeDashType(ss?.strokeDash);
|
|
2587
2589
|
const dashArray = chunkDHNQHQ66_js.getSvgStrokeDasharray(
|
|
@@ -2602,7 +2604,7 @@ var ConnectorElementRenderer = React18__default.default.memo(
|
|
|
2602
2604
|
const connectorText = textEl?.text?.trim() ?? "";
|
|
2603
2605
|
const connectorTextSegments = textEl?.textSegments;
|
|
2604
2606
|
const connectorTextStyle = textEl?.textStyle;
|
|
2605
|
-
const pathGeometry = shapeEl ?
|
|
2607
|
+
const pathGeometry = shapeEl ? chunk2GATFIDB_js.getConnectorPathGeometry(shapeEl) : {
|
|
2606
2608
|
pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
|
|
2607
2609
|
startX: 0,
|
|
2608
2610
|
startY: 0,
|
|
@@ -2611,8 +2613,8 @@ var ConnectorElementRenderer = React18__default.default.memo(
|
|
|
2611
2613
|
};
|
|
2612
2614
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
2613
2615
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
2614
|
-
const lineShadow =
|
|
2615
|
-
const lineGlow =
|
|
2616
|
+
const lineShadow = chunk2GATFIDB_js.buildLineShadowCss(el);
|
|
2617
|
+
const lineGlow = chunk2GATFIDB_js.buildLineGlowFilter(el);
|
|
2616
2618
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2617
2619
|
"div",
|
|
2618
2620
|
{
|
|
@@ -2622,8 +2624,8 @@ var ConnectorElementRenderer = React18__default.default.memo(
|
|
|
2622
2624
|
style: {
|
|
2623
2625
|
left: el.x,
|
|
2624
2626
|
top: el.y,
|
|
2625
|
-
width: Math.max(el.width,
|
|
2626
|
-
height: Math.max(el.height,
|
|
2627
|
+
width: Math.max(el.width, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
2628
|
+
height: Math.max(el.height, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
2627
2629
|
transform: chunkDHNQHQ66_js.getElementTransform(el),
|
|
2628
2630
|
transformOrigin: "center",
|
|
2629
2631
|
background: "transparent",
|
|
@@ -2645,14 +2647,14 @@ var ConnectorElementRenderer = React18__default.default.memo(
|
|
|
2645
2647
|
style: { overflow: "visible", pointerEvents: "none" },
|
|
2646
2648
|
children: [
|
|
2647
2649
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
2648
|
-
|
|
2650
|
+
chunk2GATFIDB_js.renderConnectorMarker(
|
|
2649
2651
|
startMarkerId,
|
|
2650
2652
|
startArrow,
|
|
2651
2653
|
strokePaint,
|
|
2652
2654
|
ss?.connectorStartArrowWidth,
|
|
2653
2655
|
ss?.connectorStartArrowLength
|
|
2654
2656
|
),
|
|
2655
|
-
|
|
2657
|
+
chunk2GATFIDB_js.renderConnectorMarker(
|
|
2656
2658
|
endMarkerId,
|
|
2657
2659
|
endArrow,
|
|
2658
2660
|
strokePaint,
|
|
@@ -2864,14 +2866,14 @@ function elementHasTextHyperlink(el) {
|
|
|
2864
2866
|
return Boolean(el.textSegments?.some((segment) => Boolean(segment.style?.hyperlink)));
|
|
2865
2867
|
}
|
|
2866
2868
|
function renderDagDuotoneFilterForElement(el) {
|
|
2867
|
-
if (!
|
|
2869
|
+
if (!chunk2GATFIDB_js.hasDagDuotoneEffect(el)) {
|
|
2868
2870
|
return null;
|
|
2869
2871
|
}
|
|
2870
2872
|
const duotone = el.shapeStyle?.dagDuotone;
|
|
2871
2873
|
if (!duotone) {
|
|
2872
2874
|
return null;
|
|
2873
2875
|
}
|
|
2874
|
-
return
|
|
2876
|
+
return chunk2GATFIDB_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
|
|
2875
2877
|
}
|
|
2876
2878
|
function getContainerStyle({
|
|
2877
2879
|
el,
|
|
@@ -2892,12 +2894,12 @@ function getContainerStyle({
|
|
|
2892
2894
|
return {
|
|
2893
2895
|
left: isFullscreenMedia ? 0 : el.x,
|
|
2894
2896
|
top: isFullscreenMedia ? 0 : el.y,
|
|
2895
|
-
width: isFullscreenMedia ? "100%" : Math.max(el.width,
|
|
2896
|
-
height: isFullscreenMedia ? "100%" : Math.max(el.height,
|
|
2897
|
+
width: isFullscreenMedia ? "100%" : Math.max(el.width, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
2898
|
+
height: isFullscreenMedia ? "100%" : Math.max(el.height, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
2897
2899
|
transform: isFullscreenMedia ? "none" : chunkDHNQHQ66_js.getElementTransform(el),
|
|
2898
2900
|
transformOrigin: "center",
|
|
2899
2901
|
overflow: overflowValue,
|
|
2900
|
-
clipPath: isImg && !has3DExtrusion ?
|
|
2902
|
+
clipPath: isImg && !has3DExtrusion ? chunk2GATFIDB_js.getCropShapeClipPath(el) : void 0,
|
|
2901
2903
|
zIndex: isFullscreenMedia ? 20 : zIndex,
|
|
2902
2904
|
opacity,
|
|
2903
2905
|
visibility: animationState?.visible === false ? "hidden" : "visible",
|
|
@@ -2931,8 +2933,8 @@ function ActionIndicator({
|
|
|
2931
2933
|
function shapeParams(element) {
|
|
2932
2934
|
const style = chunkHUD73YBT_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
2933
2935
|
const strokeWidth = Math.max(0, style?.strokeWidth || 0);
|
|
2934
|
-
const strokeColor = chunkDHNQHQ66_js.normalizeHexColor(style?.strokeColor,
|
|
2935
|
-
const fillColor = chunkDHNQHQ66_js.normalizeHexColor(style?.fillColor,
|
|
2936
|
+
const strokeColor = chunkDHNQHQ66_js.normalizeHexColor(style?.strokeColor, chunk2GATFIDB_js.DEFAULT_STROKE_COLOR);
|
|
2937
|
+
const fillColor = chunkDHNQHQ66_js.normalizeHexColor(style?.fillColor, chunk2GATFIDB_js.DEFAULT_FILL_COLOR);
|
|
2936
2938
|
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkDHNQHQ66_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
2937
2939
|
return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
|
|
2938
2940
|
}
|
|
@@ -3086,7 +3088,7 @@ var ElementRenderer = React18__default.default.memo(
|
|
|
3086
3088
|
const elementLocks = el.locks;
|
|
3087
3089
|
const isTxt = chunkDHNQHQ66_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
|
|
3088
3090
|
const txtSE = chunkHUD73YBT_js.hasTextProperties(el) ? el.textStyle : void 0;
|
|
3089
|
-
const ss =
|
|
3091
|
+
const ss = chunk2GATFIDB_js.getShapeVisualStyle(
|
|
3090
3092
|
el,
|
|
3091
3093
|
hf,
|
|
3092
3094
|
fc,
|
|
@@ -3095,8 +3097,8 @@ var ElementRenderer = React18__default.default.memo(
|
|
|
3095
3097
|
animationState?.animatesFill,
|
|
3096
3098
|
animationState?.animatesStroke
|
|
3097
3099
|
);
|
|
3098
|
-
const ts =
|
|
3099
|
-
const vs =
|
|
3100
|
+
const ts = chunk2GATFIDB_js.getTextStyleForElement(el, chunk2GATFIDB_js.DEFAULT_TEXT_COLOR);
|
|
3101
|
+
const vs = chunk2GATFIDB_js.renderVectorShape(
|
|
3100
3102
|
el,
|
|
3101
3103
|
hf,
|
|
3102
3104
|
fc,
|
|
@@ -3107,10 +3109,10 @@ var ElementRenderer = React18__default.default.memo(
|
|
|
3107
3109
|
);
|
|
3108
3110
|
const isImg = el.type === "picture" || el.type === "image";
|
|
3109
3111
|
const isModel3D = el.type === "model3d";
|
|
3110
|
-
const isConn =
|
|
3112
|
+
const isConn = chunk2GATFIDB_js.isConnectorOrLineElement(el);
|
|
3111
3113
|
const shapeStyle3d = chunkHUD73YBT_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
3112
3114
|
const extrusionData = React18.useMemo(
|
|
3113
|
-
() =>
|
|
3115
|
+
() => chunk2GATFIDB_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
|
|
3114
3116
|
[shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
|
|
3115
3117
|
);
|
|
3116
3118
|
const [isMediaPlaying, setIsMediaPlaying] = React18.useState(false);
|
|
@@ -3174,7 +3176,7 @@ var ElementRenderer = React18__default.default.memo(
|
|
|
3174
3176
|
"aria-roledescription": ariaRoleDescription,
|
|
3175
3177
|
"aria-selected": isSelected ? true : void 0,
|
|
3176
3178
|
tabIndex: isFocusable ? 0 : -1,
|
|
3177
|
-
className:
|
|
3179
|
+
className: chunk2GATFIDB_js.cn(
|
|
3178
3180
|
"absolute border",
|
|
3179
3181
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
3180
3182
|
cur,
|
|
@@ -3208,7 +3210,7 @@ var ElementRenderer = React18__default.default.memo(
|
|
|
3208
3210
|
txtSE,
|
|
3209
3211
|
txtS: ts,
|
|
3210
3212
|
vecShape: vs,
|
|
3211
|
-
imgStyle:
|
|
3213
|
+
imgStyle: chunk2GATFIDB_js.getImageRenderStyle(el),
|
|
3212
3214
|
imgFilter: chunkDHNQHQ66_js.getImageEffectsFilter(el),
|
|
3213
3215
|
imgOpacity: chunkDHNQHQ66_js.getImageEffectsOpacity(el),
|
|
3214
3216
|
imgAlt: imageAltText,
|
|
@@ -3353,7 +3355,7 @@ function renderInk(el, options) {
|
|
|
3353
3355
|
function renderGroup(children, parentGroupFill) {
|
|
3354
3356
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: children.map((c, childIndex) => {
|
|
3355
3357
|
const { hf, fc, sw, sc } = shapeParams(c);
|
|
3356
|
-
const baseSs =
|
|
3358
|
+
const baseSs = chunk2GATFIDB_js.getShapeVisualStyle(c, hf, fc, sw, sc);
|
|
3357
3359
|
const inheritedFill = chunkDHNQHQ66_js.resolveGroupChildFill(c, parentGroupFill);
|
|
3358
3360
|
const ss = inheritedFill ? {
|
|
3359
3361
|
...baseSs,
|
|
@@ -3363,8 +3365,8 @@ function renderGroup(children, parentGroupFill) {
|
|
|
3363
3365
|
backgroundSize: inheritedFill.backgroundSize,
|
|
3364
3366
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
3365
3367
|
} : baseSs;
|
|
3366
|
-
const vs =
|
|
3367
|
-
const ts =
|
|
3368
|
+
const vs = chunk2GATFIDB_js.renderVectorShape(c, hf, fc, sw, sc);
|
|
3369
|
+
const ts = chunk2GATFIDB_js.getTextStyleForElement(c, chunk2GATFIDB_js.DEFAULT_TEXT_COLOR);
|
|
3368
3370
|
const isTxt = chunkDHNQHQ66_js.isEditableTextElement(c);
|
|
3369
3371
|
const isI = c.type === "picture" || c.type === "image";
|
|
3370
3372
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3374,12 +3376,12 @@ function renderGroup(children, parentGroupFill) {
|
|
|
3374
3376
|
style: {
|
|
3375
3377
|
left: c.x,
|
|
3376
3378
|
top: c.y,
|
|
3377
|
-
width: Math.max(c.width,
|
|
3378
|
-
height: Math.max(c.height,
|
|
3379
|
+
width: Math.max(c.width, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
3380
|
+
height: Math.max(c.height, chunk2GATFIDB_js.MIN_ELEMENT_SIZE),
|
|
3379
3381
|
transform: chunkDHNQHQ66_js.getElementTransform(c),
|
|
3380
3382
|
transformOrigin: "center",
|
|
3381
3383
|
overflow: isI ? "hidden" : void 0,
|
|
3382
|
-
clipPath: isI ?
|
|
3384
|
+
clipPath: isI ? chunk2GATFIDB_js.getCropShapeClipPath(c) : void 0,
|
|
3383
3385
|
...ss,
|
|
3384
3386
|
// Explicit z-index preserves document order stacking within the
|
|
3385
3387
|
// group: later children in the array (= later in p:grpSp XML)
|
|
@@ -3389,11 +3391,11 @@ function renderGroup(children, parentGroupFill) {
|
|
|
3389
3391
|
},
|
|
3390
3392
|
children: [
|
|
3391
3393
|
/* @__PURE__ */ jsxRuntime.jsx(ShapeEffectOverlay, { element: c }),
|
|
3392
|
-
isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ?
|
|
3394
|
+
isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunk2GATFIDB_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3393
3395
|
"div",
|
|
3394
3396
|
{
|
|
3395
3397
|
className: "pointer-events-none select-none w-full h-full",
|
|
3396
|
-
style:
|
|
3398
|
+
style: chunk2GATFIDB_js.getImageTilingStyle(c)
|
|
3397
3399
|
}
|
|
3398
3400
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
3399
3401
|
"img",
|
|
@@ -3401,7 +3403,7 @@ function renderGroup(children, parentGroupFill) {
|
|
|
3401
3403
|
src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
|
|
3402
3404
|
alt: chunkCUUYYYC5_js.translationsEn["pptx.ink.groupChildAlt"],
|
|
3403
3405
|
className: "pointer-events-none select-none",
|
|
3404
|
-
style:
|
|
3406
|
+
style: chunk2GATFIDB_js.getImageRenderStyle(c),
|
|
3405
3407
|
draggable: false
|
|
3406
3408
|
}
|
|
3407
3409
|
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -3411,7 +3413,7 @@ function renderGroup(children, parentGroupFill) {
|
|
|
3411
3413
|
{
|
|
3412
3414
|
className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
|
|
3413
3415
|
style: ts,
|
|
3414
|
-
children:
|
|
3416
|
+
children: chunk2GATFIDB_js.renderTextSegments(c, chunk2GATFIDB_js.DEFAULT_TEXT_COLOR)
|
|
3415
3417
|
}
|
|
3416
3418
|
) : null
|
|
3417
3419
|
] })
|
|
@@ -3761,7 +3763,7 @@ function InlineTextEditor({
|
|
|
3761
3763
|
pending.endOffset
|
|
3762
3764
|
);
|
|
3763
3765
|
});
|
|
3764
|
-
const warpStyle =
|
|
3766
|
+
const warpStyle = chunk2GATFIDB_js.getTextWarpStyle(textStyleRaw);
|
|
3765
3767
|
const compensationTransform = chunkDHNQHQ66_js.getTextCompensationTransform(element);
|
|
3766
3768
|
const warpTransform = warpStyle?.transform;
|
|
3767
3769
|
const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
|
|
@@ -3837,7 +3839,7 @@ function InlineTextEditor({
|
|
|
3837
3839
|
const text = e.clipboardData.getData("text/plain");
|
|
3838
3840
|
document.execCommand("insertText", false, text);
|
|
3839
3841
|
},
|
|
3840
|
-
children: seed.hasRichSegments ?
|
|
3842
|
+
children: seed.hasRichSegments ? chunk2GATFIDB_js.renderTextSegments(element, chunk2GATFIDB_js.DEFAULT_TEXT_COLOR) : seed.initialText
|
|
3841
3843
|
}
|
|
3842
3844
|
);
|
|
3843
3845
|
}
|
|
@@ -4464,8 +4466,8 @@ function DrawingShapeRenderer({
|
|
|
4464
4466
|
}
|
|
4465
4467
|
const drawingW = maxX - minX || 1;
|
|
4466
4468
|
const drawingH = maxY - minY || 1;
|
|
4467
|
-
const shadow =
|
|
4468
|
-
const sw =
|
|
4469
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4470
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4469
4471
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4470
4472
|
"svg",
|
|
4471
4473
|
{
|
|
@@ -4475,7 +4477,7 @@ function DrawingShapeRenderer({
|
|
|
4475
4477
|
"data-testid": "smartart-drawing-shapes",
|
|
4476
4478
|
children: shapes.map((shape, i) => {
|
|
4477
4479
|
const gradient = drawingShapeGradientDef(`${elementId}-dspgrad-${shape.id}-${i}`, shape);
|
|
4478
|
-
const fill = shape.fillNone ? "none" : gradient?.ref ?? shape.fillPatternForegroundColor ?? shape.fillColor ??
|
|
4480
|
+
const fill = shape.fillNone ? "none" : gradient?.ref ?? shape.fillPatternForegroundColor ?? shape.fillColor ?? chunk2GATFIDB_js.colour(i, palette);
|
|
4479
4481
|
const relX = shape.x - minX;
|
|
4480
4482
|
const relY = shape.y - minY;
|
|
4481
4483
|
const rx = shape.shapeType === "roundRect" ? Math.min(shape.width, shape.height) * 0.1 : 0;
|
|
@@ -4494,11 +4496,11 @@ function DrawingShapeRenderer({
|
|
|
4494
4496
|
const centerY = shape.y + shape.height / 2;
|
|
4495
4497
|
return !candidate.fillNone && centerX >= candidate.x && centerX <= candidate.x + candidate.width && centerY >= candidate.y && centerY <= candidate.y + candidate.height;
|
|
4496
4498
|
})?.fillColor : void 0;
|
|
4497
|
-
const fontSize = shape.fontSize ??
|
|
4499
|
+
const fontSize = shape.fontSize ?? chunk2GATFIDB_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
|
|
4498
4500
|
const contrastFill = underlayFill ?? shape.fillColor ?? shape.fillPatternForegroundColor ?? shape.fillGradientStops?.[Math.floor(shape.fillGradientStops.length / 2)]?.color ?? fill;
|
|
4499
4501
|
const nodeId = nodes ? chunkDHNQHQ66_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
|
|
4500
4502
|
const nodeLabel = nodeId ? nodeLabels?.get(nodeId) : void 0;
|
|
4501
|
-
const groupProps = nodeId ?
|
|
4503
|
+
const groupProps = nodeId ? chunk2GATFIDB_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
|
|
4502
4504
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { ...groupProps, children: [
|
|
4503
4505
|
nodeLabel ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: nodeLabel }) : null,
|
|
4504
4506
|
gradient ? /* @__PURE__ */ jsxRuntime.jsx("defs", { children: gradient.def }) : null,
|
|
@@ -4534,7 +4536,7 @@ function DrawingShapeRenderer({
|
|
|
4534
4536
|
shape.width,
|
|
4535
4537
|
shape.height,
|
|
4536
4538
|
calloutBannerRatio
|
|
4537
|
-
) :
|
|
4539
|
+
) : chunk2GATFIDB_js.chevronPoints(relX, relY, shape.width, shape.height),
|
|
4538
4540
|
fill,
|
|
4539
4541
|
stroke: strokeCol,
|
|
4540
4542
|
strokeWidth: strokeW,
|
|
@@ -4555,12 +4557,12 @@ function DrawingShapeRenderer({
|
|
|
4555
4557
|
}
|
|
4556
4558
|
),
|
|
4557
4559
|
shape.text ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4558
|
-
|
|
4560
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4559
4561
|
{
|
|
4560
4562
|
x: relX + shape.width / 2,
|
|
4561
4563
|
y: isUpArrowCallout ? relY + shape.height * (calloutBannerRatio / 2) : relY + shape.height / 2,
|
|
4562
4564
|
text: shape.text,
|
|
4563
|
-
fill: shape.fontColor ??
|
|
4565
|
+
fill: shape.fontColor ?? chunk2GATFIDB_js.contrastingTextColor(contrastFill),
|
|
4564
4566
|
fontSize,
|
|
4565
4567
|
maxWidth: shape.width * 0.82,
|
|
4566
4568
|
className: "pointer-events-none"
|
|
@@ -4576,7 +4578,7 @@ function DrawingShapeRenderer({
|
|
|
4576
4578
|
function resolveNodeStyle(node, index, palette) {
|
|
4577
4579
|
const style = node.style;
|
|
4578
4580
|
return {
|
|
4579
|
-
fill: style?.fillColor ??
|
|
4581
|
+
fill: style?.fillColor ?? chunk2GATFIDB_js.colour(index, palette),
|
|
4580
4582
|
fontColor: style?.fontColor ?? "white",
|
|
4581
4583
|
fontWeight: style?.bold ? 700 : void 0,
|
|
4582
4584
|
fontStyle: style?.italic ? "italic" : void 0,
|
|
@@ -4598,8 +4600,8 @@ function ListRenderer({
|
|
|
4598
4600
|
const itemH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
4599
4601
|
const itemW = w - pad * 2;
|
|
4600
4602
|
const rx = Math.min(6, itemH * 0.15);
|
|
4601
|
-
const shadow =
|
|
4602
|
-
const sw =
|
|
4603
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4604
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4603
4605
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4604
4606
|
"svg",
|
|
4605
4607
|
{
|
|
@@ -4609,13 +4611,13 @@ function ListRenderer({
|
|
|
4609
4611
|
"data-testid": "smartart-list",
|
|
4610
4612
|
children: nodes.map((node, i) => {
|
|
4611
4613
|
const y = pad + i * (itemH + gap);
|
|
4612
|
-
const fontSize =
|
|
4614
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
|
|
4613
4615
|
const ns = resolveNodeStyle(node, i, palette);
|
|
4614
4616
|
const label = nodeLabels?.get(node.id);
|
|
4615
4617
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4616
4618
|
"g",
|
|
4617
4619
|
{
|
|
4618
|
-
...
|
|
4620
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
4619
4621
|
children: [
|
|
4620
4622
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
4621
4623
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4627,17 +4629,17 @@ function ListRenderer({
|
|
|
4627
4629
|
height: itemH,
|
|
4628
4630
|
rx,
|
|
4629
4631
|
fill: ns.fill,
|
|
4630
|
-
opacity:
|
|
4632
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
4631
4633
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
4632
4634
|
strokeWidth: sw
|
|
4633
4635
|
}
|
|
4634
4636
|
),
|
|
4635
4637
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4636
|
-
|
|
4638
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4637
4639
|
{
|
|
4638
4640
|
x: pad + itemW / 2,
|
|
4639
4641
|
y: y + itemH / 2,
|
|
4640
|
-
text:
|
|
4642
|
+
text: chunk2GATFIDB_js.truncate(node.text, 40),
|
|
4641
4643
|
fill: ns.fontColor,
|
|
4642
4644
|
fontWeight: ns.fontWeight,
|
|
4643
4645
|
fontStyle: ns.fontStyle,
|
|
@@ -4669,8 +4671,8 @@ function ProcessRenderer({
|
|
|
4669
4671
|
const itemW = (usableW - gap * (nodes.length - 1)) / nodes.length;
|
|
4670
4672
|
const itemH = Math.min(h - pad * 2, h * 0.6);
|
|
4671
4673
|
const yMid = h / 2;
|
|
4672
|
-
const shadow =
|
|
4673
|
-
const sw =
|
|
4674
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4675
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4674
4676
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4675
4677
|
"svg",
|
|
4676
4678
|
{
|
|
@@ -4684,13 +4686,13 @@ function ProcessRenderer({
|
|
|
4684
4686
|
const isFirst = i === 0;
|
|
4685
4687
|
const isLast = i === nodes.length - 1;
|
|
4686
4688
|
const points = isFirst ? `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH}` : isLast ? `${x},${yMid - halfH} ${x + itemW},${yMid - halfH} ${x + itemW},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}` : `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}`;
|
|
4687
|
-
const fontSize =
|
|
4689
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
|
|
4688
4690
|
const ns = resolveNodeStyle(node, i, palette);
|
|
4689
4691
|
const label = nodeLabels?.get(node.id);
|
|
4690
4692
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4691
4693
|
"g",
|
|
4692
4694
|
{
|
|
4693
|
-
...
|
|
4695
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
4694
4696
|
children: [
|
|
4695
4697
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
4696
4698
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4698,17 +4700,17 @@ function ProcessRenderer({
|
|
|
4698
4700
|
{
|
|
4699
4701
|
points,
|
|
4700
4702
|
fill: ns.fill,
|
|
4701
|
-
opacity:
|
|
4703
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
4702
4704
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
4703
4705
|
strokeWidth: sw
|
|
4704
4706
|
}
|
|
4705
4707
|
),
|
|
4706
4708
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4707
|
-
|
|
4709
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4708
4710
|
{
|
|
4709
4711
|
x: x + itemW / 2,
|
|
4710
4712
|
y: yMid,
|
|
4711
|
-
text:
|
|
4713
|
+
text: chunk2GATFIDB_js.truncate(node.text, 25),
|
|
4712
4714
|
fill: ns.fontColor,
|
|
4713
4715
|
fontWeight: ns.fontWeight,
|
|
4714
4716
|
fontStyle: ns.fontStyle,
|
|
@@ -4738,8 +4740,8 @@ function CycleRenderer({
|
|
|
4738
4740
|
const cy = h / 2;
|
|
4739
4741
|
const radius = size * 0.35;
|
|
4740
4742
|
const nodeR = Math.max(size * 0.06, Math.min(size * 0.12, 200 / nodes.length));
|
|
4741
|
-
const shadow =
|
|
4742
|
-
const sw =
|
|
4743
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4744
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4743
4745
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4744
4746
|
"svg",
|
|
4745
4747
|
{
|
|
@@ -4778,13 +4780,13 @@ function CycleRenderer({
|
|
|
4778
4780
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
4779
4781
|
const nx = cx + radius * Math.cos(angle);
|
|
4780
4782
|
const ny = cy + radius * Math.sin(angle);
|
|
4781
|
-
const fontSize =
|
|
4783
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
|
|
4782
4784
|
const ns = resolveNodeStyle(node, i, palette);
|
|
4783
4785
|
const label = nodeLabels?.get(node.id);
|
|
4784
4786
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4785
4787
|
"g",
|
|
4786
4788
|
{
|
|
4787
|
-
...
|
|
4789
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
4788
4790
|
children: [
|
|
4789
4791
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
4790
4792
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4794,17 +4796,17 @@ function CycleRenderer({
|
|
|
4794
4796
|
cy: ny,
|
|
4795
4797
|
r: nodeR,
|
|
4796
4798
|
fill: ns.fill,
|
|
4797
|
-
opacity:
|
|
4799
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
4798
4800
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
4799
4801
|
strokeWidth: sw
|
|
4800
4802
|
}
|
|
4801
4803
|
),
|
|
4802
4804
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4803
|
-
|
|
4805
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4804
4806
|
{
|
|
4805
4807
|
x: nx,
|
|
4806
4808
|
y: ny,
|
|
4807
|
-
text:
|
|
4809
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20),
|
|
4808
4810
|
fill: ns.fontColor,
|
|
4809
4811
|
fontWeight: ns.fontWeight,
|
|
4810
4812
|
fontStyle: ns.fontStyle,
|
|
@@ -4839,8 +4841,8 @@ function MatrixRenderer({
|
|
|
4839
4841
|
const cellW = (usableW - gap * (cols - 1)) / cols;
|
|
4840
4842
|
const cellH = (usableH - gap * (rows - 1)) / rows;
|
|
4841
4843
|
const rx = Math.min(6, Math.min(cellW, cellH) * 0.1);
|
|
4842
|
-
const shadow =
|
|
4843
|
-
const sw =
|
|
4844
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4845
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4844
4846
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4845
4847
|
"svg",
|
|
4846
4848
|
{
|
|
@@ -4853,13 +4855,13 @@ function MatrixRenderer({
|
|
|
4853
4855
|
const row = Math.floor(i / cols);
|
|
4854
4856
|
const x = pad + col * (cellW + gap);
|
|
4855
4857
|
const y = pad + row * (cellH + gap);
|
|
4856
|
-
const fontSize =
|
|
4858
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
|
|
4857
4859
|
const ns = resolveNodeStyle(node, i, palette);
|
|
4858
4860
|
const label = nodeLabels?.get(node.id);
|
|
4859
4861
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4860
4862
|
"g",
|
|
4861
4863
|
{
|
|
4862
|
-
...
|
|
4864
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
4863
4865
|
children: [
|
|
4864
4866
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
4865
4867
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4871,17 +4873,17 @@ function MatrixRenderer({
|
|
|
4871
4873
|
height: cellH,
|
|
4872
4874
|
rx,
|
|
4873
4875
|
fill: ns.fill,
|
|
4874
|
-
opacity:
|
|
4876
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
4875
4877
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
4876
4878
|
strokeWidth: sw
|
|
4877
4879
|
}
|
|
4878
4880
|
),
|
|
4879
4881
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4880
|
-
|
|
4882
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4881
4883
|
{
|
|
4882
4884
|
x: x + cellW / 2,
|
|
4883
4885
|
y: y + cellH / 2,
|
|
4884
|
-
text:
|
|
4886
|
+
text: chunk2GATFIDB_js.truncate(node.text, 30),
|
|
4885
4887
|
fill: ns.fontColor,
|
|
4886
4888
|
fontWeight: ns.fontWeight ?? 500,
|
|
4887
4889
|
fontStyle: ns.fontStyle,
|
|
@@ -4910,8 +4912,8 @@ function PyramidRenderer({
|
|
|
4910
4912
|
const usableH = h - pad * 2;
|
|
4911
4913
|
const bandH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
4912
4914
|
const maxW = w - pad * 2;
|
|
4913
|
-
const shadow =
|
|
4914
|
-
const sw =
|
|
4915
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4916
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
4915
4917
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4916
4918
|
"svg",
|
|
4917
4919
|
{
|
|
@@ -4935,28 +4937,28 @@ function PyramidRenderer({
|
|
|
4935
4937
|
`${bottomRight},${y + bandH}`,
|
|
4936
4938
|
`${bottomLeft},${y + bandH}`
|
|
4937
4939
|
].join(" ");
|
|
4938
|
-
const fontSize =
|
|
4940
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
|
|
4939
4941
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4940
4942
|
"g",
|
|
4941
4943
|
{
|
|
4942
|
-
...
|
|
4944
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4943
4945
|
children: [
|
|
4944
4946
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4945
4947
|
"polygon",
|
|
4946
4948
|
{
|
|
4947
4949
|
points,
|
|
4948
|
-
fill:
|
|
4949
|
-
opacity:
|
|
4950
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
4951
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
4950
4952
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
4951
4953
|
strokeWidth: sw
|
|
4952
4954
|
}
|
|
4953
4955
|
),
|
|
4954
4956
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4955
|
-
|
|
4957
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
4956
4958
|
{
|
|
4957
4959
|
x: w / 2,
|
|
4958
4960
|
y: y + bandH / 2,
|
|
4959
|
-
text:
|
|
4961
|
+
text: chunk2GATFIDB_js.truncate(node.text, 30),
|
|
4960
4962
|
fill: "white",
|
|
4961
4963
|
fontSize,
|
|
4962
4964
|
className: "pointer-events-none"
|
|
@@ -4978,7 +4980,7 @@ function VennRenderer({
|
|
|
4978
4980
|
}) {
|
|
4979
4981
|
const w = element.width;
|
|
4980
4982
|
const h = element.height;
|
|
4981
|
-
const shadow =
|
|
4983
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
4982
4984
|
if (nodes.length <= 4) {
|
|
4983
4985
|
const cx = w / 2;
|
|
4984
4986
|
const cy2 = h / 2;
|
|
@@ -4995,19 +4997,19 @@ function VennRenderer({
|
|
|
4995
4997
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
4996
4998
|
const nx = cx + spread * Math.cos(angle);
|
|
4997
4999
|
const ny = cy2 + spread * Math.sin(angle);
|
|
4998
|
-
const fontSize =
|
|
5000
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
|
|
4999
5001
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5000
5002
|
"g",
|
|
5001
5003
|
{
|
|
5002
|
-
...
|
|
5004
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5003
5005
|
children: [
|
|
5004
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill:
|
|
5006
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunk2GATFIDB_js.colour(i, palette), opacity: 0.35 }),
|
|
5005
5007
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5006
|
-
|
|
5008
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5007
5009
|
{
|
|
5008
5010
|
x: nx,
|
|
5009
5011
|
y: ny,
|
|
5010
|
-
text:
|
|
5012
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20),
|
|
5011
5013
|
fill: "white",
|
|
5012
5014
|
fontSize,
|
|
5013
5015
|
fontWeight: "bold",
|
|
@@ -5036,19 +5038,19 @@ function VennRenderer({
|
|
|
5036
5038
|
"data-testid": "smartart-venn",
|
|
5037
5039
|
children: nodes.map((node, i) => {
|
|
5038
5040
|
const nx = offsetX + i * (r * 2 - overlap);
|
|
5039
|
-
const fontSize =
|
|
5041
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
|
|
5040
5042
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5041
5043
|
"g",
|
|
5042
5044
|
{
|
|
5043
|
-
...
|
|
5045
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5044
5046
|
children: [
|
|
5045
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill:
|
|
5047
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunk2GATFIDB_js.colour(i, palette), opacity: 0.35 }),
|
|
5046
5048
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5047
|
-
|
|
5049
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5048
5050
|
{
|
|
5049
5051
|
x: nx,
|
|
5050
5052
|
y: cy,
|
|
5051
|
-
text:
|
|
5053
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20),
|
|
5052
5054
|
fill: "white",
|
|
5053
5055
|
fontSize,
|
|
5054
5056
|
fontWeight: "bold",
|
|
@@ -5074,7 +5076,7 @@ function FunnelRenderer({
|
|
|
5074
5076
|
const pad = 8;
|
|
5075
5077
|
const usableW = w - pad * 2;
|
|
5076
5078
|
const stageH = (h - pad * 2) / nodes.length;
|
|
5077
|
-
const shadow =
|
|
5079
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5078
5080
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5079
5081
|
"svg",
|
|
5080
5082
|
{
|
|
@@ -5096,26 +5098,26 @@ function FunnelRenderer({
|
|
|
5096
5098
|
`${bottomRight},${y + stageH}`,
|
|
5097
5099
|
`${bottomLeft},${y + stageH}`
|
|
5098
5100
|
].join(" ");
|
|
5099
|
-
const fontSize =
|
|
5101
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
|
|
5100
5102
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5101
5103
|
"g",
|
|
5102
5104
|
{
|
|
5103
|
-
...
|
|
5105
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5104
5106
|
children: [
|
|
5105
5107
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5106
5108
|
"polygon",
|
|
5107
5109
|
{
|
|
5108
5110
|
points,
|
|
5109
|
-
fill:
|
|
5110
|
-
opacity:
|
|
5111
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5112
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style)
|
|
5111
5113
|
}
|
|
5112
5114
|
),
|
|
5113
5115
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5114
|
-
|
|
5116
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5115
5117
|
{
|
|
5116
5118
|
x: w / 2,
|
|
5117
5119
|
y: y + stageH / 2,
|
|
5118
|
-
text:
|
|
5120
|
+
text: chunk2GATFIDB_js.truncate(node.text, 30),
|
|
5119
5121
|
fill: "white",
|
|
5120
5122
|
fontSize,
|
|
5121
5123
|
className: "pointer-events-none"
|
|
@@ -5142,7 +5144,7 @@ function TargetRenderer({
|
|
|
5142
5144
|
const maxR = Math.min(cx - 8, cy - 8);
|
|
5143
5145
|
const fontSize = Math.max(7, Math.min(10, maxR / (nodes.length + 1)));
|
|
5144
5146
|
const labelX = cx + maxR + 8;
|
|
5145
|
-
const shadow =
|
|
5147
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5146
5148
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5147
5149
|
"svg",
|
|
5148
5150
|
{
|
|
@@ -5155,7 +5157,7 @@ function TargetRenderer({
|
|
|
5155
5157
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5156
5158
|
"g",
|
|
5157
5159
|
{
|
|
5158
|
-
...
|
|
5160
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5159
5161
|
children: [
|
|
5160
5162
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5161
5163
|
"circle",
|
|
@@ -5163,8 +5165,8 @@ function TargetRenderer({
|
|
|
5163
5165
|
cx,
|
|
5164
5166
|
cy,
|
|
5165
5167
|
r: Math.max(r, 4),
|
|
5166
|
-
fill:
|
|
5167
|
-
opacity:
|
|
5168
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5169
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style)
|
|
5168
5170
|
}
|
|
5169
5171
|
),
|
|
5170
5172
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5174,7 +5176,7 @@ function TargetRenderer({
|
|
|
5174
5176
|
y1: cy,
|
|
5175
5177
|
x2: labelX - 2,
|
|
5176
5178
|
y2: 8 + i * (fontSize + 6),
|
|
5177
|
-
stroke:
|
|
5179
|
+
stroke: chunk2GATFIDB_js.colour(i, palette),
|
|
5178
5180
|
strokeWidth: 1,
|
|
5179
5181
|
opacity: 0.6
|
|
5180
5182
|
}
|
|
@@ -5186,10 +5188,10 @@ function TargetRenderer({
|
|
|
5186
5188
|
y: 8 + i * (fontSize + 6) + fontSize / 2,
|
|
5187
5189
|
textAnchor: "start",
|
|
5188
5190
|
dominantBaseline: "central",
|
|
5189
|
-
fill:
|
|
5191
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5190
5192
|
fontSize,
|
|
5191
5193
|
className: "pointer-events-none",
|
|
5192
|
-
children:
|
|
5194
|
+
children: chunk2GATFIDB_js.truncate(node.text, 30)
|
|
5193
5195
|
}
|
|
5194
5196
|
)
|
|
5195
5197
|
]
|
|
@@ -5206,12 +5208,12 @@ function HierarchyRenderer({
|
|
|
5206
5208
|
palette,
|
|
5207
5209
|
style
|
|
5208
5210
|
}) {
|
|
5209
|
-
const roots =
|
|
5211
|
+
const roots = chunk2GATFIDB_js.buildTree(nodes);
|
|
5210
5212
|
if (roots.length === 0) {
|
|
5211
5213
|
return /* @__PURE__ */ jsxRuntime.jsx(ListRenderer, { element, nodes, palette, style });
|
|
5212
5214
|
}
|
|
5213
|
-
const totalLeaves = roots.reduce((s, r) => s +
|
|
5214
|
-
const depth = Math.max(...roots.map(
|
|
5215
|
+
const totalLeaves = roots.reduce((s, r) => s + chunk2GATFIDB_js.treeWidth(r), 0);
|
|
5216
|
+
const depth = Math.max(...roots.map(chunk2GATFIDB_js.treeDepth));
|
|
5215
5217
|
const svgW = element.width;
|
|
5216
5218
|
const svgH = element.height;
|
|
5217
5219
|
const cellW = svgW / totalLeaves;
|
|
@@ -5219,24 +5221,24 @@ function HierarchyRenderer({
|
|
|
5219
5221
|
const boxW = Math.min(cellW * 0.8, 140);
|
|
5220
5222
|
const boxH = Math.min(cellH * 0.4, 36);
|
|
5221
5223
|
const rx = Math.min(6, boxH * 0.15);
|
|
5222
|
-
const shadow =
|
|
5223
|
-
const sw =
|
|
5224
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5225
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
5224
5226
|
const elements = [];
|
|
5225
5227
|
let colourIdx = 0;
|
|
5226
5228
|
function renderTreeNode(t, xOffset, level) {
|
|
5227
|
-
const w =
|
|
5229
|
+
const w = chunk2GATFIDB_js.treeWidth(t);
|
|
5228
5230
|
const nodeCx = (xOffset + w / 2) * cellW;
|
|
5229
5231
|
const nodeCy = level * cellH + cellH / 2;
|
|
5230
5232
|
const ci = colourIdx++;
|
|
5231
|
-
const fontSize =
|
|
5233
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
|
|
5232
5234
|
for (const child of t.children) {
|
|
5233
|
-
const childW =
|
|
5235
|
+
const childW = chunk2GATFIDB_js.treeWidth(child);
|
|
5234
5236
|
let childOffset2 = xOffset;
|
|
5235
5237
|
for (const c of t.children) {
|
|
5236
5238
|
if (c === child) {
|
|
5237
5239
|
break;
|
|
5238
5240
|
}
|
|
5239
|
-
childOffset2 +=
|
|
5241
|
+
childOffset2 += chunk2GATFIDB_js.treeWidth(c);
|
|
5240
5242
|
}
|
|
5241
5243
|
const childCx = (childOffset2 + childW / 2) * cellW;
|
|
5242
5244
|
const childCy = (level + 1) * cellH + cellH / 2;
|
|
@@ -5259,7 +5261,7 @@ function HierarchyRenderer({
|
|
|
5259
5261
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5260
5262
|
"g",
|
|
5261
5263
|
{
|
|
5262
|
-
...
|
|
5264
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(t.node.id, shadow),
|
|
5263
5265
|
children: [
|
|
5264
5266
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5265
5267
|
"rect",
|
|
@@ -5269,18 +5271,18 @@ function HierarchyRenderer({
|
|
|
5269
5271
|
width: boxW,
|
|
5270
5272
|
height: boxH,
|
|
5271
5273
|
rx,
|
|
5272
|
-
fill:
|
|
5273
|
-
opacity:
|
|
5274
|
+
fill: chunk2GATFIDB_js.colour(ci, palette),
|
|
5275
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(ci, nodes.length, style),
|
|
5274
5276
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
5275
5277
|
strokeWidth: sw
|
|
5276
5278
|
}
|
|
5277
5279
|
),
|
|
5278
5280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5279
|
-
|
|
5281
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5280
5282
|
{
|
|
5281
5283
|
x: nodeCx,
|
|
5282
5284
|
y: nodeCy,
|
|
5283
|
-
text:
|
|
5285
|
+
text: chunk2GATFIDB_js.truncate(t.node.text, 40),
|
|
5284
5286
|
fill: "white",
|
|
5285
5287
|
fontSize,
|
|
5286
5288
|
className: "pointer-events-none"
|
|
@@ -5294,7 +5296,7 @@ function HierarchyRenderer({
|
|
|
5294
5296
|
let childOffset = xOffset;
|
|
5295
5297
|
for (const child of t.children) {
|
|
5296
5298
|
renderTreeNode(child, childOffset, level + 1);
|
|
5297
|
-
childOffset +=
|
|
5299
|
+
childOffset += chunk2GATFIDB_js.treeWidth(child);
|
|
5298
5300
|
}
|
|
5299
5301
|
return w;
|
|
5300
5302
|
}
|
|
@@ -5329,7 +5331,7 @@ function GearRenderer({
|
|
|
5329
5331
|
const gearR = Math.min(spacing * 0.4, h * 0.35);
|
|
5330
5332
|
const innerR = gearR * 0.7;
|
|
5331
5333
|
const teethCount = 8;
|
|
5332
|
-
const shadow =
|
|
5334
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5333
5335
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5334
5336
|
"svg",
|
|
5335
5337
|
{
|
|
@@ -5341,27 +5343,27 @@ function GearRenderer({
|
|
|
5341
5343
|
gearNodes.map((node, i) => {
|
|
5342
5344
|
const gx = spacing * (i + 1);
|
|
5343
5345
|
const gy = h / 2 + (i % 2 === 0 ? 0 : gearR * 0.35);
|
|
5344
|
-
const fontSize =
|
|
5346
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
|
|
5345
5347
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5346
5348
|
"g",
|
|
5347
5349
|
{
|
|
5348
|
-
...
|
|
5350
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5349
5351
|
children: [
|
|
5350
5352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5351
5353
|
"path",
|
|
5352
5354
|
{
|
|
5353
|
-
d:
|
|
5354
|
-
fill:
|
|
5355
|
-
opacity:
|
|
5355
|
+
d: chunk2GATFIDB_js.gearPath(gx, gy, gearR, innerR, teethCount),
|
|
5356
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5357
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style)
|
|
5356
5358
|
}
|
|
5357
5359
|
),
|
|
5358
5360
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gx, cy: gy, r: innerR * 0.5, fill: "white", opacity: 0.25 }),
|
|
5359
5361
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5360
|
-
|
|
5362
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5361
5363
|
{
|
|
5362
5364
|
x: gx,
|
|
5363
5365
|
y: gy,
|
|
5364
|
-
text:
|
|
5366
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20),
|
|
5365
5367
|
fill: "white",
|
|
5366
5368
|
fontSize,
|
|
5367
5369
|
fontWeight: "bold",
|
|
@@ -5383,8 +5385,8 @@ function GearRenderer({
|
|
|
5383
5385
|
cx: lx,
|
|
5384
5386
|
cy: ly,
|
|
5385
5387
|
r: 3,
|
|
5386
|
-
fill:
|
|
5387
|
-
opacity:
|
|
5388
|
+
fill: chunk2GATFIDB_js.colour(gearCount + i, palette),
|
|
5389
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(gearCount + i, nodes.length, style)
|
|
5388
5390
|
}
|
|
5389
5391
|
),
|
|
5390
5392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5394,10 +5396,10 @@ function GearRenderer({
|
|
|
5394
5396
|
y: ly,
|
|
5395
5397
|
textAnchor: "start",
|
|
5396
5398
|
dominantBaseline: "central",
|
|
5397
|
-
fill:
|
|
5399
|
+
fill: chunk2GATFIDB_js.colour(gearCount + i, palette),
|
|
5398
5400
|
fontSize: 10,
|
|
5399
5401
|
className: "pointer-events-none",
|
|
5400
|
-
children:
|
|
5402
|
+
children: chunk2GATFIDB_js.truncate(node.text, 30)
|
|
5401
5403
|
}
|
|
5402
5404
|
)
|
|
5403
5405
|
] }, `${element.id}-gear-extra-${node.id}-${i}`);
|
|
@@ -5421,7 +5423,7 @@ function TimelineRenderer({
|
|
|
5421
5423
|
const lineLen = lineEndX - lineStartX;
|
|
5422
5424
|
const dotR = Math.max(4, Math.min(8, lineLen / (nodes.length * 4)));
|
|
5423
5425
|
const labelOffset = Math.min(h * 0.28, 40);
|
|
5424
|
-
const shadow =
|
|
5426
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5425
5427
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5426
5428
|
"svg",
|
|
5427
5429
|
{
|
|
@@ -5443,11 +5445,11 @@ function TimelineRenderer({
|
|
|
5443
5445
|
const above = i % 2 === 0;
|
|
5444
5446
|
const textY = above ? lineY - labelOffset : lineY + labelOffset;
|
|
5445
5447
|
const stemEndY = above ? lineY - dotR - 2 : lineY + dotR + 2;
|
|
5446
|
-
const fontSize =
|
|
5448
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
|
|
5447
5449
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5448
5450
|
"g",
|
|
5449
5451
|
{
|
|
5450
|
-
...
|
|
5452
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5451
5453
|
children: [
|
|
5452
5454
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5453
5455
|
"line",
|
|
@@ -5456,7 +5458,7 @@ function TimelineRenderer({
|
|
|
5456
5458
|
y1: stemEndY,
|
|
5457
5459
|
x2: x,
|
|
5458
5460
|
y2: textY + (above ? fontSize : -fontSize),
|
|
5459
|
-
stroke:
|
|
5461
|
+
stroke: chunk2GATFIDB_js.colour(i, palette),
|
|
5460
5462
|
strokeWidth: 1,
|
|
5461
5463
|
opacity: 0.5
|
|
5462
5464
|
}
|
|
@@ -5467,17 +5469,17 @@ function TimelineRenderer({
|
|
|
5467
5469
|
cx: x,
|
|
5468
5470
|
cy: lineY,
|
|
5469
5471
|
r: dotR,
|
|
5470
|
-
fill:
|
|
5471
|
-
opacity:
|
|
5472
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5473
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style)
|
|
5472
5474
|
}
|
|
5473
5475
|
),
|
|
5474
5476
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5475
|
-
|
|
5477
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5476
5478
|
{
|
|
5477
|
-
text:
|
|
5479
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20) ?? "",
|
|
5478
5480
|
x,
|
|
5479
5481
|
y: textY,
|
|
5480
|
-
fill:
|
|
5482
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5481
5483
|
fontSize,
|
|
5482
5484
|
anchor: above ? "bottom" : "top",
|
|
5483
5485
|
className: "pointer-events-none"
|
|
@@ -5510,8 +5512,8 @@ function BendingProcessRenderer({
|
|
|
5510
5512
|
const boxH = Math.min(cellH * 0.6, 32);
|
|
5511
5513
|
const rx = Math.min(5, boxH * 0.15);
|
|
5512
5514
|
const arrowSize = 6;
|
|
5513
|
-
const shadow =
|
|
5514
|
-
const sw =
|
|
5515
|
+
const shadow = chunk2GATFIDB_js.styleShadow(style);
|
|
5516
|
+
const sw = chunk2GATFIDB_js.styleStroke(style);
|
|
5515
5517
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5516
5518
|
"svg",
|
|
5517
5519
|
{
|
|
@@ -5525,7 +5527,7 @@ function BendingProcessRenderer({
|
|
|
5525
5527
|
const col = row % 2 === 0 ? colInRow : COLS - 1 - colInRow;
|
|
5526
5528
|
const nodeCx = padX + col * cellW + cellW / 2;
|
|
5527
5529
|
const nodeCy = padY + row * cellH + cellH / 2;
|
|
5528
|
-
const fontSize =
|
|
5530
|
+
const fontSize = chunk2GATFIDB_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
|
|
5529
5531
|
let arrow = null;
|
|
5530
5532
|
if (i < nodes.length - 1) {
|
|
5531
5533
|
const nextRow = Math.floor((i + 1) / COLS);
|
|
@@ -5585,7 +5587,7 @@ function BendingProcessRenderer({
|
|
|
5585
5587
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5586
5588
|
"g",
|
|
5587
5589
|
{
|
|
5588
|
-
...
|
|
5590
|
+
...chunk2GATFIDB_js.smartArtNodeGroupProps(node.id, shadow),
|
|
5589
5591
|
children: [
|
|
5590
5592
|
arrow,
|
|
5591
5593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5596,18 +5598,18 @@ function BendingProcessRenderer({
|
|
|
5596
5598
|
width: boxW,
|
|
5597
5599
|
height: boxH,
|
|
5598
5600
|
rx,
|
|
5599
|
-
fill:
|
|
5600
|
-
opacity:
|
|
5601
|
+
fill: chunk2GATFIDB_js.colour(i, palette),
|
|
5602
|
+
opacity: chunk2GATFIDB_js.nodeOpacity(i, nodes.length, style),
|
|
5601
5603
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
5602
5604
|
strokeWidth: sw
|
|
5603
5605
|
}
|
|
5604
5606
|
),
|
|
5605
5607
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5606
|
-
|
|
5608
|
+
chunk2GATFIDB_js.SmartArtNodeText,
|
|
5607
5609
|
{
|
|
5608
5610
|
x: nodeCx,
|
|
5609
5611
|
y: nodeCy,
|
|
5610
|
-
text:
|
|
5612
|
+
text: chunk2GATFIDB_js.truncate(node.text, 20),
|
|
5611
5613
|
fill: "white",
|
|
5612
5614
|
fontSize,
|
|
5613
5615
|
className: "pointer-events-none"
|
|
@@ -5657,8 +5659,8 @@ function SmartArtRendererImpl({
|
|
|
5657
5659
|
}
|
|
5658
5660
|
);
|
|
5659
5661
|
}
|
|
5660
|
-
const palette =
|
|
5661
|
-
const style =
|
|
5662
|
+
const palette = chunk2GATFIDB_js.resolvePalette(element);
|
|
5663
|
+
const style = chunk2GATFIDB_js.resolveStyle(element);
|
|
5662
5664
|
const a11y = chunkDHNQHQ66_js.buildSmartArtA11y(smartArtData);
|
|
5663
5665
|
const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
|
|
5664
5666
|
const editable = canEdit && Boolean(onUpdateElement);
|
|
@@ -5671,7 +5673,7 @@ function SmartArtRendererImpl({
|
|
|
5671
5673
|
const reflowed = chunkDHNQHQ66_js.rebuildDrawingShapesIfCleared(
|
|
5672
5674
|
updated,
|
|
5673
5675
|
smartArtData.layout,
|
|
5674
|
-
|
|
5676
|
+
chunk2GATFIDB_js.resolveSmartArtDataPalette(updated),
|
|
5675
5677
|
style,
|
|
5676
5678
|
element.id,
|
|
5677
5679
|
box
|
|
@@ -5688,7 +5690,7 @@ function SmartArtRendererImpl({
|
|
|
5688
5690
|
const reflowed = chunkDHNQHQ66_js.rebuildDrawingShapesIfCleared(
|
|
5689
5691
|
next,
|
|
5690
5692
|
smartArtData.layout,
|
|
5691
|
-
|
|
5693
|
+
chunk2GATFIDB_js.resolveSmartArtDataPalette(next),
|
|
5692
5694
|
style,
|
|
5693
5695
|
element.id,
|
|
5694
5696
|
box
|
|
@@ -5711,7 +5713,7 @@ function SmartArtRendererImpl({
|
|
|
5711
5713
|
);
|
|
5712
5714
|
} else {
|
|
5713
5715
|
const namedLayout = smartArtData.layout;
|
|
5714
|
-
const layoutType = namedLayout ?
|
|
5716
|
+
const layoutType = namedLayout ? chunk2GATFIDB_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
|
|
5715
5717
|
content = renderLayout(layoutType, element, revealedNodes, palette, style, nodeLabels);
|
|
5716
5718
|
}
|
|
5717
5719
|
const body = editable ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5725,7 +5727,7 @@ function SmartArtRendererImpl({
|
|
|
5725
5727
|
children: content
|
|
5726
5728
|
}
|
|
5727
5729
|
) : content;
|
|
5728
|
-
return
|
|
5730
|
+
return chunk2GATFIDB_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
|
|
5729
5731
|
}
|
|
5730
5732
|
function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
5731
5733
|
if (layoutType.includes("hierarchy") || layoutType.includes("org")) {
|
|
@@ -5789,34 +5791,34 @@ function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
|
5789
5791
|
return /* @__PURE__ */ jsxRuntime.jsx(BendingProcessRenderer, { element, nodes, palette, style });
|
|
5790
5792
|
}
|
|
5791
5793
|
if (layoutType.includes("stepdown")) {
|
|
5792
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5794
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderStepDownProcess(element, nodes, palette, style) });
|
|
5793
5795
|
}
|
|
5794
5796
|
if (layoutType.includes("alternatingflow") || layoutType.includes("alternating")) {
|
|
5795
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5797
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderAlternatingFlow(element, nodes, palette, style) });
|
|
5796
5798
|
}
|
|
5797
5799
|
if (layoutType.includes("descending")) {
|
|
5798
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5800
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderDescendingProcess(element, nodes, palette, style) });
|
|
5799
5801
|
}
|
|
5800
5802
|
if (layoutType.includes("pictureaccent")) {
|
|
5801
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5803
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderPictureAccentList(element, nodes, palette, style) });
|
|
5802
5804
|
}
|
|
5803
5805
|
if (layoutType.includes("verticalblock")) {
|
|
5804
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5806
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderVerticalBlockList(element, nodes, palette, style) });
|
|
5805
5807
|
}
|
|
5806
5808
|
if (layoutType.includes("grouped")) {
|
|
5807
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5809
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderGroupedList(element, nodes, palette, style) });
|
|
5808
5810
|
}
|
|
5809
5811
|
if (layoutType.includes("pyramidlist")) {
|
|
5810
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5812
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderPyramidList(element, nodes, palette, style) });
|
|
5811
5813
|
}
|
|
5812
5814
|
if (layoutType.includes("horizontalpicture")) {
|
|
5813
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5815
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderHorizontalPictureList(element, nodes, palette, style) });
|
|
5814
5816
|
}
|
|
5815
5817
|
if (layoutType.includes("accentprocess")) {
|
|
5816
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5818
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderAccentProcess(element, nodes, palette, style) });
|
|
5817
5819
|
}
|
|
5818
5820
|
if (layoutType.includes("verticalchevron")) {
|
|
5819
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
5821
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk2GATFIDB_js.renderVerticalChevronList(element, nodes, palette, style) });
|
|
5820
5822
|
}
|
|
5821
5823
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5822
5824
|
ListRenderer,
|
|
@@ -5920,8 +5922,8 @@ function SmartArt3DRenderer({
|
|
|
5920
5922
|
if (nodes.length === 0) {
|
|
5921
5923
|
return null;
|
|
5922
5924
|
}
|
|
5923
|
-
const palette =
|
|
5924
|
-
const style =
|
|
5925
|
+
const palette = chunk2GATFIDB_js.resolvePalette(element);
|
|
5926
|
+
const style = chunk2GATFIDB_js.resolveStyle(element);
|
|
5925
5927
|
const layoutResult = chunkDHNQHQ66_js.computeSmartArtLayout(
|
|
5926
5928
|
nodes,
|
|
5927
5929
|
{ width: element.width, height: element.height },
|
|
@@ -6043,13 +6045,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
|
|
|
6043
6045
|
if (s.strikethrough) {
|
|
6044
6046
|
decos.push("line-through");
|
|
6045
6047
|
}
|
|
6046
|
-
const fill = s.hyperlink ? chunkDHNQHQ66_js.normalizeHexColor(s.color || element.textStyle?.color,
|
|
6048
|
+
const fill = s.hyperlink ? chunkDHNQHQ66_js.normalizeHexColor(s.color || element.textStyle?.color, chunk2GATFIDB_js.HYPERLINK_COLOR) : chunkDHNQHQ66_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
|
|
6047
6049
|
return {
|
|
6048
6050
|
fill,
|
|
6049
|
-
fontSize: s.fontSize ?? element.textStyle?.fontSize ??
|
|
6051
|
+
fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunk2GATFIDB_js.DEFAULT_TEXT_FONT_SIZE,
|
|
6050
6052
|
fontWeight: s.bold ? 700 : 400,
|
|
6051
6053
|
fontStyle: s.italic ? "italic" : void 0,
|
|
6052
|
-
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkHUD73YBT_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") :
|
|
6054
|
+
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkHUD73YBT_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunk2GATFIDB_js.DEFAULT_FONT_FAMILY,
|
|
6053
6055
|
textDecoration: decos.length > 0 ? decos.join(" ") : void 0
|
|
6054
6056
|
};
|
|
6055
6057
|
}
|
|
@@ -6078,8 +6080,8 @@ function WarpedText({
|
|
|
6078
6080
|
const warpAdj2 = textEl.textStyle?.textWarpAdj2;
|
|
6079
6081
|
const align = textEl.textStyle?.align ?? "center";
|
|
6080
6082
|
const { startOffset, textAnchor } = getAlignmentProps(align);
|
|
6081
|
-
const baseFontSize = textEl.textStyle?.fontSize ??
|
|
6082
|
-
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkHUD73YBT_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) :
|
|
6083
|
+
const baseFontSize = textEl.textStyle?.fontSize ?? chunk2GATFIDB_js.DEFAULT_TEXT_FONT_SIZE;
|
|
6084
|
+
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkHUD73YBT_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunk2GATFIDB_js.DEFAULT_FONT_FAMILY;
|
|
6083
6085
|
const baseFill = chunkDHNQHQ66_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
|
|
6084
6086
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6085
6087
|
"svg",
|
|
@@ -6208,7 +6210,7 @@ function renderTextElementBody(options) {
|
|
|
6208
6210
|
const useSvgWarp = chunkDHNQHQ66_js.shouldUseSvgWarp(
|
|
6209
6211
|
chunkHUD73YBT_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
|
|
6210
6212
|
);
|
|
6211
|
-
const scene3dStyle = chunkHUD73YBT_js.hasTextProperties(el) ?
|
|
6213
|
+
const scene3dStyle = chunkHUD73YBT_js.hasTextProperties(el) ? chunk2GATFIDB_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
|
|
6212
6214
|
const bodyRotation = chunkHUD73YBT_js.hasTextProperties(el) ? el.textStyle?.textBodyRotation : void 0;
|
|
6213
6215
|
const rotationTransform = typeof bodyRotation === "number" && Number.isFinite(bodyRotation) && bodyRotation !== 0 ? `rotate(${bodyRotation}deg)` : void 0;
|
|
6214
6216
|
const composedTransform = [rotationTransform, chunkDHNQHQ66_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
@@ -6227,18 +6229,18 @@ function renderTextElementBody(options) {
|
|
|
6227
6229
|
shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6228
6230
|
"div",
|
|
6229
6231
|
{
|
|
6230
|
-
className:
|
|
6232
|
+
className: chunk2GATFIDB_js.cn(
|
|
6231
6233
|
"relative z-10 w-full h-full",
|
|
6232
6234
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
6233
6235
|
),
|
|
6234
|
-
style: { ...
|
|
6236
|
+
style: { ...chunk2GATFIDB_js.getTextLayoutStyle(el), ...transformStyle },
|
|
6235
6237
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6236
6238
|
WarpedText,
|
|
6237
6239
|
{
|
|
6238
6240
|
element: el,
|
|
6239
6241
|
width: el.width,
|
|
6240
6242
|
height: el.height,
|
|
6241
|
-
fallbackColor:
|
|
6243
|
+
fallbackColor: chunk2GATFIDB_js.DEFAULT_TEXT_COLOR,
|
|
6242
6244
|
findHighlights: findHl,
|
|
6243
6245
|
fieldContext
|
|
6244
6246
|
}
|
|
@@ -6247,19 +6249,19 @@ function renderTextElementBody(options) {
|
|
|
6247
6249
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6248
6250
|
"div",
|
|
6249
6251
|
{
|
|
6250
|
-
className:
|
|
6252
|
+
className: chunk2GATFIDB_js.cn(
|
|
6251
6253
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
6252
6254
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
6253
6255
|
),
|
|
6254
6256
|
style: {
|
|
6255
|
-
...
|
|
6257
|
+
...chunk2GATFIDB_js.getTextLayoutStyle(el),
|
|
6256
6258
|
...txtS,
|
|
6257
|
-
...
|
|
6259
|
+
...chunk2GATFIDB_js.getTextWarpStyle(txtSE),
|
|
6258
6260
|
...transformStyle
|
|
6259
6261
|
},
|
|
6260
|
-
children:
|
|
6262
|
+
children: chunk2GATFIDB_js.renderTextSegments(
|
|
6261
6263
|
el,
|
|
6262
|
-
|
|
6264
|
+
chunk2GATFIDB_js.DEFAULT_TEXT_COLOR,
|
|
6263
6265
|
void 0,
|
|
6264
6266
|
findHl,
|
|
6265
6267
|
onHyperlinkClick,
|
|
@@ -6561,7 +6563,7 @@ function renderBody(options) {
|
|
|
6561
6563
|
textDirection: txtSE?.textDirection,
|
|
6562
6564
|
textStyle: txtS,
|
|
6563
6565
|
textStyleRaw: txtSE,
|
|
6564
|
-
layoutStyle:
|
|
6566
|
+
layoutStyle: chunk2GATFIDB_js.getTextLayoutStyle(el),
|
|
6565
6567
|
element: el,
|
|
6566
6568
|
onCommit,
|
|
6567
6569
|
onCancel,
|
|
@@ -6572,7 +6574,7 @@ function renderBody(options) {
|
|
|
6572
6574
|
] });
|
|
6573
6575
|
}
|
|
6574
6576
|
if (el.type === "table") {
|
|
6575
|
-
return
|
|
6577
|
+
return chunk2GATFIDB_js.renderTableElement(el, txtS, {
|
|
6576
6578
|
editable: isSel,
|
|
6577
6579
|
selectedCell: isSel ? tableSt : null,
|
|
6578
6580
|
onSelectCell: onCellSel,
|
|
@@ -6605,7 +6607,7 @@ function renderBody(options) {
|
|
|
6605
6607
|
);
|
|
6606
6608
|
}
|
|
6607
6609
|
if (el.type === "media") {
|
|
6608
|
-
return
|
|
6610
|
+
return chunk2GATFIDB_js.renderMediaElement(el, media, {
|
|
6609
6611
|
autoPlay: isPresentationPassive,
|
|
6610
6612
|
fullScreen: isPresentationPassive && Boolean(el.fullScreen),
|
|
6611
6613
|
isPresentationMode: isPresentationPassive,
|
|
@@ -6630,7 +6632,7 @@ function renderBody(options) {
|
|
|
6630
6632
|
}
|
|
6631
6633
|
return renderGroup(el.children, el.groupFill);
|
|
6632
6634
|
}
|
|
6633
|
-
if (
|
|
6635
|
+
if (chunk2GATFIDB_js.shouldRenderFallbackLabel(el, isTxtEl)) {
|
|
6634
6636
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkDHNQHQ66_js.getElementLabel(el) });
|
|
6635
6637
|
}
|
|
6636
6638
|
return renderTextElementBody(options);
|
|
@@ -6652,10 +6654,10 @@ function StaticElementRendererImpl({
|
|
|
6652
6654
|
}) {
|
|
6653
6655
|
const style = chunkHUD73YBT_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
6654
6656
|
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkDHNQHQ66_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
6655
|
-
const fill = chunkDHNQHQ66_js.normalizeHexColor(style?.fillColor,
|
|
6657
|
+
const fill = chunkDHNQHQ66_js.normalizeHexColor(style?.fillColor, chunk2GATFIDB_js.DEFAULT_FILL_COLOR);
|
|
6656
6658
|
const strokeWidth = Math.max(0, style?.strokeWidth || 0);
|
|
6657
|
-
const stroke = chunkDHNQHQ66_js.normalizeHexColor(style?.strokeColor,
|
|
6658
|
-
const baseVisualStyle =
|
|
6659
|
+
const stroke = chunkDHNQHQ66_js.normalizeHexColor(style?.strokeColor, chunk2GATFIDB_js.DEFAULT_STROKE_COLOR);
|
|
6660
|
+
const baseVisualStyle = chunk2GATFIDB_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
|
|
6659
6661
|
const inheritedFill = chunkDHNQHQ66_js.resolveGroupChildFill(element, parentGroupFill);
|
|
6660
6662
|
const visualStyle = inheritedFill ? {
|
|
6661
6663
|
...baseVisualStyle,
|
|
@@ -6665,9 +6667,9 @@ function StaticElementRendererImpl({
|
|
|
6665
6667
|
backgroundSize: inheritedFill.backgroundSize,
|
|
6666
6668
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
6667
6669
|
} : baseVisualStyle;
|
|
6668
|
-
const textStyle =
|
|
6670
|
+
const textStyle = chunk2GATFIDB_js.getTextStyleForElement(
|
|
6669
6671
|
element,
|
|
6670
|
-
element.type === "shape" && hasFill ? "#ffffff" :
|
|
6672
|
+
element.type === "shape" && hasFill ? "#ffffff" : chunk2GATFIDB_js.DEFAULT_TEXT_COLOR
|
|
6671
6673
|
);
|
|
6672
6674
|
const isImage = element.type === "picture" || element.type === "image";
|
|
6673
6675
|
const allowsTextOverflow = chunkHUD73YBT_js.hasTextProperties(element) && element.textStyle?.vertOverflow !== "clip";
|
|
@@ -6710,8 +6712,8 @@ function StaticElementRendererImpl({
|
|
|
6710
6712
|
spellCheck: false,
|
|
6711
6713
|
txtSE: chunkHUD73YBT_js.hasTextProperties(element) ? element.textStyle : void 0,
|
|
6712
6714
|
txtS: textStyle,
|
|
6713
|
-
vecShape:
|
|
6714
|
-
imgStyle:
|
|
6715
|
+
vecShape: chunk2GATFIDB_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
|
|
6716
|
+
imgStyle: chunk2GATFIDB_js.getImageRenderStyle(element),
|
|
6715
6717
|
imgFilter: chunkDHNQHQ66_js.getImageEffectsFilter(element),
|
|
6716
6718
|
imgOpacity: chunkDHNQHQ66_js.getImageEffectsOpacity(element),
|
|
6717
6719
|
imgAlt: "",
|
|
@@ -6851,7 +6853,7 @@ function SlidesGroup(p) {
|
|
|
6851
6853
|
type: "button",
|
|
6852
6854
|
onClick: handleNewSlide,
|
|
6853
6855
|
disabled: !p.canEdit || p.layoutOptions.length === 0,
|
|
6854
|
-
className:
|
|
6856
|
+
className: chunk2GATFIDB_js.cn(
|
|
6855
6857
|
pill,
|
|
6856
6858
|
"whitespace-nowrap",
|
|
6857
6859
|
p.layoutOptions.length > 0 ? "rounded-r-none" : ""
|
|
@@ -6913,7 +6915,7 @@ function SlidesGroup(p) {
|
|
|
6913
6915
|
{
|
|
6914
6916
|
type: "button",
|
|
6915
6917
|
"aria-current": isActive ? "true" : void 0,
|
|
6916
|
-
className:
|
|
6918
|
+
className: chunk2GATFIDB_js.cn(
|
|
6917
6919
|
"relative flex min-w-0 flex-col items-center gap-1 rounded border-[3px] p-1 text-xs text-foreground transition-colors hover:bg-muted",
|
|
6918
6920
|
isActive ? "border-blue-600 bg-blue-50 shadow-[0_0_0_2px_rgba(37,99,235,0.25)] dark:bg-blue-950/40" : "border-transparent"
|
|
6919
6921
|
),
|
|
@@ -7035,6 +7037,13 @@ var COMMON_FONTS = [
|
|
|
7035
7037
|
"Verdana"
|
|
7036
7038
|
];
|
|
7037
7039
|
var COMMON_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 72, 96];
|
|
7040
|
+
var CUSTOM_FONT_FILE_EXTENSION = /\.(?:ttf|otf|woff2?)$/iu;
|
|
7041
|
+
var getZipEntryBaseName = (path) => path.replace(/\\/gu, "/").split("/").filter(Boolean).pop() ?? path;
|
|
7042
|
+
var isUsableZipFontEntry = (path) => {
|
|
7043
|
+
const normalized = path.replace(/\\/gu, "/").toLowerCase();
|
|
7044
|
+
if (normalized.includes("__macosx/") || normalized.endsWith("/.ds_store")) return false;
|
|
7045
|
+
return CUSTOM_FONT_FILE_EXTENSION.test(normalized);
|
|
7046
|
+
};
|
|
7038
7047
|
function HomeSection(p) {
|
|
7039
7048
|
const { t } = reactI18next.useTranslation();
|
|
7040
7049
|
const [fontMenuOpen, setFontMenuOpen] = React18.useState(false);
|
|
@@ -7067,33 +7076,89 @@ function HomeSection(p) {
|
|
|
7067
7076
|
p.onUpdateTextStyle?.({ fontFamily: family });
|
|
7068
7077
|
setFontMenuOpen(false);
|
|
7069
7078
|
};
|
|
7070
|
-
const
|
|
7071
|
-
const
|
|
7079
|
+
const fontSourceFromFile = async (file) => {
|
|
7080
|
+
const baseName = getZipEntryBaseName(file.name);
|
|
7081
|
+
const stem = baseName.replace(CUSTOM_FONT_FILE_EXTENSION, "");
|
|
7072
7082
|
const bold = /(?:^|[-_\s])(?:bold|semibold|demibold|black)(?:$|[-_\s])/iu.test(stem);
|
|
7073
7083
|
const italic = /(?:^|[-_\s])(?:italic|oblique)(?:$|[-_\s])/iu.test(stem);
|
|
7074
7084
|
const family = stem.replace(/(?:[-_\s])(?:regular|normal|book|medium|bold|semibold|demibold|black|italic|oblique)+$/iu, "").replace(/[-_]+/gu, " ").trim();
|
|
7075
|
-
if (!family
|
|
7076
|
-
|
|
7085
|
+
if (!family) return null;
|
|
7086
|
+
const normalizedName = baseName.toLowerCase();
|
|
7087
|
+
const format = normalizedName.endsWith(".woff2") ? "woff2" : normalizedName.endsWith(".woff") ? "woff" : normalizedName.endsWith(".otf") ? "opentype" : "truetype";
|
|
7088
|
+
return {
|
|
7089
|
+
family,
|
|
7090
|
+
src: URL.createObjectURL(file),
|
|
7091
|
+
format,
|
|
7092
|
+
weight: bold ? 700 : 400,
|
|
7093
|
+
style: italic ? "italic" : "normal",
|
|
7094
|
+
data: await file.arrayBuffer()
|
|
7095
|
+
};
|
|
7096
|
+
};
|
|
7097
|
+
const registerFontSources = async (sources) => {
|
|
7098
|
+
if (typeof FontFace === "undefined") return;
|
|
7099
|
+
const loadedSources = [];
|
|
7100
|
+
for (const source of sources) {
|
|
7101
|
+
try {
|
|
7102
|
+
const face = new FontFace(source.family, source.data, {
|
|
7103
|
+
weight: String(source.weight ?? 400),
|
|
7104
|
+
style: source.style ?? "normal"
|
|
7105
|
+
});
|
|
7106
|
+
await face.load();
|
|
7107
|
+
document.fonts.add(face);
|
|
7108
|
+
loadedSources.push(source);
|
|
7109
|
+
} catch (error) {
|
|
7110
|
+
console.warn(`[PowerPointViewer] Could not load custom font ${source.family}.`, error);
|
|
7111
|
+
}
|
|
7077
7112
|
}
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
await face.load();
|
|
7083
|
-
document.fonts.add(face);
|
|
7084
|
-
const next = Array.from(/* @__PURE__ */ new Set([...customFontFamilies, family]));
|
|
7113
|
+
if (loadedSources.length === 0) {
|
|
7114
|
+
throw new Error("None of the selected font files could be loaded by this browser.");
|
|
7115
|
+
}
|
|
7116
|
+
const next = Array.from(/* @__PURE__ */ new Set([...customFontFamilies, ...loadedSources.map((source) => source.family)]));
|
|
7085
7117
|
setCustomFontFamilies(next);
|
|
7086
7118
|
const fontWindow = window;
|
|
7087
7119
|
fontWindow.__AIXA_PPTX_CUSTOM_FONT_FAMILIES__ = next;
|
|
7088
7120
|
window.dispatchEvent(new CustomEvent("aixa:pptx-custom-fonts", { detail: next }));
|
|
7089
|
-
applyFont(family);
|
|
7121
|
+
if (loadedSources[0]) applyFont(loadedSources[0].family);
|
|
7122
|
+
};
|
|
7123
|
+
const registerLocalFontPackage = async (file) => {
|
|
7124
|
+
let sources = [];
|
|
7125
|
+
if (/\.zip$/iu.test(file.name)) {
|
|
7126
|
+
const zip = await JSZip__default.default.loadAsync(file);
|
|
7127
|
+
const entries = Object.values(zip.files).filter(
|
|
7128
|
+
(entry) => !entry.dir && isUsableZipFontEntry(entry.name)
|
|
7129
|
+
);
|
|
7130
|
+
sources = (await Promise.all(entries.map(async (entry) => {
|
|
7131
|
+
const blob = await entry.async("blob");
|
|
7132
|
+
return fontSourceFromFile(
|
|
7133
|
+
new File([blob], getZipEntryBaseName(entry.name), { type: blob.type })
|
|
7134
|
+
);
|
|
7135
|
+
}))).filter((source) => Boolean(source));
|
|
7136
|
+
} else {
|
|
7137
|
+
const source = await fontSourceFromFile(file);
|
|
7138
|
+
if (source) sources = [source];
|
|
7139
|
+
}
|
|
7140
|
+
if (sources.length === 0) throw new Error("No browser-compatible font files were found.");
|
|
7141
|
+
await p.onUploadCustomFontPackage?.(
|
|
7142
|
+
file,
|
|
7143
|
+
sources.map(({ data: _data, ...source }) => source)
|
|
7144
|
+
);
|
|
7145
|
+
await registerFontSources(sources);
|
|
7146
|
+
p.onEmbedCustomFonts?.(
|
|
7147
|
+
sources.map((source) => ({
|
|
7148
|
+
name: source.family,
|
|
7149
|
+
dataUrl: "",
|
|
7150
|
+
bold: Number(source.weight ?? 400) >= 600,
|
|
7151
|
+
italic: source.style === "italic" || source.style === "oblique",
|
|
7152
|
+
format: source.format,
|
|
7153
|
+
rawFontData: new Uint8Array(source.data.slice(0))
|
|
7154
|
+
}))
|
|
7155
|
+
);
|
|
7090
7156
|
};
|
|
7091
7157
|
React18.useEffect(() => {
|
|
7092
7158
|
const handleCustomFonts = (event) => {
|
|
7093
7159
|
const families = event.detail;
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
);
|
|
7160
|
+
const incoming = Array.isArray(families) ? families.filter((family) => typeof family === "string" && family.trim().length > 0) : [];
|
|
7161
|
+
setCustomFontFamilies((current) => Array.from(/* @__PURE__ */ new Set([...current, ...incoming])));
|
|
7097
7162
|
};
|
|
7098
7163
|
window.addEventListener("aixa:pptx-custom-fonts", handleCustomFonts);
|
|
7099
7164
|
return () => window.removeEventListener("aixa:pptx-custom-fonts", handleCustomFonts);
|
|
@@ -7146,7 +7211,7 @@ function HomeSection(p) {
|
|
|
7146
7211
|
setTimeout(() => setCutFeedback(false), 600);
|
|
7147
7212
|
},
|
|
7148
7213
|
disabled: !p.canEdit,
|
|
7149
|
-
className:
|
|
7214
|
+
className: chunk2GATFIDB_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
|
|
7150
7215
|
title: t("pptx.arrange.cut"),
|
|
7151
7216
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic })
|
|
7152
7217
|
}
|
|
@@ -7160,7 +7225,7 @@ function HomeSection(p) {
|
|
|
7160
7225
|
setCopiedFeedback(true);
|
|
7161
7226
|
setTimeout(() => setCopiedFeedback(false), 600);
|
|
7162
7227
|
},
|
|
7163
|
-
className:
|
|
7228
|
+
className: chunk2GATFIDB_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
|
|
7164
7229
|
title: t("pptx.arrange.copy"),
|
|
7165
7230
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic })
|
|
7166
7231
|
}
|
|
@@ -7173,7 +7238,7 @@ function HomeSection(p) {
|
|
|
7173
7238
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
7174
7239
|
"data-testid": "format-painter-toggle",
|
|
7175
7240
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
7176
|
-
className:
|
|
7241
|
+
className: chunk2GATFIDB_js.cn(
|
|
7177
7242
|
gL,
|
|
7178
7243
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
7179
7244
|
),
|
|
@@ -7284,7 +7349,7 @@ function HomeSection(p) {
|
|
|
7284
7349
|
onClick: () => fontFileInputRef.current?.click(),
|
|
7285
7350
|
children: [
|
|
7286
7351
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuUpload, { className: "h-4 w-4" }),
|
|
7287
|
-
"Add custom font
|
|
7352
|
+
"Add custom font package"
|
|
7288
7353
|
]
|
|
7289
7354
|
}
|
|
7290
7355
|
),
|
|
@@ -7293,11 +7358,11 @@ function HomeSection(p) {
|
|
|
7293
7358
|
{
|
|
7294
7359
|
ref: fontFileInputRef,
|
|
7295
7360
|
type: "file",
|
|
7296
|
-
accept: ".ttf,.otf,.woff,.woff2,font/ttf,font/otf,font/woff,font/woff2",
|
|
7361
|
+
accept: ".zip,.ttf,.otf,.woff,.woff2,application/zip,font/ttf,font/otf,font/woff,font/woff2",
|
|
7297
7362
|
className: "hidden",
|
|
7298
7363
|
onChange: (event) => {
|
|
7299
7364
|
const file = event.currentTarget.files?.[0];
|
|
7300
|
-
if (file) void
|
|
7365
|
+
if (file) void registerLocalFontPackage(file);
|
|
7301
7366
|
event.currentTarget.value = "";
|
|
7302
7367
|
}
|
|
7303
7368
|
}
|
|
@@ -7428,7 +7493,7 @@ function InsertSection(p) {
|
|
|
7428
7493
|
onChange: (e) => p.onSetNewShapeType(e.target.value),
|
|
7429
7494
|
className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
|
|
7430
7495
|
title: t("pptx.insert.shapeType"),
|
|
7431
|
-
children:
|
|
7496
|
+
children: chunk2GATFIDB_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
|
|
7432
7497
|
}
|
|
7433
7498
|
),
|
|
7434
7499
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -7439,7 +7504,7 @@ function InsertSection(p) {
|
|
|
7439
7504
|
className: "inline-flex items-center gap-1.5 px-2.5 py-1.5 border-l border-border hover:bg-accent transition-colors text-xs",
|
|
7440
7505
|
title: t("pptx.insert.addShape"),
|
|
7441
7506
|
children: [
|
|
7442
|
-
|
|
7507
|
+
chunk2GATFIDB_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic }),
|
|
7443
7508
|
t("pptx.insert.shape")
|
|
7444
7509
|
]
|
|
7445
7510
|
}
|
|
@@ -7713,7 +7778,7 @@ function InsertSection(p) {
|
|
|
7713
7778
|
{
|
|
7714
7779
|
type: "button",
|
|
7715
7780
|
disabled: !canEdit,
|
|
7716
|
-
className:
|
|
7781
|
+
className: chunk2GATFIDB_js.cn(pill, "whitespace-nowrap"),
|
|
7717
7782
|
onClick: p.onOpenHeaderFooter,
|
|
7718
7783
|
children: t("pptx.headerFooter.title")
|
|
7719
7784
|
}
|
|
@@ -7945,7 +8010,7 @@ function ReviewSection(p) {
|
|
|
7945
8010
|
}
|
|
7946
8011
|
function SlideShowSection(p) {
|
|
7947
8012
|
const { t } = reactI18next.useTranslation();
|
|
7948
|
-
const { isHidden } =
|
|
8013
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(p.hiddenActions);
|
|
7949
8014
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7950
8015
|
/* @__PURE__ */ jsxRuntime.jsxs(RibbonGroup, { label: t("pptx.slideShow.start", { defaultValue: "Start Slide Show" }), children: [
|
|
7951
8016
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -9063,7 +9128,7 @@ function MobileSheet({
|
|
|
9063
9128
|
headerRight
|
|
9064
9129
|
}) {
|
|
9065
9130
|
const sheetRef = React18.useRef(null);
|
|
9066
|
-
const { dragY, dragging, handlers } =
|
|
9131
|
+
const { dragY, dragging, handlers } = chunk2GATFIDB_js.useSheetDismissDrag(onClose);
|
|
9067
9132
|
useModalFocus(open, sheetRef, onClose);
|
|
9068
9133
|
if (!open) {
|
|
9069
9134
|
return null;
|
|
@@ -9087,7 +9152,7 @@ function MobileSheet({
|
|
|
9087
9152
|
"aria-modal": "true",
|
|
9088
9153
|
"aria-label": typeof title === "string" ? title : "Mobile panel",
|
|
9089
9154
|
tabIndex: -1,
|
|
9090
|
-
className:
|
|
9155
|
+
className: chunk2GATFIDB_js.cn(
|
|
9091
9156
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
9092
9157
|
"animate-in slide-in-from-bottom duration-200",
|
|
9093
9158
|
className
|
|
@@ -9150,14 +9215,14 @@ function MobileMenuSheet(props) {
|
|
|
9150
9215
|
const { t } = reactI18next.useTranslation();
|
|
9151
9216
|
const { open, onClose } = props;
|
|
9152
9217
|
const [active, setActive] = React18.useState("home");
|
|
9153
|
-
const { isTabVisible } =
|
|
9218
|
+
const { isTabVisible } = chunk2GATFIDB_js.useToolbarVisibility(props.hiddenActions);
|
|
9154
9219
|
return /* @__PURE__ */ jsxRuntime.jsx(MobileSheet, { open, onClose, autoHeight: true, title: t("pptx.mobileToolbar.menu"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
9155
9220
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0 z-10 bg-background border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5 px-3 py-2", children: MENU_ITEMS.filter(({ key }) => isTabVisible(key)).map(({ key, label, icon: Icon }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9156
9221
|
"button",
|
|
9157
9222
|
{
|
|
9158
9223
|
type: "button",
|
|
9159
9224
|
onClick: () => setActive(active === key ? null : key),
|
|
9160
|
-
className:
|
|
9225
|
+
className: chunk2GATFIDB_js.cn(
|
|
9161
9226
|
"inline-flex items-center gap-1.5 shrink-0 px-3 py-2 rounded-full text-[12px] font-medium border transition-colors min-h-[36px]",
|
|
9162
9227
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
9163
9228
|
),
|
|
@@ -9393,7 +9458,7 @@ function MobileToolbar(props) {
|
|
|
9393
9458
|
const { t } = reactI18next.useTranslation();
|
|
9394
9459
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
9395
9460
|
const [menuOpen, setMenuOpen] = React18.useState(false);
|
|
9396
|
-
const { isHidden } =
|
|
9461
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(props.hiddenActions);
|
|
9397
9462
|
const showEdit = mode === "edit" || mode === "master";
|
|
9398
9463
|
const btn = "inline-flex items-center justify-center min-w-[44px] min-h-[44px] rounded-md text-foreground/80 hover:bg-accent/60 disabled:opacity-40 disabled:cursor-not-allowed active:scale-95 transition-transform";
|
|
9399
9464
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -9444,7 +9509,7 @@ function MobileToolbar(props) {
|
|
|
9444
9509
|
{
|
|
9445
9510
|
type: "button",
|
|
9446
9511
|
onClick: props.onToggleAiPanel,
|
|
9447
|
-
className:
|
|
9512
|
+
className: chunk2GATFIDB_js.cn(btn, props.isAiPanelOpen ? "text-primary" : void 0),
|
|
9448
9513
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
9449
9514
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
9450
9515
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: "w-5 h-5" })
|
|
@@ -9466,7 +9531,7 @@ function MobileToolbar(props) {
|
|
|
9466
9531
|
{
|
|
9467
9532
|
type: "button",
|
|
9468
9533
|
onClick: () => onSetMode("present"),
|
|
9469
|
-
className:
|
|
9534
|
+
className: chunk2GATFIDB_js.cn(btn, "text-primary"),
|
|
9470
9535
|
title: t("pptx.toolbar.present"),
|
|
9471
9536
|
"aria-label": t("pptx.toolbar.present"),
|
|
9472
9537
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
|
|
@@ -9477,7 +9542,7 @@ function MobileToolbar(props) {
|
|
|
9477
9542
|
{
|
|
9478
9543
|
type: "button",
|
|
9479
9544
|
onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
|
|
9480
|
-
className:
|
|
9545
|
+
className: chunk2GATFIDB_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
|
|
9481
9546
|
title: t("pptx.toolbar.share"),
|
|
9482
9547
|
"aria-label": t("pptx.toolbar.share"),
|
|
9483
9548
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
|
|
@@ -9502,7 +9567,7 @@ var FILL_COLORS = [
|
|
|
9502
9567
|
"#008888",
|
|
9503
9568
|
"#888888"
|
|
9504
9569
|
];
|
|
9505
|
-
var TOP_SHAPES =
|
|
9570
|
+
var TOP_SHAPES = chunk2GATFIDB_js.SHAPE_PRESETS.slice(0, 12);
|
|
9506
9571
|
function DrawingGroup(p) {
|
|
9507
9572
|
const { t } = reactI18next.useTranslation();
|
|
9508
9573
|
const [shapesOpen, setShapesOpen] = React18.useState(false);
|
|
@@ -9583,7 +9648,7 @@ function DrawingGroup(p) {
|
|
|
9583
9648
|
"button",
|
|
9584
9649
|
{
|
|
9585
9650
|
type: "button",
|
|
9586
|
-
className:
|
|
9651
|
+
className: chunk2GATFIDB_js.cn(
|
|
9587
9652
|
"flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
|
|
9588
9653
|
p.newShapeType === s.type && "bg-accent"
|
|
9589
9654
|
),
|
|
@@ -9836,7 +9901,7 @@ function TabRowActions(p) {
|
|
|
9836
9901
|
const { t } = reactI18next.useTranslation();
|
|
9837
9902
|
const collab = useCollaboration();
|
|
9838
9903
|
const isCollaborating = collab && collab.status === "connected";
|
|
9839
|
-
const { isHidden } =
|
|
9904
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(p.hiddenActions);
|
|
9840
9905
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
|
|
9841
9906
|
p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9842
9907
|
"button",
|
|
@@ -9857,7 +9922,7 @@ function TabRowActions(p) {
|
|
|
9857
9922
|
{
|
|
9858
9923
|
type: "button",
|
|
9859
9924
|
onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
|
|
9860
|
-
className:
|
|
9925
|
+
className: chunk2GATFIDB_js.cn(
|
|
9861
9926
|
"relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
|
|
9862
9927
|
isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
|
|
9863
9928
|
),
|
|
@@ -9937,7 +10002,7 @@ function CustomShowsControls({
|
|
|
9937
10002
|
{
|
|
9938
10003
|
type: "button",
|
|
9939
10004
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
9940
|
-
className:
|
|
10005
|
+
className: chunk2GATFIDB_js.cn(
|
|
9941
10006
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
9942
10007
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
9943
10008
|
),
|
|
@@ -9985,7 +10050,7 @@ function PresentDropdown({
|
|
|
9985
10050
|
{
|
|
9986
10051
|
type: "button",
|
|
9987
10052
|
onClick: onPresent,
|
|
9988
|
-
className:
|
|
10053
|
+
className: chunk2GATFIDB_js.cn(
|
|
9989
10054
|
"px-2 py-1 transition-colors",
|
|
9990
10055
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
9991
10056
|
),
|
|
@@ -9998,7 +10063,7 @@ function PresentDropdown({
|
|
|
9998
10063
|
{
|
|
9999
10064
|
type: "button",
|
|
10000
10065
|
onClick: () => setOpen((prev) => !prev),
|
|
10001
|
-
className:
|
|
10066
|
+
className: chunk2GATFIDB_js.cn(
|
|
10002
10067
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
10003
10068
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
10004
10069
|
),
|
|
@@ -10186,7 +10251,7 @@ function OverflowMenu(p) {
|
|
|
10186
10251
|
{
|
|
10187
10252
|
type: "button",
|
|
10188
10253
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
10189
|
-
className:
|
|
10254
|
+
className: chunk2GATFIDB_js.cn(
|
|
10190
10255
|
"p-1.5 rounded transition-colors",
|
|
10191
10256
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
10192
10257
|
),
|
|
@@ -10241,7 +10306,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10241
10306
|
{
|
|
10242
10307
|
type: "button",
|
|
10243
10308
|
onClick: onToggleSidebar,
|
|
10244
|
-
className:
|
|
10309
|
+
className: chunk2GATFIDB_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
10245
10310
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
10246
10311
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
10247
10312
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -10253,7 +10318,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10253
10318
|
{
|
|
10254
10319
|
type: "button",
|
|
10255
10320
|
onClick: p.onToggleComments,
|
|
10256
|
-
className:
|
|
10321
|
+
className: chunk2GATFIDB_js.cn(
|
|
10257
10322
|
qab,
|
|
10258
10323
|
"relative max-md:hidden",
|
|
10259
10324
|
p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
|
|
@@ -10320,7 +10385,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10320
10385
|
{
|
|
10321
10386
|
type: "button",
|
|
10322
10387
|
onClick: onToggleInspector,
|
|
10323
|
-
className:
|
|
10388
|
+
className: chunk2GATFIDB_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
10324
10389
|
title: t("pptx.toolbar.toggleInspector"),
|
|
10325
10390
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
10326
10391
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -10331,7 +10396,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10331
10396
|
{
|
|
10332
10397
|
type: "button",
|
|
10333
10398
|
onClick: p.onToggleAiPanel,
|
|
10334
|
-
className:
|
|
10399
|
+
className: chunk2GATFIDB_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
10335
10400
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
10336
10401
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
10337
10402
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -10342,7 +10407,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10342
10407
|
{
|
|
10343
10408
|
type: "button",
|
|
10344
10409
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
10345
|
-
className:
|
|
10410
|
+
className: chunk2GATFIDB_js.cn(qab, "text-muted-foreground"),
|
|
10346
10411
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
10347
10412
|
"aria-label": t("pptx.toolbar.settings"),
|
|
10348
10413
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -10355,7 +10420,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10355
10420
|
function Toolbar(p) {
|
|
10356
10421
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
10357
10422
|
const { t } = reactI18next.useTranslation();
|
|
10358
|
-
const { isTabVisible } =
|
|
10423
|
+
const { isTabVisible } = chunk2GATFIDB_js.useToolbarVisibility(p.hiddenActions);
|
|
10359
10424
|
if (isNarrowViewport && mode !== "present") {
|
|
10360
10425
|
return /* @__PURE__ */ jsxRuntime.jsx(MobileToolbar, { ...p });
|
|
10361
10426
|
}
|
|
@@ -10388,14 +10453,14 @@ function Toolbar(p) {
|
|
|
10388
10453
|
role: "tablist",
|
|
10389
10454
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
10390
10455
|
children: [
|
|
10391
|
-
|
|
10456
|
+
chunk2GATFIDB_js.TOOLBAR_SECTIONS.filter((s) => isTabVisible(s.id)).map((s) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10392
10457
|
"button",
|
|
10393
10458
|
{
|
|
10394
10459
|
type: "button",
|
|
10395
10460
|
role: "tab",
|
|
10396
10461
|
"aria-selected": toolbarSection === s.id,
|
|
10397
10462
|
onClick: () => onSetToolbarSection(s.id),
|
|
10398
|
-
className:
|
|
10463
|
+
className: chunk2GATFIDB_js.cn(
|
|
10399
10464
|
"relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
|
|
10400
10465
|
toolbarSection === s.id ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : "text-foreground after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary" : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
10401
10466
|
),
|
|
@@ -10418,7 +10483,7 @@ function Toolbar(p) {
|
|
|
10418
10483
|
{
|
|
10419
10484
|
type: "button",
|
|
10420
10485
|
onClick: p.onToggleCompactToolbar,
|
|
10421
|
-
className:
|
|
10486
|
+
className: chunk2GATFIDB_js.cn(
|
|
10422
10487
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
10423
10488
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
10424
10489
|
),
|
|
@@ -10434,7 +10499,7 @@ function Toolbar(p) {
|
|
|
10434
10499
|
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10435
10500
|
"div",
|
|
10436
10501
|
{
|
|
10437
|
-
className:
|
|
10502
|
+
className: chunk2GATFIDB_js.cn(
|
|
10438
10503
|
"flex min-h-[82px] items-stretch gap-0 overflow-x-auto px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap [&>*]:shrink-0",
|
|
10439
10504
|
isNarrowViewport && !isCompactToolbarOpen && "hidden"
|
|
10440
10505
|
),
|
|
@@ -10485,7 +10550,9 @@ function Toolbar(p) {
|
|
|
10485
10550
|
selectedElement: p.selectedElement,
|
|
10486
10551
|
onUpdateTextStyle: p.onUpdateTextStyle,
|
|
10487
10552
|
themeFonts: p.themeFonts,
|
|
10488
|
-
embeddedFontFamilies: p.embeddedFontFamilies
|
|
10553
|
+
embeddedFontFamilies: p.embeddedFontFamilies,
|
|
10554
|
+
onEmbedCustomFonts: p.onEmbedCustomFonts,
|
|
10555
|
+
onUploadCustomFontPackage: p.onUploadCustomFontPackage
|
|
10489
10556
|
}
|
|
10490
10557
|
),
|
|
10491
10558
|
sIns && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10956,7 +11023,7 @@ function DrawingOverlaySvg({
|
|
|
10956
11023
|
}
|
|
10957
11024
|
);
|
|
10958
11025
|
}
|
|
10959
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
11026
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk2GATFIDB_js.GRID_SIZE, visible }) {
|
|
10960
11027
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
10961
11028
|
const patternId = React18.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
10962
11029
|
if (!visible) {
|
|
@@ -12237,7 +12304,7 @@ function LoadingState({ className }) {
|
|
|
12237
12304
|
role: "status",
|
|
12238
12305
|
"aria-live": "polite",
|
|
12239
12306
|
"aria-atomic": "true",
|
|
12240
|
-
className:
|
|
12307
|
+
className: chunk2GATFIDB_js.cn(
|
|
12241
12308
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
12242
12309
|
className
|
|
12243
12310
|
),
|
|
@@ -12260,7 +12327,7 @@ function ErrorState({ className, error }) {
|
|
|
12260
12327
|
{
|
|
12261
12328
|
role: "alert",
|
|
12262
12329
|
"aria-live": "assertive",
|
|
12263
|
-
className:
|
|
12330
|
+
className: chunk2GATFIDB_js.cn(
|
|
12264
12331
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
12265
12332
|
className
|
|
12266
12333
|
),
|
|
@@ -12291,7 +12358,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
12291
12358
|
}
|
|
12292
12359
|
)
|
|
12293
12360
|
] }),
|
|
12294
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
12361
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk2GATFIDB_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12295
12362
|
"div",
|
|
12296
12363
|
{
|
|
12297
12364
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -12351,14 +12418,14 @@ function AccessibilityPanel({
|
|
|
12351
12418
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
12352
12419
|
"aria-checked": reducedMotion ?? false,
|
|
12353
12420
|
onClick: onToggleReducedMotion,
|
|
12354
|
-
className:
|
|
12421
|
+
className: chunk2GATFIDB_js.cn(
|
|
12355
12422
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
12356
12423
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
12357
12424
|
),
|
|
12358
12425
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12359
12426
|
"span",
|
|
12360
12427
|
{
|
|
12361
|
-
className:
|
|
12428
|
+
className: chunk2GATFIDB_js.cn(
|
|
12362
12429
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
12363
12430
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
12364
12431
|
)
|
|
@@ -12377,7 +12444,7 @@ function AccessibilityPanel({
|
|
|
12377
12444
|
"div",
|
|
12378
12445
|
{
|
|
12379
12446
|
role: "listitem",
|
|
12380
|
-
className:
|
|
12447
|
+
className: chunk2GATFIDB_js.cn(
|
|
12381
12448
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
12382
12449
|
/* Severity-based background and text colouring */
|
|
12383
12450
|
issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
|
|
@@ -12501,7 +12568,7 @@ function StatusBar({
|
|
|
12501
12568
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12502
12569
|
"span",
|
|
12503
12570
|
{
|
|
12504
|
-
className:
|
|
12571
|
+
className: chunk2GATFIDB_js.cn(
|
|
12505
12572
|
"shrink-0 max-md:hidden",
|
|
12506
12573
|
autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
|
|
12507
12574
|
),
|
|
@@ -12514,7 +12581,7 @@ function StatusBar({
|
|
|
12514
12581
|
{
|
|
12515
12582
|
type: "button",
|
|
12516
12583
|
onClick: onToggleNotes,
|
|
12517
|
-
className:
|
|
12584
|
+
className: chunk2GATFIDB_js.cn(
|
|
12518
12585
|
vb,
|
|
12519
12586
|
"flex items-center gap-1 text-[10px]",
|
|
12520
12587
|
isNotesExpanded && "text-primary"
|
|
@@ -12534,7 +12601,7 @@ function StatusBar({
|
|
|
12534
12601
|
{
|
|
12535
12602
|
type: "button",
|
|
12536
12603
|
onClick: () => onSetMode("edit"),
|
|
12537
|
-
className:
|
|
12604
|
+
className: chunk2GATFIDB_js.cn(vb, mode === "edit" && "text-primary"),
|
|
12538
12605
|
title: t("pptx.statusBar.normalView"),
|
|
12539
12606
|
"aria-label": t("pptx.statusBar.normalView"),
|
|
12540
12607
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
|
|
@@ -12556,7 +12623,7 @@ function StatusBar({
|
|
|
12556
12623
|
{
|
|
12557
12624
|
type: "button",
|
|
12558
12625
|
onClick: () => onSetMode("present"),
|
|
12559
|
-
className:
|
|
12626
|
+
className: chunk2GATFIDB_js.cn(vb, mode === "present" && "text-primary"),
|
|
12560
12627
|
title: t("pptx.statusBar.slideShow"),
|
|
12561
12628
|
"aria-label": t("pptx.statusBar.slideShow"),
|
|
12562
12629
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
|
|
@@ -12646,7 +12713,7 @@ function ResizeHandle({
|
|
|
12646
12713
|
{
|
|
12647
12714
|
role: "separator",
|
|
12648
12715
|
"aria-orientation": direction,
|
|
12649
|
-
className:
|
|
12716
|
+
className: chunk2GATFIDB_js.cn(
|
|
12650
12717
|
// Outer container: generous hit area for easy clicking.
|
|
12651
12718
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
12652
12719
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -12657,7 +12724,7 @@ function ResizeHandle({
|
|
|
12657
12724
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12658
12725
|
"div",
|
|
12659
12726
|
{
|
|
12660
|
-
className:
|
|
12727
|
+
className: chunk2GATFIDB_js.cn(
|
|
12661
12728
|
"absolute transition-colors",
|
|
12662
12729
|
direction === "horizontal" ? "top-0 bottom-0 left-1/2 -translate-x-1/2 w-0.5 group-hover:w-1 group-hover:bg-primary/40 group-active:w-1 group-active:bg-primary/60" : "left-0 right-0 top-1/2 -translate-y-1/2 h-0.5 group-hover:h-1 group-hover:bg-primary/40 group-active:h-1 group-active:bg-primary/60"
|
|
12663
12730
|
)
|
|
@@ -12699,13 +12766,13 @@ function SlideThumbnailImpl({
|
|
|
12699
12766
|
}) {
|
|
12700
12767
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
12701
12768
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
12702
|
-
const scale =
|
|
12769
|
+
const scale = chunk2GATFIDB_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
12703
12770
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
12704
12771
|
const previewElements = chunkDHNQHQ66_js.buildPreviewElements(slide, templateElements);
|
|
12705
12772
|
const slideFieldContext = deriveSlideFieldContext(fieldContext, slide);
|
|
12706
12773
|
const { t } = reactI18next.useTranslation();
|
|
12707
12774
|
const transitionLabel = slide.transition ? (() => {
|
|
12708
|
-
const opt =
|
|
12775
|
+
const opt = chunk2GATFIDB_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
12709
12776
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
12710
12777
|
})() : void 0;
|
|
12711
12778
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -13429,7 +13496,7 @@ function SectionHeader({
|
|
|
13429
13496
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13430
13497
|
lu.LuChevronDown,
|
|
13431
13498
|
{
|
|
13432
|
-
className:
|
|
13499
|
+
className: chunk2GATFIDB_js.cn(
|
|
13433
13500
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
13434
13501
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
13435
13502
|
)
|
|
@@ -13542,7 +13609,7 @@ function LazyThumbnailInner({
|
|
|
13542
13609
|
className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
|
|
13543
13610
|
style: {
|
|
13544
13611
|
height: previewHeight,
|
|
13545
|
-
minWidth:
|
|
13612
|
+
minWidth: chunk2GATFIDB_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
13546
13613
|
}
|
|
13547
13614
|
}
|
|
13548
13615
|
) });
|
|
@@ -13579,7 +13646,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
|
|
|
13579
13646
|
function estimateSlideItemHeight(canvasWidth, canvasHeight) {
|
|
13580
13647
|
const safeW = Math.max(canvasWidth, 1);
|
|
13581
13648
|
const safeH = Math.max(canvasHeight, 1);
|
|
13582
|
-
const scale =
|
|
13649
|
+
const scale = chunk2GATFIDB_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
|
|
13583
13650
|
const previewHeight = Math.max(56, Math.round(safeH * scale));
|
|
13584
13651
|
return previewHeight + 30;
|
|
13585
13652
|
}
|
|
@@ -13618,7 +13685,7 @@ function SlideItemInner({
|
|
|
13618
13685
|
);
|
|
13619
13686
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
13620
13687
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
13621
|
-
const scale =
|
|
13688
|
+
const scale = chunk2GATFIDB_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
13622
13689
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
13623
13690
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13624
13691
|
"button",
|
|
@@ -13627,7 +13694,7 @@ function SlideItemInner({
|
|
|
13627
13694
|
ref: slideRef,
|
|
13628
13695
|
"aria-label": `Go to slide ${slideIndex + 1}`,
|
|
13629
13696
|
"aria-current": isActive ? "true" : void 0,
|
|
13630
|
-
className:
|
|
13697
|
+
className: chunk2GATFIDB_js.cn(
|
|
13631
13698
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
13632
13699
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
13633
13700
|
isHidden && "opacity-50"
|
|
@@ -13643,7 +13710,7 @@ function SlideItemInner({
|
|
|
13643
13710
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13644
13711
|
"span",
|
|
13645
13712
|
{
|
|
13646
|
-
className:
|
|
13713
|
+
className: chunk2GATFIDB_js.cn(
|
|
13647
13714
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
13648
13715
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
13649
13716
|
),
|
|
@@ -13663,7 +13730,7 @@ function SlideItemInner({
|
|
|
13663
13730
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
13664
13731
|
"div",
|
|
13665
13732
|
{
|
|
13666
|
-
className:
|
|
13733
|
+
className: chunk2GATFIDB_js.cn(
|
|
13667
13734
|
"relative flex-1 overflow-hidden border transition-colors bg-white",
|
|
13668
13735
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
13669
13736
|
),
|
|
@@ -13872,7 +13939,7 @@ function SlidesPaneSidebar({
|
|
|
13872
13939
|
[sectionGroups, showSectionHeaders, collapsedSections]
|
|
13873
13940
|
);
|
|
13874
13941
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
13875
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
13942
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk2GATFIDB_js.useVirtualizedSlides({
|
|
13876
13943
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
13877
13944
|
itemHeight: estimatedItemHeight
|
|
13878
13945
|
});
|
|
@@ -14106,7 +14173,7 @@ function HandoutMasterPanel({
|
|
|
14106
14173
|
{
|
|
14107
14174
|
type: "button",
|
|
14108
14175
|
"aria-pressed": slidesPerPage === count,
|
|
14109
|
-
className:
|
|
14176
|
+
className: chunk2GATFIDB_js.cn(
|
|
14110
14177
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
14111
14178
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
14112
14179
|
),
|
|
@@ -14234,7 +14301,7 @@ function SlideMastersList({
|
|
|
14234
14301
|
"div",
|
|
14235
14302
|
{
|
|
14236
14303
|
ref: isMasterActive ? activeRef : void 0,
|
|
14237
|
-
className:
|
|
14304
|
+
className: chunk2GATFIDB_js.cn(
|
|
14238
14305
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
14239
14306
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
14240
14307
|
),
|
|
@@ -14251,7 +14318,7 @@ function SlideMastersList({
|
|
|
14251
14318
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14252
14319
|
"span",
|
|
14253
14320
|
{
|
|
14254
|
-
className:
|
|
14321
|
+
className: chunk2GATFIDB_js.cn(
|
|
14255
14322
|
"text-[10px] font-medium",
|
|
14256
14323
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
14257
14324
|
),
|
|
@@ -14267,7 +14334,7 @@ function SlideMastersList({
|
|
|
14267
14334
|
"div",
|
|
14268
14335
|
{
|
|
14269
14336
|
ref: isLayoutActive ? activeRef : void 0,
|
|
14270
|
-
className:
|
|
14337
|
+
className: chunk2GATFIDB_js.cn(
|
|
14271
14338
|
"group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
|
|
14272
14339
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
14273
14340
|
),
|
|
@@ -14284,7 +14351,7 @@ function SlideMastersList({
|
|
|
14284
14351
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14285
14352
|
"span",
|
|
14286
14353
|
{
|
|
14287
|
-
className:
|
|
14354
|
+
className: chunk2GATFIDB_js.cn(
|
|
14288
14355
|
"text-[9px]",
|
|
14289
14356
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
14290
14357
|
),
|
|
@@ -14368,7 +14435,7 @@ function MasterViewSidebar({
|
|
|
14368
14435
|
type: "button",
|
|
14369
14436
|
role: "tab",
|
|
14370
14437
|
"aria-selected": masterViewTab === tab.key,
|
|
14371
|
-
className:
|
|
14438
|
+
className: chunk2GATFIDB_js.cn(
|
|
14372
14439
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
14373
14440
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
14374
14441
|
),
|
|
@@ -14840,7 +14907,7 @@ function SectionBlock({
|
|
|
14840
14907
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14841
14908
|
lu.LuChevronDown,
|
|
14842
14909
|
{
|
|
14843
|
-
className:
|
|
14910
|
+
className: chunk2GATFIDB_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
14844
14911
|
}
|
|
14845
14912
|
),
|
|
14846
14913
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -14887,7 +14954,7 @@ function SlideCardImpl({
|
|
|
14887
14954
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14888
14955
|
"div",
|
|
14889
14956
|
{
|
|
14890
|
-
className:
|
|
14957
|
+
className: chunk2GATFIDB_js.cn(
|
|
14891
14958
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
14892
14959
|
isDragTarget ? "border-primary bg-primary/20" : isSelected ? "border-primary bg-primary/10 ring-1 ring-primary/50" : isActive ? "border-primary/50 bg-primary/5" : "border-border bg-background/50 hover:border-border",
|
|
14893
14960
|
slide.hidden && "opacity-40"
|
|
@@ -14906,7 +14973,7 @@ function SlideCardImpl({
|
|
|
14906
14973
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14907
14974
|
"span",
|
|
14908
14975
|
{
|
|
14909
|
-
className:
|
|
14976
|
+
className: chunk2GATFIDB_js.cn(
|
|
14910
14977
|
"text-[11px] font-medium",
|
|
14911
14978
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
14912
14979
|
),
|
|
@@ -16641,7 +16708,7 @@ var SlideNotesPanel = ({
|
|
|
16641
16708
|
});
|
|
16642
16709
|
const hasNotes = draft.trim().length > 0;
|
|
16643
16710
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
16644
|
-
const { dragY, handlers: dragHandlers } =
|
|
16711
|
+
const { dragY, handlers: dragHandlers } = chunk2GATFIDB_js.useSheetDismissDrag(onToggle);
|
|
16645
16712
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16646
16713
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16647
16714
|
"button",
|
|
@@ -16655,7 +16722,7 @@ var SlideNotesPanel = ({
|
|
|
16655
16722
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16656
16723
|
"div",
|
|
16657
16724
|
{
|
|
16658
|
-
className:
|
|
16725
|
+
className: chunk2GATFIDB_js.cn(
|
|
16659
16726
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
16660
16727
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
16661
16728
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -17006,7 +17073,7 @@ function SlideDiffRow({
|
|
|
17006
17073
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17007
17074
|
"div",
|
|
17008
17075
|
{
|
|
17009
|
-
className:
|
|
17076
|
+
className: chunk2GATFIDB_js.cn(
|
|
17010
17077
|
"rounded-lg border transition-colors",
|
|
17011
17078
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
17012
17079
|
),
|
|
@@ -17020,7 +17087,7 @@ function SlideDiffRow({
|
|
|
17020
17087
|
children: [
|
|
17021
17088
|
expanded ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronRight, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
|
|
17022
17089
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
17023
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
17090
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk2GATFIDB_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
17024
17091
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
17025
17092
|
diff.changes.length,
|
|
17026
17093
|
" ",
|
|
@@ -17030,7 +17097,7 @@ function SlideDiffRow({
|
|
|
17030
17097
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17031
17098
|
"span",
|
|
17032
17099
|
{
|
|
17033
|
-
className:
|
|
17100
|
+
className: chunk2GATFIDB_js.cn(
|
|
17034
17101
|
"text-[10px] font-medium",
|
|
17035
17102
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
17036
17103
|
),
|
|
@@ -17058,7 +17125,7 @@ function SlideDiffRow({
|
|
|
17058
17125
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17059
17126
|
"div",
|
|
17060
17127
|
{
|
|
17061
|
-
className:
|
|
17128
|
+
className: chunk2GATFIDB_js.cn(
|
|
17062
17129
|
"rounded border overflow-hidden",
|
|
17063
17130
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
17064
17131
|
),
|
|
@@ -17770,7 +17837,7 @@ function DocumentPropertiesDialog({
|
|
|
17770
17837
|
const handleClose = React18.useCallback(() => {
|
|
17771
17838
|
onClose();
|
|
17772
17839
|
}, [onClose]);
|
|
17773
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
17840
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(handleClose);
|
|
17774
17841
|
if (!isOpen) {
|
|
17775
17842
|
return null;
|
|
17776
17843
|
}
|
|
@@ -19389,7 +19456,7 @@ function SelectionPane({
|
|
|
19389
19456
|
setDragIndex(null);
|
|
19390
19457
|
setDragOverIndex(null);
|
|
19391
19458
|
},
|
|
19392
|
-
className:
|
|
19459
|
+
className: chunk2GATFIDB_js.cn(
|
|
19393
19460
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
19394
19461
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
19395
19462
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -19440,13 +19507,13 @@ function SelectionPane({
|
|
|
19440
19507
|
}
|
|
19441
19508
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
19442
19509
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
19443
|
-
var ENTRANCE_PRESETS =
|
|
19510
|
+
var ENTRANCE_PRESETS = chunk2GATFIDB_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
19444
19511
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
19445
19512
|
);
|
|
19446
|
-
var EXIT_PRESETS =
|
|
19513
|
+
var EXIT_PRESETS = chunk2GATFIDB_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
19447
19514
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
19448
19515
|
);
|
|
19449
|
-
var EMPHASIS_PRESETS =
|
|
19516
|
+
var EMPHASIS_PRESETS = chunk2GATFIDB_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
19450
19517
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
19451
19518
|
);
|
|
19452
19519
|
var TRIGGER_OPTIONS = [
|
|
@@ -19548,7 +19615,7 @@ function AnimationTimelineSection({
|
|
|
19548
19615
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19549
19616
|
"div",
|
|
19550
19617
|
{
|
|
19551
|
-
className:
|
|
19618
|
+
className: chunk2GATFIDB_js.cn(
|
|
19552
19619
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
19553
19620
|
animationTypeColor(bar.anim),
|
|
19554
19621
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -19582,7 +19649,7 @@ function AnimationTimelineSection({
|
|
|
19582
19649
|
onDragEnd: handleDragEnd,
|
|
19583
19650
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
19584
19651
|
onMouseLeave: handleAnimationHoverEnd,
|
|
19585
|
-
className:
|
|
19652
|
+
className: chunk2GATFIDB_js.cn(
|
|
19586
19653
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
19587
19654
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
19588
19655
|
isDragging && "opacity-40",
|
|
@@ -19746,13 +19813,13 @@ function useAnimationPreview({
|
|
|
19746
19813
|
if (!preset || preset === "none") {
|
|
19747
19814
|
return;
|
|
19748
19815
|
}
|
|
19749
|
-
|
|
19816
|
+
chunk2GATFIDB_js.startPreviewAnimation(anim.elementId, preset, {
|
|
19750
19817
|
direction: anim.direction,
|
|
19751
19818
|
durationMs: anim.durationMs ?? 500,
|
|
19752
19819
|
timingCurve: anim.timingCurve
|
|
19753
19820
|
});
|
|
19754
19821
|
}, []);
|
|
19755
|
-
const handleAnimationHoverEnd = React18.useCallback(() =>
|
|
19822
|
+
const handleAnimationHoverEnd = React18.useCallback(() => chunk2GATFIDB_js.stopPreviewAnimation(), []);
|
|
19756
19823
|
const handlePreviewClick = React18.useCallback(() => {
|
|
19757
19824
|
if (!selectedElementAnimation) {
|
|
19758
19825
|
return;
|
|
@@ -19761,7 +19828,7 @@ function useAnimationPreview({
|
|
|
19761
19828
|
if (!preset || preset === "none") {
|
|
19762
19829
|
return;
|
|
19763
19830
|
}
|
|
19764
|
-
|
|
19831
|
+
chunk2GATFIDB_js.startPreviewAnimation(selectedElementId, preset, {
|
|
19765
19832
|
direction: selectedElementAnimation.direction,
|
|
19766
19833
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
19767
19834
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -20093,7 +20160,7 @@ function AnimationPanel({
|
|
|
20093
20160
|
{
|
|
20094
20161
|
type: "button",
|
|
20095
20162
|
disabled: !canEdit,
|
|
20096
|
-
className:
|
|
20163
|
+
className: chunk2GATFIDB_js.cn(
|
|
20097
20164
|
"flex items-center justify-center w-7 h-7 rounded border transition-colors",
|
|
20098
20165
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
20099
20166
|
),
|
|
@@ -20335,7 +20402,7 @@ function ActionTriggerSection({
|
|
|
20335
20402
|
"select",
|
|
20336
20403
|
{
|
|
20337
20404
|
disabled: !canEdit,
|
|
20338
|
-
className:
|
|
20405
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
20339
20406
|
value: activeType,
|
|
20340
20407
|
onChange: (e) => onChangeType(e.target.value),
|
|
20341
20408
|
children: ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.label) }, o.value))
|
|
@@ -20346,7 +20413,7 @@ function ActionTriggerSection({
|
|
|
20346
20413
|
{
|
|
20347
20414
|
type: "text",
|
|
20348
20415
|
disabled: !canEdit,
|
|
20349
|
-
className:
|
|
20416
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
20350
20417
|
placeholder: "https://...",
|
|
20351
20418
|
value: action?.url ?? fallbackUrl ?? "",
|
|
20352
20419
|
onChange: (e) => onChangeUrl(e.target.value)
|
|
@@ -20357,7 +20424,7 @@ function ActionTriggerSection({
|
|
|
20357
20424
|
{
|
|
20358
20425
|
type: "number",
|
|
20359
20426
|
disabled: !canEdit,
|
|
20360
|
-
className:
|
|
20427
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
20361
20428
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
20362
20429
|
min: 1,
|
|
20363
20430
|
max: slideCount,
|
|
@@ -22012,7 +22079,7 @@ function ConnectorPanel({
|
|
|
22012
22079
|
"select",
|
|
22013
22080
|
{
|
|
22014
22081
|
disabled: !canEdit,
|
|
22015
|
-
className:
|
|
22082
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
22016
22083
|
value: selectedElement.shapeStyle?.[key] ?? "none",
|
|
22017
22084
|
onChange: (e) => onUpdateElementStyle({ [key]: e.target.value }),
|
|
22018
22085
|
children: [
|
|
@@ -22064,7 +22131,7 @@ function OlePropertiesPanel({
|
|
|
22064
22131
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22065
22132
|
"span",
|
|
22066
22133
|
{
|
|
22067
|
-
className:
|
|
22134
|
+
className: chunk2GATFIDB_js.cn(
|
|
22068
22135
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
22069
22136
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
22070
22137
|
),
|
|
@@ -22123,7 +22190,7 @@ function LayerOrderButtons({
|
|
|
22123
22190
|
"button",
|
|
22124
22191
|
{
|
|
22125
22192
|
type: "button",
|
|
22126
|
-
className:
|
|
22193
|
+
className: chunk2GATFIDB_js.cn("flex-1", BTN),
|
|
22127
22194
|
disabled: !canEdit,
|
|
22128
22195
|
onClick: () => onMoveLayer("forward"),
|
|
22129
22196
|
children: "\u2191 Forward"
|
|
@@ -22133,7 +22200,7 @@ function LayerOrderButtons({
|
|
|
22133
22200
|
"button",
|
|
22134
22201
|
{
|
|
22135
22202
|
type: "button",
|
|
22136
|
-
className:
|
|
22203
|
+
className: chunk2GATFIDB_js.cn("flex-1", BTN),
|
|
22137
22204
|
disabled: !canEdit,
|
|
22138
22205
|
onClick: () => onMoveLayer("backward"),
|
|
22139
22206
|
children: "\u2193 Backward"
|
|
@@ -22157,7 +22224,7 @@ function ArtisticEffectsGallery({
|
|
|
22157
22224
|
{
|
|
22158
22225
|
type: "button",
|
|
22159
22226
|
disabled: !canEdit,
|
|
22160
|
-
className:
|
|
22227
|
+
className: chunk2GATFIDB_js.cn(
|
|
22161
22228
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
22162
22229
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
22163
22230
|
),
|
|
@@ -22606,7 +22673,7 @@ function ImagePropertiesPanel({
|
|
|
22606
22673
|
{
|
|
22607
22674
|
rows: 2,
|
|
22608
22675
|
disabled: !canEdit,
|
|
22609
|
-
className:
|
|
22676
|
+
className: chunk2GATFIDB_js.cn(INPUT, "resize-none text-[11px]"),
|
|
22610
22677
|
value: selectedElement.altText ?? "",
|
|
22611
22678
|
onChange: (e) => onUpdateElement({
|
|
22612
22679
|
altText: e.target.value
|
|
@@ -23565,11 +23632,11 @@ function ShapeTextPanels({
|
|
|
23565
23632
|
{
|
|
23566
23633
|
value: selectedElement.shapeType || "rect",
|
|
23567
23634
|
disabled: !canEdit,
|
|
23568
|
-
className:
|
|
23635
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
23569
23636
|
onChange: (e) => onUpdateElement({
|
|
23570
23637
|
shapeType: e.target.value
|
|
23571
23638
|
}),
|
|
23572
|
-
children:
|
|
23639
|
+
children: chunk2GATFIDB_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
23573
23640
|
}
|
|
23574
23641
|
)
|
|
23575
23642
|
] }),
|
|
@@ -23699,7 +23766,7 @@ function TextFormatToggle({
|
|
|
23699
23766
|
{
|
|
23700
23767
|
type: "button",
|
|
23701
23768
|
disabled,
|
|
23702
|
-
className:
|
|
23769
|
+
className: chunk2GATFIDB_js.cn(
|
|
23703
23770
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23704
23771
|
italic && "italic",
|
|
23705
23772
|
underline && "underline",
|
|
@@ -23991,7 +24058,7 @@ function SmartArtLayoutSwitcher({
|
|
|
23991
24058
|
type: "button",
|
|
23992
24059
|
"data-testid": `smartart-layout-${type}`,
|
|
23993
24060
|
disabled: !canEdit,
|
|
23994
|
-
className:
|
|
24061
|
+
className: chunk2GATFIDB_js.cn(
|
|
23995
24062
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
23996
24063
|
"text-[9px] leading-tight",
|
|
23997
24064
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -24063,7 +24130,7 @@ function SmartArtNodeStyleControls({
|
|
|
24063
24130
|
disabled: !canEdit,
|
|
24064
24131
|
"aria-label": `Bold ${label}`,
|
|
24065
24132
|
"aria-pressed": bold,
|
|
24066
|
-
className:
|
|
24133
|
+
className: chunk2GATFIDB_js.cn(
|
|
24067
24134
|
EMPHASIS_BTN,
|
|
24068
24135
|
"font-bold",
|
|
24069
24136
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -24079,7 +24146,7 @@ function SmartArtNodeStyleControls({
|
|
|
24079
24146
|
disabled: !canEdit,
|
|
24080
24147
|
"aria-label": `Italic ${label}`,
|
|
24081
24148
|
"aria-pressed": italic,
|
|
24082
|
-
className:
|
|
24149
|
+
className: chunk2GATFIDB_js.cn(
|
|
24083
24150
|
EMPHASIS_BTN,
|
|
24084
24151
|
"italic",
|
|
24085
24152
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -24118,7 +24185,7 @@ function SmartArtNodeRow({
|
|
|
24118
24185
|
"div",
|
|
24119
24186
|
{
|
|
24120
24187
|
role: "listitem",
|
|
24121
|
-
className:
|
|
24188
|
+
className: chunk2GATFIDB_js.cn(
|
|
24122
24189
|
"rounded border bg-background/60 p-1.5",
|
|
24123
24190
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
24124
24191
|
),
|
|
@@ -24133,7 +24200,7 @@ function SmartArtNodeRow({
|
|
|
24133
24200
|
"data-testid": "smartart-node-text",
|
|
24134
24201
|
disabled: !canEdit,
|
|
24135
24202
|
"aria-label": label,
|
|
24136
|
-
className:
|
|
24203
|
+
className: chunk2GATFIDB_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
|
|
24137
24204
|
value: text,
|
|
24138
24205
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
24139
24206
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -24182,7 +24249,7 @@ function SmartArtNodeRow({
|
|
|
24182
24249
|
{
|
|
24183
24250
|
type: "button",
|
|
24184
24251
|
disabled: !canEdit || removeDisabled,
|
|
24185
|
-
className:
|
|
24252
|
+
className: chunk2GATFIDB_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
24186
24253
|
onClick: () => onRemove(nodeId),
|
|
24187
24254
|
"aria-label": `Remove ${label}`,
|
|
24188
24255
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -24240,7 +24307,7 @@ function SmartArtPropertiesPanel({
|
|
|
24240
24307
|
const reflowed = box ? chunkDHNQHQ66_js.rebuildDrawingShapesIfCleared(
|
|
24241
24308
|
newData,
|
|
24242
24309
|
newData.layout,
|
|
24243
|
-
|
|
24310
|
+
chunk2GATFIDB_js.resolveSmartArtDataPalette(newData),
|
|
24244
24311
|
newData.style ?? "flat",
|
|
24245
24312
|
"inspector",
|
|
24246
24313
|
box
|
|
@@ -24349,7 +24416,7 @@ function SmartArtPropertiesPanel({
|
|
|
24349
24416
|
disabled: !canEdit,
|
|
24350
24417
|
"data-testid": "smartart-color-scheme",
|
|
24351
24418
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
24352
|
-
className:
|
|
24419
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-full"),
|
|
24353
24420
|
value: smartArtData.colorScheme ?? "colorful1",
|
|
24354
24421
|
onChange: (e) => updateSmartArt({ colorScheme: e.target.value }),
|
|
24355
24422
|
children: COLOR_SCHEMES.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: cs }, cs))
|
|
@@ -24364,7 +24431,7 @@ function SmartArtPropertiesPanel({
|
|
|
24364
24431
|
type: "button",
|
|
24365
24432
|
disabled: !canEdit,
|
|
24366
24433
|
"aria-pressed": (smartArtData.style ?? "flat") === s,
|
|
24367
|
-
className:
|
|
24434
|
+
className: chunk2GATFIDB_js.cn(
|
|
24368
24435
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
24369
24436
|
(smartArtData.style ?? "flat") === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
24370
24437
|
),
|
|
@@ -24768,7 +24835,7 @@ function TableCellFormattingPanel({
|
|
|
24768
24835
|
{
|
|
24769
24836
|
type: "button",
|
|
24770
24837
|
disabled: !canEdit,
|
|
24771
|
-
className:
|
|
24838
|
+
className: chunk2GATFIDB_js.cn(
|
|
24772
24839
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
24773
24840
|
cls,
|
|
24774
24841
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -24787,7 +24854,7 @@ function TableCellFormattingPanel({
|
|
|
24787
24854
|
{
|
|
24788
24855
|
type: "button",
|
|
24789
24856
|
disabled: !canEdit,
|
|
24790
|
-
className:
|
|
24857
|
+
className: chunk2GATFIDB_js.cn(
|
|
24791
24858
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
24792
24859
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
24793
24860
|
),
|
|
@@ -24805,7 +24872,7 @@ function TableCellFormattingPanel({
|
|
|
24805
24872
|
{
|
|
24806
24873
|
type: "button",
|
|
24807
24874
|
disabled: !canEdit,
|
|
24808
|
-
className:
|
|
24875
|
+
className: chunk2GATFIDB_js.cn(
|
|
24809
24876
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
24810
24877
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
24811
24878
|
),
|
|
@@ -24838,7 +24905,7 @@ function TableCellFormattingPanel({
|
|
|
24838
24905
|
{
|
|
24839
24906
|
type: "number",
|
|
24840
24907
|
disabled: !canEdit,
|
|
24841
|
-
className:
|
|
24908
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-14"),
|
|
24842
24909
|
min: 0,
|
|
24843
24910
|
max: 10,
|
|
24844
24911
|
value: cs[widthKey] ?? 1,
|
|
@@ -24854,7 +24921,7 @@ function TableCellFormattingPanel({
|
|
|
24854
24921
|
{
|
|
24855
24922
|
type: "button",
|
|
24856
24923
|
disabled: !canEdit,
|
|
24857
|
-
className:
|
|
24924
|
+
className: chunk2GATFIDB_js.cn(BTN, "text-center"),
|
|
24858
24925
|
onClick: () => {
|
|
24859
24926
|
const newRows = chunkDHNQHQ66_js.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
24860
24927
|
if (newRows) {
|
|
@@ -24869,7 +24936,7 @@ function TableCellFormattingPanel({
|
|
|
24869
24936
|
{
|
|
24870
24937
|
type: "button",
|
|
24871
24938
|
disabled: !canEdit,
|
|
24872
|
-
className:
|
|
24939
|
+
className: chunk2GATFIDB_js.cn(BTN, "text-center"),
|
|
24873
24940
|
onClick: () => {
|
|
24874
24941
|
const newRows = chunkDHNQHQ66_js.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
24875
24942
|
if (newRows) {
|
|
@@ -24884,7 +24951,7 @@ function TableCellFormattingPanel({
|
|
|
24884
24951
|
{
|
|
24885
24952
|
type: "button",
|
|
24886
24953
|
disabled: !canEdit,
|
|
24887
|
-
className:
|
|
24954
|
+
className: chunk2GATFIDB_js.cn(BTN, "text-center"),
|
|
24888
24955
|
onClick: () => {
|
|
24889
24956
|
const newRows = chunkDHNQHQ66_js.computeSplitCell(td, rowIndex, columnIndex);
|
|
24890
24957
|
if (newRows) {
|
|
@@ -25292,7 +25359,7 @@ function InspectorCommentRow({
|
|
|
25292
25359
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25293
25360
|
"div",
|
|
25294
25361
|
{
|
|
25295
|
-
className:
|
|
25362
|
+
className: chunk2GATFIDB_js.cn(
|
|
25296
25363
|
"rounded border border-border bg-card p-2",
|
|
25297
25364
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
25298
25365
|
),
|
|
@@ -25380,7 +25447,7 @@ function InspectorCommentRow({
|
|
|
25380
25447
|
"button",
|
|
25381
25448
|
{
|
|
25382
25449
|
type: "button",
|
|
25383
|
-
className:
|
|
25450
|
+
className: chunk2GATFIDB_js.cn(
|
|
25384
25451
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
25385
25452
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
25386
25453
|
),
|
|
@@ -25574,7 +25641,7 @@ function InspectorCommentsSection({
|
|
|
25574
25641
|
type: "button",
|
|
25575
25642
|
onClick: onAddComment,
|
|
25576
25643
|
disabled: !commentDraft.trim(),
|
|
25577
|
-
className:
|
|
25644
|
+
className: chunk2GATFIDB_js.cn(
|
|
25578
25645
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
|
|
25579
25646
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
25580
25647
|
),
|
|
@@ -25599,7 +25666,7 @@ function InspectorPaneHeader({
|
|
|
25599
25666
|
{
|
|
25600
25667
|
type: "button",
|
|
25601
25668
|
title: label,
|
|
25602
|
-
className:
|
|
25669
|
+
className: chunk2GATFIDB_js.cn(
|
|
25603
25670
|
"flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
25604
25671
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
25605
25672
|
),
|
|
@@ -25708,7 +25775,7 @@ function CustomPropertiesBlock({
|
|
|
25708
25775
|
"button",
|
|
25709
25776
|
{
|
|
25710
25777
|
type: "button",
|
|
25711
|
-
className:
|
|
25778
|
+
className: chunk2GATFIDB_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25712
25779
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
25713
25780
|
children: "\xD7"
|
|
25714
25781
|
}
|
|
@@ -25843,7 +25910,7 @@ function PresentationSettingsCard({
|
|
|
25843
25910
|
"select",
|
|
25844
25911
|
{
|
|
25845
25912
|
disabled: !canEdit,
|
|
25846
|
-
className:
|
|
25913
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-28"),
|
|
25847
25914
|
value: presentationProperties.showType ?? "presented",
|
|
25848
25915
|
onChange: (e) => onUpdate({
|
|
25849
25916
|
showType: e.target.value
|
|
@@ -25903,7 +25970,7 @@ function PresentationSettingsCard({
|
|
|
25903
25970
|
min: 1,
|
|
25904
25971
|
max: 16,
|
|
25905
25972
|
disabled: !canEdit,
|
|
25906
|
-
className:
|
|
25973
|
+
className: chunk2GATFIDB_js.cn(INPUT, "w-20"),
|
|
25907
25974
|
value: chunkDHNQHQ66_js.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
25908
25975
|
onChange: (e) => onUpdate({
|
|
25909
25976
|
printProperties: chunkDHNQHQ66_js.withSlidesPerPage(
|
|
@@ -26205,7 +26272,7 @@ function TagsSection({
|
|
|
26205
26272
|
"button",
|
|
26206
26273
|
{
|
|
26207
26274
|
type: "button",
|
|
26208
|
-
className:
|
|
26275
|
+
className: chunk2GATFIDB_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
26209
26276
|
title: t("pptx.tags.deleteTag"),
|
|
26210
26277
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
26211
26278
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -26305,7 +26372,7 @@ function PresentationPropertiesPanel({
|
|
|
26305
26372
|
canEdit
|
|
26306
26373
|
}
|
|
26307
26374
|
),
|
|
26308
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26375
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk2GATFIDB_js.cn(CARD, "space-y-1"), children: [
|
|
26309
26376
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
|
|
26310
26377
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
26311
26378
|
activeSlide.elements?.length ?? 0,
|
|
@@ -26326,7 +26393,7 @@ function SlideBackgroundPanel({
|
|
|
26326
26393
|
const { t } = reactI18next.useTranslation();
|
|
26327
26394
|
const bgImageInputRef = React18.useRef(null);
|
|
26328
26395
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26329
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26396
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk2GATFIDB_js.cn(CARD, "space-y-2"), children: [
|
|
26330
26397
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Background" }),
|
|
26331
26398
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26332
26399
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "Colour" }),
|
|
@@ -26372,7 +26439,7 @@ function SlideBackgroundPanel({
|
|
|
26372
26439
|
"button",
|
|
26373
26440
|
{
|
|
26374
26441
|
type: "button",
|
|
26375
|
-
className:
|
|
26442
|
+
className: chunk2GATFIDB_js.cn(BTN, "flex-1 text-center"),
|
|
26376
26443
|
disabled: !canEdit,
|
|
26377
26444
|
onClick: () => bgImageInputRef.current?.click(),
|
|
26378
26445
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -26405,7 +26472,7 @@ function SlideBackgroundPanel({
|
|
|
26405
26472
|
"button",
|
|
26406
26473
|
{
|
|
26407
26474
|
type: "button",
|
|
26408
|
-
className:
|
|
26475
|
+
className: chunk2GATFIDB_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
|
|
26409
26476
|
disabled: !canEdit,
|
|
26410
26477
|
onClick: () => onUpdateSlide({
|
|
26411
26478
|
backgroundColor: void 0,
|
|
@@ -26436,7 +26503,7 @@ function TemplateBackgroundCard({
|
|
|
26436
26503
|
onGetTemplateBackgroundColor
|
|
26437
26504
|
}) {
|
|
26438
26505
|
const { t } = reactI18next.useTranslation();
|
|
26439
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26506
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk2GATFIDB_js.cn(CARD, "space-y-2"), children: [
|
|
26440
26507
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
26441
26508
|
activeSlide.layoutPath && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26442
26509
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26583,7 +26650,7 @@ function InspectorPane(props) {
|
|
|
26583
26650
|
} = props;
|
|
26584
26651
|
const hasSelection = selectedElement !== null;
|
|
26585
26652
|
const { t } = reactI18next.useTranslation();
|
|
26586
|
-
const { dragY, handlers: dragHandlers } =
|
|
26653
|
+
const { dragY, handlers: dragHandlers } = chunk2GATFIDB_js.useSheetDismissDrag(onClose);
|
|
26587
26654
|
const {
|
|
26588
26655
|
animationPanelHeight,
|
|
26589
26656
|
effectiveThemeOptions,
|
|
@@ -26604,7 +26671,7 @@ function InspectorPane(props) {
|
|
|
26604
26671
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26605
26672
|
"div",
|
|
26606
26673
|
{
|
|
26607
|
-
className:
|
|
26674
|
+
className: chunk2GATFIDB_js.cn(
|
|
26608
26675
|
// Shared styles
|
|
26609
26676
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
26610
26677
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26642,7 +26709,7 @@ function InspectorPane(props) {
|
|
|
26642
26709
|
),
|
|
26643
26710
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-3 space-y-3", children: [
|
|
26644
26711
|
activeTab === "elements" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
26645
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
26712
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk2GATFIDB_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
26646
26713
|
activeSlide ? [...activeSlide.elements || []].reverse().map((el, ri) => {
|
|
26647
26714
|
const idx = (activeSlide.elements || []).length - 1 - ri;
|
|
26648
26715
|
const sel = selectedElement?.id === el.id || selectedElementIds.includes(el.id);
|
|
@@ -26651,7 +26718,7 @@ function InspectorPane(props) {
|
|
|
26651
26718
|
"div",
|
|
26652
26719
|
{
|
|
26653
26720
|
title: `${el.type} \u2014 ${el.id}`,
|
|
26654
|
-
className:
|
|
26721
|
+
className: chunk2GATFIDB_js.cn(
|
|
26655
26722
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
26656
26723
|
sel ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
26657
26724
|
),
|
|
@@ -27255,7 +27322,7 @@ function PresentationTouchControls({
|
|
|
27255
27322
|
hideNavigation = false
|
|
27256
27323
|
}) {
|
|
27257
27324
|
const { t } = reactI18next.useTranslation();
|
|
27258
|
-
const { isTouchDevice } =
|
|
27325
|
+
const { isTouchDevice } = chunk2GATFIDB_js.useIsMobile();
|
|
27259
27326
|
if (!isTouchDevice) {
|
|
27260
27327
|
return null;
|
|
27261
27328
|
}
|
|
@@ -27956,7 +28023,7 @@ function PrintDialog({
|
|
|
27956
28023
|
defaultFrameSlides
|
|
27957
28024
|
}) {
|
|
27958
28025
|
const { t } = reactI18next.useTranslation();
|
|
27959
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28026
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
27960
28027
|
const [printWhat, setPrintWhat] = React18.useState("slides");
|
|
27961
28028
|
const [orientation, setOrientation] = React18.useState("landscape");
|
|
27962
28029
|
const [colorMode, setColorMode] = React18.useState("color");
|
|
@@ -28485,7 +28552,7 @@ function BroadcastDialog({
|
|
|
28485
28552
|
const [serverUrl, setServerUrl] = React18.useState("");
|
|
28486
28553
|
const [copied, setCopied] = React18.useState(false);
|
|
28487
28554
|
const dialogRef = React18.useRef(null);
|
|
28488
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28555
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
28489
28556
|
useModalFocus(open, dialogRef, onClose);
|
|
28490
28557
|
React18.useEffect(() => {
|
|
28491
28558
|
if (open && !isBroadcasting) {
|
|
@@ -29048,7 +29115,7 @@ function ShareDialog({
|
|
|
29048
29115
|
const [invitation, setInvitation] = React18.useState("");
|
|
29049
29116
|
const [copied, setCopied] = React18.useState(false);
|
|
29050
29117
|
const dialogRef = React18.useRef(null);
|
|
29051
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29118
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
29052
29119
|
useModalFocus(open, dialogRef, onClose);
|
|
29053
29120
|
React18.useEffect(() => {
|
|
29054
29121
|
if (activeCollaboration) {
|
|
@@ -29323,12 +29390,12 @@ function HyperlinkEditDialog({
|
|
|
29323
29390
|
onCancel
|
|
29324
29391
|
}) {
|
|
29325
29392
|
const { t } = reactI18next.useTranslation();
|
|
29326
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29393
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onCancel);
|
|
29327
29394
|
const inputRef = React18.useRef(null);
|
|
29328
|
-
const detectedType =
|
|
29329
|
-
const emailParts =
|
|
29330
|
-
const detectedSlide =
|
|
29331
|
-
const detectedVerb = initialAction ?
|
|
29395
|
+
const detectedType = chunk2GATFIDB_js.detectTargetType(initialUrl, initialAction);
|
|
29396
|
+
const emailParts = chunk2GATFIDB_js.parseEmailUrl(initialUrl || "");
|
|
29397
|
+
const detectedSlide = chunk2GATFIDB_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
29398
|
+
const detectedVerb = initialAction ? chunk2GATFIDB_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
29332
29399
|
const [targetType, setTargetType] = React18.useState(detectedType);
|
|
29333
29400
|
const [url, setUrl] = React18.useState(
|
|
29334
29401
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -29359,7 +29426,7 @@ function HyperlinkEditDialog({
|
|
|
29359
29426
|
actionVerb
|
|
29360
29427
|
});
|
|
29361
29428
|
};
|
|
29362
|
-
const tabCls = (active) =>
|
|
29429
|
+
const tabCls = (active) => chunk2GATFIDB_js.cn(
|
|
29363
29430
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
29364
29431
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
29365
29432
|
);
|
|
@@ -29574,7 +29641,7 @@ function ViewerBottomPanels({
|
|
|
29574
29641
|
hideStatusBar = false,
|
|
29575
29642
|
hiddenActions
|
|
29576
29643
|
}) {
|
|
29577
|
-
const { isHidden } =
|
|
29644
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(hiddenActions);
|
|
29578
29645
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29579
29646
|
onResizeBottom && !isSlideNotesCollapsed && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "vertical", onResize: onResizeBottom }),
|
|
29580
29647
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29754,7 +29821,7 @@ function ViewerInspector({
|
|
|
29754
29821
|
function TitleBar(p) {
|
|
29755
29822
|
const { t } = reactI18next.useTranslation();
|
|
29756
29823
|
const editing = (p.mode === "edit" || p.mode === "master") && p.canEdit;
|
|
29757
|
-
const { isHidden } =
|
|
29824
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(p.hiddenActions);
|
|
29758
29825
|
const [searchQuery, setSearchQuery] = React18.useState("");
|
|
29759
29826
|
const [searchFocused, setSearchFocused] = React18.useState(false);
|
|
29760
29827
|
const searchRef = React18.useRef(null);
|
|
@@ -29810,7 +29877,7 @@ function TitleBar(p) {
|
|
|
29810
29877
|
role: "switch",
|
|
29811
29878
|
"aria-checked": p.autosaveEnabled,
|
|
29812
29879
|
onClick: p.onToggleAutosave,
|
|
29813
|
-
className:
|
|
29880
|
+
className: chunk2GATFIDB_js.cn(
|
|
29814
29881
|
chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleTrack,
|
|
29815
29882
|
p.autosaveEnabled ? chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleTrackOff
|
|
29816
29883
|
),
|
|
@@ -29819,7 +29886,7 @@ function TitleBar(p) {
|
|
|
29819
29886
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29820
29887
|
"span",
|
|
29821
29888
|
{
|
|
29822
|
-
className:
|
|
29889
|
+
className: chunk2GATFIDB_js.cn(
|
|
29823
29890
|
chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleKnob,
|
|
29824
29891
|
p.autosaveEnabled ? chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkDHNQHQ66_js.TITLE_BAR_CLASSES.toggleKnobOff
|
|
29825
29892
|
)
|
|
@@ -29874,7 +29941,7 @@ function TitleBar(p) {
|
|
|
29874
29941
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29875
29942
|
"span",
|
|
29876
29943
|
{
|
|
29877
|
-
className:
|
|
29944
|
+
className: chunk2GATFIDB_js.cn(
|
|
29878
29945
|
chunkDHNQHQ66_js.TITLE_BAR_CLASSES.statusText,
|
|
29879
29946
|
p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkDHNQHQ66_js.TITLE_BAR_CLASSES.statusError,
|
|
29880
29947
|
p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkDHNQHQ66_js.TITLE_BAR_CLASSES.statusSaving
|
|
@@ -29888,7 +29955,7 @@ function TitleBar(p) {
|
|
|
29888
29955
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
29889
29956
|
"div",
|
|
29890
29957
|
{
|
|
29891
|
-
className:
|
|
29958
|
+
className: chunk2GATFIDB_js.cn(
|
|
29892
29959
|
chunkDHNQHQ66_js.TITLE_BAR_CLASSES.searchBox,
|
|
29893
29960
|
(searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
|
|
29894
29961
|
),
|
|
@@ -29980,6 +30047,8 @@ function ViewerToolbarSection(props) {
|
|
|
29980
30047
|
onOpenHeaderFooter,
|
|
29981
30048
|
onOpenShareDialog,
|
|
29982
30049
|
onOpenFile,
|
|
30050
|
+
onUploadCustomFontPackage,
|
|
30051
|
+
onEmbedCustomFonts,
|
|
29983
30052
|
onOpenRecentFile,
|
|
29984
30053
|
onToggleFormatPainter: onToggleFormatPainterProp,
|
|
29985
30054
|
fileName,
|
|
@@ -30036,7 +30105,7 @@ function ViewerToolbarSection(props) {
|
|
|
30036
30105
|
[activeSlide, propertyHandlers]
|
|
30037
30106
|
);
|
|
30038
30107
|
const scopedLayoutOptions = React18__default.default.useMemo(
|
|
30039
|
-
() =>
|
|
30108
|
+
() => chunk2GATFIDB_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
30040
30109
|
[s.layoutOptions, activeSlide]
|
|
30041
30110
|
);
|
|
30042
30111
|
const handleApplyTransitionToAll = React18.useCallback(() => {
|
|
@@ -30314,6 +30383,8 @@ function ViewerToolbarSection(props) {
|
|
|
30314
30383
|
body: s.theme?.fontScheme?.minorFont?.latin
|
|
30315
30384
|
},
|
|
30316
30385
|
embeddedFontFamilies: Array.from(new Set(s.embeddedFonts.map((font) => font.name))),
|
|
30386
|
+
onUploadCustomFontPackage,
|
|
30387
|
+
onEmbedCustomFonts,
|
|
30317
30388
|
onInsertSlideFromLayout: slideOps.handleInsertSlideFromLayout,
|
|
30318
30389
|
onApplyLayout: (path) => void onApplyLayout(path),
|
|
30319
30390
|
customShows: s.customShows,
|
|
@@ -30435,7 +30506,7 @@ function EquationEditorDialog({
|
|
|
30435
30506
|
existingOmml
|
|
30436
30507
|
}) {
|
|
30437
30508
|
const { t } = reactI18next.useTranslation();
|
|
30438
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
30509
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
30439
30510
|
const initialLatex = React18.useMemo(() => {
|
|
30440
30511
|
if (!existingOmml) {
|
|
30441
30512
|
return "";
|
|
@@ -30568,7 +30639,7 @@ function EquationEditorDialog({
|
|
|
30568
30639
|
{
|
|
30569
30640
|
type: "button",
|
|
30570
30641
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
30571
|
-
className:
|
|
30642
|
+
className: chunk2GATFIDB_js.cn(
|
|
30572
30643
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
30573
30644
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
30574
30645
|
),
|
|
@@ -30667,7 +30738,7 @@ function InsertSmartArtDialog({
|
|
|
30667
30738
|
onInsert
|
|
30668
30739
|
}) {
|
|
30669
30740
|
const { t } = reactI18next.useTranslation();
|
|
30670
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
30741
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
30671
30742
|
const [activeCategory, setActiveCategory] = React18.useState("list");
|
|
30672
30743
|
const [selectedLayout, setSelectedLayout] = React18.useState(null);
|
|
30673
30744
|
const dialogRef = React18.useRef(null);
|
|
@@ -30748,7 +30819,7 @@ function InsertSmartArtDialog({
|
|
|
30748
30819
|
setActiveCategory(cat.id);
|
|
30749
30820
|
setSelectedLayout(null);
|
|
30750
30821
|
},
|
|
30751
|
-
className:
|
|
30822
|
+
className: chunk2GATFIDB_js.cn(
|
|
30752
30823
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
30753
30824
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
30754
30825
|
),
|
|
@@ -30776,7 +30847,7 @@ function InsertSmartArtDialog({
|
|
|
30776
30847
|
onInsert(preset.layout, preset.defaultItems);
|
|
30777
30848
|
onClose();
|
|
30778
30849
|
},
|
|
30779
|
-
className:
|
|
30850
|
+
className: chunk2GATFIDB_js.cn(
|
|
30780
30851
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30781
30852
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30782
30853
|
),
|
|
@@ -30806,7 +30877,7 @@ function InsertSmartArtDialog({
|
|
|
30806
30877
|
type: "button",
|
|
30807
30878
|
onClick: handleInsert,
|
|
30808
30879
|
disabled: !selectedLayout,
|
|
30809
|
-
className:
|
|
30880
|
+
className: chunk2GATFIDB_js.cn(
|
|
30810
30881
|
"px-3 py-1.5 text-xs rounded transition-colors",
|
|
30811
30882
|
selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
30812
30883
|
),
|
|
@@ -31185,7 +31256,7 @@ function ViewerCanvasArea(props) {
|
|
|
31185
31256
|
aiCanvasActive = false
|
|
31186
31257
|
} = props;
|
|
31187
31258
|
const { t } = reactI18next.useTranslation();
|
|
31188
|
-
const { isHidden } =
|
|
31259
|
+
const { isHidden } = chunk2GATFIDB_js.useToolbarVisibility(hiddenActions);
|
|
31189
31260
|
const viewerOptions = useViewerOptionsContext();
|
|
31190
31261
|
const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
|
|
31191
31262
|
const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
|
|
@@ -31302,7 +31373,7 @@ ${url}`)) {
|
|
|
31302
31373
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
31303
31374
|
}
|
|
31304
31375
|
}, [mode, presentation, s]);
|
|
31305
|
-
const swipe =
|
|
31376
|
+
const swipe = chunk2GATFIDB_js.useSwipeNavigation({
|
|
31306
31377
|
enabled: swipeEnabled,
|
|
31307
31378
|
onNext: handleSwipeNext,
|
|
31308
31379
|
onPrev: handleSwipePrev
|
|
@@ -32188,7 +32259,7 @@ function MobileDismissSheet({
|
|
|
32188
32259
|
className,
|
|
32189
32260
|
children
|
|
32190
32261
|
}) {
|
|
32191
|
-
const { dragY, handlers } =
|
|
32262
|
+
const { dragY, handlers } = chunk2GATFIDB_js.useSheetDismissDrag(onClose);
|
|
32192
32263
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32193
32264
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32194
32265
|
"button",
|
|
@@ -32457,7 +32528,7 @@ function ThemeThumbnail({
|
|
|
32457
32528
|
{
|
|
32458
32529
|
type: "button",
|
|
32459
32530
|
onClick,
|
|
32460
|
-
className:
|
|
32531
|
+
className: chunk2GATFIDB_js.cn(
|
|
32461
32532
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
32462
32533
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
32463
32534
|
),
|
|
@@ -33150,7 +33221,7 @@ function MobileBottomBar({
|
|
|
33150
33221
|
{
|
|
33151
33222
|
type: "button",
|
|
33152
33223
|
onClick,
|
|
33153
|
-
className:
|
|
33224
|
+
className: chunk2GATFIDB_js.cn(
|
|
33154
33225
|
"relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95",
|
|
33155
33226
|
active ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
33156
33227
|
),
|
|
@@ -33198,7 +33269,7 @@ function MobileChromeOverlay(props) {
|
|
|
33198
33269
|
canEdit,
|
|
33199
33270
|
commentCount
|
|
33200
33271
|
} = props;
|
|
33201
|
-
const { keyboardInset, isKeyboardOpen } =
|
|
33272
|
+
const { keyboardInset, isKeyboardOpen } = chunk2GATFIDB_js.useKeyboardInsets();
|
|
33202
33273
|
const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
|
|
33203
33274
|
const closeAllSheets = () => {
|
|
33204
33275
|
s.setIsSlidesPaneOpen(false);
|
|
@@ -33295,7 +33366,7 @@ function AddinTable({
|
|
|
33295
33366
|
"tr",
|
|
33296
33367
|
{
|
|
33297
33368
|
onClick: () => onSelect(row.id),
|
|
33298
|
-
className:
|
|
33369
|
+
className: chunk2GATFIDB_js.cn(
|
|
33299
33370
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
33300
33371
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
33301
33372
|
),
|
|
@@ -33364,9 +33435,9 @@ function ControlRow({
|
|
|
33364
33435
|
const value = readValue(options, control);
|
|
33365
33436
|
const label = t(control.labelKey);
|
|
33366
33437
|
const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
|
|
33367
|
-
const rowClass =
|
|
33438
|
+
const rowClass = chunk2GATFIDB_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
|
|
33368
33439
|
if (control.kind === "toggle") {
|
|
33369
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className:
|
|
33440
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunk2GATFIDB_js.cn(rowClass, "cursor-pointer select-none"), children: [
|
|
33370
33441
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
|
|
33371
33442
|
label,
|
|
33372
33443
|
info
|
|
@@ -33505,7 +33576,7 @@ function CommandList({
|
|
|
33505
33576
|
role: "option",
|
|
33506
33577
|
"aria-selected": selectedId === id,
|
|
33507
33578
|
onClick: () => onSelect(id),
|
|
33508
|
-
className:
|
|
33579
|
+
className: chunk2GATFIDB_js.cn(
|
|
33509
33580
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
33510
33581
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
33511
33582
|
),
|
|
@@ -33649,7 +33720,7 @@ function OptionsRibbonPane({
|
|
|
33649
33720
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33650
33721
|
"label",
|
|
33651
33722
|
{
|
|
33652
|
-
className:
|
|
33723
|
+
className: chunk2GATFIDB_js.cn(
|
|
33653
33724
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33654
33725
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33655
33726
|
),
|
|
@@ -33685,7 +33756,7 @@ function OptionsRibbonPane({
|
|
|
33685
33756
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkDHNQHQ66_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33686
33757
|
"div",
|
|
33687
33758
|
{
|
|
33688
|
-
className:
|
|
33759
|
+
className: chunk2GATFIDB_js.cn(
|
|
33689
33760
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33690
33761
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33691
33762
|
),
|
|
@@ -33720,7 +33791,7 @@ function SettingsAppearanceTab({
|
|
|
33720
33791
|
type: "button",
|
|
33721
33792
|
onClick: () => onSelectTheme(entry.key),
|
|
33722
33793
|
"aria-pressed": isActive,
|
|
33723
|
-
className:
|
|
33794
|
+
className: chunk2GATFIDB_js.cn(
|
|
33724
33795
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33725
33796
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33726
33797
|
),
|
|
@@ -33737,7 +33808,7 @@ function SettingsAppearanceTab({
|
|
|
33737
33808
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33738
33809
|
"span",
|
|
33739
33810
|
{
|
|
33740
|
-
className:
|
|
33811
|
+
className: chunk2GATFIDB_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33741
33812
|
children: t(entry.labelKey)
|
|
33742
33813
|
}
|
|
33743
33814
|
)
|
|
@@ -33760,7 +33831,7 @@ function SettingsLanguageTab({
|
|
|
33760
33831
|
type: "button",
|
|
33761
33832
|
onClick: () => onSelectLocale(locale.code),
|
|
33762
33833
|
"aria-pressed": isActive,
|
|
33763
|
-
className:
|
|
33834
|
+
className: chunk2GATFIDB_js.cn(
|
|
33764
33835
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33765
33836
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33766
33837
|
),
|
|
@@ -33796,7 +33867,7 @@ function SettingsDialog({
|
|
|
33796
33867
|
}) {
|
|
33797
33868
|
const [activeTabId, setActiveTabId] = React18.useState("general");
|
|
33798
33869
|
const { t } = reactI18next.useTranslation();
|
|
33799
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
33870
|
+
const { panelStyle, handlers: dragHandlers } = chunk2GATFIDB_js.useModalDismissDrag(onClose);
|
|
33800
33871
|
const snapshotRef = React18.useRef(null);
|
|
33801
33872
|
const wasOpenRef = React18.useRef(false);
|
|
33802
33873
|
React18.useEffect(() => {
|
|
@@ -33893,7 +33964,7 @@ function SettingsDialog({
|
|
|
33893
33964
|
type: "button",
|
|
33894
33965
|
onClick: () => setActiveTabId(tab.id),
|
|
33895
33966
|
"aria-current": activeTabId === tab.id,
|
|
33896
|
-
className:
|
|
33967
|
+
className: chunk2GATFIDB_js.cn(
|
|
33897
33968
|
"block w-full whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33898
33969
|
activeTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33899
33970
|
),
|
|
@@ -33907,7 +33978,7 @@ function SettingsDialog({
|
|
|
33907
33978
|
type: "button",
|
|
33908
33979
|
onClick: () => setActiveTabId(AI_TAB_ID),
|
|
33909
33980
|
"aria-current": activeTabId === AI_TAB_ID,
|
|
33910
|
-
className:
|
|
33981
|
+
className: chunk2GATFIDB_js.cn(
|
|
33911
33982
|
"block w-full whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33912
33983
|
activeTabId === AI_TAB_ID ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33913
33984
|
),
|
|
@@ -34039,6 +34110,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34039
34110
|
content: incomingContent,
|
|
34040
34111
|
singleSlideOnly = false,
|
|
34041
34112
|
fonts = [],
|
|
34113
|
+
onUploadCustomFontPackage,
|
|
34042
34114
|
filePath,
|
|
34043
34115
|
fileName,
|
|
34044
34116
|
canEdit = false,
|
|
@@ -34168,8 +34240,8 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34168
34240
|
const [isHeaderFooterOpen, setIsHeaderFooterOpen] = React18.useState(false);
|
|
34169
34241
|
const [autosaveEnabled, setAutosaveEnabled] = React18.useState(true);
|
|
34170
34242
|
const [isShareDialogOpen, setIsShareDialogOpen] = React18.useState(false);
|
|
34171
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34172
|
-
const state =
|
|
34243
|
+
const { reducedMotion, toggleReducedMotion } = chunk2GATFIDB_js.useReducedMotion();
|
|
34244
|
+
const state = chunk2GATFIDB_js.useViewerState({ content, canEdit });
|
|
34173
34245
|
const {
|
|
34174
34246
|
containerRef,
|
|
34175
34247
|
mode,
|
|
@@ -34229,7 +34301,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34229
34301
|
},
|
|
34230
34302
|
[state, reducedMotion, toggleReducedMotion]
|
|
34231
34303
|
);
|
|
34232
|
-
const { optionsStore, options: viewerOptions } =
|
|
34304
|
+
const { optionsStore, options: viewerOptions } = chunk2GATFIDB_js.useViewerOptions();
|
|
34233
34305
|
const settingsRef = React18.useRef(settings);
|
|
34234
34306
|
settingsRef.current = settings;
|
|
34235
34307
|
const syncingFromOptionsRef = React18.useRef(false);
|
|
@@ -34272,10 +34344,10 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34272
34344
|
await Promise.all(snapshots.map((entry) => chunkDHNQHQ66_js.deleteAutosaveSnapshot(entry.key)));
|
|
34273
34345
|
})();
|
|
34274
34346
|
}, []);
|
|
34275
|
-
const mobile =
|
|
34347
|
+
const mobile = chunk2GATFIDB_js.useIsMobile({ containerRef });
|
|
34276
34348
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34277
|
-
const resizablePanels =
|
|
34278
|
-
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } =
|
|
34349
|
+
const resizablePanels = chunk2GATFIDB_js.useResizablePanels();
|
|
34350
|
+
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunk2GATFIDB_js.useDerivedSlideState({
|
|
34279
34351
|
slides,
|
|
34280
34352
|
sections: state.sections,
|
|
34281
34353
|
customShows: state.customShows,
|
|
@@ -34297,11 +34369,11 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34297
34369
|
state.isDrawingRef
|
|
34298
34370
|
]
|
|
34299
34371
|
);
|
|
34300
|
-
const zoom =
|
|
34372
|
+
const zoom = chunk2GATFIDB_js.useZoomViewport({
|
|
34301
34373
|
canvasSize,
|
|
34302
34374
|
selectedElements: state.selectedElements
|
|
34303
34375
|
});
|
|
34304
|
-
const history =
|
|
34376
|
+
const history = chunk2GATFIDB_js.useEditorHistory({
|
|
34305
34377
|
slides,
|
|
34306
34378
|
canvasSize,
|
|
34307
34379
|
activeSlideIndex,
|
|
@@ -34323,7 +34395,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34323
34395
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34324
34396
|
setHeaderFooter: state.setHeaderFooter
|
|
34325
34397
|
});
|
|
34326
|
-
const { presentation, annotations, actionSoundHandlerRef } =
|
|
34398
|
+
const { presentation, annotations, actionSoundHandlerRef } = chunk2GATFIDB_js.usePresentationSetup({
|
|
34327
34399
|
mode,
|
|
34328
34400
|
slides,
|
|
34329
34401
|
visibleSlideIndexes,
|
|
@@ -34337,7 +34409,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34337
34409
|
setSlides: state.setSlides,
|
|
34338
34410
|
history
|
|
34339
34411
|
});
|
|
34340
|
-
|
|
34412
|
+
chunk2GATFIDB_js.useTouchGestures({
|
|
34341
34413
|
targetRef: zoom.canvasViewportRef,
|
|
34342
34414
|
currentScale: zoom.scale,
|
|
34343
34415
|
callbacks: {
|
|
@@ -34359,7 +34431,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34359
34431
|
},
|
|
34360
34432
|
enabled: isTouchDevice
|
|
34361
34433
|
});
|
|
34362
|
-
const dialogs =
|
|
34434
|
+
const dialogs = chunk2GATFIDB_js.useViewerDialogs({
|
|
34363
34435
|
mode,
|
|
34364
34436
|
slides,
|
|
34365
34437
|
activeSlide,
|
|
@@ -34400,7 +34472,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34400
34472
|
zoom.handleZoomToFit();
|
|
34401
34473
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34402
34474
|
}, [mode]);
|
|
34403
|
-
const editorOps =
|
|
34475
|
+
const editorOps = chunk2GATFIDB_js.useEditorOperations({
|
|
34404
34476
|
state,
|
|
34405
34477
|
history,
|
|
34406
34478
|
zoom,
|
|
@@ -34434,7 +34506,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34434
34506
|
setIsEncryptedDialogOpen,
|
|
34435
34507
|
handlerRef,
|
|
34436
34508
|
loadVersion
|
|
34437
|
-
} =
|
|
34509
|
+
} = chunk2GATFIDB_js.useViewerIntegration({
|
|
34438
34510
|
state,
|
|
34439
34511
|
zoom,
|
|
34440
34512
|
history,
|
|
@@ -34465,7 +34537,7 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34465
34537
|
onSelectionChange,
|
|
34466
34538
|
onSlideCountChange
|
|
34467
34539
|
});
|
|
34468
|
-
const layoutSwitching =
|
|
34540
|
+
const layoutSwitching = chunk2GATFIDB_js.useLayoutSwitching({
|
|
34469
34541
|
handler: handlerRef.current,
|
|
34470
34542
|
slides,
|
|
34471
34543
|
activeSlideIndex,
|
|
@@ -34572,7 +34644,22 @@ var PowerPointViewer = React18.forwardRef(
|
|
|
34572
34644
|
hiddenActions,
|
|
34573
34645
|
aiEnabled: Boolean(ai),
|
|
34574
34646
|
isAiPanelOpen: aiPanel.isOpen,
|
|
34575
|
-
onToggleAiPanel: aiPanel.toggle
|
|
34647
|
+
onToggleAiPanel: aiPanel.toggle,
|
|
34648
|
+
onUploadCustomFontPackage,
|
|
34649
|
+
onEmbedCustomFonts: (fonts2) => {
|
|
34650
|
+
state.setEmbeddedFonts((current) => {
|
|
34651
|
+
const merged = [...current];
|
|
34652
|
+
for (const font of fonts2) {
|
|
34653
|
+
const index = merged.findIndex(
|
|
34654
|
+
(existing) => existing.name === font.name && Boolean(existing.bold) === Boolean(font.bold) && Boolean(existing.italic) === Boolean(font.italic)
|
|
34655
|
+
);
|
|
34656
|
+
if (index >= 0) merged[index] = font;
|
|
34657
|
+
else merged.push(font);
|
|
34658
|
+
}
|
|
34659
|
+
return merged;
|
|
34660
|
+
});
|
|
34661
|
+
state.setIsDirty(true);
|
|
34662
|
+
}
|
|
34576
34663
|
}
|
|
34577
34664
|
),
|
|
34578
34665
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -34865,7 +34952,7 @@ function CollaborationDocumentSync({
|
|
|
34865
34952
|
}
|
|
34866
34953
|
return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
34867
34954
|
}, []);
|
|
34868
|
-
|
|
34955
|
+
chunk2GATFIDB_js.useYjsDocumentSync({
|
|
34869
34956
|
doc: collab?.doc ?? null,
|
|
34870
34957
|
slides,
|
|
34871
34958
|
templateElementsBySlideId,
|
|
@@ -34884,13 +34971,13 @@ function CollaborationFollowLayer({
|
|
|
34884
34971
|
slideCount
|
|
34885
34972
|
}) {
|
|
34886
34973
|
const collab = useCollaboration();
|
|
34887
|
-
const { followedClientId, followUser } =
|
|
34974
|
+
const { followedClientId, followUser } = chunk2GATFIDB_js.useFollowMode({
|
|
34888
34975
|
collab,
|
|
34889
34976
|
activeSlideIndex,
|
|
34890
34977
|
setActiveSlideIndex,
|
|
34891
34978
|
slideCount
|
|
34892
34979
|
});
|
|
34893
|
-
|
|
34980
|
+
chunk2GATFIDB_js.useBroadcastFollower({
|
|
34894
34981
|
collab,
|
|
34895
34982
|
activeSlideIndex,
|
|
34896
34983
|
setActiveSlideIndex,
|