pptx-react-viewer 4.73.1 → 4.75.0
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/CHANGELOG.md +22 -0
- package/README.md +1 -1
- package/dist/{AiChatPanel-PLQ3NBTK.js → AiChatPanel-4V7QB5Z3.js} +19 -19
- package/dist/AiChatPanel-4V7QB5Z3.js.br +0 -0
- package/dist/AiChatPanel-4V7QB5Z3.js.gz +0 -0
- package/dist/{AiChatPanel-E7CJSTW7.mjs → AiChatPanel-6ML3VLIX.mjs} +1 -1
- package/dist/AiChatPanel-6ML3VLIX.mjs.br +0 -0
- package/dist/AiChatPanel-6ML3VLIX.mjs.gz +0 -0
- package/dist/ai.js +2 -2
- package/dist/ai.js.br +0 -0
- package/dist/ai.js.gz +0 -0
- package/dist/ai.mjs +1 -1
- package/dist/ai.mjs.br +0 -0
- package/dist/ai.mjs.gz +0 -0
- package/dist/{chunk-XG4WSJ4O.js → chunk-3AZ6ESJU.js} +203 -203
- package/dist/chunk-3AZ6ESJU.js.br +0 -0
- package/dist/chunk-3AZ6ESJU.js.gz +0 -0
- package/dist/{chunk-P2COO2QO.js → chunk-6GFSF2ML.js} +65 -13
- package/dist/chunk-6GFSF2ML.js.br +0 -0
- package/dist/chunk-6GFSF2ML.js.gz +0 -0
- package/dist/{chunk-CRC3V4UG.mjs → chunk-AZLOOFU2.mjs} +1 -1
- package/dist/chunk-AZLOOFU2.mjs.br +0 -0
- package/dist/chunk-AZLOOFU2.mjs.gz +0 -0
- package/dist/{chunk-BGWFZCRX.mjs → chunk-DE4Y5F4T.mjs} +152 -207
- package/dist/chunk-DE4Y5F4T.mjs.br +0 -0
- package/dist/chunk-DE4Y5F4T.mjs.gz +0 -0
- package/dist/chunk-FFTZYNL4.mjs +2 -0
- package/dist/chunk-FFTZYNL4.mjs.br +6 -0
- package/dist/chunk-FFTZYNL4.mjs.gz +0 -0
- package/dist/chunk-LWGPHJHC.js +151 -0
- package/dist/chunk-LWGPHJHC.js.br +0 -0
- package/dist/chunk-LWGPHJHC.js.gz +0 -0
- package/dist/{chunk-LVEFHZ76.js → chunk-MU3BIZ2U.js} +1 -1
- package/dist/chunk-MU3BIZ2U.js.br +0 -0
- package/dist/chunk-MU3BIZ2U.js.gz +0 -0
- package/dist/{chunk-FBSPQYRE.mjs → chunk-N3YK2BCA.mjs} +61 -14
- package/dist/chunk-N3YK2BCA.mjs.br +0 -0
- package/dist/chunk-N3YK2BCA.mjs.gz +0 -0
- package/dist/chunk-P2IEKYVG.js +29 -0
- package/dist/chunk-P2IEKYVG.js.br +0 -0
- package/dist/chunk-P2IEKYVG.js.gz +0 -0
- package/dist/{chunk-YLJSLYQS.js → chunk-RJRDE3C2.js} +702 -757
- package/dist/chunk-RJRDE3C2.js.br +0 -0
- package/dist/chunk-RJRDE3C2.js.gz +0 -0
- package/dist/{chunk-JZE6BORE.mjs → chunk-RMEWSJZU.mjs} +1 -1
- package/dist/chunk-RMEWSJZU.mjs.br +0 -0
- package/dist/chunk-RMEWSJZU.mjs.gz +0 -0
- package/dist/chunk-Y53EC3JU.mjs +27 -0
- package/dist/chunk-Y53EC3JU.mjs.br +0 -0
- package/dist/chunk-Y53EC3JU.mjs.gz +0 -0
- package/dist/index.d.ts +49 -20
- package/dist/index.js +128 -124
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +82 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/no-i18next.d.ts +1299 -0
- package/dist/no-i18next.js +251 -0
- package/dist/no-i18next.js.br +0 -0
- package/dist/no-i18next.js.gz +0 -0
- package/dist/no-i18next.mjs +6 -0
- package/dist/no-i18next.mjs.br +0 -0
- package/dist/no-i18next.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +24 -18
- package/dist/viewer/index.js +25 -24
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +9 -4
- package/dist/AiChatPanel-E7CJSTW7.mjs.br +0 -0
- package/dist/AiChatPanel-E7CJSTW7.mjs.gz +0 -0
- package/dist/AiChatPanel-PLQ3NBTK.js.br +0 -0
- package/dist/AiChatPanel-PLQ3NBTK.js.gz +0 -0
- package/dist/chunk-BGWFZCRX.mjs.br +0 -0
- package/dist/chunk-BGWFZCRX.mjs.gz +0 -0
- package/dist/chunk-CRC3V4UG.mjs.br +0 -0
- package/dist/chunk-CRC3V4UG.mjs.gz +0 -0
- package/dist/chunk-FBSPQYRE.mjs.br +0 -0
- package/dist/chunk-FBSPQYRE.mjs.gz +0 -0
- package/dist/chunk-JZE6BORE.mjs.br +0 -0
- package/dist/chunk-JZE6BORE.mjs.gz +0 -0
- package/dist/chunk-LVEFHZ76.js.br +0 -0
- package/dist/chunk-LVEFHZ76.js.gz +0 -0
- package/dist/chunk-P2COO2QO.js.br +0 -0
- package/dist/chunk-P2COO2QO.js.gz +0 -0
- package/dist/chunk-XG4WSJ4O.js.br +0 -0
- package/dist/chunk-XG4WSJ4O.js.gz +0 -0
- package/dist/chunk-YLJSLYQS.js.br +0 -0
- package/dist/chunk-YLJSLYQS.js.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkMU3BIZ2U_js = require('./chunk-MU3BIZ2U.js');
|
|
4
|
+
var chunk3AZ6ESJU_js = require('./chunk-3AZ6ESJU.js');
|
|
5
|
+
var chunk6GFSF2ML_js = require('./chunk-6GFSF2ML.js');
|
|
6
6
|
var pptx = require('ooxml-ui/pptx');
|
|
7
7
|
var React108 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -10,8 +10,8 @@ var lu = require('react-icons/lu');
|
|
|
10
10
|
var reactDom = require('react-dom');
|
|
11
11
|
var pptx$1 = require('ooxml-core/pptx');
|
|
12
12
|
var host = require('ooxml-ui/pptx/ai/host');
|
|
13
|
-
var i18n
|
|
14
|
-
var i18n = require('ooxml-ui/pptx/i18n');
|
|
13
|
+
var i18n = require('ooxml-core/i18n');
|
|
14
|
+
var i18n$1 = require('ooxml-ui/pptx/i18n');
|
|
15
15
|
|
|
16
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
|
|
@@ -36,6 +36,113 @@ function useThemeStyle(theme) {
|
|
|
36
36
|
return vars;
|
|
37
37
|
}, [theme]);
|
|
38
38
|
}
|
|
39
|
+
function getReactSlideBackgroundStyle(slide, slideSize) {
|
|
40
|
+
const style = pptx.getSlideBackgroundStyle(slide, slideSize);
|
|
41
|
+
return {
|
|
42
|
+
backgroundColor: style["background-color"],
|
|
43
|
+
backgroundImage: slide?.backgroundImage ? void 0 : style["background-image"],
|
|
44
|
+
backgroundSize: style["background-size"],
|
|
45
|
+
backgroundRepeat: style["background-repeat"]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function SlideThumbnailImpl({
|
|
49
|
+
slide,
|
|
50
|
+
templateElements,
|
|
51
|
+
canvasSize,
|
|
52
|
+
previewWidth,
|
|
53
|
+
fieldContext,
|
|
54
|
+
tableStyleContext
|
|
55
|
+
}) {
|
|
56
|
+
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
57
|
+
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
58
|
+
const layout = pptx.slideThumbnailLayout(
|
|
59
|
+
safeCanvasWidth,
|
|
60
|
+
safeCanvasHeight,
|
|
61
|
+
previewWidth ?? chunk6GFSF2ML_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
62
|
+
);
|
|
63
|
+
const { height: previewHeight, scale } = layout;
|
|
64
|
+
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
65
|
+
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
66
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
67
|
+
const transitionBadge = pptx.slideThumbnailTransitionBadge(slide, t);
|
|
68
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
className: previewWidth === void 0 ? "relative w-full overflow-hidden rounded border border-border bg-white" : "relative w-full overflow-hidden bg-white",
|
|
72
|
+
style: {
|
|
73
|
+
height: previewHeight,
|
|
74
|
+
...getReactSlideBackgroundStyle(slide, {
|
|
75
|
+
widthPx: safeCanvasWidth,
|
|
76
|
+
heightPx: safeCanvasHeight
|
|
77
|
+
})
|
|
78
|
+
},
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
className: "absolute top-0 left-0 origin-top-left",
|
|
84
|
+
style: {
|
|
85
|
+
width: safeCanvasWidth,
|
|
86
|
+
height: safeCanvasHeight,
|
|
87
|
+
transform: `scale(${scale})`,
|
|
88
|
+
transformOrigin: "top left",
|
|
89
|
+
...pptx.deviceStrokeStageStyle(scale)
|
|
90
|
+
},
|
|
91
|
+
children: [
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide }),
|
|
93
|
+
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
95
|
+
{
|
|
96
|
+
element,
|
|
97
|
+
activeSlide: slide,
|
|
98
|
+
allSlides: [slide],
|
|
99
|
+
zIndex: index,
|
|
100
|
+
fieldContext: slideFieldContext,
|
|
101
|
+
tableStyleContext
|
|
102
|
+
},
|
|
103
|
+
element.id
|
|
104
|
+
))
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
transitionBadge && /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
"data-pptx-thumbnail-transition": "",
|
|
112
|
+
title: transitionBadge.title,
|
|
113
|
+
style: pptx.slideThumbnailTransitionBadgeStyle(layout),
|
|
114
|
+
children: transitionBadge.label
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
function slideThumbnailPropsEqual(prev, next) {
|
|
122
|
+
if (prev.previewWidth !== next.previewWidth) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (prev.slide !== next.slide) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if (prev.templateElements !== next.templateElements) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
if (prev.fieldContext !== next.fieldContext) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if (prev.tableStyleContext !== next.tableStyleContext) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
if (prev.canvasSize.width !== next.canvasSize.width || prev.canvasSize.height !== next.canvasSize.height) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
var SlideThumbnail = /* @__PURE__ */ React108__default.default.memo(
|
|
143
|
+
SlideThumbnailImpl,
|
|
144
|
+
slideThumbnailPropsEqual
|
|
145
|
+
);
|
|
39
146
|
function getInitials(name) {
|
|
40
147
|
const parts = name.trim().split(/\s+/u);
|
|
41
148
|
if (parts.length >= 2) {
|
|
@@ -49,7 +156,7 @@ function AvatarCircle({
|
|
|
49
156
|
avatar,
|
|
50
157
|
isLocal
|
|
51
158
|
}) {
|
|
52
|
-
const { t } =
|
|
159
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
53
160
|
const initials = getInitials(name);
|
|
54
161
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
55
162
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -84,7 +191,7 @@ function UserAvatarBar({
|
|
|
84
191
|
status,
|
|
85
192
|
maxVisible = 5
|
|
86
193
|
}) {
|
|
87
|
-
const { t } =
|
|
194
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
88
195
|
if (status === "disconnected" || status === "error") {
|
|
89
196
|
return null;
|
|
90
197
|
}
|
|
@@ -158,7 +265,7 @@ function CollaborationStatusIndicator({
|
|
|
158
265
|
connectedCount,
|
|
159
266
|
onRetry
|
|
160
267
|
}) {
|
|
161
|
-
const { t } =
|
|
268
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
162
269
|
const style = STATUS_STYLES[status];
|
|
163
270
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
164
271
|
"div",
|
|
@@ -199,7 +306,7 @@ function FollowModeBar({
|
|
|
199
306
|
followedClientId,
|
|
200
307
|
onFollow
|
|
201
308
|
}) {
|
|
202
|
-
const { t } =
|
|
309
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
203
310
|
if (presences.length === 0) {
|
|
204
311
|
return null;
|
|
205
312
|
}
|
|
@@ -304,7 +411,7 @@ function SectionContextMenu({
|
|
|
304
411
|
onAddSection,
|
|
305
412
|
onClose
|
|
306
413
|
}) {
|
|
307
|
-
const { t } =
|
|
414
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
308
415
|
React108.useEffect(() => {
|
|
309
416
|
const onKeyDown = (event) => {
|
|
310
417
|
if (event.key === "Escape") {
|
|
@@ -405,7 +512,7 @@ function SectionHeader({
|
|
|
405
512
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
406
513
|
lu.LuChevronDown,
|
|
407
514
|
{
|
|
408
|
-
className:
|
|
515
|
+
className: chunk6GFSF2ML_js.cn(
|
|
409
516
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
410
517
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
411
518
|
)
|
|
@@ -480,7 +587,7 @@ function SlideContextMenu({
|
|
|
480
587
|
onAddSection,
|
|
481
588
|
onClose
|
|
482
589
|
}) {
|
|
483
|
-
const { t } =
|
|
590
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
484
591
|
const selected = state.selectedIndexes;
|
|
485
592
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
486
593
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -525,134 +632,6 @@ function SlideContextMenu({
|
|
|
525
632
|
}
|
|
526
633
|
);
|
|
527
634
|
}
|
|
528
|
-
function getReactSlideBackgroundStyle(slide, slideSize) {
|
|
529
|
-
const style = pptx.getSlideBackgroundStyle(slide, slideSize);
|
|
530
|
-
return {
|
|
531
|
-
backgroundColor: style["background-color"],
|
|
532
|
-
backgroundImage: slide?.backgroundImage ? void 0 : style["background-image"],
|
|
533
|
-
backgroundSize: style["background-size"],
|
|
534
|
-
backgroundRepeat: style["background-repeat"]
|
|
535
|
-
};
|
|
536
|
-
}
|
|
537
|
-
function SlideThumbnailImpl({
|
|
538
|
-
slide,
|
|
539
|
-
templateElements,
|
|
540
|
-
canvasSize,
|
|
541
|
-
previewWidth,
|
|
542
|
-
fieldContext,
|
|
543
|
-
tableStyleContext
|
|
544
|
-
}) {
|
|
545
|
-
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
546
|
-
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
547
|
-
const width = previewWidth ?? chunkP2COO2QO_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
548
|
-
const scale = width / safeCanvasWidth;
|
|
549
|
-
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
550
|
-
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
551
|
-
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
552
|
-
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
553
|
-
const transitionLabel = slide.transition ? (() => {
|
|
554
|
-
const opt = chunkP2COO2QO_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
555
|
-
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
556
|
-
})() : void 0;
|
|
557
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
558
|
-
"div",
|
|
559
|
-
{
|
|
560
|
-
className: previewWidth === void 0 ? "relative w-full overflow-hidden rounded border border-border bg-white" : "relative w-full overflow-hidden bg-white",
|
|
561
|
-
style: {
|
|
562
|
-
height: previewHeight,
|
|
563
|
-
...getReactSlideBackgroundStyle(slide, {
|
|
564
|
-
widthPx: safeCanvasWidth,
|
|
565
|
-
heightPx: safeCanvasHeight
|
|
566
|
-
})
|
|
567
|
-
},
|
|
568
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
569
|
-
"div",
|
|
570
|
-
{
|
|
571
|
-
className: "absolute top-0 left-0 origin-top-left",
|
|
572
|
-
style: {
|
|
573
|
-
width: safeCanvasWidth,
|
|
574
|
-
height: safeCanvasHeight,
|
|
575
|
-
transform: `scale(${scale})`,
|
|
576
|
-
transformOrigin: "top left",
|
|
577
|
-
...pptx.deviceStrokeStageStyle(scale)
|
|
578
|
-
},
|
|
579
|
-
children: [
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.SlideBackgroundImageLayer, { slide }),
|
|
581
|
-
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
582
|
-
"div",
|
|
583
|
-
{
|
|
584
|
-
className: "absolute top-0.5 right-0.5 z-10 px-1 py-px rounded bg-primary/80 text-[7px] text-white leading-tight pointer-events-none",
|
|
585
|
-
title: t("pptx.slideThumbnail.transitionTooltip", { name: transitionLabel }),
|
|
586
|
-
children: transitionLabel
|
|
587
|
-
}
|
|
588
|
-
),
|
|
589
|
-
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
590
|
-
chunkXG4WSJ4O_js.StaticElementRenderer,
|
|
591
|
-
{
|
|
592
|
-
element,
|
|
593
|
-
activeSlide: slide,
|
|
594
|
-
allSlides: [slide],
|
|
595
|
-
zIndex: index,
|
|
596
|
-
fieldContext: slideFieldContext,
|
|
597
|
-
tableStyleContext
|
|
598
|
-
},
|
|
599
|
-
element.id
|
|
600
|
-
))
|
|
601
|
-
]
|
|
602
|
-
}
|
|
603
|
-
)
|
|
604
|
-
}
|
|
605
|
-
);
|
|
606
|
-
}
|
|
607
|
-
function slideThumbnailPropsEqual(prev, next) {
|
|
608
|
-
if (prev.previewWidth !== next.previewWidth) {
|
|
609
|
-
return false;
|
|
610
|
-
}
|
|
611
|
-
if (prev.slide.id !== next.slide.id) {
|
|
612
|
-
return false;
|
|
613
|
-
}
|
|
614
|
-
if (prev.slide.isDirty !== next.slide.isDirty) {
|
|
615
|
-
return false;
|
|
616
|
-
}
|
|
617
|
-
if (prev.slide.hidden !== next.slide.hidden) {
|
|
618
|
-
return false;
|
|
619
|
-
}
|
|
620
|
-
if (prev.slide.elements !== next.slide.elements) {
|
|
621
|
-
return false;
|
|
622
|
-
}
|
|
623
|
-
if (prev.slide.showMasterShapes !== next.slide.showMasterShapes) {
|
|
624
|
-
return false;
|
|
625
|
-
}
|
|
626
|
-
if (prev.slide.backgroundColor !== next.slide.backgroundColor) {
|
|
627
|
-
return false;
|
|
628
|
-
}
|
|
629
|
-
if (prev.slide.backgroundImage !== next.slide.backgroundImage) {
|
|
630
|
-
return false;
|
|
631
|
-
}
|
|
632
|
-
if (prev.slide.backgroundGradient !== next.slide.backgroundGradient) {
|
|
633
|
-
return false;
|
|
634
|
-
}
|
|
635
|
-
if (prev.slide.backgroundPattern !== next.slide.backgroundPattern) {
|
|
636
|
-
return false;
|
|
637
|
-
}
|
|
638
|
-
if (prev.templateElements !== next.templateElements) {
|
|
639
|
-
return false;
|
|
640
|
-
}
|
|
641
|
-
if (prev.fieldContext !== next.fieldContext) {
|
|
642
|
-
return false;
|
|
643
|
-
}
|
|
644
|
-
if (prev.tableStyleContext !== next.tableStyleContext) {
|
|
645
|
-
return false;
|
|
646
|
-
}
|
|
647
|
-
if (prev.canvasSize.width !== next.canvasSize.width || prev.canvasSize.height !== next.canvasSize.height) {
|
|
648
|
-
return false;
|
|
649
|
-
}
|
|
650
|
-
return true;
|
|
651
|
-
}
|
|
652
|
-
var SlideThumbnail = /* @__PURE__ */ React108__default.default.memo(
|
|
653
|
-
SlideThumbnailImpl,
|
|
654
|
-
slideThumbnailPropsEqual
|
|
655
|
-
);
|
|
656
635
|
function LazyThumbnailInner({
|
|
657
636
|
slide,
|
|
658
637
|
templateElements,
|
|
@@ -713,7 +692,7 @@ function LazyThumbnailInner({
|
|
|
713
692
|
}
|
|
714
693
|
var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
|
|
715
694
|
function declaredSectionFacts(groups, sectionId) {
|
|
716
|
-
const declared = groups.filter((group) => group.id !==
|
|
695
|
+
const declared = groups.filter((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk6GFSF2ML_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
717
696
|
return {
|
|
718
697
|
isDeclared: declared.includes(sectionId),
|
|
719
698
|
index: declared.indexOf(sectionId),
|
|
@@ -770,7 +749,7 @@ function SlideItemInner({
|
|
|
770
749
|
onDrop,
|
|
771
750
|
slideRef
|
|
772
751
|
}) {
|
|
773
|
-
const { t } =
|
|
752
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
774
753
|
const isHidden = Boolean(slide.hidden);
|
|
775
754
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
776
755
|
const handleContextMenu = React108.useCallback(
|
|
@@ -798,7 +777,7 @@ function SlideItemInner({
|
|
|
798
777
|
"data-pptx-chrome": "slide-row",
|
|
799
778
|
"aria-describedby": cue.labelId,
|
|
800
779
|
"data-pptx-slide-hidden": cue.marker,
|
|
801
|
-
className:
|
|
780
|
+
className: chunk6GFSF2ML_js.cn(
|
|
802
781
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
803
782
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
804
783
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -820,7 +799,7 @@ function SlideItemInner({
|
|
|
820
799
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
821
800
|
"span",
|
|
822
801
|
{
|
|
823
|
-
className:
|
|
802
|
+
className: chunk6GFSF2ML_js.cn(
|
|
824
803
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
825
804
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
826
805
|
),
|
|
@@ -843,7 +822,7 @@ function SlideItemInner({
|
|
|
843
822
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
844
823
|
"div",
|
|
845
824
|
{
|
|
846
|
-
className:
|
|
825
|
+
className: chunk6GFSF2ML_js.cn(
|
|
847
826
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
848
827
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
849
828
|
),
|
|
@@ -1041,8 +1020,8 @@ function SlidesPaneSidebar({
|
|
|
1041
1020
|
fieldContext,
|
|
1042
1021
|
tableStyleContext
|
|
1043
1022
|
}) {
|
|
1044
|
-
const { t } =
|
|
1045
|
-
const collab =
|
|
1023
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1024
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
1046
1025
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
1047
1026
|
const renameInputRef = React108.useRef(null);
|
|
1048
1027
|
const slidePresenceMap = React108.useMemo(() => {
|
|
@@ -1067,7 +1046,7 @@ function SlidesPaneSidebar({
|
|
|
1067
1046
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
1068
1047
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
1069
1048
|
);
|
|
1070
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
1049
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID);
|
|
1071
1050
|
const {
|
|
1072
1051
|
collapsedSections,
|
|
1073
1052
|
renamingSectionId,
|
|
@@ -1137,7 +1116,7 @@ function SlidesPaneSidebar({
|
|
|
1137
1116
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
1138
1117
|
);
|
|
1139
1118
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
1140
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
1119
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk3AZ6ESJU_js.useVirtualizedSlides({
|
|
1141
1120
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
1142
1121
|
itemHeight: estimatedItemHeight
|
|
1143
1122
|
});
|
|
@@ -1421,7 +1400,7 @@ function SlideTemplatePreview({
|
|
|
1421
1400
|
transformOrigin: "top left"
|
|
1422
1401
|
},
|
|
1423
1402
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1424
|
-
|
|
1403
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
1425
1404
|
{
|
|
1426
1405
|
element,
|
|
1427
1406
|
activeSlide: previewSlide,
|
|
@@ -1489,8 +1468,8 @@ function SlideTemplateGalleryDialog({
|
|
|
1489
1468
|
onInsert,
|
|
1490
1469
|
scheme
|
|
1491
1470
|
}) {
|
|
1492
|
-
const { t } =
|
|
1493
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
1471
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1472
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
1494
1473
|
const [selected, setSelected] = React108.useState(null);
|
|
1495
1474
|
const dialogRef = React108.useRef(null);
|
|
1496
1475
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -1575,7 +1554,7 @@ function SlideTemplateGalleryDialog({
|
|
|
1575
1554
|
onInsert(spec.id);
|
|
1576
1555
|
onClose();
|
|
1577
1556
|
},
|
|
1578
|
-
className:
|
|
1557
|
+
className: chunk6GFSF2ML_js.cn(
|
|
1579
1558
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
1580
1559
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
1581
1560
|
),
|
|
@@ -1785,7 +1764,7 @@ function nowLocalInputValue() {
|
|
|
1785
1764
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
1786
1765
|
}
|
|
1787
1766
|
function DateTimeFieldDialog(p) {
|
|
1788
|
-
const { t } =
|
|
1767
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1789
1768
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
1790
1769
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
1791
1770
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -1891,7 +1870,7 @@ function useViewerCustomizationContext() {
|
|
|
1891
1870
|
return React108.useContext(ViewerCustomizationContext);
|
|
1892
1871
|
}
|
|
1893
1872
|
function InsertSection(p) {
|
|
1894
|
-
const { t } =
|
|
1873
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1895
1874
|
const customization = useViewerCustomizationContext();
|
|
1896
1875
|
const ref = React108.useRef(null);
|
|
1897
1876
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -2040,8 +2019,8 @@ function MobileSheet({
|
|
|
2040
2019
|
headerRight
|
|
2041
2020
|
}) {
|
|
2042
2021
|
const sheetRef = React108.useRef(null);
|
|
2043
|
-
const { t } =
|
|
2044
|
-
const { dragY, dragging, handlers } =
|
|
2022
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2023
|
+
const { dragY, dragging, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
2045
2024
|
useModalFocus(open, sheetRef, onClose);
|
|
2046
2025
|
if (!open) {
|
|
2047
2026
|
return null;
|
|
@@ -2065,7 +2044,7 @@ function MobileSheet({
|
|
|
2065
2044
|
"aria-modal": "true",
|
|
2066
2045
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
2067
2046
|
tabIndex: -1,
|
|
2068
|
-
className:
|
|
2047
|
+
className: chunk6GFSF2ML_js.cn(
|
|
2069
2048
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
2070
2049
|
"animate-in slide-in-from-bottom duration-200",
|
|
2071
2050
|
className
|
|
@@ -2112,7 +2091,7 @@ function MobileSheet({
|
|
|
2112
2091
|
] });
|
|
2113
2092
|
}
|
|
2114
2093
|
function MobileInsertSheet(p) {
|
|
2115
|
-
const { t } =
|
|
2094
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2116
2095
|
const close = () => p.onCloseMobileInsert?.();
|
|
2117
2096
|
const customization = useViewerCustomizationContext();
|
|
2118
2097
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -2188,7 +2167,7 @@ function MobileInsertSheet(p) {
|
|
|
2188
2167
|
] });
|
|
2189
2168
|
}
|
|
2190
2169
|
function AnimationsSection(p) {
|
|
2191
|
-
const { t } =
|
|
2170
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2192
2171
|
const ref = React108.useRef(null);
|
|
2193
2172
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
2194
2173
|
const timer = React108.useRef(void 0);
|
|
@@ -2269,7 +2248,7 @@ function WebHomeControls({
|
|
|
2269
2248
|
onPopup,
|
|
2270
2249
|
layoutArtwork
|
|
2271
2250
|
}) {
|
|
2272
|
-
const { t } =
|
|
2251
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2273
2252
|
const ref = React108.useRef(null);
|
|
2274
2253
|
React108.useEffect(() => {
|
|
2275
2254
|
if (ref.current) {
|
|
@@ -2310,7 +2289,7 @@ function WebHomeControls({
|
|
|
2310
2289
|
function ShapeArrangeExtras(p) {
|
|
2311
2290
|
const commands = useShapeFormatContext();
|
|
2312
2291
|
const crop = commands?.crop;
|
|
2313
|
-
const { isHidden } =
|
|
2292
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
2314
2293
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
2315
2294
|
const controls = React108.useMemo(
|
|
2316
2295
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -2361,7 +2340,7 @@ function ShapeArrangeExtras(p) {
|
|
|
2361
2340
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
2362
2341
|
}
|
|
2363
2342
|
function ArrangeSection(p) {
|
|
2364
|
-
const { t } =
|
|
2343
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2365
2344
|
const {
|
|
2366
2345
|
onAlignElements,
|
|
2367
2346
|
onDistributeElements,
|
|
@@ -2468,7 +2447,7 @@ function RibbonGallery({
|
|
|
2468
2447
|
tagControl = true,
|
|
2469
2448
|
onCommand
|
|
2470
2449
|
}) {
|
|
2471
|
-
const { t } =
|
|
2450
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2472
2451
|
const ref = React108.useRef(null);
|
|
2473
2452
|
const commands = useRibbonGalleryCommands();
|
|
2474
2453
|
const context = commands?.context;
|
|
@@ -2603,7 +2582,7 @@ function WebRibbonToggle({
|
|
|
2603
2582
|
);
|
|
2604
2583
|
}
|
|
2605
2584
|
function TransitionsSection(p) {
|
|
2606
|
-
const { t } =
|
|
2585
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2607
2586
|
const ref = React108.useRef(null);
|
|
2608
2587
|
const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
2609
2588
|
const transition = p.activeSlide?.transition;
|
|
@@ -2645,7 +2624,7 @@ function TransitionsSection(p) {
|
|
|
2645
2624
|
case "soundPreview": {
|
|
2646
2625
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
2647
2626
|
if (url) {
|
|
2648
|
-
|
|
2627
|
+
chunk3AZ6ESJU_js.playAnimationSound(url);
|
|
2649
2628
|
}
|
|
2650
2629
|
break;
|
|
2651
2630
|
}
|
|
@@ -2664,7 +2643,7 @@ function TransitionsSection(p) {
|
|
|
2664
2643
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
2665
2644
|
}
|
|
2666
2645
|
function DesignSection(p) {
|
|
2667
|
-
const { t } =
|
|
2646
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2668
2647
|
const actions = {
|
|
2669
2648
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
2670
2649
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -2727,7 +2706,7 @@ function useRecentColors() {
|
|
|
2727
2706
|
return React108.useContext(RecentColorsContext);
|
|
2728
2707
|
}
|
|
2729
2708
|
function DrawSection(p) {
|
|
2730
|
-
const { t } =
|
|
2709
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2731
2710
|
const { pushColor, recentColors } = useRecentColors();
|
|
2732
2711
|
const ref = React108.useRef(null);
|
|
2733
2712
|
React108.useEffect(() => {
|
|
@@ -2825,7 +2804,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
|
|
|
2825
2804
|
);
|
|
2826
2805
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
2827
2806
|
function AccountPage() {
|
|
2828
|
-
const { t } =
|
|
2807
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2829
2808
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
2830
2809
|
const storage = useViewerStorage();
|
|
2831
2810
|
const cloud = useViewerCloudFiles();
|
|
@@ -2853,7 +2832,7 @@ function AccountPage() {
|
|
|
2853
2832
|
refreshUsage();
|
|
2854
2833
|
setTimeout(() => setCleared(false), 4e3);
|
|
2855
2834
|
};
|
|
2856
|
-
const version = "4.
|
|
2835
|
+
const version = "4.75.0" ;
|
|
2857
2836
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2858
2837
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2859
2838
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -2893,7 +2872,7 @@ function AccountPage() {
|
|
|
2893
2872
|
"aria-label": color,
|
|
2894
2873
|
"aria-pressed": profile.avatarColor === color,
|
|
2895
2874
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
2896
|
-
className:
|
|
2875
|
+
className: chunk6GFSF2ML_js.cn(
|
|
2897
2876
|
"size-7 rounded-full border-2 transition-transform",
|
|
2898
2877
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
2899
2878
|
),
|
|
@@ -2968,7 +2947,7 @@ function BackstageAction(props) {
|
|
|
2968
2947
|
] });
|
|
2969
2948
|
}
|
|
2970
2949
|
function BackstageNewGallery(props) {
|
|
2971
|
-
const { t } =
|
|
2950
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2972
2951
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2973
2952
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
2974
2953
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: pptx.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2994,7 +2973,7 @@ function BackstageNewGallery(props) {
|
|
|
2994
2973
|
] });
|
|
2995
2974
|
}
|
|
2996
2975
|
function BackstageRecentList(props) {
|
|
2997
|
-
const { t } =
|
|
2976
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2998
2977
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
2999
2978
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
3000
2979
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -3048,7 +3027,7 @@ function BackstageCards({
|
|
|
3048
3027
|
props,
|
|
3049
3028
|
run
|
|
3050
3029
|
}) {
|
|
3051
|
-
const { t } =
|
|
3030
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3052
3031
|
const handlers = {
|
|
3053
3032
|
protect: props.onOpenPasswordProtection,
|
|
3054
3033
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -3110,7 +3089,7 @@ function BackstageNavIcon({ page }) {
|
|
|
3110
3089
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
3111
3090
|
}
|
|
3112
3091
|
function FileSection(p) {
|
|
3113
|
-
const { t, locale } =
|
|
3092
|
+
const { t, locale } = chunk6GFSF2ML_js.useTranslation();
|
|
3114
3093
|
const [requestedPage, setRequestedPage] = React108.useState("home");
|
|
3115
3094
|
const customization = useViewerCustomizationContext();
|
|
3116
3095
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -3118,7 +3097,7 @@ function FileSection(p) {
|
|
|
3118
3097
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
3119
3098
|
const [query, setQuery] = React108.useState("");
|
|
3120
3099
|
const [recent, setRecent] = React108.useState([]);
|
|
3121
|
-
const { isHidden } =
|
|
3100
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
3122
3101
|
const exportHidden = isHidden("export");
|
|
3123
3102
|
const storage = useViewerStorage();
|
|
3124
3103
|
const cloud = useViewerCloudFiles();
|
|
@@ -3387,7 +3366,7 @@ function RibbonMenu({
|
|
|
3387
3366
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3388
3367
|
"div",
|
|
3389
3368
|
{
|
|
3390
|
-
className:
|
|
3369
|
+
className: chunk6GFSF2ML_js.cn("fixed z-50", className),
|
|
3391
3370
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
3392
3371
|
children
|
|
3393
3372
|
}
|
|
@@ -3397,7 +3376,7 @@ var THUMB_WIDTH = 128;
|
|
|
3397
3376
|
var THUMB_HEIGHT = 72;
|
|
3398
3377
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
3399
3378
|
function LayoutGalleryMenu(p) {
|
|
3400
|
-
const { t } =
|
|
3379
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3401
3380
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3402
3381
|
"div",
|
|
3403
3382
|
{
|
|
@@ -3413,7 +3392,7 @@ function LayoutGalleryMenu(p) {
|
|
|
3413
3392
|
type: "button",
|
|
3414
3393
|
"aria-current": isCurrent ? "true" : void 0,
|
|
3415
3394
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
3416
|
-
className:
|
|
3395
|
+
className: chunk6GFSF2ML_js.cn(
|
|
3417
3396
|
"relative flex min-w-0 flex-col items-center gap-1 rounded border-2 p-1 text-xs text-foreground transition-colors hover:bg-muted",
|
|
3418
3397
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
3419
3398
|
),
|
|
@@ -3487,7 +3466,7 @@ function LayoutArtwork({
|
|
|
3487
3466
|
backgroundColor
|
|
3488
3467
|
};
|
|
3489
3468
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3490
|
-
|
|
3469
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
3491
3470
|
{
|
|
3492
3471
|
element,
|
|
3493
3472
|
activeSlide: slide,
|
|
@@ -3762,7 +3741,7 @@ function WebRibbonSection({
|
|
|
3762
3741
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
3763
3742
|
}
|
|
3764
3743
|
function ReviewSection(p) {
|
|
3765
|
-
const { t } =
|
|
3744
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3766
3745
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
3767
3746
|
React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
3768
3747
|
const host = p.commentsHost;
|
|
@@ -3822,7 +3801,7 @@ function SlideShowOptions({
|
|
|
3822
3801
|
children
|
|
3823
3802
|
}) {
|
|
3824
3803
|
const ref = React108.useRef(null);
|
|
3825
|
-
const { t } =
|
|
3804
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3826
3805
|
React108.useLayoutEffect(() => {
|
|
3827
3806
|
if (!ref.current) {
|
|
3828
3807
|
return;
|
|
@@ -3841,8 +3820,8 @@ function SlideShowOptions({
|
|
|
3841
3820
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
3842
3821
|
}
|
|
3843
3822
|
function SubtitleSettingsControl() {
|
|
3844
|
-
const { t } =
|
|
3845
|
-
const supplied = React108.useContext(
|
|
3823
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3824
|
+
const supplied = React108.useContext(chunk3AZ6ESJU_js.ViewerOptionsStoreContext);
|
|
3846
3825
|
const fallback = React108.useRef(null);
|
|
3847
3826
|
if (!supplied) {
|
|
3848
3827
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -3875,8 +3854,8 @@ function SubtitleSettingsControl() {
|
|
|
3875
3854
|
);
|
|
3876
3855
|
}
|
|
3877
3856
|
function SlideShowSection(p) {
|
|
3878
|
-
const { t } =
|
|
3879
|
-
const { isHidden } =
|
|
3857
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3858
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
3880
3859
|
const actions = {
|
|
3881
3860
|
"slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
|
|
3882
3861
|
"slideShow.startSlideShow.fromCurrent": p.onPresent,
|
|
@@ -4120,7 +4099,7 @@ function FontFormatGroup(p) {
|
|
|
4120
4099
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
4121
4100
|
}
|
|
4122
4101
|
function FontPickerGroup(p) {
|
|
4123
|
-
const { t } =
|
|
4102
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4124
4103
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
4125
4104
|
const { onFamily, onSize } = p;
|
|
4126
4105
|
const controls = React108.useMemo(
|
|
@@ -4143,7 +4122,7 @@ function FontPickerGroup(p) {
|
|
|
4143
4122
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
4144
4123
|
}
|
|
4145
4124
|
function ParagraphGroup(p) {
|
|
4146
|
-
const { t } =
|
|
4125
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4147
4126
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
4148
4127
|
const commands = useRibbonGalleryCommands();
|
|
4149
4128
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -4244,7 +4223,7 @@ function useParagraphListKind(element) {
|
|
|
4244
4223
|
return React108.useSyncExternalStore(subscribe, read, readServer);
|
|
4245
4224
|
}
|
|
4246
4225
|
function TextSection(p) {
|
|
4247
|
-
const { t } =
|
|
4226
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4248
4227
|
const hasSel = Boolean(p.selectedElement);
|
|
4249
4228
|
const canMut = hasSel && p.canEdit;
|
|
4250
4229
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -4320,7 +4299,7 @@ function TextSection(p) {
|
|
|
4320
4299
|
] });
|
|
4321
4300
|
}
|
|
4322
4301
|
function ViewSection(p) {
|
|
4323
|
-
const { t } =
|
|
4302
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4324
4303
|
const ref = React108.useRef(null);
|
|
4325
4304
|
React108.useEffect(() => {
|
|
4326
4305
|
const host = ref.current;
|
|
@@ -4393,10 +4372,10 @@ var MENU_ITEMS = [
|
|
|
4393
4372
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
4394
4373
|
];
|
|
4395
4374
|
function MobileMenuSheet(props) {
|
|
4396
|
-
const { t } =
|
|
4375
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4397
4376
|
const { open, onClose } = props;
|
|
4398
4377
|
const [active, setActive] = React108.useState("home");
|
|
4399
|
-
const { isTabVisible } =
|
|
4378
|
+
const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
|
|
4400
4379
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4401
4380
|
MobileSheet,
|
|
4402
4381
|
{
|
|
@@ -4410,7 +4389,7 @@ function MobileMenuSheet(props) {
|
|
|
4410
4389
|
{
|
|
4411
4390
|
type: "button",
|
|
4412
4391
|
onClick: () => setActive(active === key ? null : key),
|
|
4413
|
-
className:
|
|
4392
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4414
4393
|
"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]",
|
|
4415
4394
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
4416
4395
|
),
|
|
@@ -4685,10 +4664,10 @@ function MobileSectionBody({
|
|
|
4685
4664
|
}
|
|
4686
4665
|
}
|
|
4687
4666
|
function MobileToolbar(props) {
|
|
4688
|
-
const { t } =
|
|
4667
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4689
4668
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
4690
4669
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
4691
|
-
const { isHidden } =
|
|
4670
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
|
|
4692
4671
|
const showEdit = mode === "edit" || mode === "master";
|
|
4693
4672
|
const hidden = [];
|
|
4694
4673
|
if (isHidden("undo")) {
|
|
@@ -4734,8 +4713,8 @@ function MobileToolbar(props) {
|
|
|
4734
4713
|
] });
|
|
4735
4714
|
}
|
|
4736
4715
|
function ChartSelectionStrip() {
|
|
4737
|
-
const { t } =
|
|
4738
|
-
const commands =
|
|
4716
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4717
|
+
const commands = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
4739
4718
|
const chart = commands?.chart;
|
|
4740
4719
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
4741
4720
|
const controls = React108.useMemo(
|
|
@@ -4766,7 +4745,7 @@ function PictureSizeStrip({
|
|
|
4766
4745
|
hiddenActions
|
|
4767
4746
|
}) {
|
|
4768
4747
|
const crop = useShapeFormatContext()?.crop;
|
|
4769
|
-
const { isHidden } =
|
|
4748
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
4770
4749
|
const controls = React108.useMemo(
|
|
4771
4750
|
() => pptx.pictureSizeHomeControls({
|
|
4772
4751
|
editable: Boolean(crop),
|
|
@@ -4783,7 +4762,7 @@ function PictureSizeStrip({
|
|
|
4783
4762
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
4784
4763
|
}
|
|
4785
4764
|
function useTranslateOr() {
|
|
4786
|
-
const { t } =
|
|
4765
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4787
4766
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
4788
4767
|
}
|
|
4789
4768
|
function ContextualTabSection({
|
|
@@ -4806,7 +4785,7 @@ function ContextualTabSection({
|
|
|
4806
4785
|
)) });
|
|
4807
4786
|
}
|
|
4808
4787
|
function DrawingGroup(p) {
|
|
4809
|
-
const { t } =
|
|
4788
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4810
4789
|
const { recentColors, pushColor } = useRecentColors();
|
|
4811
4790
|
const themeColors = useThemeColorMap();
|
|
4812
4791
|
const commands = useRibbonGalleryCommands();
|
|
@@ -4892,7 +4871,7 @@ function DrawingGroup(p) {
|
|
|
4892
4871
|
] });
|
|
4893
4872
|
}
|
|
4894
4873
|
function EditingSection(p) {
|
|
4895
|
-
const { t } =
|
|
4874
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4896
4875
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
4897
4876
|
const controls = React108.useMemo(
|
|
4898
4877
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -4938,8 +4917,8 @@ function RibbonAddInSection({ tab }) {
|
|
|
4938
4917
|
var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3";
|
|
4939
4918
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
4940
4919
|
function RibbonTabBar(p) {
|
|
4941
|
-
const { t } =
|
|
4942
|
-
const viewerOptions =
|
|
4920
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4921
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
4943
4922
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4944
4923
|
"div",
|
|
4945
4924
|
{
|
|
@@ -4947,7 +4926,7 @@ function RibbonTabBar(p) {
|
|
|
4947
4926
|
"data-pptx-chrome": "ribbon-tabs",
|
|
4948
4927
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
4949
4928
|
children: [
|
|
4950
|
-
|
|
4929
|
+
chunk6GFSF2ML_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
4951
4930
|
const selected = p.activeSection === s.id;
|
|
4952
4931
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4953
4932
|
"button",
|
|
@@ -4957,7 +4936,7 @@ function RibbonTabBar(p) {
|
|
|
4957
4936
|
"aria-selected": selected,
|
|
4958
4937
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
4959
4938
|
onClick: () => p.onSelectSection(s.id),
|
|
4960
|
-
className:
|
|
4939
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4961
4940
|
TAB_BASE,
|
|
4962
4941
|
selected ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : `text-foreground ${TAB_UNDERLINE}` : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4963
4942
|
),
|
|
@@ -4977,7 +4956,7 @@ function RibbonTabBar(p) {
|
|
|
4977
4956
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
4978
4957
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
4979
4958
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
4980
|
-
className:
|
|
4959
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4981
4960
|
TAB_BASE,
|
|
4982
4961
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4983
4962
|
),
|
|
@@ -4998,7 +4977,7 @@ function RibbonTabBar(p) {
|
|
|
4998
4977
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
4999
4978
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
5000
4979
|
onClick: () => p.onSelectContextual(id),
|
|
5001
|
-
className:
|
|
4980
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5002
4981
|
TAB_BASE,
|
|
5003
4982
|
"text-primary",
|
|
5004
4983
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -5015,10 +4994,10 @@ function RibbonTabBar(p) {
|
|
|
5015
4994
|
);
|
|
5016
4995
|
}
|
|
5017
4996
|
function TabRowActions(p) {
|
|
5018
|
-
const { t } =
|
|
5019
|
-
const collab =
|
|
4997
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4998
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
5020
4999
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5021
|
-
const { isHidden } =
|
|
5000
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
5022
5001
|
const customization = useViewerCustomizationContext();
|
|
5023
5002
|
const ref = React108.useRef(null);
|
|
5024
5003
|
const handlers = React108.useRef(p);
|
|
@@ -5072,8 +5051,8 @@ function TabRowActions(p) {
|
|
|
5072
5051
|
] });
|
|
5073
5052
|
}
|
|
5074
5053
|
function TitleBarElement(p) {
|
|
5075
|
-
const { t } =
|
|
5076
|
-
const options =
|
|
5054
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5055
|
+
const options = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
5077
5056
|
const customization = useViewerCustomizationContext();
|
|
5078
5057
|
const ref = React108.useRef(null);
|
|
5079
5058
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -5138,7 +5117,7 @@ function CustomShowsControls({
|
|
|
5138
5117
|
onDeleteActiveCustomShow,
|
|
5139
5118
|
onToggleCurrentSlideInActiveShow
|
|
5140
5119
|
}) {
|
|
5141
|
-
const { t } =
|
|
5120
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5142
5121
|
if (customShows.length > 0) {
|
|
5143
5122
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5144
5123
|
sep,
|
|
@@ -5193,7 +5172,7 @@ function CustomShowsControls({
|
|
|
5193
5172
|
{
|
|
5194
5173
|
type: "button",
|
|
5195
5174
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
5196
|
-
className:
|
|
5175
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5197
5176
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
5198
5177
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
5199
5178
|
),
|
|
@@ -5232,7 +5211,7 @@ function PresentDropdown({
|
|
|
5232
5211
|
onToggleSubtitles,
|
|
5233
5212
|
showSubtitles
|
|
5234
5213
|
}) {
|
|
5235
|
-
const { t } =
|
|
5214
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5236
5215
|
const [open, setOpen] = React108.useState(false);
|
|
5237
5216
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
5238
5217
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -5241,7 +5220,7 @@ function PresentDropdown({
|
|
|
5241
5220
|
{
|
|
5242
5221
|
type: "button",
|
|
5243
5222
|
onClick: onPresent,
|
|
5244
|
-
className:
|
|
5223
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5245
5224
|
"px-2 py-1 transition-colors",
|
|
5246
5225
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5247
5226
|
),
|
|
@@ -5254,7 +5233,7 @@ function PresentDropdown({
|
|
|
5254
5233
|
{
|
|
5255
5234
|
type: "button",
|
|
5256
5235
|
onClick: () => setOpen((prev) => !prev),
|
|
5257
|
-
className:
|
|
5236
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5258
5237
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
5259
5238
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5260
5239
|
),
|
|
@@ -5382,7 +5361,7 @@ function ModeSwitcher({
|
|
|
5382
5361
|
onToggleSubtitles,
|
|
5383
5362
|
showSubtitles
|
|
5384
5363
|
}) {
|
|
5385
|
-
const { t } =
|
|
5364
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5386
5365
|
if (mode === "master") {
|
|
5387
5366
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
5388
5367
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.mode.masterView") }),
|
|
@@ -5420,7 +5399,7 @@ var EXPORT_CARD_OF = {
|
|
|
5420
5399
|
copyImg: "copyImage"
|
|
5421
5400
|
};
|
|
5422
5401
|
function OverflowMenu(p) {
|
|
5423
|
-
const { t } =
|
|
5402
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5424
5403
|
const customization = useViewerCustomizationContext();
|
|
5425
5404
|
const offered = (k) => {
|
|
5426
5405
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -5457,7 +5436,7 @@ function OverflowMenu(p) {
|
|
|
5457
5436
|
{
|
|
5458
5437
|
type: "button",
|
|
5459
5438
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
5460
|
-
className:
|
|
5439
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5461
5440
|
"p-1.5 rounded transition-colors",
|
|
5462
5441
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
5463
5442
|
),
|
|
@@ -5495,7 +5474,7 @@ function OverflowMenu(p) {
|
|
|
5495
5474
|
] });
|
|
5496
5475
|
}
|
|
5497
5476
|
function ToolbarPrimaryRow(p) {
|
|
5498
|
-
const { t } =
|
|
5477
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5499
5478
|
const {
|
|
5500
5479
|
mode,
|
|
5501
5480
|
canEdit,
|
|
@@ -5504,7 +5483,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5504
5483
|
onToggleSidebar,
|
|
5505
5484
|
onToggleInspector
|
|
5506
5485
|
} = p;
|
|
5507
|
-
const collab =
|
|
5486
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
5508
5487
|
const customization = useViewerCustomizationContext();
|
|
5509
5488
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
5510
5489
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -5524,7 +5503,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5524
5503
|
{
|
|
5525
5504
|
type: "button",
|
|
5526
5505
|
onClick: onToggleSidebar,
|
|
5527
|
-
className:
|
|
5506
|
+
className: chunk6GFSF2ML_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
5528
5507
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
5529
5508
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
5530
5509
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -5585,7 +5564,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5585
5564
|
{
|
|
5586
5565
|
type: "button",
|
|
5587
5566
|
onClick: onToggleInspector,
|
|
5588
|
-
className:
|
|
5567
|
+
className: chunk6GFSF2ML_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
5589
5568
|
title: t("pptx.toolbar.toggleInspector"),
|
|
5590
5569
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
5591
5570
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -5596,7 +5575,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5596
5575
|
{
|
|
5597
5576
|
type: "button",
|
|
5598
5577
|
onClick: p.onToggleAiPanel,
|
|
5599
|
-
className:
|
|
5578
|
+
className: chunk6GFSF2ML_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
5600
5579
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
5601
5580
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
5602
5581
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -5607,7 +5586,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5607
5586
|
{
|
|
5608
5587
|
type: "button",
|
|
5609
5588
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
5610
|
-
className:
|
|
5589
|
+
className: chunk6GFSF2ML_js.cn(qab, "text-muted-foreground"),
|
|
5611
5590
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
5612
5591
|
"aria-label": t("pptx.toolbar.settings"),
|
|
5613
5592
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -5651,7 +5630,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
5651
5630
|
return { visible, active, fellBack, select: setChosen };
|
|
5652
5631
|
}
|
|
5653
5632
|
function HelpSection(p) {
|
|
5654
|
-
const { t } =
|
|
5633
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5655
5634
|
const groups = pptx.buildHelpRibbon(t, {
|
|
5656
5635
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
5657
5636
|
});
|
|
@@ -5671,7 +5650,7 @@ function HelpSection(p) {
|
|
|
5671
5650
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
5672
5651
|
}
|
|
5673
5652
|
function RecordSection(props) {
|
|
5674
|
-
const { t } =
|
|
5653
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5675
5654
|
const request = (id) => {
|
|
5676
5655
|
if (id === "record.record.fromBeginning") {
|
|
5677
5656
|
props.onRecordFromBeginning();
|
|
@@ -5804,9 +5783,9 @@ function ToolbarLateTabs({
|
|
|
5804
5783
|
}
|
|
5805
5784
|
function Toolbar(p) {
|
|
5806
5785
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
5807
|
-
const { t } =
|
|
5808
|
-
const { isTabVisible } =
|
|
5809
|
-
const viewerOptions =
|
|
5786
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5787
|
+
const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
5788
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
5810
5789
|
const customization = useViewerCustomizationContext();
|
|
5811
5790
|
const belowInput = React108.useMemo(
|
|
5812
5791
|
() => ({
|
|
@@ -5904,7 +5883,7 @@ function Toolbar(p) {
|
|
|
5904
5883
|
{
|
|
5905
5884
|
type: "button",
|
|
5906
5885
|
onClick: p.onToggleCompactToolbar,
|
|
5907
|
-
className:
|
|
5886
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5908
5887
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
5909
5888
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
5910
5889
|
),
|
|
@@ -5930,7 +5909,7 @@ function Toolbar(p) {
|
|
|
5930
5909
|
{
|
|
5931
5910
|
ref: attachOverflow,
|
|
5932
5911
|
"data-pptx-chrome": "ribbon-content",
|
|
5933
|
-
className:
|
|
5912
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5934
5913
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
5935
5914
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
5936
5915
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -6120,7 +6099,7 @@ function Toolbar(p) {
|
|
|
6120
6099
|
);
|
|
6121
6100
|
}
|
|
6122
6101
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
6123
|
-
const { t } =
|
|
6102
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6124
6103
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6125
6104
|
"div",
|
|
6126
6105
|
{
|
|
@@ -6332,7 +6311,7 @@ function ChartQuickActionsOverlay({
|
|
|
6332
6311
|
scale: stageScale = 1,
|
|
6333
6312
|
onUpdateElement
|
|
6334
6313
|
}) {
|
|
6335
|
-
const { t } =
|
|
6314
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6336
6315
|
const [open, setOpen] = React108.useState(null);
|
|
6337
6316
|
const hostRef = React108.useRef(null);
|
|
6338
6317
|
React108.useEffect(() => {
|
|
@@ -6503,7 +6482,7 @@ function CommentMarkersOverlay({
|
|
|
6503
6482
|
canvasSize,
|
|
6504
6483
|
onCommentMarkerClick
|
|
6505
6484
|
}) {
|
|
6506
|
-
const { t } =
|
|
6485
|
+
const { t } = chunk6GFSF2ML_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
6507
6486
|
comments,
|
|
6508
6487
|
canvasSize.width,
|
|
6509
6488
|
canvasSize.height,
|
|
@@ -6547,7 +6526,7 @@ function ConnectorEndpointOverlay({
|
|
|
6547
6526
|
canvasStageRef,
|
|
6548
6527
|
onUpdateElement
|
|
6549
6528
|
}) {
|
|
6550
|
-
const { t } =
|
|
6529
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6551
6530
|
const [drag, setDrag] = React108.useState(null);
|
|
6552
6531
|
const candidates = React108.useMemo(
|
|
6553
6532
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -6783,7 +6762,7 @@ function DrawingOverlaySvg({
|
|
|
6783
6762
|
onPointerDown,
|
|
6784
6763
|
onPointerMove,
|
|
6785
6764
|
onPointerUp,
|
|
6786
|
-
children: isStrokeActive && liveStrokeView ?
|
|
6765
|
+
children: isStrokeActive && liveStrokeView ? chunk3AZ6ESJU_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6787
6766
|
"path",
|
|
6788
6767
|
{
|
|
6789
6768
|
d: liveStrokeD,
|
|
@@ -6798,7 +6777,7 @@ function DrawingOverlaySvg({
|
|
|
6798
6777
|
}
|
|
6799
6778
|
);
|
|
6800
6779
|
}
|
|
6801
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
6780
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk6GFSF2ML_js.GRID_SIZE, visible }) {
|
|
6802
6781
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
6803
6782
|
const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
6804
6783
|
if (!visible) {
|
|
@@ -6826,7 +6805,7 @@ function MotionPathOverlay({
|
|
|
6826
6805
|
canEdit,
|
|
6827
6806
|
onChangePath
|
|
6828
6807
|
}) {
|
|
6829
|
-
const { t } =
|
|
6808
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6830
6809
|
const dragRef = React108.useRef(null);
|
|
6831
6810
|
const frame = {
|
|
6832
6811
|
originX: element.x + element.width / 2,
|
|
@@ -6940,7 +6919,7 @@ function MotionPathOverlay({
|
|
|
6940
6919
|
);
|
|
6941
6920
|
}
|
|
6942
6921
|
function EditPointsMenu({ menu, onRun }) {
|
|
6943
|
-
const { t } =
|
|
6922
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6944
6923
|
const stop2 = (event) => event.stopPropagation();
|
|
6945
6924
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6946
6925
|
"div",
|
|
@@ -6986,7 +6965,7 @@ function EditPointsOverlay({
|
|
|
6986
6965
|
onCommit,
|
|
6987
6966
|
onExit
|
|
6988
6967
|
}) {
|
|
6989
|
-
const { t } =
|
|
6968
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6990
6969
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
6991
6970
|
const svgRef = React108.useRef(null);
|
|
6992
6971
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -7142,7 +7121,7 @@ function FreeformToolOverlay({
|
|
|
7142
7121
|
onCommit,
|
|
7143
7122
|
onCancel
|
|
7144
7123
|
}) {
|
|
7145
|
-
const { t } =
|
|
7124
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
7146
7125
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7147
7126
|
const svgRef = React108.useRef(null);
|
|
7148
7127
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -7285,7 +7264,7 @@ function PictureCropOverlay({
|
|
|
7285
7264
|
onUpdate,
|
|
7286
7265
|
onContextMenu
|
|
7287
7266
|
}) {
|
|
7288
|
-
const { t } =
|
|
7267
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
7289
7268
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
7290
7269
|
const dragRef = React108.useRef(null);
|
|
7291
7270
|
const latest = React108.useRef({ scale, onUpdate });
|
|
@@ -7333,7 +7312,7 @@ function PictureCropOverlay({
|
|
|
7333
7312
|
};
|
|
7334
7313
|
};
|
|
7335
7314
|
const { ghost, frame, handles } = overlay;
|
|
7336
|
-
const src =
|
|
7315
|
+
const src = chunk3AZ6ESJU_js.imgSrc(element);
|
|
7337
7316
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7338
7317
|
"div",
|
|
7339
7318
|
{
|
|
@@ -7509,7 +7488,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
7509
7488
|
}
|
|
7510
7489
|
);
|
|
7511
7490
|
}
|
|
7512
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
7491
|
+
var HorizontalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
7513
7492
|
/* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
|
|
7514
7493
|
"HorizontalRuler"
|
|
7515
7494
|
);
|
|
@@ -7583,7 +7562,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
7583
7562
|
}
|
|
7584
7563
|
);
|
|
7585
7564
|
}
|
|
7586
|
-
var VerticalRuler = /* @__PURE__ */
|
|
7565
|
+
var VerticalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
7587
7566
|
/* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
|
|
7588
7567
|
"VerticalRuler"
|
|
7589
7568
|
);
|
|
@@ -7750,10 +7729,10 @@ function SelectionHandleOverlay({
|
|
|
7750
7729
|
position: "absolute",
|
|
7751
7730
|
left: element.x,
|
|
7752
7731
|
top: element.y,
|
|
7753
|
-
width: Math.max(element.width,
|
|
7754
|
-
height: Math.max(element.height,
|
|
7755
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
7756
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
7732
|
+
width: Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
|
|
7733
|
+
height: Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
|
|
7734
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
|
|
7735
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
|
|
7757
7736
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
7758
7737
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
7759
7738
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -7765,7 +7744,7 @@ function SelectionHandleOverlay({
|
|
|
7765
7744
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
7766
7745
|
// any realistic per-slide element count.
|
|
7767
7746
|
zIndex: 58,
|
|
7768
|
-
transform:
|
|
7747
|
+
transform: chunk6GFSF2ML_js.getElementTransform(element),
|
|
7769
7748
|
transformOrigin: "center",
|
|
7770
7749
|
// Transparent everywhere a handle button is not, so a click that
|
|
7771
7750
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -7777,14 +7756,14 @@ function SelectionHandleOverlay({
|
|
|
7777
7756
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
7778
7757
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
7779
7758
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7780
|
-
|
|
7759
|
+
chunk3AZ6ESJU_js.ResizeHandles,
|
|
7781
7760
|
{
|
|
7782
7761
|
elementId: element.id,
|
|
7783
7762
|
adjustmentHandles,
|
|
7784
7763
|
onResizePointerDown,
|
|
7785
7764
|
onAdjustmentPointerDown,
|
|
7786
7765
|
rotation: element.rotation,
|
|
7787
|
-
nonRotationTransform:
|
|
7766
|
+
nonRotationTransform: chunk6GFSF2ML_js.getElementTransformWithoutRotation(element),
|
|
7788
7767
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
7789
7768
|
forcePointerEvents: true
|
|
7790
7769
|
}
|
|
@@ -8488,7 +8467,7 @@ function SlideCanvas(props) {
|
|
|
8488
8467
|
props.registerInlineEditReader
|
|
8489
8468
|
]
|
|
8490
8469
|
);
|
|
8491
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8470
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
8492
8471
|
}
|
|
8493
8472
|
function SlideCanvasContent({
|
|
8494
8473
|
imagePaste,
|
|
@@ -8761,7 +8740,7 @@ function SlideCanvasContent({
|
|
|
8761
8740
|
onPointerMove: handleStagePointerMove,
|
|
8762
8741
|
onPointerUp: handleStagePointerUp,
|
|
8763
8742
|
children: [
|
|
8764
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8743
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
8765
8744
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
8766
8745
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
8767
8746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8773,7 +8752,7 @@ function SlideCanvasContent({
|
|
|
8773
8752
|
}
|
|
8774
8753
|
),
|
|
8775
8754
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8776
|
-
|
|
8755
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8777
8756
|
{
|
|
8778
8757
|
element,
|
|
8779
8758
|
activeSlide,
|
|
@@ -8796,7 +8775,7 @@ function SlideCanvasContent({
|
|
|
8796
8775
|
),
|
|
8797
8776
|
renderInk: false,
|
|
8798
8777
|
renderGroups: true,
|
|
8799
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8778
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8800
8779
|
onResizePointerDown: stableResizePointerDown,
|
|
8801
8780
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8802
8781
|
onRotate: stableRotate,
|
|
@@ -8818,7 +8797,7 @@ function SlideCanvasContent({
|
|
|
8818
8797
|
`tpl-${element.id}`
|
|
8819
8798
|
)),
|
|
8820
8799
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8821
|
-
|
|
8800
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8822
8801
|
{
|
|
8823
8802
|
element,
|
|
8824
8803
|
activeSlide,
|
|
@@ -8841,7 +8820,7 @@ function SlideCanvasContent({
|
|
|
8841
8820
|
),
|
|
8842
8821
|
renderInk: true,
|
|
8843
8822
|
renderGroups: true,
|
|
8844
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8823
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8845
8824
|
onResizePointerDown: stableResizePointerDown,
|
|
8846
8825
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8847
8826
|
onRotate: stableRotate,
|
|
@@ -8885,7 +8864,7 @@ function SlideCanvasContent({
|
|
|
8885
8864
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8886
8865
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
8887
8866
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8888
|
-
|
|
8867
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8889
8868
|
{
|
|
8890
8869
|
element: editingMember.member,
|
|
8891
8870
|
activeSlide,
|
|
@@ -8920,11 +8899,11 @@ function SlideCanvasContent({
|
|
|
8920
8899
|
`group-member-edit-${editingMember.member.id}`
|
|
8921
8900
|
)
|
|
8922
8901
|
] }),
|
|
8923
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
8902
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk6GFSF2ML_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8924
8903
|
SelectionHandleOverlay,
|
|
8925
8904
|
{
|
|
8926
8905
|
element: selectedElement,
|
|
8927
|
-
adjustmentHandles:
|
|
8906
|
+
adjustmentHandles: chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
8928
8907
|
onResizePointerDown: stableResizePointerDown,
|
|
8929
8908
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8930
8909
|
onRotate: stableRotate,
|
|
@@ -9031,14 +9010,14 @@ function SlideCanvasContent({
|
|
|
9031
9010
|
);
|
|
9032
9011
|
}
|
|
9033
9012
|
function LoadingState({ className, fontProgress }) {
|
|
9034
|
-
const { t } =
|
|
9013
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9035
9014
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9036
9015
|
"div",
|
|
9037
9016
|
{
|
|
9038
9017
|
role: "status",
|
|
9039
9018
|
"aria-live": "polite",
|
|
9040
9019
|
"aria-atomic": "true",
|
|
9041
|
-
className:
|
|
9020
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9042
9021
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9043
9022
|
className
|
|
9044
9023
|
),
|
|
@@ -9064,7 +9043,7 @@ function ErrorState({ className, error }) {
|
|
|
9064
9043
|
{
|
|
9065
9044
|
role: "alert",
|
|
9066
9045
|
"aria-live": "assertive",
|
|
9067
|
-
className:
|
|
9046
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9068
9047
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9069
9048
|
className
|
|
9070
9049
|
),
|
|
@@ -9073,7 +9052,7 @@ function ErrorState({ className, error }) {
|
|
|
9073
9052
|
);
|
|
9074
9053
|
}
|
|
9075
9054
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9076
|
-
const { t } =
|
|
9055
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9077
9056
|
if (!isOpen) {
|
|
9078
9057
|
return null;
|
|
9079
9058
|
}
|
|
@@ -9095,7 +9074,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9095
9074
|
}
|
|
9096
9075
|
)
|
|
9097
9076
|
] }),
|
|
9098
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9077
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk6GFSF2ML_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9099
9078
|
"div",
|
|
9100
9079
|
{
|
|
9101
9080
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9117,7 +9096,7 @@ function AccessibilityPanel({
|
|
|
9117
9096
|
reducedMotion,
|
|
9118
9097
|
onToggleReducedMotion
|
|
9119
9098
|
}) {
|
|
9120
|
-
const { t } =
|
|
9099
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9121
9100
|
if (!isOpen) {
|
|
9122
9101
|
return null;
|
|
9123
9102
|
}
|
|
@@ -9155,14 +9134,14 @@ function AccessibilityPanel({
|
|
|
9155
9134
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9156
9135
|
"aria-checked": reducedMotion ?? false,
|
|
9157
9136
|
onClick: onToggleReducedMotion,
|
|
9158
|
-
className:
|
|
9137
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9159
9138
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9160
9139
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9161
9140
|
),
|
|
9162
9141
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9163
9142
|
"span",
|
|
9164
9143
|
{
|
|
9165
|
-
className:
|
|
9144
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9166
9145
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9167
9146
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9168
9147
|
)
|
|
@@ -9181,7 +9160,7 @@ function AccessibilityPanel({
|
|
|
9181
9160
|
"div",
|
|
9182
9161
|
{
|
|
9183
9162
|
role: "listitem",
|
|
9184
|
-
className:
|
|
9163
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9185
9164
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9186
9165
|
/* Severity-based background and text colouring */
|
|
9187
9166
|
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"
|
|
@@ -9209,7 +9188,7 @@ function ExportProgressModal({
|
|
|
9209
9188
|
statusMessage,
|
|
9210
9189
|
onCancel
|
|
9211
9190
|
}) {
|
|
9212
|
-
const { t } =
|
|
9191
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9213
9192
|
const ref = useWebControl(
|
|
9214
9193
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9215
9194
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9217,7 +9196,7 @@ function ExportProgressModal({
|
|
|
9217
9196
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9218
9197
|
}
|
|
9219
9198
|
function StatusBar(p) {
|
|
9220
|
-
const { t } =
|
|
9199
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9221
9200
|
const ref = React108.useRef(null);
|
|
9222
9201
|
React108.useEffect(() => {
|
|
9223
9202
|
const host = ref.current;
|
|
@@ -9299,7 +9278,7 @@ function ResizeHandle({
|
|
|
9299
9278
|
{
|
|
9300
9279
|
role: "separator",
|
|
9301
9280
|
"aria-orientation": direction,
|
|
9302
|
-
className:
|
|
9281
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9303
9282
|
// Outer container: generous hit area for easy clicking.
|
|
9304
9283
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9305
9284
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9310,7 +9289,7 @@ function ResizeHandle({
|
|
|
9310
9289
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9311
9290
|
"div",
|
|
9312
9291
|
{
|
|
9313
|
-
className:
|
|
9292
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9314
9293
|
"absolute transition-colors",
|
|
9315
9294
|
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"
|
|
9316
9295
|
)
|
|
@@ -9399,10 +9378,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9399
9378
|
}
|
|
9400
9379
|
function ContextMenu(props) {
|
|
9401
9380
|
const { contextMenuState, mode, onClose } = props;
|
|
9402
|
-
const { t } =
|
|
9381
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9403
9382
|
const customization = useViewerCustomizationContext();
|
|
9404
9383
|
const shapeFormat = useShapeFormatContext();
|
|
9405
|
-
const chartFormat =
|
|
9384
|
+
const chartFormat = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
9406
9385
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9407
9386
|
const handlers = {
|
|
9408
9387
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9478,7 +9457,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9478
9457
|
}
|
|
9479
9458
|
function CanvasContextMenu(props) {
|
|
9480
9459
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9481
|
-
const { t } =
|
|
9460
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9482
9461
|
const customization = useViewerCustomizationContext();
|
|
9483
9462
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9484
9463
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9541,7 +9520,7 @@ function FindReplacePanel({
|
|
|
9541
9520
|
onReplaceAll,
|
|
9542
9521
|
onClose
|
|
9543
9522
|
}) {
|
|
9544
|
-
const { t } =
|
|
9523
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9545
9524
|
const searchInputRef = React108.useRef(null);
|
|
9546
9525
|
React108.useEffect(() => {
|
|
9547
9526
|
searchInputRef.current?.focus();
|
|
@@ -9732,7 +9711,7 @@ function HandoutMasterPanel({
|
|
|
9732
9711
|
onSlidesPerPageChange,
|
|
9733
9712
|
onBackgroundChange
|
|
9734
9713
|
}) {
|
|
9735
|
-
const { t } =
|
|
9714
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9736
9715
|
if (!handoutMaster) {
|
|
9737
9716
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9738
9717
|
}
|
|
@@ -9744,7 +9723,7 @@ function HandoutMasterPanel({
|
|
|
9744
9723
|
{
|
|
9745
9724
|
type: "button",
|
|
9746
9725
|
"aria-pressed": slidesPerPage === count,
|
|
9747
|
-
className:
|
|
9726
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9748
9727
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9749
9728
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9750
9729
|
),
|
|
@@ -9787,7 +9766,7 @@ function NotesMasterPanel({
|
|
|
9787
9766
|
notesMaster,
|
|
9788
9767
|
onBackgroundChange
|
|
9789
9768
|
}) {
|
|
9790
|
-
const { t } =
|
|
9769
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9791
9770
|
const placeholderLabels = React108.useMemo(() => {
|
|
9792
9771
|
if (!notesMaster?.placeholders) {
|
|
9793
9772
|
return [];
|
|
@@ -9849,7 +9828,7 @@ function SlideMastersList({
|
|
|
9849
9828
|
React108.useEffect(() => {
|
|
9850
9829
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9851
9830
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9852
|
-
const { t } =
|
|
9831
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9853
9832
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9854
9833
|
slideMasters.map((master, masterIdx) => {
|
|
9855
9834
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9862,7 +9841,7 @@ function SlideMastersList({
|
|
|
9862
9841
|
ref: isMasterActive ? activeRef : void 0,
|
|
9863
9842
|
"aria-pressed": isMasterActive,
|
|
9864
9843
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9865
|
-
className:
|
|
9844
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9866
9845
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9867
9846
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9868
9847
|
),
|
|
@@ -9879,7 +9858,7 @@ function SlideMastersList({
|
|
|
9879
9858
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9880
9859
|
"span",
|
|
9881
9860
|
{
|
|
9882
|
-
className:
|
|
9861
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9883
9862
|
"text-[10px] font-medium",
|
|
9884
9863
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9885
9864
|
),
|
|
@@ -9898,7 +9877,7 @@ function SlideMastersList({
|
|
|
9898
9877
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9899
9878
|
"aria-pressed": isLayoutActive,
|
|
9900
9879
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9901
|
-
className:
|
|
9880
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9902
9881
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9903
9882
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9904
9883
|
),
|
|
@@ -9915,7 +9894,7 @@ function SlideMastersList({
|
|
|
9915
9894
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9916
9895
|
"span",
|
|
9917
9896
|
{
|
|
9918
|
-
className:
|
|
9897
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9919
9898
|
"text-[9px]",
|
|
9920
9899
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9921
9900
|
),
|
|
@@ -9959,7 +9938,7 @@ function MasterViewSidebar({
|
|
|
9959
9938
|
onSlidesBackgroundChange
|
|
9960
9939
|
}) {
|
|
9961
9940
|
const scrollRef = React108.useRef(null);
|
|
9962
|
-
const { t } =
|
|
9941
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9963
9942
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9964
9943
|
{ slideMasters },
|
|
9965
9944
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -10007,7 +9986,7 @@ function MasterViewSidebar({
|
|
|
10007
9986
|
type: "button",
|
|
10008
9987
|
role: "tab",
|
|
10009
9988
|
"aria-selected": masterViewTab === tab.key,
|
|
10010
|
-
className:
|
|
9989
|
+
className: chunk6GFSF2ML_js.cn(
|
|
10011
9990
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
10012
9991
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
10013
9992
|
),
|
|
@@ -10109,7 +10088,7 @@ function NotesMasterCanvas({
|
|
|
10109
10088
|
notesText,
|
|
10110
10089
|
slideNumber
|
|
10111
10090
|
}) {
|
|
10112
|
-
const { t } =
|
|
10091
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10113
10092
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10114
10093
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10115
10094
|
const scale = React108.useMemo(() => {
|
|
@@ -10369,7 +10348,7 @@ function HandoutMasterCanvas({
|
|
|
10369
10348
|
slideThumbnails,
|
|
10370
10349
|
pageNumber
|
|
10371
10350
|
}) {
|
|
10372
|
-
const { t } =
|
|
10351
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10373
10352
|
const slideAspect = 4 / 3;
|
|
10374
10353
|
const scale = React108.useMemo(() => {
|
|
10375
10354
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10510,7 +10489,7 @@ function SectionBlock({
|
|
|
10510
10489
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10511
10490
|
lu.LuChevronDown,
|
|
10512
10491
|
{
|
|
10513
|
-
className:
|
|
10492
|
+
className: chunk6GFSF2ML_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10514
10493
|
}
|
|
10515
10494
|
),
|
|
10516
10495
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10554,12 +10533,12 @@ function SlideCardImpl({
|
|
|
10554
10533
|
onDragLeave,
|
|
10555
10534
|
onDrop
|
|
10556
10535
|
}) {
|
|
10557
|
-
const { t } =
|
|
10536
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10558
10537
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10559
10538
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10560
10539
|
"div",
|
|
10561
10540
|
{
|
|
10562
|
-
className:
|
|
10541
|
+
className: chunk6GFSF2ML_js.cn(
|
|
10563
10542
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10564
10543
|
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",
|
|
10565
10544
|
slide.hidden && "opacity-40"
|
|
@@ -10582,7 +10561,7 @@ function SlideCardImpl({
|
|
|
10582
10561
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10583
10562
|
"span",
|
|
10584
10563
|
{
|
|
10585
|
-
className:
|
|
10564
|
+
className: chunk6GFSF2ML_js.cn(
|
|
10586
10565
|
"text-[11px] font-medium px-0.5",
|
|
10587
10566
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10588
10567
|
),
|
|
@@ -10600,17 +10579,8 @@ function SlideCardImpl({
|
|
|
10600
10579
|
}
|
|
10601
10580
|
);
|
|
10602
10581
|
}
|
|
10603
|
-
function
|
|
10604
|
-
if (prev.slide
|
|
10605
|
-
return false;
|
|
10606
|
-
}
|
|
10607
|
-
if (prev.slide.isDirty !== next.slide.isDirty) {
|
|
10608
|
-
return false;
|
|
10609
|
-
}
|
|
10610
|
-
if (prev.slide.hidden !== next.slide.hidden) {
|
|
10611
|
-
return false;
|
|
10612
|
-
}
|
|
10613
|
-
if (prev.slide.elements !== next.slide.elements) {
|
|
10582
|
+
function slideCardPropsEqual(prev, next) {
|
|
10583
|
+
if (prev.slide !== next.slide) {
|
|
10614
10584
|
return false;
|
|
10615
10585
|
}
|
|
10616
10586
|
if (prev.index !== next.index) {
|
|
@@ -10642,7 +10612,7 @@ function arePropsEqual(prev, next) {
|
|
|
10642
10612
|
}
|
|
10643
10613
|
return true;
|
|
10644
10614
|
}
|
|
10645
|
-
var SlideCard = /* @__PURE__ */ React108__default.default.memo(SlideCardImpl,
|
|
10615
|
+
var SlideCard = /* @__PURE__ */ React108__default.default.memo(SlideCardImpl, slideCardPropsEqual);
|
|
10646
10616
|
var ICON_CLASS = "h-3.5 w-3.5 text-muted-foreground";
|
|
10647
10617
|
function SorterContextMenu({
|
|
10648
10618
|
x,
|
|
@@ -10660,7 +10630,7 @@ function SorterContextMenu({
|
|
|
10660
10630
|
onToggleHide,
|
|
10661
10631
|
onClose
|
|
10662
10632
|
}) {
|
|
10663
|
-
const { t } =
|
|
10633
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10664
10634
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10665
10635
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10666
10636
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -11015,7 +10985,7 @@ function SlideSorterOverlay({
|
|
|
11015
10985
|
onToggleHideSlides,
|
|
11016
10986
|
onClose
|
|
11017
10987
|
}) {
|
|
11018
|
-
const { t } =
|
|
10988
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11019
10989
|
const state = useSlideSorterState({
|
|
11020
10990
|
slides,
|
|
11021
10991
|
templateElementsBySlideId,
|
|
@@ -11261,7 +11231,7 @@ function OutlineViewOverlay({
|
|
|
11261
11231
|
bumpHistory,
|
|
11262
11232
|
onClose
|
|
11263
11233
|
}) {
|
|
11264
|
-
const { t } =
|
|
11234
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11265
11235
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11266
11236
|
slides,
|
|
11267
11237
|
canvasSize,
|
|
@@ -11352,7 +11322,7 @@ function ReadingViewStage({
|
|
|
11352
11322
|
"div",
|
|
11353
11323
|
{
|
|
11354
11324
|
className: "absolute inset-0",
|
|
11355
|
-
style: { backgroundColor:
|
|
11325
|
+
style: { backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11356
11326
|
}
|
|
11357
11327
|
),
|
|
11358
11328
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11371,7 +11341,7 @@ function ReadingViewStage({
|
|
|
11371
11341
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11372
11342
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11373
11343
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11374
|
-
|
|
11344
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
11375
11345
|
{
|
|
11376
11346
|
element,
|
|
11377
11347
|
activeSlide: slide,
|
|
@@ -11452,7 +11422,7 @@ function ReadingViewOverlay({
|
|
|
11452
11422
|
activeSlideIndex,
|
|
11453
11423
|
onExit
|
|
11454
11424
|
}) {
|
|
11455
|
-
const { t } =
|
|
11425
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11456
11426
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11457
11427
|
slideCount: slides.length,
|
|
11458
11428
|
canvasSize,
|
|
@@ -11583,7 +11553,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11583
11553
|
if (segment.style.fontFamily) {
|
|
11584
11554
|
style.fontFamily = segment.style.fontFamily;
|
|
11585
11555
|
}
|
|
11586
|
-
if (segment.style.hyperlink &&
|
|
11556
|
+
if (segment.style.hyperlink && chunk6GFSF2ML_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11587
11557
|
const safeHref = segment.style.hyperlink;
|
|
11588
11558
|
style.color = "#4a9eff";
|
|
11589
11559
|
style.textDecoration = "underline";
|
|
@@ -11596,7 +11566,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11596
11566
|
style,
|
|
11597
11567
|
onClick: (e) => {
|
|
11598
11568
|
e.preventDefault();
|
|
11599
|
-
|
|
11569
|
+
chunk6GFSF2ML_js.safeOpenUrl(safeHref);
|
|
11600
11570
|
},
|
|
11601
11571
|
children: segment.text
|
|
11602
11572
|
},
|
|
@@ -11620,7 +11590,7 @@ function NotesPrintDialog({
|
|
|
11620
11590
|
onClose,
|
|
11621
11591
|
notesStyle
|
|
11622
11592
|
}) {
|
|
11623
|
-
const { t } =
|
|
11593
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11624
11594
|
const printFrameRef = React108.useRef(null);
|
|
11625
11595
|
const handlePrint = React108.useCallback(() => {
|
|
11626
11596
|
const iframe = printFrameRef.current;
|
|
@@ -11678,7 +11648,7 @@ function NotesPrintDialog({
|
|
|
11678
11648
|
] }) });
|
|
11679
11649
|
}
|
|
11680
11650
|
function NotesToolbar(p) {
|
|
11681
|
-
const { t } =
|
|
11651
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11682
11652
|
const ref = React108.useRef(null);
|
|
11683
11653
|
React108.useEffect(() => {
|
|
11684
11654
|
const host = ref.current;
|
|
@@ -11945,7 +11915,7 @@ function useSlideNotes({
|
|
|
11945
11915
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11946
11916
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11947
11917
|
e.preventDefault();
|
|
11948
|
-
|
|
11918
|
+
chunk6GFSF2ML_js.safeOpenUrl(href);
|
|
11949
11919
|
}
|
|
11950
11920
|
}, []);
|
|
11951
11921
|
return {
|
|
@@ -11982,7 +11952,7 @@ function SlideNotesPanel({
|
|
|
11982
11952
|
notesStyle,
|
|
11983
11953
|
onHeightChange
|
|
11984
11954
|
}) {
|
|
11985
|
-
const { t } =
|
|
11955
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11986
11956
|
const rootRef = React108__default.default.useRef(null);
|
|
11987
11957
|
React108__default.default.useEffect(() => {
|
|
11988
11958
|
const el = rootRef.current;
|
|
@@ -12026,7 +11996,7 @@ function SlideNotesPanel({
|
|
|
12026
11996
|
});
|
|
12027
11997
|
const hasNotes = draft.trim().length > 0;
|
|
12028
11998
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
12029
|
-
const { dragY, handlers: dragHandlers } =
|
|
11999
|
+
const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onToggle);
|
|
12030
12000
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12031
12001
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12032
12002
|
"button",
|
|
@@ -12042,7 +12012,7 @@ function SlideNotesPanel({
|
|
|
12042
12012
|
{
|
|
12043
12013
|
ref: rootRef,
|
|
12044
12014
|
"data-pptx-chrome": "notes",
|
|
12045
|
-
className:
|
|
12015
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12046
12016
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12047
12017
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12048
12018
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12226,7 +12196,7 @@ function VersionHistoryPanel({
|
|
|
12226
12196
|
onClose,
|
|
12227
12197
|
onRestore
|
|
12228
12198
|
}) {
|
|
12229
|
-
const { t } =
|
|
12199
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12230
12200
|
const [versions, setVersions] = React108.useState([]);
|
|
12231
12201
|
const [loading, setLoading] = React108.useState(false);
|
|
12232
12202
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12372,7 +12342,7 @@ function SlideDiffRow({
|
|
|
12372
12342
|
onAccept,
|
|
12373
12343
|
onReject
|
|
12374
12344
|
}) {
|
|
12375
|
-
const { t } =
|
|
12345
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12376
12346
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12377
12347
|
const statusLabel = (() => {
|
|
12378
12348
|
switch (diff.status) {
|
|
@@ -12406,7 +12376,7 @@ function SlideDiffRow({
|
|
|
12406
12376
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12407
12377
|
"div",
|
|
12408
12378
|
{
|
|
12409
|
-
className:
|
|
12379
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12410
12380
|
"rounded-lg border transition-colors",
|
|
12411
12381
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12412
12382
|
),
|
|
@@ -12420,7 +12390,7 @@ function SlideDiffRow({
|
|
|
12420
12390
|
children: [
|
|
12421
12391
|
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" }),
|
|
12422
12392
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12423
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12393
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk6GFSF2ML_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12424
12394
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12425
12395
|
diff.changes.length,
|
|
12426
12396
|
" ",
|
|
@@ -12430,7 +12400,7 @@ function SlideDiffRow({
|
|
|
12430
12400
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12431
12401
|
"span",
|
|
12432
12402
|
{
|
|
12433
|
-
className:
|
|
12403
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12434
12404
|
"text-[10px] font-medium",
|
|
12435
12405
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12436
12406
|
),
|
|
@@ -12458,7 +12428,7 @@ function SlideDiffRow({
|
|
|
12458
12428
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12459
12429
|
"div",
|
|
12460
12430
|
{
|
|
12461
|
-
className:
|
|
12431
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12462
12432
|
"rounded border overflow-hidden",
|
|
12463
12433
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12464
12434
|
),
|
|
@@ -12525,7 +12495,7 @@ function ComparePanel({
|
|
|
12525
12495
|
onRejectSlide,
|
|
12526
12496
|
onAcceptAll
|
|
12527
12497
|
}) {
|
|
12528
|
-
const { t } =
|
|
12498
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12529
12499
|
const [accepted, setAccepted] = React108.useState({});
|
|
12530
12500
|
const [rejected, setRejected] = React108.useState({});
|
|
12531
12501
|
const handleAccept = React108.useCallback(
|
|
@@ -12654,7 +12624,7 @@ function PasswordProtectionDialog({
|
|
|
12654
12624
|
onSetPassword,
|
|
12655
12625
|
onRemovePassword
|
|
12656
12626
|
}) {
|
|
12657
|
-
const { t } =
|
|
12627
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12658
12628
|
const [password, setPassword] = React108.useState("");
|
|
12659
12629
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12660
12630
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12870,7 +12840,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12870
12840
|
customProperties,
|
|
12871
12841
|
onUpdate
|
|
12872
12842
|
}) {
|
|
12873
|
-
const { t } =
|
|
12843
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12874
12844
|
const handleAdd = React108.useCallback(() => {
|
|
12875
12845
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12876
12846
|
}, [customProperties, onUpdate]);
|
|
@@ -13072,7 +13042,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13072
13042
|
onUpdateAppProperties,
|
|
13073
13043
|
canEdit
|
|
13074
13044
|
}) {
|
|
13075
|
-
const { t } =
|
|
13045
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13076
13046
|
const handleEditableChange = React108.useCallback(
|
|
13077
13047
|
(key, value) => {
|
|
13078
13048
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13112,7 +13082,7 @@ function DocumentPropertiesDialog({
|
|
|
13112
13082
|
onClose,
|
|
13113
13083
|
onSave
|
|
13114
13084
|
}) {
|
|
13115
|
-
const { t } =
|
|
13085
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13116
13086
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13117
13087
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13118
13088
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13163,7 +13133,7 @@ function DocumentPropertiesDialog({
|
|
|
13163
13133
|
const handleClose = React108.useCallback(() => {
|
|
13164
13134
|
onClose();
|
|
13165
13135
|
}, [onClose]);
|
|
13166
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13136
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(handleClose);
|
|
13167
13137
|
if (!isOpen) {
|
|
13168
13138
|
return null;
|
|
13169
13139
|
}
|
|
@@ -13300,7 +13270,7 @@ function FontEmbeddingPanel({
|
|
|
13300
13270
|
onClose,
|
|
13301
13271
|
onToggleEmbedFonts
|
|
13302
13272
|
}) {
|
|
13303
|
-
const { t } =
|
|
13273
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13304
13274
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13305
13275
|
const [scanning, setScanning] = React108.useState(false);
|
|
13306
13276
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13428,7 +13398,7 @@ function DigitalSignaturesDialog({
|
|
|
13428
13398
|
hasSignatures,
|
|
13429
13399
|
signatureCount
|
|
13430
13400
|
}) {
|
|
13431
|
-
const { t } =
|
|
13401
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13432
13402
|
if (!isOpen) {
|
|
13433
13403
|
return null;
|
|
13434
13404
|
}
|
|
@@ -13500,7 +13470,7 @@ function SignatureStatusBadge({
|
|
|
13500
13470
|
signatureCount,
|
|
13501
13471
|
onClick
|
|
13502
13472
|
}) {
|
|
13503
|
-
const { t } =
|
|
13473
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13504
13474
|
if (!hasSignatures || signatureCount === 0) {
|
|
13505
13475
|
return null;
|
|
13506
13476
|
}
|
|
@@ -13526,7 +13496,7 @@ function SignatureStrippedDialog({
|
|
|
13526
13496
|
onConfirm,
|
|
13527
13497
|
onCancel
|
|
13528
13498
|
}) {
|
|
13529
|
-
const { t } =
|
|
13499
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13530
13500
|
if (!isOpen) {
|
|
13531
13501
|
return null;
|
|
13532
13502
|
}
|
|
@@ -13595,7 +13565,7 @@ function EncryptedFileDialog({
|
|
|
13595
13565
|
isOpen,
|
|
13596
13566
|
onClose
|
|
13597
13567
|
}) {
|
|
13598
|
-
const { t } =
|
|
13568
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13599
13569
|
if (!isOpen) {
|
|
13600
13570
|
return null;
|
|
13601
13571
|
}
|
|
@@ -13742,7 +13712,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13742
13712
|
] });
|
|
13743
13713
|
}
|
|
13744
13714
|
function PresentationEndOverlay({ onExit }) {
|
|
13745
|
-
const { t } =
|
|
13715
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13746
13716
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13747
13717
|
"button",
|
|
13748
13718
|
{
|
|
@@ -13758,9 +13728,9 @@ function PresentationSubtitleBar({
|
|
|
13758
13728
|
visible,
|
|
13759
13729
|
onCaptionChange
|
|
13760
13730
|
}) {
|
|
13761
|
-
const { t } =
|
|
13731
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13762
13732
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13763
|
-
pptx.subtitleSettingsFromOptions(
|
|
13733
|
+
pptx.subtitleSettingsFromOptions(chunk3AZ6ESJU_js.useViewerOptionsContext()),
|
|
13764
13734
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13765
13735
|
);
|
|
13766
13736
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13837,7 +13807,7 @@ function renderNotesSegments(segments) {
|
|
|
13837
13807
|
});
|
|
13838
13808
|
}
|
|
13839
13809
|
function PresenterConsoleToolbar(p) {
|
|
13840
|
-
const { t } =
|
|
13810
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13841
13811
|
const ref = useWebControl(
|
|
13842
13812
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13843
13813
|
{
|
|
@@ -13928,7 +13898,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13928
13898
|
{
|
|
13929
13899
|
className: "absolute inset-0",
|
|
13930
13900
|
style: {
|
|
13931
|
-
backgroundColor:
|
|
13901
|
+
backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13932
13902
|
}
|
|
13933
13903
|
}
|
|
13934
13904
|
),
|
|
@@ -13954,7 +13924,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13954
13924
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13955
13925
|
},
|
|
13956
13926
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13957
|
-
|
|
13927
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
13958
13928
|
{
|
|
13959
13929
|
element,
|
|
13960
13930
|
activeSlide: slide,
|
|
@@ -13970,28 +13940,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13970
13940
|
);
|
|
13971
13941
|
}
|
|
13972
13942
|
function scaledSlidePreviewPropsEqual(prev, next) {
|
|
13973
|
-
if (prev.slide
|
|
13974
|
-
return false;
|
|
13975
|
-
}
|
|
13976
|
-
if (prev.slide.isDirty !== next.slide.isDirty) {
|
|
13977
|
-
return false;
|
|
13978
|
-
}
|
|
13979
|
-
if (prev.slide.hidden !== next.slide.hidden) {
|
|
13980
|
-
return false;
|
|
13981
|
-
}
|
|
13982
|
-
if (prev.slide.elements !== next.slide.elements) {
|
|
13983
|
-
return false;
|
|
13984
|
-
}
|
|
13985
|
-
if (prev.slide.showMasterShapes !== next.slide.showMasterShapes) {
|
|
13986
|
-
return false;
|
|
13987
|
-
}
|
|
13988
|
-
if (prev.slide.backgroundColor !== next.slide.backgroundColor) {
|
|
13989
|
-
return false;
|
|
13990
|
-
}
|
|
13991
|
-
if (prev.slide.backgroundImage !== next.slide.backgroundImage) {
|
|
13992
|
-
return false;
|
|
13993
|
-
}
|
|
13994
|
-
if (prev.slide.backgroundGradient !== next.slide.backgroundGradient) {
|
|
13943
|
+
if (prev.slide !== next.slide) {
|
|
13995
13944
|
return false;
|
|
13996
13945
|
}
|
|
13997
13946
|
if (prev.templateElements !== next.templateElements) {
|
|
@@ -14021,7 +13970,7 @@ function PresenterNotesRail({
|
|
|
14021
13970
|
onMove,
|
|
14022
13971
|
onUpdateNotes
|
|
14023
13972
|
}) {
|
|
14024
|
-
const { t } =
|
|
13973
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14025
13974
|
const slide = slides[current];
|
|
14026
13975
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
14027
13976
|
const notesText = slide?.notes ?? "";
|
|
@@ -14146,7 +14095,7 @@ function PresenterNotesRail({
|
|
|
14146
14095
|
] });
|
|
14147
14096
|
}
|
|
14148
14097
|
function PresenterSlideNavigator(props) {
|
|
14149
|
-
const { t } =
|
|
14098
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14150
14099
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14151
14100
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14152
14101
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14288,7 +14237,7 @@ function PresenterView({
|
|
|
14288
14237
|
onSwapDisplays,
|
|
14289
14238
|
onUpdateNotes
|
|
14290
14239
|
}) {
|
|
14291
|
-
const { t } =
|
|
14240
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14292
14241
|
const [now, setNow] = React108.useState(Date.now());
|
|
14293
14242
|
React108.useEffect(() => {
|
|
14294
14243
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14445,7 +14394,7 @@ function MobilePresenterView({
|
|
|
14445
14394
|
onMovePresentationSlide,
|
|
14446
14395
|
onExit
|
|
14447
14396
|
}) {
|
|
14448
|
-
const { t } =
|
|
14397
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14449
14398
|
const [now, setNow] = React108.useState(Date.now());
|
|
14450
14399
|
React108.useEffect(() => {
|
|
14451
14400
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14558,7 +14507,7 @@ function RehearseTimingsHud({
|
|
|
14558
14507
|
paused,
|
|
14559
14508
|
onTogglePause
|
|
14560
14509
|
}) {
|
|
14561
|
-
const { t } =
|
|
14510
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14562
14511
|
const [tick, setTick] = React108.useState(0);
|
|
14563
14512
|
React108.useEffect(() => {
|
|
14564
14513
|
if (paused) {
|
|
@@ -14606,7 +14555,7 @@ function RehearseTimingsSummary({
|
|
|
14606
14555
|
onSave,
|
|
14607
14556
|
onDiscard
|
|
14608
14557
|
}) {
|
|
14609
|
-
const { t } =
|
|
14558
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14610
14559
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14611
14560
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14612
14561
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-lg rounded-xl border border-border bg-background shadow-2xl", children: [
|
|
@@ -14690,7 +14639,7 @@ function SelectionPane({
|
|
|
14690
14639
|
markDirty,
|
|
14691
14640
|
onClose
|
|
14692
14641
|
}) {
|
|
14693
|
-
const { t } =
|
|
14642
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14694
14643
|
const activeSlide = slides[activeSlideIndex];
|
|
14695
14644
|
const elements = activeSlide?.elements ?? [];
|
|
14696
14645
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14845,7 +14794,7 @@ function SelectionPane({
|
|
|
14845
14794
|
setDragIndex(null);
|
|
14846
14795
|
setDragOverIndex(null);
|
|
14847
14796
|
},
|
|
14848
|
-
className:
|
|
14797
|
+
className: chunk6GFSF2ML_js.cn(
|
|
14849
14798
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14850
14799
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14851
14800
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14899,13 +14848,13 @@ function SelectionPane({
|
|
|
14899
14848
|
}
|
|
14900
14849
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14901
14850
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14902
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14851
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14903
14852
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14904
14853
|
);
|
|
14905
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14854
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14906
14855
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14907
14856
|
);
|
|
14908
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14857
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14909
14858
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14910
14859
|
);
|
|
14911
14860
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15006,7 +14955,7 @@ function AfterAnimationRow({
|
|
|
15006
14955
|
onActionChange,
|
|
15007
14956
|
onColorChange
|
|
15008
14957
|
}) {
|
|
15009
|
-
const { t } =
|
|
14958
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15010
14959
|
const commitRecentColor = useRecentColorCommit();
|
|
15011
14960
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
15012
14961
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15057,7 +15006,7 @@ function AnimationTimelineSection({
|
|
|
15057
15006
|
canEdit,
|
|
15058
15007
|
handlers
|
|
15059
15008
|
}) {
|
|
15060
|
-
const { t } =
|
|
15009
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15061
15010
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15062
15011
|
const {
|
|
15063
15012
|
sortedAnimations,
|
|
@@ -15088,7 +15037,7 @@ function AnimationTimelineSection({
|
|
|
15088
15037
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15089
15038
|
"div",
|
|
15090
15039
|
{
|
|
15091
|
-
className:
|
|
15040
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15092
15041
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15093
15042
|
animationTypeColor(bar.anim),
|
|
15094
15043
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15117,7 +15066,7 @@ function AnimationTimelineSection({
|
|
|
15117
15066
|
onDragLeave: handleDragLeave,
|
|
15118
15067
|
onDrop: (e) => handleDrop(index, e),
|
|
15119
15068
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15120
|
-
className:
|
|
15069
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15121
15070
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15122
15071
|
"bg-muted/20 text-muted-foreground/70",
|
|
15123
15072
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15156,7 +15105,7 @@ function AnimationTimelineSection({
|
|
|
15156
15105
|
onDragEnd: handleDragEnd,
|
|
15157
15106
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15158
15107
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15159
|
-
className:
|
|
15108
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15160
15109
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15161
15110
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15162
15111
|
isDragging && "opacity-40",
|
|
@@ -15217,7 +15166,7 @@ function BookmarkTriggerRow({
|
|
|
15217
15166
|
style,
|
|
15218
15167
|
onChange
|
|
15219
15168
|
}) {
|
|
15220
|
-
const { t } =
|
|
15169
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15221
15170
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15222
15171
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15223
15172
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15250,7 +15199,7 @@ function EffectSoundRow({
|
|
|
15250
15199
|
onPick,
|
|
15251
15200
|
onPickStock
|
|
15252
15201
|
}) {
|
|
15253
|
-
const { t } =
|
|
15202
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15254
15203
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15255
15204
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15256
15205
|
const handleSelectChange = (event) => {
|
|
@@ -15288,7 +15237,7 @@ function EffectSoundRow({
|
|
|
15288
15237
|
}
|
|
15289
15238
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15290
15239
|
if (asset) {
|
|
15291
|
-
|
|
15240
|
+
chunk3AZ6ESJU_js.playAnimationSound(asset.dataUrl);
|
|
15292
15241
|
}
|
|
15293
15242
|
};
|
|
15294
15243
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15341,7 +15290,7 @@ function MotionPathRow({
|
|
|
15341
15290
|
canEdit,
|
|
15342
15291
|
onChange
|
|
15343
15292
|
}) {
|
|
15344
|
-
const { t } =
|
|
15293
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15345
15294
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15346
15295
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15347
15296
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15463,7 +15412,7 @@ function useAnimationPreview({
|
|
|
15463
15412
|
}) {
|
|
15464
15413
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15465
15414
|
if (anim.motionPath) {
|
|
15466
|
-
|
|
15415
|
+
chunk6GFSF2ML_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15467
15416
|
durationMs: anim.durationMs,
|
|
15468
15417
|
delayMs: anim.delayMs,
|
|
15469
15418
|
timingCurve: anim.timingCurve
|
|
@@ -15474,19 +15423,19 @@ function useAnimationPreview({
|
|
|
15474
15423
|
if (!preset || preset === "none") {
|
|
15475
15424
|
return;
|
|
15476
15425
|
}
|
|
15477
|
-
|
|
15426
|
+
chunk6GFSF2ML_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15478
15427
|
direction: anim.direction,
|
|
15479
15428
|
durationMs: anim.durationMs ?? 500,
|
|
15480
15429
|
timingCurve: anim.timingCurve
|
|
15481
15430
|
});
|
|
15482
15431
|
}, []);
|
|
15483
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15432
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunk6GFSF2ML_js.stopPreviewAnimation(), []);
|
|
15484
15433
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15485
15434
|
if (!selectedElementAnimation) {
|
|
15486
15435
|
return;
|
|
15487
15436
|
}
|
|
15488
15437
|
if (selectedElementAnimation.motionPath) {
|
|
15489
|
-
|
|
15438
|
+
chunk6GFSF2ML_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15490
15439
|
durationMs: selectedElementAnimation.durationMs,
|
|
15491
15440
|
delayMs: selectedElementAnimation.delayMs,
|
|
15492
15441
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15497,7 +15446,7 @@ function useAnimationPreview({
|
|
|
15497
15446
|
if (!preset || preset === "none") {
|
|
15498
15447
|
return;
|
|
15499
15448
|
}
|
|
15500
|
-
|
|
15449
|
+
chunk6GFSF2ML_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15501
15450
|
direction: selectedElementAnimation.direction,
|
|
15502
15451
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15503
15452
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15732,7 +15681,7 @@ function useAnimationHandlers({
|
|
|
15732
15681
|
return anim.elementId.slice(0, 8);
|
|
15733
15682
|
}
|
|
15734
15683
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15735
|
-
return text ||
|
|
15684
|
+
return text || chunk6GFSF2ML_js.getElementLabel(el);
|
|
15736
15685
|
},
|
|
15737
15686
|
[activeSlide.elements]
|
|
15738
15687
|
);
|
|
@@ -15743,7 +15692,7 @@ function useAnimationHandlers({
|
|
|
15743
15692
|
return id.slice(0, 8);
|
|
15744
15693
|
}
|
|
15745
15694
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15746
|
-
return text ||
|
|
15695
|
+
return text || chunk6GFSF2ML_js.getElementLabel(el);
|
|
15747
15696
|
}).join(", "),
|
|
15748
15697
|
[activeSlide.elements]
|
|
15749
15698
|
);
|
|
@@ -15799,8 +15748,8 @@ function AnimationPanel({
|
|
|
15799
15748
|
canEdit,
|
|
15800
15749
|
onUpdateSlide
|
|
15801
15750
|
}) {
|
|
15802
|
-
const { t } =
|
|
15803
|
-
const { viewportWidth } =
|
|
15751
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15752
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
15804
15753
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15805
15754
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15806
15755
|
const handlers = useAnimationHandlers({
|
|
@@ -15928,7 +15877,7 @@ function AnimationPanel({
|
|
|
15928
15877
|
type: "button",
|
|
15929
15878
|
disabled: !canEdit,
|
|
15930
15879
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15931
|
-
className:
|
|
15880
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15932
15881
|
"flex items-center justify-center rounded border transition-colors",
|
|
15933
15882
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15934
15883
|
),
|
|
@@ -15994,7 +15943,7 @@ function AnimationPanel({
|
|
|
15994
15943
|
style: fieldStyle,
|
|
15995
15944
|
children: [
|
|
15996
15945
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15997
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15946
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk6GFSF2ML_js.getElementLabel(el) }, el.id))
|
|
15998
15947
|
]
|
|
15999
15948
|
}
|
|
16000
15949
|
)
|
|
@@ -16138,7 +16087,7 @@ function ActionTargetFields({
|
|
|
16138
16087
|
returnAfter,
|
|
16139
16088
|
onChange
|
|
16140
16089
|
}) {
|
|
16141
|
-
const { t } =
|
|
16090
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16142
16091
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16143
16092
|
if (urlLabelKey) {
|
|
16144
16093
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16147,7 +16096,7 @@ function ActionTargetFields({
|
|
|
16147
16096
|
type: "text",
|
|
16148
16097
|
disabled: !canEdit,
|
|
16149
16098
|
"aria-label": t(urlLabelKey),
|
|
16150
|
-
className:
|
|
16099
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16151
16100
|
placeholder: "https://...",
|
|
16152
16101
|
value: url ?? "",
|
|
16153
16102
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16161,7 +16110,7 @@ function ActionTargetFields({
|
|
|
16161
16110
|
type: "number",
|
|
16162
16111
|
disabled: !canEdit,
|
|
16163
16112
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16164
|
-
className:
|
|
16113
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16165
16114
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16166
16115
|
min: 1,
|
|
16167
16116
|
max: slideCount,
|
|
@@ -16183,7 +16132,7 @@ function ActionTargetFields({
|
|
|
16183
16132
|
"data-testid": "pptx-action-custom-show",
|
|
16184
16133
|
disabled: !canEdit,
|
|
16185
16134
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16186
|
-
className:
|
|
16135
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16187
16136
|
value: customShowId ?? "",
|
|
16188
16137
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16189
16138
|
children: [
|
|
@@ -16215,7 +16164,7 @@ function ActionSettingsPanel({
|
|
|
16215
16164
|
customShows,
|
|
16216
16165
|
onUpdateElement
|
|
16217
16166
|
}) {
|
|
16218
|
-
const { t } =
|
|
16167
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16219
16168
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16220
16169
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16221
16170
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16291,7 +16240,7 @@ function ActionTriggerSection({
|
|
|
16291
16240
|
onChangeType,
|
|
16292
16241
|
onChangeTarget
|
|
16293
16242
|
}) {
|
|
16294
|
-
const { t } =
|
|
16243
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16295
16244
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16296
16245
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16297
16246
|
const changeType = (type) => {
|
|
@@ -16305,7 +16254,7 @@ function ActionTriggerSection({
|
|
|
16305
16254
|
{
|
|
16306
16255
|
disabled: !canEdit,
|
|
16307
16256
|
"aria-label": label,
|
|
16308
|
-
className:
|
|
16257
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16309
16258
|
value: effectiveType,
|
|
16310
16259
|
onChange: (e) => changeType(e.target.value),
|
|
16311
16260
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16333,7 +16282,7 @@ var AXIS_ROWS = [
|
|
|
16333
16282
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16334
16283
|
];
|
|
16335
16284
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16336
|
-
const { t } =
|
|
16285
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16337
16286
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16338
16287
|
...row,
|
|
16339
16288
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16478,7 +16427,7 @@ function ChartAxisStyleOptions({
|
|
|
16478
16427
|
onSetTitleStyle,
|
|
16479
16428
|
onSetGridlineStyle
|
|
16480
16429
|
}) {
|
|
16481
|
-
const { t } =
|
|
16430
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16482
16431
|
const commitRecentColor = useRecentColorCommit();
|
|
16483
16432
|
const rows = SCALE_AXES.map((row) => ({
|
|
16484
16433
|
...row,
|
|
@@ -16650,7 +16599,7 @@ function ChartComboTypeOptions({
|
|
|
16650
16599
|
canEdit,
|
|
16651
16600
|
onSetSeriesType
|
|
16652
16601
|
}) {
|
|
16653
|
-
const { t } =
|
|
16602
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16654
16603
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16655
16604
|
return null;
|
|
16656
16605
|
}
|
|
@@ -16679,7 +16628,7 @@ function ChartDataLabelOptions({
|
|
|
16679
16628
|
canEdit,
|
|
16680
16629
|
onUpdateStyle
|
|
16681
16630
|
}) {
|
|
16682
|
-
const { t } =
|
|
16631
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16683
16632
|
if (!style?.hasDataLabels) {
|
|
16684
16633
|
return null;
|
|
16685
16634
|
}
|
|
@@ -16727,7 +16676,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16727
16676
|
canEdit,
|
|
16728
16677
|
onSetPointMarker
|
|
16729
16678
|
}) {
|
|
16730
|
-
const { t } =
|
|
16679
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16731
16680
|
const commitRecentColor = useRecentColorCommit();
|
|
16732
16681
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16733
16682
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16833,7 +16782,7 @@ function ChartDataPointOptions({
|
|
|
16833
16782
|
onSetPointExplosion,
|
|
16834
16783
|
onSetPointLabel
|
|
16835
16784
|
}) {
|
|
16836
|
-
const { t } =
|
|
16785
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16837
16786
|
const commitRecentColor = useRecentColorCommit();
|
|
16838
16787
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16839
16788
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16935,7 +16884,7 @@ function ChartDataSheet({
|
|
|
16935
16884
|
highlightCell,
|
|
16936
16885
|
onChange
|
|
16937
16886
|
}) {
|
|
16938
|
-
const { t } =
|
|
16887
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16939
16888
|
const ref = React108.useRef(null);
|
|
16940
16889
|
React108.useLayoutEffect(() => {
|
|
16941
16890
|
if (ref.current) {
|
|
@@ -16966,7 +16915,7 @@ function ChartDisplayOptions({
|
|
|
16966
16915
|
hasGridlines,
|
|
16967
16916
|
onToggleGridlines
|
|
16968
16917
|
}) {
|
|
16969
|
-
const { t } =
|
|
16918
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16970
16919
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16971
16920
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16972
16921
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -17043,7 +16992,7 @@ function ChartErrorBarOptions({
|
|
|
17043
16992
|
canEdit,
|
|
17044
16993
|
onSetErrorBars
|
|
17045
16994
|
}) {
|
|
17046
|
-
const { t } =
|
|
16995
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17047
16996
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17048
16997
|
return null;
|
|
17049
16998
|
}
|
|
@@ -17123,7 +17072,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17123
17072
|
onRestoreSeries,
|
|
17124
17073
|
onSetDataLabelsRangeCache
|
|
17125
17074
|
}) {
|
|
17126
|
-
const { t } =
|
|
17075
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17127
17076
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17128
17077
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17129
17078
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17203,7 +17152,7 @@ function ChartMarkerOptions({
|
|
|
17203
17152
|
canEdit,
|
|
17204
17153
|
onSetMarker
|
|
17205
17154
|
}) {
|
|
17206
|
-
const { t } =
|
|
17155
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17207
17156
|
const commitRecentColor = useRecentColorCommit();
|
|
17208
17157
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17209
17158
|
return null;
|
|
@@ -17312,7 +17261,7 @@ function ChartSeriesColorOptions({
|
|
|
17312
17261
|
onSetColor,
|
|
17313
17262
|
onToggleSecondaryAxis
|
|
17314
17263
|
}) {
|
|
17315
|
-
const { t } =
|
|
17264
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17316
17265
|
const series = chartData.series;
|
|
17317
17266
|
if (series.length === 0) {
|
|
17318
17267
|
return null;
|
|
@@ -17362,7 +17311,7 @@ function ChartSubtypeOptions({
|
|
|
17362
17311
|
canEdit,
|
|
17363
17312
|
onUpdateChartData
|
|
17364
17313
|
}) {
|
|
17365
|
-
const { t } =
|
|
17314
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17366
17315
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17367
17316
|
return null;
|
|
17368
17317
|
}
|
|
@@ -17428,7 +17377,7 @@ function ChartTrendlineOptions({
|
|
|
17428
17377
|
canEdit,
|
|
17429
17378
|
onSetTrendline
|
|
17430
17379
|
}) {
|
|
17431
|
-
const { t } =
|
|
17380
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17432
17381
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17433
17382
|
return null;
|
|
17434
17383
|
}
|
|
@@ -17501,7 +17450,7 @@ function ChartTypeSelector({
|
|
|
17501
17450
|
onUpdateChartData,
|
|
17502
17451
|
onTitleChange
|
|
17503
17452
|
}) {
|
|
17504
|
-
const { t } =
|
|
17453
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17505
17454
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17506
17455
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17507
17456
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17582,7 +17531,7 @@ function RotationField({
|
|
|
17582
17531
|
canEdit,
|
|
17583
17532
|
onRotationPatch
|
|
17584
17533
|
}) {
|
|
17585
|
-
const { t } =
|
|
17534
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17586
17535
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17587
17536
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17588
17537
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17604,7 +17553,7 @@ function FlipFields({
|
|
|
17604
17553
|
canEdit,
|
|
17605
17554
|
onFlipPatch
|
|
17606
17555
|
}) {
|
|
17607
|
-
const { t } =
|
|
17556
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17608
17557
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17609
17558
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17610
17559
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17643,7 +17592,7 @@ function ChartUserShapePositionFields({
|
|
|
17643
17592
|
onRotationPatch,
|
|
17644
17593
|
onFlipPatch
|
|
17645
17594
|
}) {
|
|
17646
|
-
const { t } =
|
|
17595
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17647
17596
|
const update = (patch) => onPatch(row.path, patch);
|
|
17648
17597
|
if (row.depth === 0) {
|
|
17649
17598
|
const from = row.from;
|
|
@@ -17767,7 +17716,7 @@ function ChartUserShapeOptions({
|
|
|
17767
17716
|
canEdit,
|
|
17768
17717
|
onUpdateChartData
|
|
17769
17718
|
}) {
|
|
17770
|
-
const { t } =
|
|
17719
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17771
17720
|
const shapes = chartData.userShapes;
|
|
17772
17721
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17773
17722
|
const kindLabel = (kind) => {
|
|
@@ -17925,8 +17874,8 @@ function ChartUserShapeOptions({
|
|
|
17925
17874
|
}
|
|
17926
17875
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17927
17876
|
const chartData = selectedElement.chartData;
|
|
17928
|
-
const followDataPoint =
|
|
17929
|
-
const { selection: partSelection } =
|
|
17877
|
+
const followDataPoint = chunk3AZ6ESJU_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17878
|
+
const { selection: partSelection } = chunk3AZ6ESJU_js.useChartPartSelection();
|
|
17930
17879
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17931
17880
|
const title = chartData?.title;
|
|
17932
17881
|
const chartType = chartData?.chartType;
|
|
@@ -18364,7 +18313,7 @@ function OleEditorDialog({
|
|
|
18364
18313
|
element,
|
|
18365
18314
|
onUpdateElement
|
|
18366
18315
|
}) {
|
|
18367
|
-
const { t } =
|
|
18316
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18368
18317
|
const dialogRef = React108.useRef(null);
|
|
18369
18318
|
const fileInputRef = React108.useRef(null);
|
|
18370
18319
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18612,7 +18561,7 @@ function ConnectorArrowsSection({
|
|
|
18612
18561
|
onUpdateShapeStyle,
|
|
18613
18562
|
markDirty
|
|
18614
18563
|
}) {
|
|
18615
|
-
const { t } =
|
|
18564
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18616
18565
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18617
18566
|
["Start", "End"].map((end) => {
|
|
18618
18567
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18631,7 +18580,7 @@ function ConnectorArrowsSection({
|
|
|
18631
18580
|
},
|
|
18632
18581
|
disabled: !canEdit,
|
|
18633
18582
|
className: SELECT_CLS2,
|
|
18634
|
-
children:
|
|
18583
|
+
children: chunk6GFSF2ML_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18635
18584
|
}
|
|
18636
18585
|
)
|
|
18637
18586
|
] }, end);
|
|
@@ -18655,7 +18604,7 @@ function ConnectorArrowsSection({
|
|
|
18655
18604
|
},
|
|
18656
18605
|
disabled: !canEdit,
|
|
18657
18606
|
className: SELECT_CLS2,
|
|
18658
|
-
children:
|
|
18607
|
+
children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18659
18608
|
}
|
|
18660
18609
|
)
|
|
18661
18610
|
] }),
|
|
@@ -18674,7 +18623,7 @@ function ConnectorArrowsSection({
|
|
|
18674
18623
|
},
|
|
18675
18624
|
disabled: !canEdit,
|
|
18676
18625
|
className: SELECT_CLS2,
|
|
18677
|
-
children:
|
|
18626
|
+
children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18678
18627
|
}
|
|
18679
18628
|
)
|
|
18680
18629
|
] })
|
|
@@ -18705,7 +18654,7 @@ function ConnectorPanel({
|
|
|
18705
18654
|
function GroupInfoPanel({
|
|
18706
18655
|
selectedElement
|
|
18707
18656
|
}) {
|
|
18708
|
-
const { t } =
|
|
18657
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18709
18658
|
if (selectedElement.type !== "group") {
|
|
18710
18659
|
return null;
|
|
18711
18660
|
}
|
|
@@ -18720,7 +18669,7 @@ function OlePropertiesPanel({
|
|
|
18720
18669
|
canEdit,
|
|
18721
18670
|
onUpdateElement
|
|
18722
18671
|
}) {
|
|
18723
|
-
const { t } =
|
|
18672
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18724
18673
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18725
18674
|
if (selectedElement.type !== "ole") {
|
|
18726
18675
|
return null;
|
|
@@ -18765,7 +18714,7 @@ function OlePropertiesPanel({
|
|
|
18765
18714
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18766
18715
|
"span",
|
|
18767
18716
|
{
|
|
18768
|
-
className:
|
|
18717
|
+
className: chunk6GFSF2ML_js.cn(
|
|
18769
18718
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18770
18719
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18771
18720
|
),
|
|
@@ -18818,7 +18767,7 @@ function LayerOrderButtons({
|
|
|
18818
18767
|
"button",
|
|
18819
18768
|
{
|
|
18820
18769
|
type: "button",
|
|
18821
|
-
className:
|
|
18770
|
+
className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
|
|
18822
18771
|
disabled: !canEdit,
|
|
18823
18772
|
onClick: () => onMoveLayer("forward"),
|
|
18824
18773
|
children: "\u2191 Forward"
|
|
@@ -18828,7 +18777,7 @@ function LayerOrderButtons({
|
|
|
18828
18777
|
"button",
|
|
18829
18778
|
{
|
|
18830
18779
|
type: "button",
|
|
18831
|
-
className:
|
|
18780
|
+
className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
|
|
18832
18781
|
disabled: !canEdit,
|
|
18833
18782
|
onClick: () => onMoveLayer("backward"),
|
|
18834
18783
|
children: "\u2193 Backward"
|
|
@@ -18842,7 +18791,7 @@ function ArtisticEffectsGallery({
|
|
|
18842
18791
|
canEdit,
|
|
18843
18792
|
updateEffects
|
|
18844
18793
|
}) {
|
|
18845
|
-
const { t } =
|
|
18794
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18846
18795
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18847
18796
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18848
18797
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18852,7 +18801,7 @@ function ArtisticEffectsGallery({
|
|
|
18852
18801
|
{
|
|
18853
18802
|
type: "button",
|
|
18854
18803
|
disabled: !canEdit,
|
|
18855
|
-
className:
|
|
18804
|
+
className: chunk6GFSF2ML_js.cn(
|
|
18856
18805
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18857
18806
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18858
18807
|
),
|
|
@@ -18887,7 +18836,7 @@ function ColorChangeSection({
|
|
|
18887
18836
|
canEdit,
|
|
18888
18837
|
updateEffects
|
|
18889
18838
|
}) {
|
|
18890
|
-
const { t } =
|
|
18839
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18891
18840
|
const cc = fx?.clrChange;
|
|
18892
18841
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18893
18842
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18914,7 +18863,7 @@ function ColorChangeSection({
|
|
|
18914
18863
|
DebouncedColorInput,
|
|
18915
18864
|
{
|
|
18916
18865
|
disabled: !canEdit,
|
|
18917
|
-
value:
|
|
18866
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18918
18867
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18919
18868
|
onCommit: (hex) => updateEffects({
|
|
18920
18869
|
clrChange: {
|
|
@@ -18932,7 +18881,7 @@ function ColorChangeSection({
|
|
|
18932
18881
|
DebouncedColorInput,
|
|
18933
18882
|
{
|
|
18934
18883
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18935
|
-
value:
|
|
18884
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18936
18885
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18937
18886
|
onCommit: (hex) => updateEffects({
|
|
18938
18887
|
clrChange: {
|
|
@@ -18969,7 +18918,7 @@ function ColorWashSection({
|
|
|
18969
18918
|
canEdit,
|
|
18970
18919
|
updateEffects
|
|
18971
18920
|
}) {
|
|
18972
|
-
const { t } =
|
|
18921
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18973
18922
|
const wash = fx?.colorWash;
|
|
18974
18923
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18975
18924
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18992,7 +18941,7 @@ function ColorWashSection({
|
|
|
18992
18941
|
DebouncedColorInput,
|
|
18993
18942
|
{
|
|
18994
18943
|
disabled: !canEdit,
|
|
18995
|
-
value:
|
|
18944
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18996
18945
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18997
18946
|
onCommit: (hex) => updateEffects({
|
|
18998
18947
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19069,7 +19018,7 @@ function DuotonePanel({
|
|
|
19069
19018
|
canEdit,
|
|
19070
19019
|
onUpdateElement
|
|
19071
19020
|
}) {
|
|
19072
|
-
const { t } =
|
|
19021
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19073
19022
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19074
19023
|
const commitDuotone = React108.useCallback(
|
|
19075
19024
|
(color1, color2) => {
|
|
@@ -19090,8 +19039,8 @@ function DuotonePanel({
|
|
|
19090
19039
|
}
|
|
19091
19040
|
});
|
|
19092
19041
|
}, [effects, onUpdateElement]);
|
|
19093
|
-
const shadowColor =
|
|
19094
|
-
const highlightColor =
|
|
19042
|
+
const shadowColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19043
|
+
const highlightColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19095
19044
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19096
19045
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19097
19046
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19122,7 +19071,7 @@ function DuotonePanel({
|
|
|
19122
19071
|
] }),
|
|
19123
19072
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19124
19073
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19125
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19074
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk3AZ6ESJU_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19126
19075
|
"button",
|
|
19127
19076
|
{
|
|
19128
19077
|
type: "button",
|
|
@@ -19158,7 +19107,7 @@ function ImageAdjustmentsPanel({
|
|
|
19158
19107
|
canEdit,
|
|
19159
19108
|
onUpdateElement
|
|
19160
19109
|
}) {
|
|
19161
|
-
const { t } =
|
|
19110
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19162
19111
|
const effects = React108.useMemo(
|
|
19163
19112
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19164
19113
|
[selectedElement]
|
|
@@ -19259,7 +19208,7 @@ function ImageCropSection({
|
|
|
19259
19208
|
canEdit,
|
|
19260
19209
|
onUpdateElement
|
|
19261
19210
|
}) {
|
|
19262
|
-
const { t } =
|
|
19211
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19263
19212
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19264
19213
|
return null;
|
|
19265
19214
|
}
|
|
@@ -19277,7 +19226,7 @@ function ImageCropSection({
|
|
|
19277
19226
|
max: MAX_CROP_PERCENT,
|
|
19278
19227
|
disabled: !croppable,
|
|
19279
19228
|
className: "accent-primary",
|
|
19280
|
-
value: Math.round(
|
|
19229
|
+
value: Math.round(chunk6GFSF2ML_js.clampCropValue(selectedElement[key]) * 100),
|
|
19281
19230
|
onChange: (e) => onUpdateElement({
|
|
19282
19231
|
[key]: Number(e.target.value) / 100
|
|
19283
19232
|
})
|
|
@@ -19324,7 +19273,7 @@ function ImagePropertiesPanel({
|
|
|
19324
19273
|
canEdit,
|
|
19325
19274
|
onUpdateElement
|
|
19326
19275
|
}) {
|
|
19327
|
-
const { t } =
|
|
19276
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19328
19277
|
const fx = selectedElement.imageEffects;
|
|
19329
19278
|
const updateEffects = (patch) => {
|
|
19330
19279
|
onUpdateElement({
|
|
@@ -19341,7 +19290,7 @@ function ImagePropertiesPanel({
|
|
|
19341
19290
|
{
|
|
19342
19291
|
rows: 2,
|
|
19343
19292
|
disabled: !canEdit,
|
|
19344
|
-
className:
|
|
19293
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19345
19294
|
value: selectedElement.altText ?? "",
|
|
19346
19295
|
onChange: (e) => onUpdateElement({
|
|
19347
19296
|
altText: e.target.value
|
|
@@ -19529,7 +19478,7 @@ function InspectorFields({
|
|
|
19529
19478
|
liveTarget,
|
|
19530
19479
|
livePatch
|
|
19531
19480
|
}) {
|
|
19532
|
-
const { t } =
|
|
19481
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19533
19482
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19534
19483
|
const change = (sectionId, fieldId, raw) => {
|
|
19535
19484
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19757,7 +19706,7 @@ function MediaInspector({
|
|
|
19757
19706
|
durationSeconds,
|
|
19758
19707
|
onUpdateElement
|
|
19759
19708
|
}) {
|
|
19760
|
-
const { t } =
|
|
19709
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19761
19710
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19762
19711
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19763
19712
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19987,7 +19936,7 @@ function MediaPlaybackBookmarks({
|
|
|
19987
19936
|
onUpdateElement,
|
|
19988
19937
|
onSeekTo
|
|
19989
19938
|
}) {
|
|
19990
|
-
const { t } =
|
|
19939
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19991
19940
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19992
19941
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19993
19942
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20237,7 +20186,7 @@ function MediaPropertiesPanel({
|
|
|
20237
20186
|
canEdit,
|
|
20238
20187
|
onUpdateElement
|
|
20239
20188
|
}) {
|
|
20240
|
-
const { t } =
|
|
20189
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20241
20190
|
const mediaRef = React108.useRef(null);
|
|
20242
20191
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20243
20192
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20471,7 +20420,7 @@ function AccessibilityTextSection({
|
|
|
20471
20420
|
canEdit,
|
|
20472
20421
|
onUpdateElement
|
|
20473
20422
|
}) {
|
|
20474
|
-
const { t } =
|
|
20423
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20475
20424
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20476
20425
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20477
20426
|
return null;
|
|
@@ -20486,7 +20435,7 @@ function AccessibilityTextSection({
|
|
|
20486
20435
|
rows: 2,
|
|
20487
20436
|
disabled: !canEdit,
|
|
20488
20437
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20489
|
-
className:
|
|
20438
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20490
20439
|
value: fields.altText,
|
|
20491
20440
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20492
20441
|
}
|
|
@@ -20500,7 +20449,7 @@ function AccessibilityTextSection({
|
|
|
20500
20449
|
type: "text",
|
|
20501
20450
|
disabled: !canEdit,
|
|
20502
20451
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20503
|
-
className:
|
|
20452
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "text-[11px]"),
|
|
20504
20453
|
value: fields.title,
|
|
20505
20454
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20506
20455
|
}
|
|
@@ -20528,7 +20477,7 @@ function RecentColorsRow({
|
|
|
20528
20477
|
disabled,
|
|
20529
20478
|
onCommit
|
|
20530
20479
|
}) {
|
|
20531
|
-
const { t } =
|
|
20480
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20532
20481
|
const { recentColors, pushColor } = useRecentColors();
|
|
20533
20482
|
const shown = recentColors.length > 0;
|
|
20534
20483
|
const ref = React108.useRef(null);
|
|
@@ -20570,7 +20519,7 @@ function ThemeColorSwatchGrid({
|
|
|
20570
20519
|
selectedHex,
|
|
20571
20520
|
onPick
|
|
20572
20521
|
}) {
|
|
20573
|
-
const { t } =
|
|
20522
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20574
20523
|
const themeColorMap = useThemeColorMap();
|
|
20575
20524
|
const columns = React108.useMemo(
|
|
20576
20525
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20617,7 +20566,7 @@ function SelectRow({
|
|
|
20617
20566
|
options,
|
|
20618
20567
|
onChange
|
|
20619
20568
|
}) {
|
|
20620
|
-
const { t } =
|
|
20569
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20621
20570
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20622
20571
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20623
20572
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20641,14 +20590,14 @@ function ColorPickerRow({
|
|
|
20641
20590
|
onChange,
|
|
20642
20591
|
styleChange
|
|
20643
20592
|
}) {
|
|
20644
|
-
const { t } =
|
|
20593
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20645
20594
|
const { pushColor } = useRecentColors();
|
|
20646
20595
|
const commit = (color, ref) => {
|
|
20647
20596
|
onChange(color, ref);
|
|
20648
20597
|
pushColor(color);
|
|
20649
20598
|
};
|
|
20650
20599
|
const handleEyedropper = async () => {
|
|
20651
|
-
const color = await
|
|
20600
|
+
const color = await chunk6GFSF2ML_js.openNativeEyeDropper();
|
|
20652
20601
|
if (color) {
|
|
20653
20602
|
commit(color);
|
|
20654
20603
|
}
|
|
@@ -20721,7 +20670,7 @@ function GradientStopRow({
|
|
|
20721
20670
|
onUpdate,
|
|
20722
20671
|
allStops
|
|
20723
20672
|
}) {
|
|
20724
|
-
const { t } =
|
|
20673
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20725
20674
|
const { pushColor } = useRecentColors();
|
|
20726
20675
|
const commitRecentColor = useRecentColorCommit();
|
|
20727
20676
|
const patchStop = (patch) => {
|
|
@@ -20734,9 +20683,9 @@ function GradientStopRow({
|
|
|
20734
20683
|
"input",
|
|
20735
20684
|
{
|
|
20736
20685
|
type: "color",
|
|
20737
|
-
value:
|
|
20686
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20738
20687
|
ref: commitRecentColor,
|
|
20739
|
-
onChange: (e) => patchStop({ color:
|
|
20688
|
+
onChange: (e) => patchStop({ color: chunk6GFSF2ML_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20740
20689
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20741
20690
|
}
|
|
20742
20691
|
),
|
|
@@ -20811,7 +20760,7 @@ function FillAdvancedControls({
|
|
|
20811
20760
|
onUpdateGradientStops,
|
|
20812
20761
|
onSetFillColor: _onSetFillColor
|
|
20813
20762
|
}) {
|
|
20814
|
-
const { t } =
|
|
20763
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20815
20764
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20816
20765
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20817
20766
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20865,7 +20814,7 @@ function FillAdvancedControls({
|
|
|
20865
20814
|
onClick: () => onUpdateGradientStops([
|
|
20866
20815
|
...gradientStops,
|
|
20867
20816
|
{
|
|
20868
|
-
color:
|
|
20817
|
+
color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
20869
20818
|
position: 50,
|
|
20870
20819
|
opacity: 1
|
|
20871
20820
|
}
|
|
@@ -20879,9 +20828,9 @@ function FillAdvancedControls({
|
|
|
20879
20828
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20880
20829
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20881
20830
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS.map((opt) => {
|
|
20882
|
-
const fgColor =
|
|
20883
|
-
const bgColor =
|
|
20884
|
-
const svgPattern =
|
|
20831
|
+
const fgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR);
|
|
20832
|
+
const bgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20833
|
+
const svgPattern = chunk6GFSF2ML_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20885
20834
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20886
20835
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20887
20836
|
"button",
|
|
@@ -20914,7 +20863,7 @@ function FillAdvancedControls({
|
|
|
20914
20863
|
{
|
|
20915
20864
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20916
20865
|
prefix: "pattern-fg",
|
|
20917
|
-
value:
|
|
20866
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
20918
20867
|
disabled: isLine,
|
|
20919
20868
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20920
20869
|
styleChange: patternForeground
|
|
@@ -20925,7 +20874,7 @@ function FillAdvancedControls({
|
|
|
20925
20874
|
{
|
|
20926
20875
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20927
20876
|
prefix: "pattern-bg",
|
|
20928
|
-
value:
|
|
20877
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20929
20878
|
disabled: isLine,
|
|
20930
20879
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20931
20880
|
styleChange: patternBackground
|
|
@@ -20990,7 +20939,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20990
20939
|
function QuickStylesGallery({
|
|
20991
20940
|
onUpdateShapeStyle
|
|
20992
20941
|
}) {
|
|
20993
|
-
const { t } =
|
|
20942
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20994
20943
|
const ref = React108.useRef(null);
|
|
20995
20944
|
React108.useLayoutEffect(() => {
|
|
20996
20945
|
const gallery = ref.current;
|
|
@@ -21027,14 +20976,14 @@ function StrokeEffectsSection({
|
|
|
21027
20976
|
onUpdateShapeStyle,
|
|
21028
20977
|
onSetStrokeColor
|
|
21029
20978
|
}) {
|
|
21030
|
-
const { t } =
|
|
20979
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21031
20980
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21032
20981
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21033
20982
|
ColorPickerRow,
|
|
21034
20983
|
{
|
|
21035
20984
|
label: t("pptx.inspector.stroke"),
|
|
21036
20985
|
prefix: "stroke",
|
|
21037
|
-
value:
|
|
20986
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.strokeColor, chunk6GFSF2ML_js.DEFAULT_STROKE_COLOR),
|
|
21038
20987
|
selectedRef: style?.strokeColorRef,
|
|
21039
20988
|
onChange: onSetStrokeColor,
|
|
21040
20989
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21077,7 +21026,7 @@ function FillStrokeProperties({
|
|
|
21077
21026
|
onSetFillColor,
|
|
21078
21027
|
onSetStrokeColor
|
|
21079
21028
|
}) {
|
|
21080
|
-
const { t } =
|
|
21029
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21081
21030
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21082
21031
|
const style = selectedShapeStyle;
|
|
21083
21032
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21093,10 +21042,10 @@ function FillStrokeProperties({
|
|
|
21093
21042
|
return;
|
|
21094
21043
|
}
|
|
21095
21044
|
if (nextMode === "gradient") {
|
|
21096
|
-
const existing =
|
|
21045
|
+
const existing = chunk6GFSF2ML_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21097
21046
|
const stops = existing.length >= 2 ? existing : [
|
|
21098
21047
|
{
|
|
21099
|
-
color:
|
|
21048
|
+
color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
21100
21049
|
position: 0,
|
|
21101
21050
|
opacity: 1
|
|
21102
21051
|
},
|
|
@@ -21121,7 +21070,7 @@ function FillStrokeProperties({
|
|
|
21121
21070
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21122
21071
|
};
|
|
21123
21072
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21124
|
-
{ color:
|
|
21073
|
+
{ color: chunk6GFSF2ML_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21125
21074
|
{ color: "#ffffff", position: 100 }
|
|
21126
21075
|
];
|
|
21127
21076
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21148,7 +21097,7 @@ function FillStrokeProperties({
|
|
|
21148
21097
|
{
|
|
21149
21098
|
label: t("pptx.fill.fill"),
|
|
21150
21099
|
prefix: "fill",
|
|
21151
|
-
value:
|
|
21100
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
21152
21101
|
selectedRef: style?.fillColorRef,
|
|
21153
21102
|
disabled: line,
|
|
21154
21103
|
onChange: onSetFillColor,
|
|
@@ -21186,7 +21135,7 @@ function Text3DProperties({
|
|
|
21186
21135
|
ts,
|
|
21187
21136
|
onUpdateTextStyle
|
|
21188
21137
|
}) {
|
|
21189
|
-
const { t } =
|
|
21138
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21190
21139
|
const commitRecentColor = useRecentColorCommit();
|
|
21191
21140
|
const t3d = ts?.text3d;
|
|
21192
21141
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21233,7 +21182,7 @@ function Text3DProperties({
|
|
|
21233
21182
|
"input",
|
|
21234
21183
|
{
|
|
21235
21184
|
type: "color",
|
|
21236
|
-
value:
|
|
21185
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21237
21186
|
ref: commitRecentColor,
|
|
21238
21187
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21239
21188
|
className: COLOR_CLS
|
|
@@ -21400,7 +21349,7 @@ function AdvancedTextFormatting({
|
|
|
21400
21349
|
onUpdateTextStyle,
|
|
21401
21350
|
numChange
|
|
21402
21351
|
}) {
|
|
21403
|
-
const { t } =
|
|
21352
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21404
21353
|
const commitRecentColor = useRecentColorCommit();
|
|
21405
21354
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21406
21355
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21422,7 +21371,7 @@ function AdvancedTextFormatting({
|
|
|
21422
21371
|
"input",
|
|
21423
21372
|
{
|
|
21424
21373
|
type: "color",
|
|
21425
|
-
value:
|
|
21374
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21426
21375
|
ref: commitRecentColor,
|
|
21427
21376
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21428
21377
|
disabled: !canEdit,
|
|
@@ -21564,7 +21513,7 @@ function TextReflectionSection({
|
|
|
21564
21513
|
onUpdateTextStyle,
|
|
21565
21514
|
numChange
|
|
21566
21515
|
}) {
|
|
21567
|
-
const { t } =
|
|
21516
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21568
21517
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21569
21518
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21570
21519
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21672,7 +21621,7 @@ function TextEffectsPanel({
|
|
|
21672
21621
|
onUpdateTextStyle,
|
|
21673
21622
|
numChange
|
|
21674
21623
|
}) {
|
|
21675
|
-
const { t } =
|
|
21624
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21676
21625
|
const commitRecentColor = useRecentColorCommit();
|
|
21677
21626
|
const hasShadow = Boolean(
|
|
21678
21627
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21718,7 +21667,7 @@ function TextEffectsPanel({
|
|
|
21718
21667
|
"input",
|
|
21719
21668
|
{
|
|
21720
21669
|
type: "color",
|
|
21721
|
-
value:
|
|
21670
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21722
21671
|
ref: commitRecentColor,
|
|
21723
21672
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21724
21673
|
className: COLOR_CLS2
|
|
@@ -21823,7 +21772,7 @@ function TextEffectsPanel({
|
|
|
21823
21772
|
"input",
|
|
21824
21773
|
{
|
|
21825
21774
|
type: "color",
|
|
21826
|
-
value:
|
|
21775
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21827
21776
|
ref: commitRecentColor,
|
|
21828
21777
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21829
21778
|
className: COLOR_CLS2
|
|
@@ -21873,7 +21822,7 @@ function TextWarpGallery({
|
|
|
21873
21822
|
ts,
|
|
21874
21823
|
onUpdateTextStyle
|
|
21875
21824
|
}) {
|
|
21876
|
-
const { t } =
|
|
21825
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21877
21826
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21878
21827
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21879
21828
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21954,7 +21903,7 @@ function ShapeTextPanels({
|
|
|
21954
21903
|
onUpdateElementStyle,
|
|
21955
21904
|
onUpdateTextStyle
|
|
21956
21905
|
}) {
|
|
21957
|
-
const { t } =
|
|
21906
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21958
21907
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21959
21908
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21960
21909
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21963,11 +21912,11 @@ function ShapeTextPanels({
|
|
|
21963
21912
|
{
|
|
21964
21913
|
value: selectedElement.shapeType || "rect",
|
|
21965
21914
|
disabled: !canEdit,
|
|
21966
|
-
className:
|
|
21915
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
21967
21916
|
onChange: (e) => onUpdateElement({
|
|
21968
21917
|
shapeType: e.target.value
|
|
21969
21918
|
}),
|
|
21970
|
-
children:
|
|
21919
|
+
children: chunk6GFSF2ML_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21971
21920
|
}
|
|
21972
21921
|
)
|
|
21973
21922
|
] }),
|
|
@@ -21979,7 +21928,7 @@ function ShapeTextPanels({
|
|
|
21979
21928
|
selectedElement,
|
|
21980
21929
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21981
21930
|
selectedShapeType: selectedElement.shapeType,
|
|
21982
|
-
selectedGradientStops:
|
|
21931
|
+
selectedGradientStops: chunk6GFSF2ML_js.sanitizeGradientStops(
|
|
21983
21932
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21984
21933
|
),
|
|
21985
21934
|
canEdit,
|
|
@@ -22015,7 +21964,7 @@ function ShapeTextPanels({
|
|
|
22015
21964
|
{
|
|
22016
21965
|
disabled: !canEdit,
|
|
22017
21966
|
"aria-label": "Text Color",
|
|
22018
|
-
value:
|
|
21967
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22019
21968
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22020
21969
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
22021
21970
|
patch: textColorPatch
|
|
@@ -22106,7 +22055,7 @@ function TextFormatToggle({
|
|
|
22106
22055
|
{
|
|
22107
22056
|
type: "button",
|
|
22108
22057
|
disabled,
|
|
22109
|
-
className:
|
|
22058
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22110
22059
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22111
22060
|
italic && "italic",
|
|
22112
22061
|
underline && "underline",
|
|
@@ -22275,7 +22224,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22275
22224
|
canEdit,
|
|
22276
22225
|
onUpdateSmartArt
|
|
22277
22226
|
}) {
|
|
22278
|
-
const { t } =
|
|
22227
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22279
22228
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22280
22229
|
const handleLayoutSwitch = (newLayout) => {
|
|
22281
22230
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22294,7 +22243,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22294
22243
|
type: "button",
|
|
22295
22244
|
"data-testid": `smartart-layout-${type}`,
|
|
22296
22245
|
disabled: !canEdit,
|
|
22297
|
-
className:
|
|
22246
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22298
22247
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22299
22248
|
"text-[9px] leading-tight",
|
|
22300
22249
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22321,7 +22270,7 @@ function SmartArtStyleControls({
|
|
|
22321
22270
|
onChangeColorScheme,
|
|
22322
22271
|
onChangeStyle
|
|
22323
22272
|
}) {
|
|
22324
|
-
const { t } =
|
|
22273
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22325
22274
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22326
22275
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22327
22276
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22332,7 +22281,7 @@ function SmartArtStyleControls({
|
|
|
22332
22281
|
disabled: !canEdit,
|
|
22333
22282
|
"data-testid": "smartart-color-scheme",
|
|
22334
22283
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22335
|
-
className:
|
|
22284
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
22336
22285
|
value: colorScheme,
|
|
22337
22286
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22338
22287
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22347,7 +22296,7 @@ function SmartArtStyleControls({
|
|
|
22347
22296
|
type: "button",
|
|
22348
22297
|
disabled: !canEdit,
|
|
22349
22298
|
"aria-pressed": style === s,
|
|
22350
|
-
className:
|
|
22299
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22351
22300
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22352
22301
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22353
22302
|
),
|
|
@@ -22373,14 +22322,14 @@ function SmartArtPropertiesPanel({
|
|
|
22373
22322
|
onUpdateElement,
|
|
22374
22323
|
box
|
|
22375
22324
|
}) {
|
|
22376
|
-
const { t } =
|
|
22325
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22377
22326
|
const { pushColor } = useRecentColors();
|
|
22378
22327
|
const paneRef = React108__default.default.useRef(null);
|
|
22379
22328
|
const applySmartArtData = (newData) => {
|
|
22380
22329
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22381
22330
|
newData,
|
|
22382
22331
|
newData.layout,
|
|
22383
|
-
|
|
22332
|
+
chunk3AZ6ESJU_js.resolveSmartArtDataPalette(newData),
|
|
22384
22333
|
newData.style ?? "flat",
|
|
22385
22334
|
"inspector",
|
|
22386
22335
|
box
|
|
@@ -22451,9 +22400,9 @@ function TableDataGrid({
|
|
|
22451
22400
|
canEdit,
|
|
22452
22401
|
onUpdateElement
|
|
22453
22402
|
}) {
|
|
22454
|
-
const { t } =
|
|
22403
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22455
22404
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22456
|
-
const { viewportWidth } =
|
|
22405
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
22457
22406
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22458
22407
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22459
22408
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22617,7 +22566,7 @@ function TableCellPatternFill({
|
|
|
22617
22566
|
canEdit,
|
|
22618
22567
|
onUpdateCellStyle
|
|
22619
22568
|
}) {
|
|
22620
|
-
const { t } =
|
|
22569
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22621
22570
|
const commitRecentColor = useRecentColorCommit();
|
|
22622
22571
|
const translate = (key) => t(key);
|
|
22623
22572
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22672,7 +22621,7 @@ function TableCellAdvancedFill({
|
|
|
22672
22621
|
canEdit,
|
|
22673
22622
|
onUpdateCellStyle
|
|
22674
22623
|
}) {
|
|
22675
|
-
const { t } =
|
|
22624
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22676
22625
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22677
22626
|
const handleFillModeChange = (mode) => {
|
|
22678
22627
|
const next = mode;
|
|
@@ -22760,7 +22709,7 @@ function GradientControls({
|
|
|
22760
22709
|
canEdit,
|
|
22761
22710
|
onUpdateCellStyle
|
|
22762
22711
|
}) {
|
|
22763
|
-
const { t } =
|
|
22712
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22764
22713
|
const commitRecentColor = useRecentColorCommit();
|
|
22765
22714
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22766
22715
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22858,7 +22807,7 @@ function TableCellColorField({
|
|
|
22858
22807
|
disabled,
|
|
22859
22808
|
onCommit
|
|
22860
22809
|
}) {
|
|
22861
|
-
const hex =
|
|
22810
|
+
const hex = chunk6GFSF2ML_js.normalizeHexColor(value, fallback);
|
|
22862
22811
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22863
22812
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22864
22813
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22888,7 +22837,7 @@ function TableCellFormattingPanel({
|
|
|
22888
22837
|
onUpdateTableData,
|
|
22889
22838
|
onUpdateMergeRows
|
|
22890
22839
|
}) {
|
|
22891
|
-
const { t } =
|
|
22840
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22892
22841
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22893
22842
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22894
22843
|
if (!cell) {
|
|
@@ -22966,7 +22915,7 @@ function TableCellFormattingPanel({
|
|
|
22966
22915
|
{
|
|
22967
22916
|
type: "button",
|
|
22968
22917
|
disabled: !canEdit,
|
|
22969
|
-
className:
|
|
22918
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22970
22919
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22971
22920
|
cls,
|
|
22972
22921
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22985,7 +22934,7 @@ function TableCellFormattingPanel({
|
|
|
22985
22934
|
{
|
|
22986
22935
|
type: "button",
|
|
22987
22936
|
disabled: !canEdit,
|
|
22988
|
-
className:
|
|
22937
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22989
22938
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22990
22939
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22991
22940
|
),
|
|
@@ -23003,7 +22952,7 @@ function TableCellFormattingPanel({
|
|
|
23003
22952
|
{
|
|
23004
22953
|
type: "button",
|
|
23005
22954
|
disabled: !canEdit,
|
|
23006
|
-
className:
|
|
22955
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23007
22956
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23008
22957
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23009
22958
|
),
|
|
@@ -23026,7 +22975,7 @@ function TableCellFormattingPanel({
|
|
|
23026
22975
|
DebouncedColorInput,
|
|
23027
22976
|
{
|
|
23028
22977
|
disabled: !canEdit,
|
|
23029
|
-
value:
|
|
22978
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23030
22979
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23031
22980
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23032
22981
|
}
|
|
@@ -23036,7 +22985,7 @@ function TableCellFormattingPanel({
|
|
|
23036
22985
|
{
|
|
23037
22986
|
type: "number",
|
|
23038
22987
|
disabled: !canEdit,
|
|
23039
|
-
className:
|
|
22988
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-14"),
|
|
23040
22989
|
min: 0,
|
|
23041
22990
|
max: 10,
|
|
23042
22991
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23052,7 +23001,7 @@ function TableCellFormattingPanel({
|
|
|
23052
23001
|
{
|
|
23053
23002
|
type: "button",
|
|
23054
23003
|
disabled: !canEdit,
|
|
23055
|
-
className:
|
|
23004
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23056
23005
|
onClick: () => {
|
|
23057
23006
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23058
23007
|
if (newRows) {
|
|
@@ -23067,7 +23016,7 @@ function TableCellFormattingPanel({
|
|
|
23067
23016
|
{
|
|
23068
23017
|
type: "button",
|
|
23069
23018
|
disabled: !canEdit,
|
|
23070
|
-
className:
|
|
23019
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23071
23020
|
onClick: () => {
|
|
23072
23021
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23073
23022
|
if (newRows) {
|
|
@@ -23082,7 +23031,7 @@ function TableCellFormattingPanel({
|
|
|
23082
23031
|
{
|
|
23083
23032
|
type: "button",
|
|
23084
23033
|
disabled: !canEdit,
|
|
23085
|
-
className:
|
|
23034
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23086
23035
|
onClick: () => {
|
|
23087
23036
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23088
23037
|
if (newRows) {
|
|
@@ -23101,7 +23050,7 @@ function TableStyleEditorFields({
|
|
|
23101
23050
|
canEdit,
|
|
23102
23051
|
onEdit
|
|
23103
23052
|
}) {
|
|
23104
|
-
const { t } =
|
|
23053
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23105
23054
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23106
23055
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23107
23056
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23206,7 +23155,7 @@ function BorderSideRow({
|
|
|
23206
23155
|
canEdit,
|
|
23207
23156
|
onEdit
|
|
23208
23157
|
}) {
|
|
23209
|
-
const { t } =
|
|
23158
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23210
23159
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23211
23160
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23212
23161
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23263,7 +23212,7 @@ function TableStyleEditor({
|
|
|
23263
23212
|
onAssignStyle,
|
|
23264
23213
|
onClose
|
|
23265
23214
|
}) {
|
|
23266
|
-
const { t } =
|
|
23215
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23267
23216
|
const themeColorMap = useThemeColorMap();
|
|
23268
23217
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23269
23218
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23355,7 +23304,7 @@ function TablePropertiesPanel({
|
|
|
23355
23304
|
onTableStyleMapChange,
|
|
23356
23305
|
onDeleteTableStyle
|
|
23357
23306
|
}) {
|
|
23358
|
-
const { t } =
|
|
23307
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23359
23308
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23360
23309
|
const td = tableElement.tableData;
|
|
23361
23310
|
if (!td) {
|
|
@@ -23437,7 +23386,7 @@ function TablePropertiesPanel({
|
|
|
23437
23386
|
] }),
|
|
23438
23387
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23439
23388
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23440
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23389
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk6GFSF2ML_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23441
23390
|
"button",
|
|
23442
23391
|
{
|
|
23443
23392
|
type: "button",
|
|
@@ -23585,7 +23534,7 @@ function ElementInspectorBody({
|
|
|
23585
23534
|
onUpdateTextStyle,
|
|
23586
23535
|
onMoveLayer
|
|
23587
23536
|
}) {
|
|
23588
|
-
const { t } =
|
|
23537
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23589
23538
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23590
23539
|
const handleToggleLock = () => {
|
|
23591
23540
|
if (!canEdit) {
|
|
@@ -23735,7 +23684,7 @@ function CommentMentionTextarea({
|
|
|
23735
23684
|
className,
|
|
23736
23685
|
ariaLabel
|
|
23737
23686
|
}) {
|
|
23738
|
-
const { t } =
|
|
23687
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23739
23688
|
const textareaRef = React108.useRef(null);
|
|
23740
23689
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23741
23690
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23824,7 +23773,7 @@ function CommentMentionTextarea({
|
|
|
23824
23773
|
"data-testid": "pptx-comment-mention-option",
|
|
23825
23774
|
role: "option",
|
|
23826
23775
|
"aria-selected": index === safeHighlighted,
|
|
23827
|
-
className:
|
|
23776
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23828
23777
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23829
23778
|
index === safeHighlighted && "bg-accent"
|
|
23830
23779
|
),
|
|
@@ -23871,7 +23820,7 @@ function InspectorCommentReplyForm({
|
|
|
23871
23820
|
onSubmit,
|
|
23872
23821
|
onCancel
|
|
23873
23822
|
}) {
|
|
23874
|
-
const { t } =
|
|
23823
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23875
23824
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23876
23825
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23877
23826
|
CommentMentionTextarea,
|
|
@@ -23937,7 +23886,7 @@ function InspectorCommentRow({
|
|
|
23937
23886
|
onSelectElement,
|
|
23938
23887
|
depth = 0
|
|
23939
23888
|
}) {
|
|
23940
|
-
const { t } =
|
|
23889
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23941
23890
|
const isEditing = editingCommentId === comment.id;
|
|
23942
23891
|
const isReplying = replyingToCommentId === comment.id;
|
|
23943
23892
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23947,7 +23896,7 @@ function InspectorCommentRow({
|
|
|
23947
23896
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23948
23897
|
"div",
|
|
23949
23898
|
{
|
|
23950
|
-
className:
|
|
23899
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23951
23900
|
"rounded border border-border bg-card p-2",
|
|
23952
23901
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23953
23902
|
),
|
|
@@ -23961,7 +23910,7 @@ function InspectorCommentRow({
|
|
|
23961
23910
|
t("pptx.comments.resolved")
|
|
23962
23911
|
] })
|
|
23963
23912
|
] }),
|
|
23964
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23913
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk6GFSF2ML_js.formatCommentTimestamp(comment.createdAt) })
|
|
23965
23914
|
] }),
|
|
23966
23915
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23967
23916
|
"button",
|
|
@@ -23969,12 +23918,12 @@ function InspectorCommentRow({
|
|
|
23969
23918
|
type: "button",
|
|
23970
23919
|
className: "mt-1 inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary hover:bg-primary/30 transition-colors",
|
|
23971
23920
|
title: t("pptx.comments.commentingOn", {
|
|
23972
|
-
element:
|
|
23921
|
+
element: chunk6GFSF2ML_js.getElementLabel(targetElement)
|
|
23973
23922
|
}),
|
|
23974
23923
|
onClick: () => onSelectElement(targetElement.id),
|
|
23975
23924
|
children: [
|
|
23976
23925
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23977
|
-
|
|
23926
|
+
chunk6GFSF2ML_js.getElementLabel(targetElement)
|
|
23978
23927
|
]
|
|
23979
23928
|
}
|
|
23980
23929
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 inline-flex items-center gap-1 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground", children: t("pptx.comments.deletedElement") })),
|
|
@@ -24043,7 +23992,7 @@ function InspectorCommentRow({
|
|
|
24043
23992
|
"button",
|
|
24044
23993
|
{
|
|
24045
23994
|
type: "button",
|
|
24046
|
-
className:
|
|
23995
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24047
23996
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24048
23997
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24049
23998
|
),
|
|
@@ -24149,7 +24098,7 @@ function InspectorCommentsSection({
|
|
|
24149
24098
|
onSubmitReply,
|
|
24150
24099
|
onSelectElement
|
|
24151
24100
|
}) {
|
|
24152
|
-
const { t } =
|
|
24101
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24153
24102
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24154
24103
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24155
24104
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24186,7 +24135,7 @@ function InspectorCommentsSection({
|
|
|
24186
24135
|
selectedElement && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary", children: [
|
|
24187
24136
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24188
24137
|
t("pptx.comments.commentingOn", {
|
|
24189
|
-
element:
|
|
24138
|
+
element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
|
|
24190
24139
|
})
|
|
24191
24140
|
] }),
|
|
24192
24141
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24197,7 +24146,7 @@ function InspectorCommentsSection({
|
|
|
24197
24146
|
authors: commentAuthors,
|
|
24198
24147
|
rows: 2,
|
|
24199
24148
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24200
|
-
element:
|
|
24149
|
+
element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
|
|
24201
24150
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24202
24151
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24203
24152
|
onChange: onSetCommentDraft,
|
|
@@ -24210,7 +24159,7 @@ function InspectorCommentsSection({
|
|
|
24210
24159
|
type: "button",
|
|
24211
24160
|
onClick: onAddComment,
|
|
24212
24161
|
disabled: !commentDraft.trim(),
|
|
24213
|
-
className:
|
|
24162
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24214
24163
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
|
|
24215
24164
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24216
24165
|
),
|
|
@@ -24235,7 +24184,7 @@ function InspectorElementsTab({
|
|
|
24235
24184
|
onSelectElement,
|
|
24236
24185
|
onUpdateSlide
|
|
24237
24186
|
}) {
|
|
24238
|
-
const { t } =
|
|
24187
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24239
24188
|
const toggleHidden = (elementId2) => {
|
|
24240
24189
|
const elements2 = activeSlide?.elements;
|
|
24241
24190
|
if (!canEdit || !elements2) {
|
|
@@ -24251,13 +24200,13 @@ function InspectorElementsTab({
|
|
|
24251
24200
|
};
|
|
24252
24201
|
if (!activeSlide) {
|
|
24253
24202
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24254
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24203
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24255
24204
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24256
24205
|
] });
|
|
24257
24206
|
}
|
|
24258
24207
|
const elements = activeSlide.elements || [];
|
|
24259
24208
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24260
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24209
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24261
24210
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24262
24211
|
const index = elements.length - 1 - reversedIndex;
|
|
24263
24212
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24265,7 +24214,7 @@ function InspectorElementsTab({
|
|
|
24265
24214
|
"div",
|
|
24266
24215
|
{
|
|
24267
24216
|
title: `${el.type} - ${el.id}`,
|
|
24268
|
-
className:
|
|
24217
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24269
24218
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24270
24219
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24271
24220
|
),
|
|
@@ -24301,8 +24250,8 @@ function InspectorPaneHeader({
|
|
|
24301
24250
|
onSetActiveTab,
|
|
24302
24251
|
onClose
|
|
24303
24252
|
}) {
|
|
24304
|
-
const { t } =
|
|
24305
|
-
const { viewportWidth } =
|
|
24253
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24254
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
24306
24255
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24307
24256
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24308
24257
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24325,7 +24274,7 @@ function InspectorPaneHeader({
|
|
|
24325
24274
|
type: "button",
|
|
24326
24275
|
title: t(labelKey),
|
|
24327
24276
|
style: touchBtnStyle,
|
|
24328
|
-
className:
|
|
24277
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24329
24278
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24330
24279
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24331
24280
|
),
|
|
@@ -24385,7 +24334,7 @@ function CustomPropertiesBlock({
|
|
|
24385
24334
|
canEdit,
|
|
24386
24335
|
onUpdate
|
|
24387
24336
|
}) {
|
|
24388
|
-
const { t } =
|
|
24337
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24389
24338
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24390
24339
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24391
24340
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24439,7 +24388,7 @@ function CustomPropertiesBlock({
|
|
|
24439
24388
|
"button",
|
|
24440
24389
|
{
|
|
24441
24390
|
type: "button",
|
|
24442
|
-
className:
|
|
24391
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24443
24392
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24444
24393
|
children: "\xD7"
|
|
24445
24394
|
}
|
|
@@ -24452,7 +24401,7 @@ function NotesHandoutCard({
|
|
|
24452
24401
|
notesMaster,
|
|
24453
24402
|
handoutMaster
|
|
24454
24403
|
}) {
|
|
24455
|
-
const { t } =
|
|
24404
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24456
24405
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24457
24406
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24458
24407
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24489,7 +24438,7 @@ function DocumentPropertiesCard({
|
|
|
24489
24438
|
onUpdateAppProperties,
|
|
24490
24439
|
onUpdateCustomProperties
|
|
24491
24440
|
}) {
|
|
24492
|
-
const { t } =
|
|
24441
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24493
24442
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24494
24443
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24495
24444
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24543,7 +24492,7 @@ function DocumentPropertiesCard({
|
|
|
24543
24492
|
function SlideSizeRescalePrompt({
|
|
24544
24493
|
onChoose
|
|
24545
24494
|
}) {
|
|
24546
|
-
const { t } =
|
|
24495
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24547
24496
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24548
24497
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24549
24498
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24585,7 +24534,7 @@ function SlideSizeCard({
|
|
|
24585
24534
|
onUpdateSlideSize,
|
|
24586
24535
|
hasContent
|
|
24587
24536
|
}) {
|
|
24588
|
-
const { t } =
|
|
24537
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24589
24538
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24590
24539
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24591
24540
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24696,7 +24645,7 @@ function PresentationSettingsCard({
|
|
|
24696
24645
|
canEdit,
|
|
24697
24646
|
onUpdate
|
|
24698
24647
|
}) {
|
|
24699
|
-
const { t } =
|
|
24648
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24700
24649
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24701
24650
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24702
24651
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24767,7 +24716,7 @@ function PresentationSettingsCard({
|
|
|
24767
24716
|
min: 1,
|
|
24768
24717
|
max: 16,
|
|
24769
24718
|
disabled: !canEdit,
|
|
24770
|
-
className:
|
|
24719
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-20"),
|
|
24771
24720
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24772
24721
|
onChange: (e) => onUpdate({
|
|
24773
24722
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24788,7 +24737,7 @@ function ThemeSelectorCard({
|
|
|
24788
24737
|
canEdit,
|
|
24789
24738
|
onApplyTheme
|
|
24790
24739
|
}) {
|
|
24791
|
-
const { t } =
|
|
24740
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24792
24741
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24793
24742
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24794
24743
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24851,7 +24800,7 @@ function SlideThemeOverridePanel({
|
|
|
24851
24800
|
canEdit,
|
|
24852
24801
|
onUpdateSlide
|
|
24853
24802
|
}) {
|
|
24854
|
-
const { t } =
|
|
24803
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24855
24804
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24856
24805
|
const override = activeSlide?.clrMapOverride;
|
|
24857
24806
|
const isOverrideActive = override !== void 0;
|
|
@@ -24958,7 +24907,7 @@ function DirectionPicker({
|
|
|
24958
24907
|
disabled,
|
|
24959
24908
|
onChange
|
|
24960
24909
|
}) {
|
|
24961
|
-
const { t } =
|
|
24910
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24962
24911
|
if (directions.length <= 3) {
|
|
24963
24912
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24964
24913
|
"button",
|
|
@@ -25000,10 +24949,10 @@ function TransitionPreview({
|
|
|
25000
24949
|
const previewRef = React108.useRef(null);
|
|
25001
24950
|
const [playing, setPlaying] = React108.useState(false);
|
|
25002
24951
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
25003
|
-
const { t } =
|
|
24952
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25004
24953
|
const durationMs = transition.durationMs ?? 500;
|
|
25005
24954
|
const animations = React108.useMemo(
|
|
25006
|
-
() =>
|
|
24955
|
+
() => chunk3AZ6ESJU_js.getSlideTransitionAnimations(
|
|
25007
24956
|
transition.type,
|
|
25008
24957
|
durationMs,
|
|
25009
24958
|
transition.direction,
|
|
@@ -25072,7 +25021,7 @@ function TransitionPreview({
|
|
|
25072
25021
|
]
|
|
25073
25022
|
}
|
|
25074
25023
|
),
|
|
25075
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25024
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3AZ6ESJU_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25076
25025
|
] });
|
|
25077
25026
|
}
|
|
25078
25027
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25084,7 +25033,7 @@ function SlideTransitionSection({
|
|
|
25084
25033
|
canEdit = true,
|
|
25085
25034
|
onTransitionChange
|
|
25086
25035
|
}) {
|
|
25087
|
-
const { t } =
|
|
25036
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25088
25037
|
if (!activeSlide) {
|
|
25089
25038
|
return null;
|
|
25090
25039
|
}
|
|
@@ -25115,7 +25064,7 @@ function SlideTransitionSection({
|
|
|
25115
25064
|
type: e.target.value
|
|
25116
25065
|
}),
|
|
25117
25066
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25118
|
-
children:
|
|
25067
|
+
children: chunk6GFSF2ML_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25119
25068
|
}
|
|
25120
25069
|
)
|
|
25121
25070
|
] }),
|
|
@@ -25273,7 +25222,7 @@ function TagsSection({
|
|
|
25273
25222
|
onUpdateTagCollections,
|
|
25274
25223
|
canEdit
|
|
25275
25224
|
}) {
|
|
25276
|
-
const { t } =
|
|
25225
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25277
25226
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25278
25227
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25279
25228
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25331,7 +25280,7 @@ function TagsSection({
|
|
|
25331
25280
|
"button",
|
|
25332
25281
|
{
|
|
25333
25282
|
type: "button",
|
|
25334
|
-
className:
|
|
25283
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25335
25284
|
title: t("pptx.tags.deleteTag"),
|
|
25336
25285
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25337
25286
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25373,7 +25322,7 @@ function PresentationPropertiesPanel({
|
|
|
25373
25322
|
tagCollections,
|
|
25374
25323
|
onUpdateTagCollections
|
|
25375
25324
|
}) {
|
|
25376
|
-
const { t } =
|
|
25325
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25377
25326
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25378
25327
|
(updates) => {
|
|
25379
25328
|
onUpdateSlide({
|
|
@@ -25460,7 +25409,7 @@ function PresentationPropertiesPanel({
|
|
|
25460
25409
|
canEdit
|
|
25461
25410
|
}
|
|
25462
25411
|
) }),
|
|
25463
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25412
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk6GFSF2ML_js.cn(CARD2, "space-y-1"), children: [
|
|
25464
25413
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25465
25414
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25466
25415
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25478,17 +25427,17 @@ function SlideBackgroundPanel({
|
|
|
25478
25427
|
onSetTemplateBackground,
|
|
25479
25428
|
onGetTemplateBackgroundColor
|
|
25480
25429
|
}) {
|
|
25481
|
-
const { t } =
|
|
25430
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25482
25431
|
const bgImageInputRef = React108.useRef(null);
|
|
25483
25432
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25484
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25433
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
|
|
25485
25434
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25486
25435
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25487
25436
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25488
25437
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25489
25438
|
DebouncedColorInput,
|
|
25490
25439
|
{
|
|
25491
|
-
value:
|
|
25440
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25492
25441
|
disabled: !canEdit,
|
|
25493
25442
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25494
25443
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25527,7 +25476,7 @@ function SlideBackgroundPanel({
|
|
|
25527
25476
|
"button",
|
|
25528
25477
|
{
|
|
25529
25478
|
type: "button",
|
|
25530
|
-
className:
|
|
25479
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "flex-1 text-center"),
|
|
25531
25480
|
disabled: !canEdit,
|
|
25532
25481
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25533
25482
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25560,7 +25509,7 @@ function SlideBackgroundPanel({
|
|
|
25560
25509
|
"button",
|
|
25561
25510
|
{
|
|
25562
25511
|
type: "button",
|
|
25563
|
-
className:
|
|
25512
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25564
25513
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25565
25514
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25566
25515
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25597,21 +25546,21 @@ function TemplateBackgroundCard({
|
|
|
25597
25546
|
onSetTemplateBackground,
|
|
25598
25547
|
onGetTemplateBackgroundColor
|
|
25599
25548
|
}) {
|
|
25600
|
-
const { t } =
|
|
25549
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25601
25550
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25602
25551
|
activeSlide,
|
|
25603
25552
|
slideMasters,
|
|
25604
25553
|
t("pptx.master.layout"),
|
|
25605
25554
|
t("pptx.master.master")
|
|
25606
25555
|
);
|
|
25607
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25556
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
|
|
25608
25557
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25609
25558
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25610
25559
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25611
25560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25612
25561
|
DebouncedColorInput,
|
|
25613
25562
|
{
|
|
25614
|
-
value:
|
|
25563
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25615
25564
|
disabled: !canEdit,
|
|
25616
25565
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25617
25566
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25624,7 +25573,7 @@ function TemplateBackgroundCard({
|
|
|
25624
25573
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25625
25574
|
DebouncedColorInput,
|
|
25626
25575
|
{
|
|
25627
|
-
value:
|
|
25576
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25628
25577
|
disabled: !canEdit,
|
|
25629
25578
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25630
25579
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25734,8 +25683,8 @@ function InspectorPane(props) {
|
|
|
25734
25683
|
panelWidth
|
|
25735
25684
|
} = props;
|
|
25736
25685
|
const hasSelection = selectedElement !== null;
|
|
25737
|
-
const { t } =
|
|
25738
|
-
const { dragY, handlers: dragHandlers } =
|
|
25686
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25687
|
+
const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
25739
25688
|
const {
|
|
25740
25689
|
animationPanelHeight,
|
|
25741
25690
|
effectiveThemeOptions,
|
|
@@ -25757,7 +25706,7 @@ function InspectorPane(props) {
|
|
|
25757
25706
|
"div",
|
|
25758
25707
|
{
|
|
25759
25708
|
"data-pptx-chrome": "inspector",
|
|
25760
|
-
className:
|
|
25709
|
+
className: chunk6GFSF2ML_js.cn(
|
|
25761
25710
|
// Shared styles
|
|
25762
25711
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25763
25712
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26088,7 +26037,7 @@ function PresentationAnnotationOverlay({
|
|
|
26088
26037
|
);
|
|
26089
26038
|
}
|
|
26090
26039
|
function PresentationToolbar(p) {
|
|
26091
|
-
const { t } =
|
|
26040
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26092
26041
|
const ref = useWebControl(
|
|
26093
26042
|
{
|
|
26094
26043
|
current: p.currentSlideIndex,
|
|
@@ -26147,8 +26096,8 @@ function PresentationTouchControls({
|
|
|
26147
26096
|
onEndPresentation,
|
|
26148
26097
|
hideNavigation = false
|
|
26149
26098
|
}) {
|
|
26150
|
-
const { t } =
|
|
26151
|
-
const { isTouchDevice } =
|
|
26099
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26100
|
+
const { isTouchDevice } = chunk3AZ6ESJU_js.useIsMobile();
|
|
26152
26101
|
if (!isTouchDevice) {
|
|
26153
26102
|
return null;
|
|
26154
26103
|
}
|
|
@@ -26230,7 +26179,7 @@ function KeepAnnotationsDialog({
|
|
|
26230
26179
|
onKeep,
|
|
26231
26180
|
onDiscard
|
|
26232
26181
|
}) {
|
|
26233
|
-
const { t } =
|
|
26182
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26234
26183
|
if (!isOpen) {
|
|
26235
26184
|
return null;
|
|
26236
26185
|
}
|
|
@@ -26278,7 +26227,7 @@ function PasteSpecialDialog({
|
|
|
26278
26227
|
onCancel,
|
|
26279
26228
|
onConfirm
|
|
26280
26229
|
}) {
|
|
26281
|
-
const { t } =
|
|
26230
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26282
26231
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26283
26232
|
if (!isOpen) {
|
|
26284
26233
|
return null;
|
|
@@ -26336,7 +26285,7 @@ function PasteOptionsToolbar({
|
|
|
26336
26285
|
onChoose,
|
|
26337
26286
|
onDismiss
|
|
26338
26287
|
}) {
|
|
26339
|
-
const { t } =
|
|
26288
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26340
26289
|
const [rect, setRect] = React108.useState(null);
|
|
26341
26290
|
React108.useEffect(() => {
|
|
26342
26291
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26363,7 +26312,7 @@ function NotesPagePreview({
|
|
|
26363
26312
|
frameSlides,
|
|
26364
26313
|
maxPages = 3
|
|
26365
26314
|
}) {
|
|
26366
|
-
const { t } =
|
|
26315
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26367
26316
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26368
26317
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26369
26318
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26451,15 +26400,15 @@ function PrintPreview({
|
|
|
26451
26400
|
frameSlides,
|
|
26452
26401
|
maxPages = 3
|
|
26453
26402
|
}) {
|
|
26454
|
-
const { t } =
|
|
26403
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26455
26404
|
const pages = React108.useMemo(
|
|
26456
|
-
() =>
|
|
26405
|
+
() => chunk6GFSF2ML_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26457
26406
|
[slideIndices, slidesPerPage, orientation]
|
|
26458
26407
|
);
|
|
26459
|
-
const printable = React108.useMemo(() =>
|
|
26408
|
+
const printable = React108.useMemo(() => chunk6GFSF2ML_js.getPrintableArea(orientation), [orientation]);
|
|
26460
26409
|
const visiblePages = pages.slice(0, maxPages);
|
|
26461
26410
|
const isThreePerPage = slidesPerPage === 3;
|
|
26462
|
-
const noteLineCount =
|
|
26411
|
+
const noteLineCount = chunk6GFSF2ML_js.generateNoteLineCount();
|
|
26463
26412
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26464
26413
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26465
26414
|
const noteAreaFraction = 0.5;
|
|
@@ -26557,7 +26506,7 @@ function PrintSettingsPanel({
|
|
|
26557
26506
|
totalSlides,
|
|
26558
26507
|
activeSlideIndex
|
|
26559
26508
|
}) {
|
|
26560
|
-
const { t } =
|
|
26509
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26561
26510
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26562
26511
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26563
26512
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26793,13 +26742,13 @@ function PrintDialog({
|
|
|
26793
26742
|
defaultSlidesPerPage,
|
|
26794
26743
|
defaultFrameSlides
|
|
26795
26744
|
}) {
|
|
26796
|
-
const { t } =
|
|
26745
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26797
26746
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26798
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26799
|
-
const { viewportWidth } =
|
|
26747
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
26748
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
26800
26749
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26801
26750
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26802
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26751
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk3AZ6ESJU_js.useViewerOptionsContext());
|
|
26803
26752
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26804
26753
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26805
26754
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26983,7 +26932,7 @@ function ShowOptionsFieldset({
|
|
|
26983
26932
|
draft,
|
|
26984
26933
|
update
|
|
26985
26934
|
}) {
|
|
26986
|
-
const { t } =
|
|
26935
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26987
26936
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26988
26937
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26989
26938
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27041,7 +26990,7 @@ function ShowSlidesFieldset({
|
|
|
27041
26990
|
slideCount,
|
|
27042
26991
|
customShows
|
|
27043
26992
|
}) {
|
|
27044
|
-
const { t } =
|
|
26993
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27045
26994
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27046
26995
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
27047
26996
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27151,7 +27100,7 @@ function SetUpSlideShowDialog({
|
|
|
27151
27100
|
customShows,
|
|
27152
27101
|
slideCount
|
|
27153
27102
|
}) {
|
|
27154
|
-
const { t } =
|
|
27103
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27155
27104
|
const [draft, setDraft] = React108.useState({
|
|
27156
27105
|
...properties
|
|
27157
27106
|
});
|
|
@@ -27287,16 +27236,16 @@ function BroadcastDialog({
|
|
|
27287
27236
|
defaultUserName,
|
|
27288
27237
|
defaultServerUrl
|
|
27289
27238
|
}) {
|
|
27290
|
-
const { t } =
|
|
27239
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27291
27240
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27292
|
-
const collab =
|
|
27241
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
27293
27242
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27294
27243
|
const [roomId, setRoomId] = React108.useState("");
|
|
27295
27244
|
const [userName, setUserName] = React108.useState("");
|
|
27296
27245
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27297
27246
|
const [copied, setCopied] = React108.useState(false);
|
|
27298
27247
|
const dialogRef = React108.useRef(null);
|
|
27299
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27248
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
27300
27249
|
useModalFocus(open, dialogRef, onClose);
|
|
27301
27250
|
React108.useEffect(() => {
|
|
27302
27251
|
if (open && !isBroadcasting) {
|
|
@@ -27455,7 +27404,7 @@ function StartBroadcastForm({
|
|
|
27455
27404
|
onUserNameChange,
|
|
27456
27405
|
onServerUrlChange
|
|
27457
27406
|
}) {
|
|
27458
|
-
const { t } =
|
|
27407
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27459
27408
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27460
27409
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27461
27410
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27531,7 +27480,7 @@ function ActiveBroadcastView({
|
|
|
27531
27480
|
onCopyUrl,
|
|
27532
27481
|
onStopBroadcast
|
|
27533
27482
|
}) {
|
|
27534
|
-
const { t } =
|
|
27483
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27535
27484
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27536
27485
|
const statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" });
|
|
27537
27486
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27612,7 +27561,7 @@ function ActiveSessionView({
|
|
|
27612
27561
|
onCopyRoomId,
|
|
27613
27562
|
onStopCollaboration
|
|
27614
27563
|
}) {
|
|
27615
|
-
const { t } =
|
|
27564
|
+
const { t } = chunk6GFSF2ML_js.useTranslation(), viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = pptx.buildActiveSessionUsers({
|
|
27616
27565
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27617
27566
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27618
27567
|
localUserColor: collab.config.userColor,
|
|
@@ -27710,8 +27659,8 @@ function StartSessionForm({
|
|
|
27710
27659
|
connectionFailed,
|
|
27711
27660
|
onRetry
|
|
27712
27661
|
}) {
|
|
27713
|
-
const { t } =
|
|
27714
|
-
const { viewportWidth } =
|
|
27662
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27663
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
27715
27664
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27716
27665
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27717
27666
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27845,9 +27794,9 @@ function ShareDialog({
|
|
|
27845
27794
|
defaultUserName,
|
|
27846
27795
|
defaultServerUrl
|
|
27847
27796
|
}) {
|
|
27848
|
-
const collab =
|
|
27797
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
27849
27798
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27850
|
-
const { t } =
|
|
27799
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27851
27800
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27852
27801
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27853
27802
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27856,9 +27805,9 @@ function ShareDialog({
|
|
|
27856
27805
|
const [invitation, setInvitation] = React108.useState("");
|
|
27857
27806
|
const [copied, setCopied] = React108.useState(false);
|
|
27858
27807
|
const dialogRef = React108.useRef(null);
|
|
27859
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27808
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
27860
27809
|
useModalFocus(open, dialogRef, onClose);
|
|
27861
|
-
const { viewportWidth, viewportHeight } =
|
|
27810
|
+
const { viewportWidth, viewportHeight } = chunk3AZ6ESJU_js.useIsMobile();
|
|
27862
27811
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27863
27812
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27864
27813
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28031,7 +27980,7 @@ function HyperlinkTabContent({
|
|
|
28031
27980
|
inputCls,
|
|
28032
27981
|
onEnterConfirm
|
|
28033
27982
|
}) {
|
|
28034
|
-
const { t } =
|
|
27983
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28035
27984
|
const handleEnterKey = (e) => {
|
|
28036
27985
|
if (e.key === "Enter") {
|
|
28037
27986
|
onEnterConfirm();
|
|
@@ -28156,13 +28105,13 @@ function HyperlinkEditDialog({
|
|
|
28156
28105
|
onConfirm,
|
|
28157
28106
|
onCancel
|
|
28158
28107
|
}) {
|
|
28159
|
-
const { t } =
|
|
28160
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28108
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28109
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onCancel);
|
|
28161
28110
|
const inputRef = React108.useRef(null);
|
|
28162
|
-
const detectedType =
|
|
28163
|
-
const emailParts =
|
|
28164
|
-
const detectedSlide =
|
|
28165
|
-
const detectedVerb = initialAction ?
|
|
28111
|
+
const detectedType = chunk3AZ6ESJU_js.detectTargetType(initialUrl, initialAction);
|
|
28112
|
+
const emailParts = chunk3AZ6ESJU_js.parseEmailUrl(initialUrl || "");
|
|
28113
|
+
const detectedSlide = chunk3AZ6ESJU_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28114
|
+
const detectedVerb = initialAction ? chunk3AZ6ESJU_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28166
28115
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28167
28116
|
const [url, setUrl] = React108.useState(
|
|
28168
28117
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28193,7 +28142,7 @@ function HyperlinkEditDialog({
|
|
|
28193
28142
|
actionVerb
|
|
28194
28143
|
});
|
|
28195
28144
|
};
|
|
28196
|
-
const tabCls = (active) =>
|
|
28145
|
+
const tabCls = (active) => chunk6GFSF2ML_js.cn(
|
|
28197
28146
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28198
28147
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28199
28148
|
);
|
|
@@ -28441,7 +28390,7 @@ function ViewerBottomPanels({
|
|
|
28441
28390
|
notesStyle,
|
|
28442
28391
|
onNotesHeightChange
|
|
28443
28392
|
}) {
|
|
28444
|
-
const { isHidden } =
|
|
28393
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
28445
28394
|
const customization = useViewerCustomizationContext();
|
|
28446
28395
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28447
28396
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28572,7 +28521,7 @@ function ViewerInspector({
|
|
|
28572
28521
|
onPreviewElement,
|
|
28573
28522
|
elementById
|
|
28574
28523
|
}) {
|
|
28575
|
-
const { t } =
|
|
28524
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28576
28525
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28577
28526
|
const liveEdit = onPreviewElement ? {
|
|
28578
28527
|
element: selectedElement,
|
|
@@ -28787,7 +28736,7 @@ function ViewerToolbarSection(props) {
|
|
|
28787
28736
|
onSetSnapToShape,
|
|
28788
28737
|
onSetShowGuides
|
|
28789
28738
|
} = props;
|
|
28790
|
-
const { t } =
|
|
28739
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28791
28740
|
const customization = useViewerCustomizationContext();
|
|
28792
28741
|
const handleAddAnimation = React108.useCallback(
|
|
28793
28742
|
(preset, group) => {
|
|
@@ -28840,7 +28789,7 @@ function ViewerToolbarSection(props) {
|
|
|
28840
28789
|
[activeSlide, propertyHandlers]
|
|
28841
28790
|
);
|
|
28842
28791
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28843
|
-
() =>
|
|
28792
|
+
() => chunk3AZ6ESJU_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28844
28793
|
[s.layoutOptions, activeSlide]
|
|
28845
28794
|
);
|
|
28846
28795
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29247,14 +29196,14 @@ function ViewerToolbarSection(props) {
|
|
|
29247
29196
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29248
29197
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29249
29198
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29250
|
-
reviewComments:
|
|
29199
|
+
reviewComments: chunk3AZ6ESJU_js.createReviewCommentsHost({
|
|
29251
29200
|
state: s,
|
|
29252
29201
|
activeSlideIndex,
|
|
29253
29202
|
updateSlides: ops.updateSlides,
|
|
29254
29203
|
markDirty: history.markDirty
|
|
29255
29204
|
}),
|
|
29256
29205
|
formatPainterActive: s.formatPainterActive,
|
|
29257
|
-
canActivateFormatPainter:
|
|
29206
|
+
canActivateFormatPainter: chunk6GFSF2ML_js.hasCopyableFormat(selectedElement),
|
|
29258
29207
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29259
29208
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29260
29209
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29363,14 +29312,14 @@ function CustomShowsDialog({
|
|
|
29363
29312
|
onRun,
|
|
29364
29313
|
onClose
|
|
29365
29314
|
}) {
|
|
29366
|
-
const { t } =
|
|
29315
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29367
29316
|
const controller = React108.useMemo(
|
|
29368
29317
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29369
29318
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29370
29319
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29371
29320
|
[]
|
|
29372
29321
|
);
|
|
29373
|
-
|
|
29322
|
+
chunk3AZ6ESJU_js.useController(controller);
|
|
29374
29323
|
const view = controller.view(slides);
|
|
29375
29324
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29376
29325
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29649,8 +29598,8 @@ function EquationEditorDialog({
|
|
|
29649
29598
|
onInsert,
|
|
29650
29599
|
existingOmml
|
|
29651
29600
|
}) {
|
|
29652
|
-
const { t } =
|
|
29653
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29601
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29602
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
29654
29603
|
const initialLatex = React108.useMemo(() => {
|
|
29655
29604
|
if (!existingOmml) {
|
|
29656
29605
|
return "";
|
|
@@ -29772,7 +29721,7 @@ function EquationEditorDialog({
|
|
|
29772
29721
|
{
|
|
29773
29722
|
type: "button",
|
|
29774
29723
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29775
|
-
className:
|
|
29724
|
+
className: chunk6GFSF2ML_js.cn(
|
|
29776
29725
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29777
29726
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29778
29727
|
),
|
|
@@ -29837,7 +29786,7 @@ function InsertSmartArtDialog({
|
|
|
29837
29786
|
onInsert
|
|
29838
29787
|
}) {
|
|
29839
29788
|
const ref = React108.useRef(null);
|
|
29840
|
-
const { t } =
|
|
29789
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29841
29790
|
React108.useLayoutEffect(() => {
|
|
29842
29791
|
if (ref.current) {
|
|
29843
29792
|
ref.current.translateLabel = t;
|
|
@@ -29861,7 +29810,7 @@ function InsertChartDialog({
|
|
|
29861
29810
|
onInsert
|
|
29862
29811
|
}) {
|
|
29863
29812
|
const ref = React108.useRef(null);
|
|
29864
|
-
const { t } =
|
|
29813
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29865
29814
|
React108.useLayoutEffect(() => {
|
|
29866
29815
|
if (ref.current) {
|
|
29867
29816
|
ref.current.translateLabel = t;
|
|
@@ -30368,11 +30317,11 @@ function PresentationStage({
|
|
|
30368
30317
|
})
|
|
30369
30318
|
},
|
|
30370
30319
|
children: [
|
|
30371
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30320
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30372
30321
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30373
30322
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30374
30323
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30375
|
-
|
|
30324
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
30376
30325
|
{
|
|
30377
30326
|
element,
|
|
30378
30327
|
activeSlide,
|
|
@@ -30410,7 +30359,7 @@ function PresentationStage({
|
|
|
30410
30359
|
`tpl-${element.id}`
|
|
30411
30360
|
)),
|
|
30412
30361
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30413
|
-
|
|
30362
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
30414
30363
|
{
|
|
30415
30364
|
element,
|
|
30416
30365
|
activeSlide,
|
|
@@ -30463,7 +30412,7 @@ function PresentationStage({
|
|
|
30463
30412
|
function noop() {
|
|
30464
30413
|
}
|
|
30465
30414
|
function PresentationContextMenu(p) {
|
|
30466
|
-
const { t } =
|
|
30415
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
30467
30416
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30468
30417
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30469
30418
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30522,7 +30471,7 @@ function PresentationTransitionMount({
|
|
|
30522
30471
|
templateElementsBySlideId
|
|
30523
30472
|
);
|
|
30524
30473
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30525
|
-
|
|
30474
|
+
chunk3AZ6ESJU_js.PresentationTransitionOverlay,
|
|
30526
30475
|
{
|
|
30527
30476
|
outgoingSlide,
|
|
30528
30477
|
templateElements: templates.outgoing,
|
|
@@ -30567,9 +30516,9 @@ function ViewerCanvasArea(props) {
|
|
|
30567
30516
|
aiHighlightOverlay,
|
|
30568
30517
|
aiCanvasActive = false
|
|
30569
30518
|
} = props;
|
|
30570
|
-
const { t } =
|
|
30571
|
-
const { isHidden } =
|
|
30572
|
-
const viewerOptions =
|
|
30519
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
30520
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
30521
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
30573
30522
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30574
30523
|
state: s,
|
|
30575
30524
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30615,9 +30564,9 @@ function ViewerCanvasArea(props) {
|
|
|
30615
30564
|
);
|
|
30616
30565
|
const handleHyperlinkClick = React108.useCallback(
|
|
30617
30566
|
(url) => {
|
|
30618
|
-
if (
|
|
30567
|
+
if (chunk6GFSF2ML_js.isPpactionUrl(url)) {
|
|
30619
30568
|
if (mode === "present") {
|
|
30620
|
-
const parsed =
|
|
30569
|
+
const parsed = chunk6GFSF2ML_js.parsePpactionUrl(url);
|
|
30621
30570
|
if (parsed) {
|
|
30622
30571
|
const action = {
|
|
30623
30572
|
action: parsed.action,
|
|
@@ -30702,7 +30651,7 @@ function ViewerCanvasArea(props) {
|
|
|
30702
30651
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30703
30652
|
}
|
|
30704
30653
|
}, [mode, presentation, s]);
|
|
30705
|
-
const swipe =
|
|
30654
|
+
const swipe = chunk3AZ6ESJU_js.useSwipeNavigation({
|
|
30706
30655
|
enabled: swipeEnabled,
|
|
30707
30656
|
onNext: handleSwipeNext,
|
|
30708
30657
|
onPrev: handleSwipePrev
|
|
@@ -30888,14 +30837,14 @@ function ViewerCanvasArea(props) {
|
|
|
30888
30837
|
outlineAuthoring,
|
|
30889
30838
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30890
30839
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30891
|
-
|
|
30840
|
+
chunk3AZ6ESJU_js.RemoteSelectionOverlay,
|
|
30892
30841
|
{
|
|
30893
30842
|
elements: effectiveSlide?.elements ?? [],
|
|
30894
30843
|
activeSlideIndex
|
|
30895
30844
|
}
|
|
30896
30845
|
),
|
|
30897
30846
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30898
|
-
|
|
30847
|
+
chunk3AZ6ESJU_js.CollaborationCursorOverlay,
|
|
30899
30848
|
{
|
|
30900
30849
|
activeSlideIndex,
|
|
30901
30850
|
canvasWidth: canvasSize.width,
|
|
@@ -31132,8 +31081,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31132
31081
|
] });
|
|
31133
31082
|
}
|
|
31134
31083
|
function ChartFormatPanel() {
|
|
31135
|
-
const { t } =
|
|
31136
|
-
const commands =
|
|
31084
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31085
|
+
const commands = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
31137
31086
|
const ref = React108.useRef(null);
|
|
31138
31087
|
const chart = commands?.chart;
|
|
31139
31088
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31168,7 +31117,7 @@ function ChartFormatPanel() {
|
|
|
31168
31117
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31169
31118
|
}
|
|
31170
31119
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31171
|
-
const { t } =
|
|
31120
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31172
31121
|
const ref = React108.useRef(null);
|
|
31173
31122
|
React108.useEffect(() => {
|
|
31174
31123
|
const node = ref.current;
|
|
@@ -31205,8 +31154,8 @@ function MobileDismissSheet({
|
|
|
31205
31154
|
className,
|
|
31206
31155
|
children
|
|
31207
31156
|
}) {
|
|
31208
|
-
const { t } =
|
|
31209
|
-
const { dragY, handlers } =
|
|
31157
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31158
|
+
const { dragY, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
31210
31159
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31211
31160
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31212
31161
|
"button",
|
|
@@ -31475,7 +31424,7 @@ function ThemeThumbnail({
|
|
|
31475
31424
|
{
|
|
31476
31425
|
type: "button",
|
|
31477
31426
|
onClick,
|
|
31478
|
-
className:
|
|
31427
|
+
className: chunk6GFSF2ML_js.cn(
|
|
31479
31428
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31480
31429
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31481
31430
|
),
|
|
@@ -31506,7 +31455,7 @@ function ThemeGallery({
|
|
|
31506
31455
|
onApplyTheme,
|
|
31507
31456
|
onImportTheme
|
|
31508
31457
|
}) {
|
|
31509
|
-
const { t } =
|
|
31458
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31510
31459
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31511
31460
|
const fileInputRef = React108.useRef(null);
|
|
31512
31461
|
React108.useEffect(() => {
|
|
@@ -31643,8 +31592,8 @@ function ViewerSidePanels(props) {
|
|
|
31643
31592
|
aiBridge,
|
|
31644
31593
|
aiPanel
|
|
31645
31594
|
} = props;
|
|
31646
|
-
const aiAssistant =
|
|
31647
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31595
|
+
const aiAssistant = chunkMU3BIZ2U_js.aiAssistants.resolve(aiConfig);
|
|
31596
|
+
const AiPanel = aiAssistant?.panel ?? chunkMU3BIZ2U_js.AiChatPanelLazy;
|
|
31648
31597
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31649
31598
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31650
31599
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -31950,7 +31899,7 @@ function ViewerMainContent(props) {
|
|
|
31950
31899
|
);
|
|
31951
31900
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31952
31901
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31953
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31902
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31954
31903
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31955
31904
|
slidesPaneRenderer ? (
|
|
31956
31905
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32160,7 +32109,7 @@ function AutosaveRecoveryDialog({
|
|
|
32160
32109
|
onDiscard,
|
|
32161
32110
|
busy = false
|
|
32162
32111
|
}) {
|
|
32163
|
-
const { t } =
|
|
32112
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32164
32113
|
if (!prompt) {
|
|
32165
32114
|
return null;
|
|
32166
32115
|
}
|
|
@@ -32216,7 +32165,7 @@ function CompatibilityToasts({
|
|
|
32216
32165
|
rightInset = 0,
|
|
32217
32166
|
bottomInset = 0
|
|
32218
32167
|
}) {
|
|
32219
|
-
const { t } =
|
|
32168
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32220
32169
|
const ref = useWebControl(
|
|
32221
32170
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32222
32171
|
{
|
|
@@ -32261,7 +32210,7 @@ function HeaderFooterPanel({
|
|
|
32261
32210
|
onApplyToCurrent,
|
|
32262
32211
|
onClose
|
|
32263
32212
|
}) {
|
|
32264
|
-
const { t } =
|
|
32213
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32265
32214
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32266
32215
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32267
32216
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32402,7 +32351,7 @@ function HeaderFooterPanel({
|
|
|
32402
32351
|
] }) });
|
|
32403
32352
|
}
|
|
32404
32353
|
function MobileBottomBar(p) {
|
|
32405
|
-
const { t } =
|
|
32354
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32406
32355
|
const handlers = {
|
|
32407
32356
|
slides: p.onOpenSlides,
|
|
32408
32357
|
insert: p.onOpenInsert,
|
|
@@ -32428,7 +32377,7 @@ function MobileSlidesSheet({
|
|
|
32428
32377
|
onClose,
|
|
32429
32378
|
...sidebar
|
|
32430
32379
|
}) {
|
|
32431
|
-
const { t } =
|
|
32380
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32432
32381
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32433
32382
|
MobileSheet,
|
|
32434
32383
|
{
|
|
@@ -32455,7 +32404,7 @@ function MobileChromeOverlay(props) {
|
|
|
32455
32404
|
slideSectionGroups,
|
|
32456
32405
|
canEdit,
|
|
32457
32406
|
commentCount
|
|
32458
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32407
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunk3AZ6ESJU_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32459
32408
|
s.setIsSlidesPaneOpen(false);
|
|
32460
32409
|
s.setIsMobileInsertOpen(false);
|
|
32461
32410
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32555,7 +32504,7 @@ function MobileChromeOverlay(props) {
|
|
|
32555
32504
|
] });
|
|
32556
32505
|
}
|
|
32557
32506
|
function ReadOnlyBanner(p) {
|
|
32558
|
-
const { t } =
|
|
32507
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32559
32508
|
const ref = useWebControl(
|
|
32560
32509
|
pptx.readOnlyBannerState(
|
|
32561
32510
|
p.recommendation,
|
|
@@ -32589,7 +32538,7 @@ function RibbonCustomizationStyle({
|
|
|
32589
32538
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32590
32539
|
}
|
|
32591
32540
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32592
|
-
const { t } =
|
|
32541
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32593
32542
|
if (notices.length === 0) {
|
|
32594
32543
|
return null;
|
|
32595
32544
|
}
|
|
@@ -32647,14 +32596,14 @@ function AddinTable({
|
|
|
32647
32596
|
selectedId,
|
|
32648
32597
|
onSelect
|
|
32649
32598
|
}) {
|
|
32650
|
-
const { t } =
|
|
32599
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32651
32600
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32652
32601
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32653
32602
|
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-1 text-xs italic text-muted-foreground", children: t("pptx.options.addIns.description") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse text-left", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32654
32603
|
"tr",
|
|
32655
32604
|
{
|
|
32656
32605
|
onClick: () => onSelect(row.id),
|
|
32657
|
-
className:
|
|
32606
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32658
32607
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32659
32608
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32660
32609
|
),
|
|
@@ -32669,7 +32618,7 @@ function AddinTable({
|
|
|
32669
32618
|
] });
|
|
32670
32619
|
}
|
|
32671
32620
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32672
|
-
const { t } =
|
|
32621
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32673
32622
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32674
32623
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32675
32624
|
const active = rows.filter((row) => row.active);
|
|
@@ -32712,7 +32661,7 @@ function CommandList({
|
|
|
32712
32661
|
selectedId,
|
|
32713
32662
|
onSelect
|
|
32714
32663
|
}) {
|
|
32715
|
-
const { t } =
|
|
32664
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32716
32665
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32717
32666
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32718
32667
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32733,7 +32682,7 @@ function CommandList({
|
|
|
32733
32682
|
role: "option",
|
|
32734
32683
|
"aria-selected": selectedId === id,
|
|
32735
32684
|
onClick: () => onSelect(id),
|
|
32736
|
-
className:
|
|
32685
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32737
32686
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32738
32687
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32739
32688
|
),
|
|
@@ -32751,7 +32700,7 @@ function OptionsQuickAccessPane({
|
|
|
32751
32700
|
onQuickAccessCommandsChange,
|
|
32752
32701
|
onResetQuickAccess
|
|
32753
32702
|
}) {
|
|
32754
|
-
const { t } =
|
|
32703
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32755
32704
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32756
32705
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32757
32706
|
const current = options.quickAccess.commandIds;
|
|
@@ -32865,7 +32814,7 @@ function OptionsRibbonPane({
|
|
|
32865
32814
|
onRibbonTabHiddenChange,
|
|
32866
32815
|
onResetRibbon
|
|
32867
32816
|
}) {
|
|
32868
|
-
const { t } =
|
|
32817
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32869
32818
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32870
32819
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32871
32820
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32877,7 +32826,7 @@ function OptionsRibbonPane({
|
|
|
32877
32826
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32878
32827
|
"label",
|
|
32879
32828
|
{
|
|
32880
|
-
className:
|
|
32829
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32881
32830
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32882
32831
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32883
32832
|
),
|
|
@@ -32911,7 +32860,7 @@ function OptionsRibbonPane({
|
|
|
32911
32860
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32912
32861
|
"div",
|
|
32913
32862
|
{
|
|
32914
|
-
className:
|
|
32863
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32915
32864
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32916
32865
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32917
32866
|
),
|
|
@@ -32932,12 +32881,12 @@ async function exportAiChatLogs(options) {
|
|
|
32932
32881
|
chats,
|
|
32933
32882
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32934
32883
|
(filename, content, mime) => {
|
|
32935
|
-
|
|
32884
|
+
chunk3AZ6ESJU_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32936
32885
|
}
|
|
32937
32886
|
);
|
|
32938
32887
|
}
|
|
32939
32888
|
function SettingsAiTab({ store }) {
|
|
32940
|
-
const { t } =
|
|
32889
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32941
32890
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32942
32891
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32943
32892
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -33029,7 +32978,7 @@ function SettingsAppearanceTab({
|
|
|
33029
32978
|
themes,
|
|
33030
32979
|
onSelectTheme
|
|
33031
32980
|
}) {
|
|
33032
|
-
const { t } =
|
|
32981
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33033
32982
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
33034
32983
|
const isActive = entry.key === activeThemeKey;
|
|
33035
32984
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -33040,7 +32989,7 @@ function SettingsAppearanceTab({
|
|
|
33040
32989
|
type: "button",
|
|
33041
32990
|
onClick: () => onSelectTheme(entry.key),
|
|
33042
32991
|
"aria-pressed": isActive,
|
|
33043
|
-
className:
|
|
32992
|
+
className: chunk6GFSF2ML_js.cn(
|
|
33044
32993
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33045
32994
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33046
32995
|
),
|
|
@@ -33057,7 +33006,7 @@ function SettingsAppearanceTab({
|
|
|
33057
33006
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33058
33007
|
"span",
|
|
33059
33008
|
{
|
|
33060
|
-
className:
|
|
33009
|
+
className: chunk6GFSF2ML_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33061
33010
|
children: t(entry.labelKey)
|
|
33062
33011
|
}
|
|
33063
33012
|
)
|
|
@@ -33072,7 +33021,7 @@ function SettingsCustomFontsSection({
|
|
|
33072
33021
|
families,
|
|
33073
33022
|
onRegistered
|
|
33074
33023
|
}) {
|
|
33075
|
-
const { t } =
|
|
33024
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33076
33025
|
const inputRef = React108.useRef(null);
|
|
33077
33026
|
const [error, setError] = React108.useState(false);
|
|
33078
33027
|
const handleFile = async (file) => {
|
|
@@ -33137,7 +33086,7 @@ function SettingsLanguageTab({
|
|
|
33137
33086
|
type: "button",
|
|
33138
33087
|
onClick: () => onSelectLocale(locale.code),
|
|
33139
33088
|
"aria-pressed": isActive,
|
|
33140
|
-
className:
|
|
33089
|
+
className: chunk6GFSF2ML_js.cn(
|
|
33141
33090
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33142
33091
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33143
33092
|
),
|
|
@@ -33176,7 +33125,7 @@ function OpenSettingsDialog({
|
|
|
33176
33125
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33177
33126
|
onCustomFontRegistered
|
|
33178
33127
|
}) {
|
|
33179
|
-
const { t } =
|
|
33128
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33180
33129
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33181
33130
|
const customization = React108.useMemo(
|
|
33182
33131
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33285,7 +33234,7 @@ function ViewerOptionsProvider({
|
|
|
33285
33234
|
store,
|
|
33286
33235
|
children
|
|
33287
33236
|
}) {
|
|
33288
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33237
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33289
33238
|
}
|
|
33290
33239
|
function useAiBridge(input) {
|
|
33291
33240
|
const ref = React108.useRef(input);
|
|
@@ -33368,7 +33317,7 @@ function useAiPanelController(input) {
|
|
|
33368
33317
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33369
33318
|
})
|
|
33370
33319
|
);
|
|
33371
|
-
const state =
|
|
33320
|
+
const state = chunk3AZ6ESJU_js.useController(controller);
|
|
33372
33321
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33373
33322
|
const liveFocusTargets = React108.useMemo(
|
|
33374
33323
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33601,7 +33550,7 @@ function useMasterViewCrud(input) {
|
|
|
33601
33550
|
forgetHistory,
|
|
33602
33551
|
pushToast
|
|
33603
33552
|
} = input;
|
|
33604
|
-
const { t } =
|
|
33553
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33605
33554
|
const data = React108.useMemo(
|
|
33606
33555
|
() => ({ slides, slideMasters }),
|
|
33607
33556
|
[slides, slideMasters]
|
|
@@ -33988,26 +33937,39 @@ function useViewerCustomization(customization, legacyHiddenActions, optionsStore
|
|
|
33988
33937
|
return { resolved, api: controller.api, hiddenActions };
|
|
33989
33938
|
}
|
|
33990
33939
|
var NO_LOCALES = [];
|
|
33991
|
-
var
|
|
33940
|
+
var BUILT_IN_CONTROLS = {
|
|
33941
|
+
localeCode: "en",
|
|
33942
|
+
locales: NO_LOCALES,
|
|
33943
|
+
selectLocale: () => {
|
|
33944
|
+
},
|
|
33945
|
+
languageSelectable: false
|
|
33946
|
+
};
|
|
33947
|
+
var toCatalogEntry = (code) => i18n$1.LOCALE_CATALOG.find((entry) => entry.code === code) ?? { code, label: code, nativeLabel: code };
|
|
33992
33948
|
function useHostLanguage({
|
|
33993
33949
|
defaultLocale,
|
|
33994
33950
|
availableLocales,
|
|
33995
33951
|
onLocaleChange
|
|
33996
33952
|
}) {
|
|
33997
|
-
const
|
|
33953
|
+
const host = chunk6GFSF2ML_js.useRegisteredHostI18next();
|
|
33954
|
+
const t = host?.t;
|
|
33955
|
+
const i18n = host?.i18n;
|
|
33956
|
+
const readsInstance = i18n !== void 0;
|
|
33998
33957
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33999
33958
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
34000
33959
|
);
|
|
34001
33960
|
React108.useEffect(() => {
|
|
34002
|
-
if (localeCode !== "en" && !onLocaleChange) {
|
|
34003
|
-
void i18n.changeLanguage(localeCode);
|
|
33961
|
+
if (i18n && localeCode !== "en" && !onLocaleChange) {
|
|
33962
|
+
void i18n.changeLanguage?.(localeCode);
|
|
34004
33963
|
}
|
|
34005
|
-
}, []);
|
|
33964
|
+
}, [readsInstance]);
|
|
34006
33965
|
const locales = React108.useMemo(() => {
|
|
34007
33966
|
if (availableLocales) {
|
|
34008
33967
|
return availableLocales;
|
|
34009
33968
|
}
|
|
34010
|
-
|
|
33969
|
+
if (!i18n) {
|
|
33970
|
+
return NO_LOCALES;
|
|
33971
|
+
}
|
|
33972
|
+
const registeredCodes = i18n.options?.resources ? Object.keys(i18n.options.resources) : Array.isArray(i18n.languages) ? i18n.languages : ["en"];
|
|
34011
33973
|
return registeredCodes.map(toCatalogEntry);
|
|
34012
33974
|
}, [availableLocales, i18n]);
|
|
34013
33975
|
const selectLocale = React108.useCallback(
|
|
@@ -34015,18 +33977,21 @@ function useHostLanguage({
|
|
|
34015
33977
|
setLocaleCode(code);
|
|
34016
33978
|
if (onLocaleChange) {
|
|
34017
33979
|
onLocaleChange(code);
|
|
34018
|
-
} else {
|
|
34019
|
-
void i18n.changeLanguage(code);
|
|
33980
|
+
} else if (i18n) {
|
|
33981
|
+
void i18n.changeLanguage?.(code);
|
|
34020
33982
|
pptx.writeStoredViewerPrefs({ localeCode: code });
|
|
34021
33983
|
}
|
|
34022
33984
|
},
|
|
34023
33985
|
[onLocaleChange, i18n]
|
|
34024
33986
|
);
|
|
34025
|
-
const language = i18n
|
|
34026
|
-
const state = React108.useMemo(
|
|
33987
|
+
const language = i18n ? chunk6GFSF2ML_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
|
|
33988
|
+
const state = React108.useMemo(
|
|
33989
|
+
() => t ? { t, locale: language } : chunk6GFSF2ML_js.BUILT_IN_ENGLISH,
|
|
33990
|
+
[t, language]
|
|
33991
|
+
);
|
|
34027
33992
|
const controls = React108.useMemo(
|
|
34028
|
-
() =>
|
|
34029
|
-
[localeCode, locales, selectLocale]
|
|
33993
|
+
() => readsInstance ? { localeCode, locales, selectLocale, languageSelectable: true } : BUILT_IN_CONTROLS,
|
|
33994
|
+
[readsInstance, localeCode, locales, selectLocale]
|
|
34030
33995
|
);
|
|
34031
33996
|
return { state, controls };
|
|
34032
33997
|
}
|
|
@@ -34034,13 +33999,13 @@ function useProvidedLanguage({
|
|
|
34034
33999
|
availableLocales,
|
|
34035
34000
|
onLocaleChange
|
|
34036
34001
|
}) {
|
|
34037
|
-
const state = React108.useContext(
|
|
34002
|
+
const state = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext);
|
|
34038
34003
|
const { locale } = state;
|
|
34039
34004
|
const locales = availableLocales ?? NO_LOCALES;
|
|
34040
34005
|
const controls = React108.useMemo(
|
|
34041
34006
|
() => ({
|
|
34042
34007
|
// `fr-CA` selects an offered `fr`: the host's locale need not be one of the codes.
|
|
34043
|
-
localeCode: i18n
|
|
34008
|
+
localeCode: i18n.normalizeLocale(
|
|
34044
34009
|
locale,
|
|
34045
34010
|
locales.map((entry) => entry.code),
|
|
34046
34011
|
locale
|
|
@@ -34054,20 +34019,25 @@ function useProvidedLanguage({
|
|
|
34054
34019
|
return { state, controls };
|
|
34055
34020
|
}
|
|
34056
34021
|
function provideLanguage({ state, controls }, children) {
|
|
34057
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34022
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34058
34023
|
}
|
|
34059
34024
|
function HostLanguageRoot({ children, ...props }) {
|
|
34060
34025
|
return provideLanguage(useHostLanguage(props), children);
|
|
34061
34026
|
}
|
|
34027
|
+
function BuiltInLanguageRoot({ children }) {
|
|
34028
|
+
return provideLanguage({ state: chunk6GFSF2ML_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
|
|
34029
|
+
}
|
|
34062
34030
|
function ProvidedLanguageRoot({ children, ...props }) {
|
|
34063
34031
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34064
34032
|
}
|
|
34065
34033
|
function ViewerI18nRoot(props) {
|
|
34066
|
-
const
|
|
34034
|
+
const [readsHost] = React108.useState(() => chunk6GFSF2ML_js.registeredHostI18next() !== null);
|
|
34035
|
+
const FromHost = readsHost ? HostLanguageRoot : BuiltInLanguageRoot;
|
|
34036
|
+
const Root = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
|
|
34067
34037
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34068
34038
|
}
|
|
34069
34039
|
function useViewerLocaleControls() {
|
|
34070
|
-
return React108.useContext(
|
|
34040
|
+
return React108.useContext(chunk6GFSF2ML_js.ViewerLocaleControlsContext);
|
|
34071
34041
|
}
|
|
34072
34042
|
var NO_RIBBON_ADD_INS = [];
|
|
34073
34043
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34146,7 +34116,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34146
34116
|
limits
|
|
34147
34117
|
} = props;
|
|
34148
34118
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34149
|
-
const cloudFile =
|
|
34119
|
+
const cloudFile = chunk3AZ6ESJU_js.useController(cloudDocument).file;
|
|
34150
34120
|
const {
|
|
34151
34121
|
storage: viewerStorage,
|
|
34152
34122
|
fileName,
|
|
@@ -34160,7 +34130,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34160
34130
|
filePath: hostFilePath
|
|
34161
34131
|
});
|
|
34162
34132
|
const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
|
|
34163
|
-
const saveProgressState =
|
|
34133
|
+
const saveProgressState = chunk3AZ6ESJU_js.useController(saveProgress);
|
|
34164
34134
|
const storage = React108.useMemo(
|
|
34165
34135
|
() => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
|
|
34166
34136
|
[viewerStorage, saveProgress]
|
|
@@ -34202,7 +34172,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34202
34172
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34203
34173
|
);
|
|
34204
34174
|
}, []);
|
|
34205
|
-
const { t } =
|
|
34175
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
34206
34176
|
const {
|
|
34207
34177
|
localeCode,
|
|
34208
34178
|
locales: resolvedLocales,
|
|
@@ -34259,7 +34229,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34259
34229
|
},
|
|
34260
34230
|
[hostStorage, cloudDocument]
|
|
34261
34231
|
);
|
|
34262
|
-
const { optionsStore, options: viewerOptions } =
|
|
34232
|
+
const { optionsStore, options: viewerOptions } = chunk3AZ6ESJU_js.useViewerOptions();
|
|
34263
34233
|
const custom = useViewerCustomization(
|
|
34264
34234
|
customization,
|
|
34265
34235
|
legacyHiddenActions,
|
|
@@ -34279,8 +34249,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34279
34249
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34280
34250
|
setProtectedViewOverridden(true);
|
|
34281
34251
|
}, []);
|
|
34282
|
-
const readOnlyRec =
|
|
34283
|
-
const compatToastsState =
|
|
34252
|
+
const readOnlyRec = chunk3AZ6ESJU_js.useReadOnlyRecommendationState(content);
|
|
34253
|
+
const compatToastsState = chunk3AZ6ESJU_js.useCompatibilityToastsState();
|
|
34284
34254
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34285
34255
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34286
34256
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34303,8 +34273,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34303
34273
|
filePath
|
|
34304
34274
|
});
|
|
34305
34275
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34306
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34307
|
-
const state =
|
|
34276
|
+
const { reducedMotion, toggleReducedMotion } = chunk3AZ6ESJU_js.useReducedMotion();
|
|
34277
|
+
const state = chunk3AZ6ESJU_js.useViewerState({
|
|
34308
34278
|
content,
|
|
34309
34279
|
canEdit,
|
|
34310
34280
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34431,16 +34401,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34431
34401
|
}
|
|
34432
34402
|
}, [settings, optionsStore]);
|
|
34433
34403
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34434
|
-
const mobile =
|
|
34404
|
+
const mobile = chunk3AZ6ESJU_js.useIsMobile();
|
|
34435
34405
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34436
|
-
const resizablePanels =
|
|
34406
|
+
const resizablePanels = chunk3AZ6ESJU_js.useResizablePanels();
|
|
34437
34407
|
const {
|
|
34438
34408
|
gridSpacingPx,
|
|
34439
34409
|
visibleSlideIndexes,
|
|
34440
34410
|
slideSectionGroups,
|
|
34441
34411
|
masterPseudoSlide,
|
|
34442
34412
|
authoredRange
|
|
34443
|
-
} =
|
|
34413
|
+
} = chunk3AZ6ESJU_js.useDerivedSlideState({
|
|
34444
34414
|
slides,
|
|
34445
34415
|
sections: state.sections,
|
|
34446
34416
|
customShows: state.customShows,
|
|
@@ -34465,7 +34435,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34465
34435
|
state.cropSessionRef
|
|
34466
34436
|
]
|
|
34467
34437
|
);
|
|
34468
|
-
const zoom =
|
|
34438
|
+
const zoom = chunk3AZ6ESJU_js.useZoomViewport({
|
|
34469
34439
|
canvasSize,
|
|
34470
34440
|
selectedElements: state.selectedElements,
|
|
34471
34441
|
fitPadding: props.fitPadding,
|
|
@@ -34481,7 +34451,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34481
34451
|
onChangeCallback.current?.();
|
|
34482
34452
|
}, [setIsDirty]);
|
|
34483
34453
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34484
|
-
const history =
|
|
34454
|
+
const history = chunk3AZ6ESJU_js.useEditorHistory({
|
|
34485
34455
|
slides,
|
|
34486
34456
|
canvasSize,
|
|
34487
34457
|
activeSlideIndex,
|
|
@@ -34510,7 +34480,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34510
34480
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34511
34481
|
setHeaderFooter: state.setHeaderFooter
|
|
34512
34482
|
});
|
|
34513
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34483
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk3AZ6ESJU_js.usePresentationSetup({
|
|
34514
34484
|
mode,
|
|
34515
34485
|
slides,
|
|
34516
34486
|
visibleSlideIndexes,
|
|
@@ -34589,7 +34559,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34589
34559
|
loading,
|
|
34590
34560
|
error
|
|
34591
34561
|
]);
|
|
34592
|
-
|
|
34562
|
+
chunk3AZ6ESJU_js.useTouchGestures({
|
|
34593
34563
|
targetRef: zoom.canvasViewportRef,
|
|
34594
34564
|
currentScale: zoom.scale,
|
|
34595
34565
|
callbacks: {
|
|
@@ -34611,7 +34581,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34611
34581
|
},
|
|
34612
34582
|
enabled: isTouchDevice
|
|
34613
34583
|
});
|
|
34614
|
-
const dialogs =
|
|
34584
|
+
const dialogs = chunk3AZ6ESJU_js.useViewerDialogs({
|
|
34615
34585
|
mode,
|
|
34616
34586
|
slides,
|
|
34617
34587
|
activeSlide,
|
|
@@ -34639,7 +34609,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34639
34609
|
history,
|
|
34640
34610
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34641
34611
|
});
|
|
34642
|
-
|
|
34612
|
+
chunk3AZ6ESJU_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34643
34613
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34644
34614
|
React108.useEffect(() => {
|
|
34645
34615
|
if (mode !== "present") {
|
|
@@ -34657,7 +34627,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34657
34627
|
zoom.handleZoomToFit();
|
|
34658
34628
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34659
34629
|
}, [mode]);
|
|
34660
|
-
const editorOps =
|
|
34630
|
+
const editorOps = chunk3AZ6ESJU_js.useEditorOperations({
|
|
34661
34631
|
state,
|
|
34662
34632
|
history,
|
|
34663
34633
|
zoom,
|
|
@@ -34702,7 +34672,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34702
34672
|
handlerRef,
|
|
34703
34673
|
viewerApi,
|
|
34704
34674
|
loadVersion
|
|
34705
|
-
} =
|
|
34675
|
+
} = chunk3AZ6ESJU_js.useViewerIntegration({
|
|
34706
34676
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34707
34677
|
state,
|
|
34708
34678
|
zoom,
|
|
@@ -34847,7 +34817,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34847
34817
|
updateElementById: editorOps.ops.updateElementById
|
|
34848
34818
|
});
|
|
34849
34819
|
const ribbonScope = useRibbonScopeToken();
|
|
34850
|
-
const viewPreferencesSync =
|
|
34820
|
+
const viewPreferencesSync = chunk3AZ6ESJU_js.useViewPreferencesSync({
|
|
34851
34821
|
loadVersion,
|
|
34852
34822
|
viewProperties: state.viewProperties,
|
|
34853
34823
|
setViewProperties: state.setViewProperties,
|
|
@@ -34898,7 +34868,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34898
34868
|
},
|
|
34899
34869
|
[state]
|
|
34900
34870
|
);
|
|
34901
|
-
const layoutSwitching =
|
|
34871
|
+
const layoutSwitching = chunk3AZ6ESJU_js.useLayoutSwitching({
|
|
34902
34872
|
handler: handlerRef.current,
|
|
34903
34873
|
slides,
|
|
34904
34874
|
activeSlideIndex,
|
|
@@ -35017,7 +34987,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35017
34987
|
"data-pptx-editor-chrome": "",
|
|
35018
34988
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35019
34989
|
"aria-busy": loading,
|
|
35020
|
-
className:
|
|
34990
|
+
className: chunk6GFSF2ML_js.cn(
|
|
35021
34991
|
"h-full w-full bg-background text-foreground relative",
|
|
35022
34992
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35023
34993
|
),
|
|
@@ -35419,8 +35389,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35419
35389
|
// Nothing previously provided it, so every one of those consumers was
|
|
35420
35390
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35421
35391
|
// the user changed in the Options dialog.
|
|
35422
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35423
|
-
|
|
35392
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35393
|
+
chunk3AZ6ESJU_js.CollaborationProvider,
|
|
35424
35394
|
{
|
|
35425
35395
|
config: collaboration,
|
|
35426
35396
|
canvasWidth: canvasSize.width,
|
|
@@ -35477,19 +35447,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35477
35447
|
slideCount: slides.length
|
|
35478
35448
|
}
|
|
35479
35449
|
),
|
|
35480
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35450
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35481
35451
|
]
|
|
35482
35452
|
}
|
|
35483
35453
|
) }) }) }) }) }) }) }) }) })
|
|
35484
35454
|
);
|
|
35485
35455
|
}
|
|
35486
35456
|
);
|
|
35487
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35457
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
35488
35458
|
PowerPointViewerComponent,
|
|
35489
35459
|
"PowerPointViewer"
|
|
35490
35460
|
);
|
|
35491
35461
|
function CollaborationStatusStrip() {
|
|
35492
|
-
const collab =
|
|
35462
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35493
35463
|
if (!collab) {
|
|
35494
35464
|
return null;
|
|
35495
35465
|
}
|
|
@@ -35506,9 +35476,9 @@ function CollaborationStateReporter({
|
|
|
35506
35476
|
onChange,
|
|
35507
35477
|
onStatus
|
|
35508
35478
|
}) {
|
|
35509
|
-
const collab =
|
|
35479
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35510
35480
|
useCollaborationStateReport(collab, onChange);
|
|
35511
|
-
|
|
35481
|
+
chunk3AZ6ESJU_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35512
35482
|
return null;
|
|
35513
35483
|
}
|
|
35514
35484
|
function CollaborationDocumentSync({
|
|
@@ -35523,8 +35493,8 @@ function CollaborationDocumentSync({
|
|
|
35523
35493
|
onReadOnlyChange,
|
|
35524
35494
|
history
|
|
35525
35495
|
}) {
|
|
35526
|
-
const collab =
|
|
35527
|
-
|
|
35496
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35497
|
+
chunk3AZ6ESJU_js.useCollaborationDocumentSync({
|
|
35528
35498
|
collaboration: collab,
|
|
35529
35499
|
history,
|
|
35530
35500
|
slides,
|
|
@@ -35544,14 +35514,14 @@ function CollaborationFollowLayer({
|
|
|
35544
35514
|
setActiveSlideIndex,
|
|
35545
35515
|
slideCount
|
|
35546
35516
|
}) {
|
|
35547
|
-
const collab =
|
|
35548
|
-
const { followedClientId, followUser } =
|
|
35517
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35518
|
+
const { followedClientId, followUser } = chunk3AZ6ESJU_js.useFollowMode({
|
|
35549
35519
|
collab,
|
|
35550
35520
|
activeSlideIndex,
|
|
35551
35521
|
setActiveSlideIndex,
|
|
35552
35522
|
slideCount
|
|
35553
35523
|
});
|
|
35554
|
-
|
|
35524
|
+
chunk3AZ6ESJU_js.useBroadcastFollower({
|
|
35555
35525
|
collab,
|
|
35556
35526
|
activeSlideIndex,
|
|
35557
35527
|
setActiveSlideIndex,
|
|
@@ -35570,31 +35540,6 @@ function CollaborationFollowLayer({
|
|
|
35570
35540
|
}
|
|
35571
35541
|
) }) });
|
|
35572
35542
|
}
|
|
35573
|
-
var asMessageParams = (params) => params;
|
|
35574
|
-
function withEnglishFallback(translate) {
|
|
35575
|
-
return (key, defaultOrParams) => {
|
|
35576
|
-
const params = typeof defaultOrParams === "string" ? { defaultValue: defaultOrParams } : defaultOrParams;
|
|
35577
|
-
let text;
|
|
35578
|
-
try {
|
|
35579
|
-
text = params === void 0 ? translate(key) : translate(key, params);
|
|
35580
|
-
} catch {
|
|
35581
|
-
text = void 0;
|
|
35582
|
-
}
|
|
35583
|
-
const found = text && text !== key ? text : i18n.translationsEn[key] ?? params?.defaultValue;
|
|
35584
|
-
return typeof found === "string" ? i18n$1.interpolate(found, asMessageParams(params), "double") : i18n.keyToLabel(key);
|
|
35585
|
-
};
|
|
35586
|
-
}
|
|
35587
|
-
function PptxI18nProvider({
|
|
35588
|
-
translate,
|
|
35589
|
-
locale,
|
|
35590
|
-
children
|
|
35591
|
-
}) {
|
|
35592
|
-
const state = React108.useMemo(
|
|
35593
|
-
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35594
|
-
[translate, locale]
|
|
35595
|
-
);
|
|
35596
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.PptxI18nContext.Provider, { value: state, children });
|
|
35597
|
-
}
|
|
35598
35543
|
|
|
35599
35544
|
Object.defineProperty(exports, "THEME_CATALOG", {
|
|
35600
35545
|
enumerable: true,
|
|
@@ -35642,10 +35587,10 @@ Object.defineProperty(exports, "vermilionRadius", {
|
|
|
35642
35587
|
});
|
|
35643
35588
|
exports.CollaborationStatusIndicator = CollaborationStatusIndicator;
|
|
35644
35589
|
exports.PowerPointViewer = PowerPointViewer2;
|
|
35645
|
-
exports.PptxI18nProvider = PptxI18nProvider;
|
|
35646
35590
|
exports.SlideCanvas = SlideCanvas;
|
|
35647
35591
|
exports.SlideTemplateGalleryDialog = SlideTemplateGalleryDialog;
|
|
35648
35592
|
exports.SlideTemplatePreview = SlideTemplatePreview;
|
|
35593
|
+
exports.SlideThumbnail = SlideThumbnail;
|
|
35649
35594
|
exports.SlidesPaneSidebar = SlidesPaneSidebar;
|
|
35650
35595
|
exports.Toolbar = Toolbar;
|
|
35651
35596
|
exports.UserAvatarBar = UserAvatarBar;
|